Name: series-workflow5bgmm Phase: Succeeded StartedAt: 2026-07-19 11:02:54 +0000 UTC FinishedAt: 2026-07-19 16:07:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[0] Phase: Succeeded StartedAt: 2026-07-19 11:02:54 +0000 UTC FinishedAt: 2026-07-19 11:36:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[0].run-triage Phase: Succeeded StartedAt: 2026-07-19 11:02:54 +0000 UTC FinishedAt: 2026-07-19 11:36:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "56d96fededd61192cd7cc8d2b0f36adfd59036c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "56d96fededd61192cd7cc8d2b0f36adfd59036c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "476ab480-dbdb-41ba-a982-9432079e9144" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__ip6_del_rt_siblings", "ip6_route_del" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDExOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2lwNl9kZWxfcnRfc2libGluZ3MmIzM0OywKICAgICYjMzQ7aXA2X3JvdXRlX2RlbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnIGZyb20gZ2ZwX2FueSgpIHRvIEdGUF9BVE9NSUMgaW4gX19pcDZfZGVsX3J0X3NpYmxpbmdzKCksIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgSVB2NiByb3V0ZSBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NmYxNzgzODZhNmJjN2FlMWY0MmZiNDdkYmY4OTA5MGU5ZGRjNDAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTE6MzU6MTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmNcbmluZGV4IGExMzAxMzM0ZGE0OGMwLi5mYzQyZDY3ZTU4MjI2MSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC00MDIyLDcgJiM0Mzs0MDIyLDcgQEAgc3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxuIFx0XHRzdHJ1Y3QgZmliNl9ub2RlICpmbjtcbiBcbiBcdFx0LyogcHJlZmVyIHRvIHNlbmQgYSBzaW5nbGUgbm90aWZpY2F0aW9uIHdpdGggYWxsIGhvcHMgKi9cbi1cdFx0c2tiID0gbmxtc2dfbmV3KHJ0Nl9ubG1zZ19zaXplKHJ0KSwgZ2ZwX2FueSgpKTtcbiYjNDM7XHRcdHNrYiA9IG5sbXNnX25ldyhydDZfbmxtc2dfc2l6ZShydCksIEdGUF9BVE9NSUMpO1xuIFx0XHRpZiAoc2tiKSB7XG4gXHRcdFx0dTMyIHNlcSA9IGluZm8tXHUwMDNlbmxoID8gaW5mby1cdTAwM2VubGgtXHUwMDNlbmxtc2dfc2VxIDogMDtcbiBcbkBAIC00MDc4LDcgJiM0Mzs0MDc4LDcgQEAgc3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxuIFxuIFx0aWYgKHNrYikge1xuIFx0XHRydG5sX25vdGlmeShza2IsIG5ldCwgaW5mby1cdTAwM2Vwb3J0aWQsIFJUTkxHUlBfSVBWNl9ST1VURSxcbi1cdFx0XHQgICAgaW5mby1cdTAwM2VubGgsIGdmcF9hbnkoKSk7XG4mIzQzO1x0XHRcdCAgICBpbmZvLVx1MDAzZW5saCwgR0ZQX0FUT01JQyk7XG4gXHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pcDZfZGVsX3J0X3NpYmxpbmdzJiMzNDssCiAgICAmIzM0O2lwNl9yb3V0ZV9kZWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZmxhZyBmcm9tIGdmcF9hbnkoKSB0byBHRlBfQVRPTUlDIGluIF9faXA2X2RlbF9ydF9zaWJsaW5ncygpLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIElQdjYgcm91dGUgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NmYxNzgzODZhNmJjN2FlMWY0MmZiNDdkYmY4OTA5MGU5ZGRjNDAxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTkgMTE6MzU6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuYwppbmRleCBhMTMwMTMzNGRhNDhjMC4uZmM0MmQ2N2U1ODIyNjEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JvdXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtNDAyMiw3ICYjNDM7NDAyMiw3IEBAIHN0YXRpYyBpbnQgX19pcDZfZGVsX3J0X3NpYmxpbmdzKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgZmliNl9jb25maWcgKmNmZykKIAkJc3RydWN0IGZpYjZfbm9kZSAqZm47CiAKIAkJLyogcHJlZmVyIHRvIHNlbmQgYSBzaW5nbGUgbm90aWZpY2F0aW9uIHdpdGggYWxsIGhvcHMgKi8KLQkJc2tiID0gbmxtc2dfbmV3KHJ0Nl9ubG1zZ19zaXplKHJ0KSwgZ2ZwX2FueSgpKTsKJiM0MzsJCXNrYiA9IG5sbXNnX25ldyhydDZfbmxtc2dfc2l6ZShydCksIEdGUF9BVE9NSUMpOwogCQlpZiAoc2tiKSB7CiAJCQl1MzIgc2VxID0gaW5mby0mZ3Q7bmxoID8gaW5mby0mZ3Q7bmxoLSZndDtubG1zZ19zZXEgOiAwOwogCkBAIC00MDc4LDcgJiM0Mzs0MDc4LDcgQEAgc3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKQogCiAJaWYgKHNrYikgewogCQlydG5sX25vdGlmeShza2IsIG5ldCwgaW5mby0mZ3Q7cG9ydGlkLCBSVE5MR1JQX0lQVjZfUk9VVEUsCi0JCQkgICAgaW5mby0mZ3Q7bmxoLCBnZnBfYW55KCkpOwomIzQzOwkJCSAgICBpbmZvLSZndDtubGgsIEdGUF9BVE9NSUMpOwogCX0KIAlyZXR1cm4gZXJyOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTkxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJvdXRpbmcgVGFibGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHR3ZWFraW5nIGBuZXQvaXB2Ni9yb3V0ZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IHRoZXkmIzM5O3JlIHN3aXRjaGluZyBmcm9tIHVzaW5nIGBnZnBfYW55KClgIHRvIGBHRlBfQVRPTUlDYCBpbiB0aGUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgZnVuY3Rpb24uICBJdCYjMzk7cyBhIHByZXR0eSBsb3ctbGV2ZWwgbW9kaWZpY2F0aW9uLCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBhbGxvY2F0aW9uIGZsYWdzLCBub3RoaW5nIG1ham9yIGFyY2hpdGVjdHVyYWxseS4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIGNsZWFyIHRoaXMgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgZnVuY3Rpb24gaXMgZGVlcGx5IGludm9sdmVkIGluIElQdjYgcm91dGluZywgbGlrZWx5IHJlbGF0ZWQgdG8gcm91dGUgZGVsZXRpb24sIGZyb20gdGhlIG5hbWluZyBpdHNlbGYuICBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggYWx0ZXJzIGFsbG9jYXRpb25zIGZvciBjcmVhdGluZyBgc2tiYCB3aGljaCBhcmUgdXNlZCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgdG8gdXNlcnNwYWNlLgoKVGhlIGNvZGUmIzM5O3MgcHVycG9zZSBpcywgcHJlc3VtYWJseSwgdG8gc2VuZCBub3RpZmljYXRpb25zLCBwcmVzdW1hYmx5IHRvIHVzZXJzcGFjZSwgd2hlbiByb3V0ZXMgYXJlIGRlbGV0ZWQuIFRoZSBjaGFuZ2UgdG8gYEdGUF9BVE9NSUNgIHN1Z2dlc3RzIHRoaXMgY29kZSBwYXRoIGNvdWxkIGJlIGludm9rZWQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCBvciBhIGNyaXRpY2FsIHNlY3Rpb24gd2hlcmUgc2xlZXBpbmcgaXNuJiMzOTt0IGFsbG93ZWQuIExldCYjMzk7cyBkaWcgYSBiaXQgZGVlcGVyIGFuZCBzZWUgd2hlcmUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgaXMgY2FsbGVkLiBBIHF1aWNrIGdyZXAgc2hvdWxkIHJldmVhbCB0aGUgY2FsbGluZyBjb250ZXh0cywgYW5kIHRoYXQmIzM5O2xsIGdpdmUgbWUgYSBtdWNoIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoZXRoZXIgb3Igbm90IGl0JiMzOTtzIHJlYXNvbmFibGUuICBJIHNob3VsZCBjb25maXJtIHRoYXQgdGhlc2UgY29udGV4dHMgd291bGQgcmVhbGx5IHJlcXVpcmUgYWxsb2NhdGlvbiBmcm9tIGF0b21pYyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXA2X2RlbF9ydF9zaWJsaW5ncyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTM5OTc9aW50IGlwNl9kZWxfcnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl9pbmZvICpydCwgYm9vbCBza2lwX25vdGlmeSlcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQwMDYtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQwMDc6c3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxubmV0L2lwdjYvcm91dGUuYy00MDA4LXtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQxNDI9c3RhdGljIGludCBpcDZfcm91dGVfZGVsKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDIxOS1cdFx0XHRlbHNlXG5uZXQvaXB2Ni9yb3V0ZS5jOjQyMjA6XHRcdFx0XHRlcnIgPSBfX2lwNl9kZWxfcnRfc2libGluZ3MocnQsIGNmZyk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQyMjEtXHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwOAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkRpdmluZyBpbnRvIHRoZSBJUHY2IFJvdXRpbmcgVGFibGUgUmVtb3ZhbCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgc3RhcnRpbmcgd2l0aCBgaXA2X3JvdXRlX2RlbGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBhbG9uZSB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBkZWxldGlvbiBvZiBhbiBJUHY2IHJvdXRlLiBNeSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaG8mIzM5O3MgY2FsbGluZyB0aGlzIGZ1bmN0aW9uPyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgdXBzdHJlYW0gZnVuY3Rpb25zIHRoYXQgYXJlIHJlc3BvbnNpYmxlIGZvciB0cmlnZ2VyaW5nIHRoaXMgZGVsZXRpb24uIEZpbmRpbmcgdGhlIGNhbGxlcnMgb2YgYGlwNl9yb3V0ZV9kZWxgIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgKndoeSogdGhpcyByb3V0ZSBpcyBiZWluZyByZW1vdmVkLiBBcmUgd2UgZGVhbGluZyB3aXRoIGludGVyZmFjZSBzaHV0ZG93bnM/IFJvdXRpbmcgcHJvdG9jb2wgdXBkYXRlcz8gQ29uZmlndXJhdGlvbiBjaGFuZ2VzPyBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBpcyBlc3NlbnRpYWwgdG8gYW5zd2VyaW5nIHRob3NlIHF1ZXN0aW9ucy4gU28sIGxldCYjMzk7cyB0cmFjZSBiYWNrIGZyb20gYGlwNl9yb3V0ZV9kZWxgIGFuZCBzZWUgd2hvJiMzOTtzIGluaXRpYXRpbmcgdGhpcyByZW1vdmFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNl9yb3V0ZV9kZWwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYz00MTMyPXN0YXRpYyBpbnQgaXA2X2RlbF9jYWNoZWRfcnRfbmgoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsIHN0cnVjdCBmaWI2X2luZm8gKmY2aSlcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQxNDEtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQxNDI6c3RhdGljIGludCBpcDZfcm91dGVfZGVsKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLFxubmV0L2lwdjYvcm91dGUuYy00MTQzLVx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2lwdjYvcm91dGUuYz00NTc4PWludCBpcHY2X3JvdXRlX2lvY3RsKHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGNtZCwgc3RydWN0IGluNl9ydG1zZyAqcnRtc2cpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00NTk3LVx0Y2FzZSBTSU9DREVMUlQ6XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ1OTg6XHRcdGVyciA9IGlwNl9yb3V0ZV9kZWwoXHUwMDI2Y2ZnLCBOVUxMKTtcbm5ldC9pcHY2L3JvdXRlLmMtNDU5OS1cdFx0YnJlYWs7XG4tLVxubmV0L2lwdjYvcm91dGUuYz01NDE1PXN0YXRpYyBpbnQgaXA2X3JvdXRlX211bHRpcGF0aF9hZGQoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjYvcm91dGUuYy01NTY4LVx0Lyogc2VuZCBub3RpZmljYXRpb24gZm9yIHJvdXRlcyB0aGF0IHdlcmUgYWRkZWQgc28gdGhhdFxubmV0L2lwdjYvcm91dGUuYzo1NTY5Olx0ICogdGhlIGRlbGV0ZSBub3RpZmljYXRpb25zIHNlbnQgYnkgaXA2X3JvdXRlX2RlbCBhcmVcbm5ldC9pcHY2L3JvdXRlLmMtNTU3MC1cdCAqIGNvaGVyZW50XG4tLVxubmV0L2lwdjYvcm91dGUuYy01NTc4LVx0XHRcdGJyZWFrO1xubmV0L2lwdjYvcm91dGUuYzo1NTc5Olx0XHRpcDZfcm91dGVfZGVsKFx1MDAyNm5oLVx1MDAzZXJfY2ZnLCBleHRhY2spO1xubmV0L2lwdjYvcm91dGUuYy01NTgwLVx0fVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NTU5Mj1zdGF0aWMgaW50IGlwNl9yb3V0ZV9tdWx0aXBhdGhfZGVsKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNTYyMS1cbm5ldC9pcHY2L3JvdXRlLmM6NTYyMjpcdFx0ZXJyID0gaXA2X3JvdXRlX2RlbChcdTAwMjZyX2NmZywgZXh0YWNrKTtcbm5ldC9pcHY2L3JvdXRlLmMtNTYyMy1cdFx0aWYgKGVycilcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTU2MzI9c3RhdGljIGludCBpbmV0Nl9ydG1fZGVscm91dGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L2lwdjYvcm91dGUuYy01NjU2LVx0XHRjZmcuZmNfZGVsZXRlX2FsbF9uaCA9IDE7XG5uZXQvaXB2Ni9yb3V0ZS5jOjU2NTc6XHRcdHJldHVybiBpcDZfcm91dGVfZGVsKFx1MDAyNmNmZywgZXh0YWNrKTtcbm5ldC9pcHY2L3JvdXRlLmMtNTY1OC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODg5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgSVB2NiBSb3V0ZSBEZWxldGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIHR3byBwcmltYXJ5IHdheXMgdG8gZGVsZXRlIElQdjYgcm91dGVzOiBgaW5ldDZfcnRtX2RlbHJvdXRlYCB2aWEgTmV0bGluayBhbmQgYGlwdjZfcm91dGVfaW9jdGxgIHVzaW5nIHRoZSBgU0lPQ0RFTFJUYCBpb2N0bC4gR29vZC4gVGhpcyBtZWFucyBJIGhhdmUgbXVsdGlwbGUgZW50cnkgcG9pbnRzIHRvIHRhcmdldC4gVGhlIGtleSBmdW5jdGlvbiB0aGF0IGludGVyZXN0cyBtZSBpcyBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYC4gVGhhdCBmdW5jdGlvbiBnZXRzIGNhbGxlZCB3aGVuIGRlbGV0aW5nIGFuIElQdjYgcm91dGUgdGhhdCBoYXMgc2libGluZ3PigJRtZWFuaW5nLCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggbXVsdGlwYXRoIHJvdXRlcy4gVGhhdCBzb3VuZHMgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBzaGFyZWQgcmVzb3VyY2VzLgoKRm9jdXNpbmcgb24gYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgYW5kIGBpcDZfcm91dGVfZGVsYCBkaXJlY3RseSBzaG91bGQgYmUgbXkgc3RyYXRlZ3kuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQgZm9yIHRoaXMuIGBJUFY2YCBpcywgb2YgY291cnNlLCBlc3NlbnRpYWwsIGJ1dCBJIHN1c3BlY3QgSSBuZWVkIGVpdGhlciBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLCBgSVBWNl9ST1VURVJfUFJFRmAsIG9yIHBvdGVudGlhbGx5IGBJUFY2X1JPVVRFX0lORk9gIHRvIGVuYWJsZSBtdWx0aXBhdGggYmVoYXZpb3IuIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgYG5ldC9pcHY2L0tjb25maWdgIHRvIGNvbmZpcm0gd2hpY2ggb25lIGNvbnRyb2xzIHRoZSBtdWx0aXBhdGggYXNwZWN0cy4gQWx0aG91Z2ggbXVsdGlwYXRoIGlzIGZhaXJseSBzdGFuZGFyZCBmb3IgSVB2NiwgSSB3YW50IHRvIGJlICphYnNvbHV0ZWx5KiBzdXJlIEkgaGF2ZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBlbmFibGVkLiBOZWVkIHRvIGJlIHRob3JvdWdoIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXA2X2RlbF9ydF9zaWJsaW5ncyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTM5OTc9aW50IGlwNl9kZWxfcnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl9pbmZvICpydCwgYm9vbCBza2lwX25vdGlmeSlcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQwMDYtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQwMDc6c3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxubmV0L2lwdjYvcm91dGUuYy00MDA4LXtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQxNDI9c3RhdGljIGludCBpcDZfcm91dGVfZGVsKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDIxOS1cdFx0XHRlbHNlXG5uZXQvaXB2Ni9yb3V0ZS5jOjQyMjA6XHRcdFx0XHRlcnIgPSBfX2lwNl9kZWxfcnRfc2libGluZ3MocnQsIGNmZyk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQyMjEtXHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYxMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIElQdjYgUm91dGluZyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgSVB2NiByb3V0aW5nIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyB0aGUgYG5ldC9pcHY2L0tjb25maWdgIGZpbGUgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBvcHRpb25zIG9yIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gcm91dGluZyB0aGF0IEkgY2FuIGV4YW1pbmUuIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbGx5IHRvIHR3ZWFrIGEgc2V0dGluZyBvciB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgZmVhdHVyZSYjMzk7cyBhdmFpbGFiaWxpdHkuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBWNiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZy01LVxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtUaGUgSVB2NiBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy0yMC1cbm5ldC9pcHY2L0tjb25maWc6MjE6Y29uZmlnIElQVjZfUk9VVEVSX1BSRUZcbm5ldC9pcHY2L0tjb25maWctMjItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlciBQcmVmZXJlbmNlIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzAtXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cbm5ldC9pcHY2L0tjb25maWctMzItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzgtXG5uZXQvaXB2Ni9LY29uZmlnOjM5OmNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXG5uZXQvaXB2Ni9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtJUHY2OiBFbmFibGUgUkZDIDQ0MjkgT3B0aW1pc3RpYyBEQURcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXG5uZXQvaXB2Ni9LY29uZmlnOjExMjpjb25maWcgSVBWNl9NSVA2XG5uZXQvaXB2Ni9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IE1vYmlsaXR5XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTktXG5uZXQvaXB2Ni9LY29uZmlnOjEyMDpjb25maWcgSVBWNl9JTEFcbm5ldC9pcHY2L0tjb25maWctMTIxLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSWRlbnRpZmllciBMb2NhdG9yIEFkZHJlc3NpbmcgKElMQSlcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE0Nj1jb25maWcgSU5FVDZfVFVOTkVMXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNDktXG5uZXQvaXB2Ni9LY29uZmlnOjE1MDpjb25maWcgSVBWNl9WVElcbm5ldC9pcHY2L0tjb25maWctMTUxLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCAoc2VjdXJlKSBJUHY2OiB0dW5uZWxpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE2MS1cbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxubmV0L2lwdjYvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTc2LVxubmV0L2lwdjYvS2NvbmZpZzoxNzc6Y29uZmlnIElQVjZfU0lUXzZSRFxubmV0L2lwdjYvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O0lQdjY6IElQdjYgUmFwaWQgRGVwbG95bWVudCAoNlJEKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTk1LVxubmV0L2lwdjYvS2NvbmZpZzoxOTY6Y29uZmlnIElQVjZfTkRJU0NfTk9ERVRZUEVcbm5ldC9pcHY2L0tjb25maWctMTk3LVx0Ym9vbFxubmV0L2lwdjYvS2NvbmZpZy0xOTgtXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMDktXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcbm5ldC9pcHY2L0tjb25maWctMjExLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogR1JFIHR1bm5lbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjI3LVxubmV0L2lwdjYvS2NvbmZpZzoyMjg6Y29uZmlnIElQVjZfRk9VXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXG5uZXQvaXB2Ni9LY29uZmlnOjIzMjpjb25maWcgSVBWNl9GT1VfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIzMy1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjQyLVxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcbm5ldC9pcHY2L0tjb25maWctMjQ0LVx0Ym9vbCBcJiMzNDtJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yNTYtXG5uZXQvaXB2Ni9LY29uZmlnOjI1Nzpjb25maWcgSVBWNl9NUk9VVEVcbm5ldC9pcHY2L0tjb25maWctMjU4LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjY0LVxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvS2NvbmZpZy0yNjYtXHRib29sIFwmIzM0O0lQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjc4LVxubmV0L2lwdjYvS2NvbmZpZzoyNzk6Y29uZmlnIElQVjZfUElNU01fVjJcbm5ldC9pcHY2L0tjb25maWctMjgwLVx0Ym9vbCBcJiMzNDtJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjg3LVx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjk5LVxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9LY29uZmlnLTMwMS1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzExLVxubmV0L2lwdjYvS2NvbmZpZzozMTI6Y29uZmlnIElQVjZfU0VHNl9CUEZcbm5ldC9pcHY2L0tjb25maWctMzEzLVx0ZGVmX2Jvb2wgeVxuLS1cbm5ldC9pcHY2L0tjb25maWctMzE2LVxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTMxOC1cdGJvb2wgXCYjMzQ7SVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0zMjctXG5uZXQvaXB2Ni9LY29uZmlnOjMyODpjb25maWcgSVBWNl9JT0FNNl9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMjktXHRib29sIFwmIzM0O0lQdjY6IElPQU0gUHJlLWFsbG9jYXRlZCBUcmFjZSBpbnNlcnRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzQxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVB2NiBSb3V0aW5nIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9pcHY2L3JvdXRlLmNgLiBUaGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUgaXMgb2J2aW91c2x5IGBJUFY2YC4gTm93LCBJJiMzOTttIHNlZWluZyBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIG1lbnRpb25lZCwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHJlbGF0ZSB0aGF0IHRvIHJvdXRpbmcgdGFibGVzLiBIb3dldmVyLCBJUHY2IGluaGVyZW50bHkgc3VwcG9ydHMgbXVsdGlwYXRoIHJvdXRpbmcsIGFuZCBpdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBmZWF0dXJlLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgd2UgYWN0dWFsbHkgbmVlZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIHRvIGVuYWJsZSB0aGF0IGZ1bmN0aW9uYWxpdHksIG9yIGlmIHRoZXJlJiMzOTtzIHNvbWUgbnVhbmNlIEkmIzM5O20gbWlzc2luZy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgbXVsdGlwYXRoIGJlaW5nIHN1cHBvcnRlZCBieSBkZWZhdWx0IGluIHRoZSBJUHY2IGltcGxlbWVudGF0aW9uLgoKQWxyaWdodCwgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIGFuZCB0YWtlIGFub3RoZXIgbG9vayBhdCBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYCB3aXRoaW4gYG5ldC9pcHY2L3JvdXRlLmNgLiBOZWVkIHRvIGJlIHN1cmUgaXQmIzM5O3Mgbm90IHRoZSBjYXVzZSBvZiBhbnkgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2lwNl9kZWxfcnRfc2libGluZ3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmM9Mzk5Nz1pbnQgaXA2X2RlbF9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBib29sIHNraXBfbm90aWZ5KVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDAwNi1cbm5ldC9pcHY2L3JvdXRlLmM6NDAwNzpzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXG5uZXQvaXB2Ni9yb3V0ZS5jLTQwMDgte1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDE0Mj1zdGF0aWMgaW50IGlwNl9yb3V0ZV9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjYvcm91dGUuYy00MjE5LVx0XHRcdGVsc2Vcbm5ldC9pcHY2L3JvdXRlLmM6NDIyMDpcdFx0XHRcdGVyciA9IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhydCwgY2ZnKTtcbm5ldC9pcHY2L3JvdXRlLmMtNDIyMS1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYCBDYWxsIHdpdGhpbiBgaXA2X3JvdXRlX2RlbGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpc3NlY3QgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgY2FsbCBhcyBpdCBzaXRzIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBpcDZfcm91dGVfZGVsYC4gSSYjMzk7bSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBob3cgdGhlIHJlbW92YWwgb2YgYSByb3V0ZSYjMzk7cyBzaWJsaW5ncyBpbXBhY3RzIHRoZSBvdmVyYWxsIHJvdXRpbmcgdGFibGUgc3RhdGUgYW5kIHBvdGVudGlhbGx5IHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgcm91dGluZyBpbmZvcm1hdGlvbi4gSSYjMzk7bSBhc3N1bWluZywgb2YgY291cnNlLCB0aGF0IHNpYmxpbmdzIGFyZSByb3V0ZXMgdGhhdCBzaGFyZSBzb21lIGNvbW1vbiBjaGFyYWN0ZXJpc3RpY3MuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIHdoYXQgYXJlIHRoZSBjcml0ZXJpYSB1c2VkIHRvIGRlZmluZSBhIHJvdXRlJiMzOTtzICYjMzQ7c2libGluZyYjMzQ7IGluIHRoaXMgSVB2NiBjb250ZXh0PwoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIGxvY2tzIGluIHBsYXkgKGFuZCBhbnkgcG90ZW50aWFsIG9yZGVyaW5nIGlzc3VlcyksIGFuZCB0aGUgb3ZlcmFsbCBnb2FsIG9mIHRoaXMgZnVuY3Rpb24uIElzIHRoaXMgY2FsbCBhYm91dCBjbGVhbnVwIGFmdGVyIGEgcm91dGUgZGVsZXRpb24sIGEgcmVvcmdhbml6YXRpb24gb2YgdGhlIHJvdXRpbmcgdGFibGUsIG9yIHNvbWV0aGluZyBtb3JlIGludHJpY2F0ZT8gSXMgdGhpcyBhIGNyaXRpY2FsIHBhdGggb3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgZmFzdCBhbmQgYXRvbWljLCBvciBpcyBpdCBtb3JlIG9mIGEgaG91c2VrZWVwaW5nIHRhc2sgdGhhdCBjYW4gYWZmb3JkIHRvIGJlIG1vcmUgcmVsYXhlZD8gSSYjMzk7bGwgcHJvYmFibHkgYmUgY2hlY2tpbmcgaG93IHRoZSBzaWJsaW5nIHJvdXRlcyBhcmUgcmVsYXRlZCwgd2hldGhlciB0aGV5IHBvaW50IHRvIHRoZSBzYW1lIG5leHQgaG9wLCBiZWxvbmcgdG8gdGhlIHNhbWUgcm91dGluZyBkb21haW4sIGV0Yy4gVGhlbiwgSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBzaWJsaW5nIHJlbW92YWwgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByYWNlIGNvbmRpdGlvbnMgb3IgY2F1c2UgYW55IHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzIGluIG90aGVyIHBhcnRzIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJJiMzOTtsbCBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBkZXNpZ24gcHJldmVudHMgcm91dGUgZmxhcHBpbmcuIEkmIzM5O2xsIGJlIGxvb2tpbmcgY2FyZWZ1bGx5IGF0IGhvdyB0aGlzIGZ1bmN0aW9uIGludGVncmF0ZXMgd2l0aCB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIG1lY2hhbmlzbXMgYW5kIG90aGVyIHJvdXRpbmcgdGFibGUgdXBkYXRlcy4gRmluYWxseSwgSSYjMzk7bGwgYWxzbyBiZSBjb25zaWRlcmluZyBwb3NzaWJsZSBlZGdlIGNhc2VzIGFuZCBhbnkgaW1wbGljaXQgYXNzdW1wdGlvbnMgdGhhdCBtaWdodCBleGlzdCB3aXRoaW4gdGhpcyBmdW5jdGlvbiBhbmQgaXRzIGNhbGxlcnMvY2FsbGVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0MjAwOlx0XHRcdFx0XHRicmVhaztcbjQyMDE6XHRcdFx0XHR9XG40MjAyOlx0XHRcdFx0aWYgKGNmZy1cdTAwM2VmY19uaF9pZClcbjQyMDM6XHRcdFx0XHRcdGNvbnRpbnVlO1xuNDIwNDpcdFxuNDIwNTpcdFx0XHRcdG5oID0gcnQtXHUwMDNlZmliNl9uaDtcbjQyMDY6XHRcdFx0XHRpZiAoY2ZnLVx1MDAzZWZjX2lmaW5kZXggXHUwMDI2XHUwMDI2XG40MjA3Olx0XHRcdFx0ICAgICghbmgtXHUwMDNlZmliX25oX2RldiB8fFxuNDIwODpcdFx0XHRcdCAgICAgbmgtXHUwMDNlZmliX25oX2Rldi1cdTAwM2VpZmluZGV4ICE9IGNmZy1cdTAwM2VmY19pZmluZGV4KSlcbjQyMDk6XHRcdFx0XHRcdGNvbnRpbnVlO1xuNDIxMDpcdFx0XHRcdGlmIChjZmctXHUwMDNlZmNfZmxhZ3MgXHUwMDI2IFJURl9HQVRFV0FZIFx1MDAyNlx1MDAyNlxuNDIxMTpcdFx0XHRcdCAgICAhaXB2Nl9hZGRyX2VxdWFsKFx1MDAyNmNmZy1cdTAwM2VmY19nYXRld2F5LCBcdTAwMjZuaC1cdTAwM2VmaWJfbmhfZ3c2KSlcbjQyMTI6XHRcdFx0XHRcdGNvbnRpbnVlO1xuNDIxMzpcdFx0XHRcdGlmICghZmliNl9pbmZvX2hvbGRfc2FmZShydCkpXG40MjE0Olx0XHRcdFx0XHRjb250aW51ZTtcbjQyMTU6XHRcbjQyMTY6XHRcdFx0XHQvKiBpZiBnYXRld2F5IHdhcyBzcGVjaWZpZWQgb25seSBkZWxldGUgdGhlIG9uZSBob3AgKi9cbjQyMTc6XHRcdFx0XHRpZiAoY2ZnLVx1MDAzZWZjX2ZsYWdzIFx1MDAyNiBSVEZfR0FURVdBWSlcbjQyMTg6XHRcdFx0XHRcdGVyciA9IF9faXA2X2RlbF9ydChydCwgXHUwMDI2Y2ZnLVx1MDAzZWZjX25saW5mbyk7XG40MjE5Olx0XHRcdFx0ZWxzZVxuNDIyMDpcdFx0XHRcdFx0ZXJyID0gX19pcDZfZGVsX3J0X3NpYmxpbmdzKHJ0LCBjZmcpO1xuNDIyMTpcdFx0XHRcdGJyZWFrO1xuNDIyMjpcdFx0XHR9XG40MjIzOlx0XHR9XG40MjI0Olx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjQyMjU6XHRcbjQyMjY6XHRcdHJldHVybiBlcnI7XG40MjI3Olx0fVxuNDIyODpcdFxuNDIyOTpcdHN0YXRpYyB2b2lkIHJ0Nl9kb19yZWRpcmVjdChzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbjQyMzA6XHR7XG40MjMxOlx0XHRzdHJ1Y3QgbmV0ZXZlbnRfcmVkaXJlY3QgbmV0ZXZlbnQ7XG40MjMyOlx0XHRzdHJ1Y3QgcnQ2X2luZm8gKnJ0LCAqbnJ0ID0gTlVMTDtcbjQyMzM6XHRcdHN0cnVjdCBmaWI2X3Jlc3VsdCByZXMgPSB7fTtcbjQyMzQ6XHRcdHN0cnVjdCBuZGlzY19vcHRpb25zIG5kb3B0cztcbjQyMzU6XHRcdHN0cnVjdCBpbmV0Nl9kZXYgKmluNl9kZXY7XG40MjM2Olx0XHRzdHJ1Y3QgbmVpZ2hib3VyICpuZWlnaDtcbjQyMzc6XHRcdHN0cnVjdCByZF9tc2cgKm1zZztcbjQyMzg6XHRcdGludCBvcHRsZW4sIG9uX2xpbms7XG40MjM5Olx0XHR1OCAqbGxhZGRyO1xuNDI0MDpcdFxuNDI0MTpcdFx0b3B0bGVuID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gc2tiX3RyYW5zcG9ydF9oZWFkZXIoc2tiKTtcbjQyNDI6XHRcdG9wdGxlbiAtPSBzaXplb2YoKm1zZyk7XG40MjQzOlx0XG40MjQ0Olx0XHRpZiAob3B0bGVuIFx1MDAzYyAwKSB7XG40MjQ1Olx0XHRcdG5ldF9kYmdfcmF0ZWxpbWl0ZWQoXCYjMzQ7cnQ2X2RvX3JlZGlyZWN0OiBwYWNrZXQgdG9vIHNob3J0XFxuXCYjMzQ7KTtcbjQyNDY6XHRcdFx0cmV0dXJuO1xuNDI0NzpcdFx0fVxuNDI0ODpcdFxuNDI0OTpcdFx0bXNnID0gKHN0cnVjdCByZF9tc2cgKilpY21wNl9oZHIoc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODEwMAoJCQkJCQkJb3V0cHV0OiAxMDQKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBJUHY2IFJvdXRpbmcgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhbiBpc3N1ZSB3aXRoaW4gdGhlIElQdjYgcm91dGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IGluIHRoZSBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYCBmdW5jdGlvbi4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UsIHN3aXRjaGluZyBmcm9tIGBnZnBfYW55KClgIHRvIGBHRlBfQVRPTUlDYCB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgaXMgbGlrZWx5IGEgYnVnIGZpeCwgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBwcm9ibGVtIHdoZXJlIGBnZnBfYW55KClgIGNvdWxkIGxlYWQgdG8gc2xlZXBpbmcgb3IgaW5jb3JyZWN0IGZsYWcgdXNhZ2Ugd2l0aGluIGFuIGF0b21pYyBjb250ZXh0LiBPciBtYXliZSBpdCYjMzk7cyBqdXN0IGEgY2xlYW51cC4gRWl0aGVyIHdheSwgaXQmIzM5O3MgY2hhbmdpbmcgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBpdCYjMzk7cyBmdW5jdGlvbmFsLgoKVGhlIHByaW1hcnkgZnVuY3Rpb25zIG9mIGNvbmNlcm4gaGVyZSBhcmUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgYW5kIHRoZSByZWxhdGVkIGBpcDZfcm91dGVfZGVsYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRob3NlIGZvciBsYXRlci4KCldhaXQsIHRoaXMgaXMgaW50ZXJlc3RpbmcuIFRoZXkgd2VyZSB1c2luZyBgZ2ZwX2FueSgpYCB0byBhbGxvY2F0ZSB0aGUgc29ja2V0IGJ1ZmZlciAoc2tiKS4gTm93IHRoZXkmIzM5O3JlIHVzaW5nIGBHRlBfQVRPTUlDYCBhbmQgdGhhdCBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSBiZWNhdXNlIHRoaXMgaXMgYW4gaW1wb3J0YW50IHBhcnQgb2Ygcm91dGUgZGVsZXRpb24sIHNvIHRoaXMgd2FycmFudHMgYWRkaXRpb25hbCBpbnZlc3RpZ2F0aW9uLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcGF0Y2ggYWZmZWN0cyB0aGUgYElQVjZgIGNvbmZpZywgYW5kIHRoYXQgc2VlbXMgdG8gYmUgdGhlIG9ubHkgZW5hYmxpbmcgY29uZmlndXJhdGlvbi4KCkdpdmVuIHRoaXMsIEkgdGhpbmsgSSBuZWVkIHRvIGZvcm11bGF0ZSBhIHJlc3BvbnNlIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2lwNl9kZWxfcnRfc2libGluZ3MmIzM0OywKICAgICYjMzQ7aXA2X3JvdXRlX2RlbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnIGZyb20gZ2ZwX2FueSgpIHRvIEdGUF9BVE9NSUMgaW4gX19pcDZfZGVsX3J0X3NpYmxpbmdzKCksIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgSVB2NiByb3V0ZSBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2lwNl9kZWxfcnRfc2libGluZ3MmIzM0OywKICAgICYjMzQ7aXA2X3JvdXRlX2RlbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnIGZyb20gZ2ZwX2FueSgpIHRvIEdGUF9BVE9NSUMgaW4gX19pcDZfZGVsX3J0X3NpYmxpbmdzKCksIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgSVB2NiByb3V0ZSBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNToxOC42MjAwMDExMzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU2MDAyODcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pcDZfZGVsX3J0X3NpYmxpbmdzXCIsXG4gICAgXCJpcDZfcm91dGVfZGVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZmxhZyBmcm9tIGdmcF9hbnkoKSB0byBHRlBfQVRPTUlDIGluIF9faXA2X2RlbF9ydF9zaWJsaW5ncygpLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIElQdjYgcm91dGUgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNToxOC42MjAwMDcxMzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTUwNzkwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2ZjE3ODM4NmE2YmM3YWUxZjQyZmI0N2RiZjg5MDkwZTlkZGM0MDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTkgMTE6MzU6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmNcXG5pbmRleCBhMTMwMTMzNGRhNDhjMC4uZmM0MmQ2N2U1ODIyNjEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvcm91dGUuY1xcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcXG5AQCAtNDAyMiw3ICs0MDIyLDcgQEAgc3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxcbiBcXHRcXHRzdHJ1Y3QgZmliNl9ub2RlICpmbjtcXG4gXFxuIFxcdFxcdC8qIHByZWZlciB0byBzZW5kIGEgc2luZ2xlIG5vdGlmaWNhdGlvbiB3aXRoIGFsbCBob3BzICovXFxuLVxcdFxcdHNrYiA9IG5sbXNnX25ldyhydDZfbmxtc2dfc2l6ZShydCksIGdmcF9hbnkoKSk7XFxuK1xcdFxcdHNrYiA9IG5sbXNnX25ldyhydDZfbmxtc2dfc2l6ZShydCksIEdGUF9BVE9NSUMpO1xcbiBcXHRcXHRpZiAoc2tiKSB7XFxuIFxcdFxcdFxcdHUzMiBzZXEgPSBpbmZvLVxcdTAwM2VubGggPyBpbmZvLVxcdTAwM2VubGgtXFx1MDAzZW5sbXNnX3NlcSA6IDA7XFxuIFxcbkBAIC00MDc4LDcgKzQwNzgsNyBAQCBzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXFxuIFxcbiBcXHRpZiAoc2tiKSB7XFxuIFxcdFxcdHJ0bmxfbm90aWZ5KHNrYiwgbmV0LCBpbmZvLVxcdTAwM2Vwb3J0aWQsIFJUTkxHUlBfSVBWNl9ST1VURSxcXG4tXFx0XFx0XFx0ICAgIGluZm8tXFx1MDAzZW5saCwgZ2ZwX2FueSgpKTtcXG4rXFx0XFx0XFx0ICAgIGluZm8tXFx1MDAzZW5saCwgR0ZQX0FUT01JQyk7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNToxOS4wOTIyMTA2NTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDg3ODExMjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2lwNl9kZWxfcnRfc2libGluZ3NcIixcbiAgICBcImlwNl9yb3V0ZV9kZWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnIGZyb20gZ2ZwX2FueSgpIHRvIEdGUF9BVE9NSUMgaW4gX19pcDZfZGVsX3J0X3NpYmxpbmdzKCksIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgSVB2NiByb3V0ZSBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTZmMTc4Mzg2YTZiYzdhZTFmNDJmYjQ3ZGJmODkwOTBlOWRkYzQwMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDE5IDExOjM1OjE3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmNcbmluZGV4IGExMzAxMzM0ZGE0OGMwLi5mYzQyZDY3ZTU4MjI2MSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC00MDIyLDcgKzQwMjIsNyBAQCBzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXG4gXHRcdHN0cnVjdCBmaWI2X25vZGUgKmZuO1xuIFxuIFx0XHQvKiBwcmVmZXIgdG8gc2VuZCBhIHNpbmdsZSBub3RpZmljYXRpb24gd2l0aCBhbGwgaG9wcyAqL1xuLVx0XHRza2IgPSBubG1zZ19uZXcocnQ2X25sbXNnX3NpemUocnQpLCBnZnBfYW55KCkpO1xuK1x0XHRza2IgPSBubG1zZ19uZXcocnQ2X25sbXNnX3NpemUocnQpLCBHRlBfQVRPTUlDKTtcbiBcdFx0aWYgKHNrYikge1xuIFx0XHRcdHUzMiBzZXEgPSBpbmZvLVx1MDAzZW5saCA/IGluZm8tXHUwMDNlbmxoLVx1MDAzZW5sbXNnX3NlcSA6IDA7XG4gXG5AQCAtNDA3OCw3ICs0MDc4LDcgQEAgc3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxuIFxuIFx0aWYgKHNrYikge1xuIFx0XHRydG5sX25vdGlmeShza2IsIG5ldCwgaW5mby1cdTAwM2Vwb3J0aWQsIFJUTkxHUlBfSVBWNl9ST1VURSxcbi1cdFx0XHQgICAgaW5mby1cdTAwM2VubGgsIGdmcF9hbnkoKSk7XG4rXHRcdFx0ICAgIGluZm8tXHUwMDNlbmxoLCBHRlBfQVRPTUlDKTtcbiBcdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTE6MzU6MTkuMDkyMjExODkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk1MDU1NTkwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSb3V0aW5nIFRhYmxlIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyBgbmV0L2lwdjYvcm91dGUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiB0aGV5J3JlIHN3aXRjaGluZyBmcm9tIHVzaW5nIGBnZnBfYW55KClgIHRvIGBHRlBfQVRPTUlDYCBpbiB0aGUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgZnVuY3Rpb24uICBJdCdzIGEgcHJldHR5IGxvdy1sZXZlbCBtb2RpZmljYXRpb24sIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGFsbG9jYXRpb24gZmxhZ3MsIG5vdGhpbmcgbWFqb3IgYXJjaGl0ZWN0dXJhbGx5LlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGNsZWFyIHRoaXMgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgZnVuY3Rpb24gaXMgZGVlcGx5IGludm9sdmVkIGluIElQdjYgcm91dGluZywgbGlrZWx5IHJlbGF0ZWQgdG8gcm91dGUgZGVsZXRpb24sIGZyb20gdGhlIG5hbWluZyBpdHNlbGYuICBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggYWx0ZXJzIGFsbG9jYXRpb25zIGZvciBjcmVhdGluZyBgc2tiYCB3aGljaCBhcmUgdXNlZCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgdG8gdXNlcnNwYWNlLlxuXG5UaGUgY29kZSdzIHB1cnBvc2UgaXMsIHByZXN1bWFibHksIHRvIHNlbmQgbm90aWZpY2F0aW9ucywgcHJlc3VtYWJseSB0byB1c2Vyc3BhY2UsIHdoZW4gcm91dGVzIGFyZSBkZWxldGVkLiBUaGUgY2hhbmdlIHRvIGBHRlBfQVRPTUlDYCBzdWdnZXN0cyB0aGlzIGNvZGUgcGF0aCBjb3VsZCBiZSBpbnZva2VkIGZyb20gaW50ZXJydXB0IGNvbnRleHQgb3IgYSBjcml0aWNhbCBzZWN0aW9uIHdoZXJlIHNsZWVwaW5nIGlzbid0IGFsbG93ZWQuIExldCdzIGRpZyBhIGJpdCBkZWVwZXIgYW5kIHNlZSB3aGVyZSBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYCBpcyBjYWxsZWQuIEEgcXVpY2sgZ3JlcCBzaG91bGQgcmV2ZWFsIHRoZSBjYWxsaW5nIGNvbnRleHRzLCBhbmQgdGhhdCdsbCBnaXZlIG1lIGEgbXVjaCBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCB3aGV0aGVyIG9yIG5vdCBpdCdzIHJlYXNvbmFibGUuICBJIHNob3VsZCBjb25maXJtIHRoYXQgdGhlc2UgY29udGV4dHMgd291bGQgcmVhbGx5IHJlcXVpcmUgYWxsb2NhdGlvbiBmcm9tIGF0b21pYyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTkxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTE6MzU6MjYuMDQyNzY5ODc4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDM1ODM1MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcDZfZGVsX3J0X3NpYmxpbmdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9Mzk5Nz1pbnQgaXA2X2RlbF9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBib29sIHNraXBfbm90aWZ5KVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00MDA2LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDAwNzpzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXFxubmV0L2lwdjYvcm91dGUuYy00MDA4LXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDE0Mj1zdGF0aWMgaW50IGlwNl9yb3V0ZV9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQyMTktXFx0XFx0XFx0ZWxzZVxcbm5ldC9pcHY2L3JvdXRlLmM6NDIyMDpcXHRcXHRcXHRcXHRlcnIgPSBfX2lwNl9kZWxfcnRfc2libGluZ3MocnQsIGNmZyk7XFxubmV0L2lwdjYvcm91dGUuYy00MjIxLVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNToyOC4yNDYzNTkxNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTE3MjQyODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBJUHY2IFJvdXRpbmcgVGFibGUgUmVtb3ZhbCoqXG5cbk9rYXksIHNvIHdlJ3JlIHN0YXJ0aW5nIHdpdGggYGlwNl9yb3V0ZV9kZWxgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgYWxvbmUgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBkZWxldGlvbiBvZiBhbiBJUHY2IHJvdXRlLiBNeSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaG8ncyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSB1cHN0cmVhbSBmdW5jdGlvbnMgdGhhdCBhcmUgcmVzcG9uc2libGUgZm9yIHRyaWdnZXJpbmcgdGhpcyBkZWxldGlvbi4gRmluZGluZyB0aGUgY2FsbGVycyBvZiBgaXA2X3JvdXRlX2RlbGAgd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiAqd2h5KiB0aGlzIHJvdXRlIGlzIGJlaW5nIHJlbW92ZWQuIEFyZSB3ZSBkZWFsaW5nIHdpdGggaW50ZXJmYWNlIHNodXRkb3ducz8gUm91dGluZyBwcm90b2NvbCB1cGRhdGVzPyBDb25maWd1cmF0aW9uIGNoYW5nZXM/IEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIGlzIGVzc2VudGlhbCB0byBhbnN3ZXJpbmcgdGhvc2UgcXVlc3Rpb25zLiBTbywgbGV0J3MgdHJhY2UgYmFjayBmcm9tIGBpcDZfcm91dGVfZGVsYCBhbmQgc2VlIHdobydzIGluaXRpYXRpbmcgdGhpcyByZW1vdmFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTE6MzU6MzIuMDU4MDg1MTY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTc3MzgxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXA2X3JvdXRlX2RlbFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jPTQxMzI9c3RhdGljIGludCBpcDZfZGVsX2NhY2hlZF9ydF9uaChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZywgc3RydWN0IGZpYjZfaW5mbyAqZjZpKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00MTQxLVxcbm5ldC9pcHY2L3JvdXRlLmM6NDE0MjpzdGF0aWMgaW50IGlwNl9yb3V0ZV9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxubmV0L2lwdjYvcm91dGUuYy00MTQzLVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ1Nzg9aW50IGlwdjZfcm91dGVfaW9jdGwoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgY21kLCBzdHJ1Y3QgaW42X3J0bXNnICpydG1zZylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDU5Ny1cXHRjYXNlIFNJT0NERUxSVDpcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ1OTg6XFx0XFx0ZXJyID0gaXA2X3JvdXRlX2RlbChcXHUwMDI2Y2ZnLCBOVUxMKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1OTktXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTU0MTU9c3RhdGljIGludCBpcDZfcm91dGVfbXVsdGlwYXRoX2FkZChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNTU2OC1cXHQvKiBzZW5kIG5vdGlmaWNhdGlvbiBmb3Igcm91dGVzIHRoYXQgd2VyZSBhZGRlZCBzbyB0aGF0XFxubmV0L2lwdjYvcm91dGUuYzo1NTY5OlxcdCAqIHRoZSBkZWxldGUgbm90aWZpY2F0aW9ucyBzZW50IGJ5IGlwNl9yb3V0ZV9kZWwgYXJlXFxubmV0L2lwdjYvcm91dGUuYy01NTcwLVxcdCAqIGNvaGVyZW50XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTU1NzgtXFx0XFx0XFx0YnJlYWs7XFxubmV0L2lwdjYvcm91dGUuYzo1NTc5OlxcdFxcdGlwNl9yb3V0ZV9kZWwoXFx1MDAyNm5oLVxcdTAwM2VyX2NmZywgZXh0YWNrKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTU1ODAtXFx0fVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz01NTkyPXN0YXRpYyBpbnQgaXA2X3JvdXRlX211bHRpcGF0aF9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTU2MjEtXFxubmV0L2lwdjYvcm91dGUuYzo1NjIyOlxcdFxcdGVyciA9IGlwNl9yb3V0ZV9kZWwoXFx1MDAyNnJfY2ZnLCBleHRhY2spO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTYyMy1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz01NjMyPXN0YXRpYyBpbnQgaW5ldDZfcnRtX2RlbHJvdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy01NjU2LVxcdFxcdGNmZy5mY19kZWxldGVfYWxsX25oID0gMTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjU2NTc6XFx0XFx0cmV0dXJuIGlwNl9yb3V0ZV9kZWwoXFx1MDAyNmNmZywgZXh0YWNrKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTU2NTgtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTozMy45NTU4MzI5MzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTYwOTE2NTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgSVB2NiBSb3V0ZSBEZWxldGlvbioqXG5cbk9rYXksIHNvIEkndmUgaWRlbnRpZmllZCB0d28gcHJpbWFyeSB3YXlzIHRvIGRlbGV0ZSBJUHY2IHJvdXRlczogYGluZXQ2X3J0bV9kZWxyb3V0ZWAgdmlhIE5ldGxpbmsgYW5kIGBpcHY2X3JvdXRlX2lvY3RsYCB1c2luZyB0aGUgYFNJT0NERUxSVGAgaW9jdGwuIEdvb2QuIFRoaXMgbWVhbnMgSSBoYXZlIG11bHRpcGxlIGVudHJ5IHBvaW50cyB0byB0YXJnZXQuIFRoZSBrZXkgZnVuY3Rpb24gdGhhdCBpbnRlcmVzdHMgbWUgaXMgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AuIFRoYXQgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgd2hlbiBkZWxldGluZyBhbiBJUHY2IHJvdXRlIHRoYXQgaGFzIHNpYmxpbmdz4oCUbWVhbmluZywgaXQncyBkZWFsaW5nIHdpdGggbXVsdGlwYXRoIHJvdXRlcy4gVGhhdCBzb3VuZHMgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBzaGFyZWQgcmVzb3VyY2VzLlxuXG5Gb2N1c2luZyBvbiBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYCBhbmQgYGlwNl9yb3V0ZV9kZWxgIGRpcmVjdGx5IHNob3VsZCBiZSBteSBzdHJhdGVneS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb24gaXMgZW5hYmxlZCBmb3IgdGhpcy4gYElQVjZgIGlzLCBvZiBjb3Vyc2UsIGVzc2VudGlhbCwgYnV0IEkgc3VzcGVjdCBJIG5lZWQgZWl0aGVyIGBJUFY2X01VTFRJUExFX1RBQkxFU2AsIGBJUFY2X1JPVVRFUl9QUkVGYCwgb3IgcG90ZW50aWFsbHkgYElQVjZfUk9VVEVfSU5GT2AgdG8gZW5hYmxlIG11bHRpcGF0aCBiZWhhdmlvci4gSSBzaG91bGQgcXVpY2tseSBjaGVjayBgbmV0L2lwdjYvS2NvbmZpZ2AgdG8gY29uZmlybSB3aGljaCBvbmUgY29udHJvbHMgdGhlIG11bHRpcGF0aCBhc3BlY3RzLiBBbHRob3VnaCBtdWx0aXBhdGggaXMgZmFpcmx5IHN0YW5kYXJkIGZvciBJUHY2LCBJIHdhbnQgdG8gYmUgKmFic29sdXRlbHkqIHN1cmUgSSBoYXZlIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGVuYWJsZWQuIE5lZWQgdG8gYmUgdGhvcm91Z2ghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTE6MzU6NDEuMTE2NzUxMzk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzYyNDkxMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcDZfZGVsX3J0X3NpYmxpbmdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9Mzk5Nz1pbnQgaXA2X2RlbF9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBib29sIHNraXBfbm90aWZ5KVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00MDA2LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDAwNzpzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXFxubmV0L2lwdjYvcm91dGUuYy00MDA4LXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDE0Mj1zdGF0aWMgaW50IGlwNl9yb3V0ZV9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQyMTktXFx0XFx0XFx0ZWxzZVxcbm5ldC9pcHY2L3JvdXRlLmM6NDIyMDpcXHRcXHRcXHRcXHRlcnIgPSBfX2lwNl9kZWxfcnRfc2libGluZ3MocnQsIGNmZyk7XFxubmV0L2lwdjYvcm91dGUuYy00MjIxLVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo0My4xNTMwMDUzODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzIyMDA5OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyBJUHY2IFJvdXRpbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgSVB2NiByb3V0aW5nIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIHRoZSBgbmV0L2lwdjYvS2NvbmZpZ2AgZmlsZSBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nLiBJJ2xsIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgb3B0aW9ucyBvciBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHJvdXRpbmcgdGhhdCBJIGNhbiBleGFtaW5lLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbGx5IHRvIHR3ZWFrIGEgc2V0dGluZyBvciB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgZmVhdHVyZSdzIGF2YWlsYWJpbGl0eS4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo0Ni40NzUwMTc0MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNjgzNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUFY2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZy01LVxcbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcXG5uZXQvaXB2Ni9LY29uZmlnLTctXFx0Ym9vbCBcXFwiVGhlIElQdjYgcHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTE5PWlmIElQVjZcXG5uZXQvaXB2Ni9LY29uZmlnLTIwLVxcbm5ldC9pcHY2L0tjb25maWc6MjE6Y29uZmlnIElQVjZfUk9VVEVSX1BSRUZcXG5uZXQvaXB2Ni9LY29uZmlnLTIyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlciBQcmVmZXJlbmNlIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzAtXFxubmV0L2lwdjYvS2NvbmZpZzozMTpjb25maWcgSVBWNl9ST1VURV9JTkZPXFxubmV0L2lwdjYvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJJUHY2OiBSb3V0ZSBJbmZvcm1hdGlvbiAoUkZDIDQxOTEpIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTM4LVxcbm5ldC9pcHY2L0tjb25maWc6Mzk6Y29uZmlnIElQVjZfT1BUSU1JU1RJQ19EQURcXG5uZXQvaXB2Ni9LY29uZmlnLTQwLVxcdGJvb2wgXFxcIklQdjY6IEVuYWJsZSBSRkMgNDQyOSBPcHRpbWlzdGljIERBRFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTAyPWNvbmZpZyBJTkVUNl9JUENPTVBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTExLVxcbm5ldC9pcHY2L0tjb25maWc6MTEyOmNvbmZpZyBJUFY2X01JUDZcXG5uZXQvaXB2Ni9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogTW9iaWxpdHlcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTExOS1cXG5uZXQvaXB2Ni9LY29uZmlnOjEyMDpjb25maWcgSVBWNl9JTEFcXG5uZXQvaXB2Ni9LY29uZmlnLTEyMS1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSWRlbnRpZmllciBMb2NhdG9yIEFkZHJlc3NpbmcgKElMQSlcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTE0Nj1jb25maWcgSU5FVDZfVFVOTkVMXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE0OS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE1MDpjb25maWcgSVBWNl9WVElcXG5uZXQvaXB2Ni9LY29uZmlnLTE1MS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCAoc2VjdXJlKSBJUHY2OiB0dW5uZWxpbmdcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE2MS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE2Mjpjb25maWcgSVBWNl9TSVRcXG5uZXQvaXB2Ni9LY29uZmlnLTE2My1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVB2Ni1pbi1JUHY0IHR1bm5lbCAoU0lUIGRyaXZlcilcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE3Ni1cXG5uZXQvaXB2Ni9LY29uZmlnOjE3Nzpjb25maWcgSVBWNl9TSVRfNlJEXFxubmV0L2lwdjYvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwiSVB2NjogSVB2NiBSYXBpZCBEZXBsb3ltZW50ICg2UkQpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xOTUtXFxubmV0L2lwdjYvS2NvbmZpZzoxOTY6Y29uZmlnIElQVjZfTkRJU0NfTk9ERVRZUEVcXG5uZXQvaXB2Ni9LY29uZmlnLTE5Ny1cXHRib29sXFxubmV0L2lwdjYvS2NvbmZpZy0xOTgtXFxubmV0L2lwdjYvS2NvbmZpZzoxOTk6Y29uZmlnIElQVjZfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGUgXFxcIklQdjY6IElQLWluLUlQdjYgdHVubmVsIChSRkMyNDczKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjA5LVxcbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxcbm5ldC9pcHY2L0tjb25maWctMjExLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBHUkUgdHVubmVsXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMjctXFxubmV0L2lwdjYvS2NvbmZpZzoyMjg6Y29uZmlnIElQVjZfRk9VXFxubmV0L2lwdjYvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjMxLVxcbm5ldC9pcHY2L0tjb25maWc6MjMyOmNvbmZpZyBJUFY2X0ZPVV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIzMy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiSVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cXG5uZXQvaXB2Ni9LY29uZmlnOjI0Mzpjb25maWcgSVBWNl9TVUJUUkVFU1xcbm5ldC9pcHY2L0tjb25maWctMjQ0LVxcdGJvb2wgXFxcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI1Ni1cXG5uZXQvaXB2Ni9LY29uZmlnOjI1Nzpjb25maWcgSVBWNl9NUk9VVEVcXG5uZXQvaXB2Ni9LY29uZmlnLTI1OC1cXHRib29sIFxcXCJJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjY0LVxcbm5ldC9pcHY2L0tjb25maWc6MjY1OmNvbmZpZyBJUFY2X01ST1VURV9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTI2Ni1cXHRib29sIFxcXCJJUHY2OiBtdWx0aWNhc3QgcG9saWN5IHJvdXRpbmdcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI3OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjI3OTpjb25maWcgSVBWNl9QSU1TTV9WMlxcbm5ldC9pcHY2L0tjb25maWctMjgwLVxcdGJvb2wgXFxcIklQdjY6IFBJTS1TTSB2ZXJzaW9uIDIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjg1LVxcbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cXHRib29sIFxcXCJJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjk5LVxcbm5ldC9pcHY2L0tjb25maWc6MzAwOmNvbmZpZyBJUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L0tjb25maWctMzAxLVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBITUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMxMS1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxMjpjb25maWcgSVBWNl9TRUc2X0JQRlxcbm5ldC9pcHY2L0tjb25maWctMzEzLVxcdGRlZl9ib29sIHlcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzE2LVxcbm5ldC9pcHY2L0tjb25maWc6MzE3OmNvbmZpZyBJUFY2X1JQTF9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMzE4LVxcdGJvb2wgXFxcIklQdjY6IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzI3LVxcbm5ldC9pcHY2L0tjb25maWc6MzI4OmNvbmZpZyBJUFY2X0lPQU02X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMjktXFx0Ym9vbCBcXFwiSVB2NjogSU9BTSBQcmUtYWxsb2NhdGVkIFRyYWNlIGluc2VydGlvbiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo0Ni41Mzg3MDc2MThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwMTk5NjQyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQdjYgUm91dGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9pcHY2L3JvdXRlLmNgLiBUaGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUgaXMgb2J2aW91c2x5IGBJUFY2YC4gTm93LCBJJ20gc2VlaW5nIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgbWVudGlvbmVkLCBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gcmVsYXRlIHRoYXQgdG8gcm91dGluZyB0YWJsZXMuIEhvd2V2ZXIsIElQdjYgaW5oZXJlbnRseSBzdXBwb3J0cyBtdWx0aXBhdGggcm91dGluZywgYW5kIGl0J3MgYSBwcmV0dHkgc3RhbmRhcmQgZmVhdHVyZS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIHdlIGFjdHVhbGx5IG5lZWQgYElQVjZfTVVMVElQTEVfVEFCTEVTYCB0byBlbmFibGUgdGhhdCBmdW5jdGlvbmFsaXR5LCBvciBpZiB0aGVyZSdzIHNvbWUgbnVhbmNlIEknbSBtaXNzaW5nLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gbGVhbmluZyB0b3dhcmRzIG11bHRpcGF0aCBiZWluZyBzdXBwb3J0ZWQgYnkgZGVmYXVsdCBpbiB0aGUgSVB2NiBpbXBsZW1lbnRhdGlvbi5cblxuQWxyaWdodCwgbGV0J3MgY2lyY2xlIGJhY2sgYW5kIHRha2UgYW5vdGhlciBsb29rIGF0IGBfX2lwNl9kZWxfcnRfc2libGluZ3NgIHdpdGhpbiBgbmV0L2lwdjYvcm91dGUuY2AuIE5lZWQgdG8gYmUgc3VyZSBpdCdzIG5vdCB0aGUgY2F1c2Ugb2YgYW55IGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM0MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo1MC44NDA3MDU3MTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNTI2Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faXA2X2RlbF9ydF9zaWJsaW5nc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9Mzk5Nz1pbnQgaXA2X2RlbF9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBib29sIHNraXBfbm90aWZ5KVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00MDA2LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDAwNzpzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXFxubmV0L2lwdjYvcm91dGUuYy00MDA4LXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDE0Mj1zdGF0aWMgaW50IGlwNl9yb3V0ZV9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQyMTktXFx0XFx0XFx0ZWxzZVxcbm5ldC9pcHY2L3JvdXRlLmM6NDIyMDpcXHRcXHRcXHRcXHRlcnIgPSBfX2lwNl9kZWxfcnRfc2libGluZ3MocnQsIGNmZyk7XFxubmV0L2lwdjYvcm91dGUuYy00MjIxLVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo1MC45MjMyMzc4OTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyMjU0MTM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBfX2lwNl9kZWxfcnRfc2libGluZ3NgIENhbGwgd2l0aGluIGBpcDZfcm91dGVfZGVsYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpc3NlY3QgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgY2FsbCBhcyBpdCBzaXRzIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBpcDZfcm91dGVfZGVsYC4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGhvdyB0aGUgcmVtb3ZhbCBvZiBhIHJvdXRlJ3Mgc2libGluZ3MgaW1wYWN0cyB0aGUgb3ZlcmFsbCByb3V0aW5nIHRhYmxlIHN0YXRlIGFuZCBwb3RlbnRpYWxseSB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIHJvdXRpbmcgaW5mb3JtYXRpb24uIEknbSBhc3N1bWluZywgb2YgY291cnNlLCB0aGF0IHNpYmxpbmdzIGFyZSByb3V0ZXMgdGhhdCBzaGFyZSBzb21lIGNvbW1vbiBjaGFyYWN0ZXJpc3RpY3MuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIHdoYXQgYXJlIHRoZSBjcml0ZXJpYSB1c2VkIHRvIGRlZmluZSBhIHJvdXRlJ3MgXCJzaWJsaW5nXCIgaW4gdGhpcyBJUHY2IGNvbnRleHQ/XG5cbkknbGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIGxvY2tzIGluIHBsYXkgKGFuZCBhbnkgcG90ZW50aWFsIG9yZGVyaW5nIGlzc3VlcyksIGFuZCB0aGUgb3ZlcmFsbCBnb2FsIG9mIHRoaXMgZnVuY3Rpb24uIElzIHRoaXMgY2FsbCBhYm91dCBjbGVhbnVwIGFmdGVyIGEgcm91dGUgZGVsZXRpb24sIGEgcmVvcmdhbml6YXRpb24gb2YgdGhlIHJvdXRpbmcgdGFibGUsIG9yIHNvbWV0aGluZyBtb3JlIGludHJpY2F0ZT8gSXMgdGhpcyBhIGNyaXRpY2FsIHBhdGggb3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgZmFzdCBhbmQgYXRvbWljLCBvciBpcyBpdCBtb3JlIG9mIGEgaG91c2VrZWVwaW5nIHRhc2sgdGhhdCBjYW4gYWZmb3JkIHRvIGJlIG1vcmUgcmVsYXhlZD8gSSdsbCBwcm9iYWJseSBiZSBjaGVja2luZyBob3cgdGhlIHNpYmxpbmcgcm91dGVzIGFyZSByZWxhdGVkLCB3aGV0aGVyIHRoZXkgcG9pbnQgdG8gdGhlIHNhbWUgbmV4dCBob3AsIGJlbG9uZyB0byB0aGUgc2FtZSByb3V0aW5nIGRvbWFpbiwgZXRjLiBUaGVuLCBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgc2libGluZyByZW1vdmFsIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByYWNlIGNvbmRpdGlvbnMgb3IgY2F1c2UgYW55IHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzIGluIG90aGVyIHBhcnRzIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ2xsIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlIGRlc2lnbiBwcmV2ZW50cyByb3V0ZSBmbGFwcGluZy4gSSdsbCBiZSBsb29raW5nIGNhcmVmdWxseSBhdCBob3cgdGhpcyBmdW5jdGlvbiBpbnRlZ3JhdGVzIHdpdGggdGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBtZWNoYW5pc21zIGFuZCBvdGhlciByb3V0aW5nIHRhYmxlIHVwZGF0ZXMuIEZpbmFsbHksIEknbGwgYWxzbyBiZSBjb25zaWRlcmluZyBwb3NzaWJsZSBlZGdlIGNhc2VzIGFuZCBhbnkgaW1wbGljaXQgYXNzdW1wdGlvbnMgdGhhdCBtaWdodCBleGlzdCB3aXRoaW4gdGhpcyBmdW5jdGlvbiBhbmQgaXRzIGNhbGxlcnMvY2FsbGVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkxNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDExOjM1OjU1LjA0NTc4MDY3M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDg1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvcm91dGUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjAwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MjAwOlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbjQyMDE6XFx0XFx0XFx0XFx0fVxcbjQyMDI6XFx0XFx0XFx0XFx0aWYgKGNmZy1cXHUwMDNlZmNfbmhfaWQpXFxuNDIwMzpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG40MjA0OlxcdFxcbjQyMDU6XFx0XFx0XFx0XFx0bmggPSBydC1cXHUwMDNlZmliNl9uaDtcXG40MjA2OlxcdFxcdFxcdFxcdGlmIChjZmctXFx1MDAzZWZjX2lmaW5kZXggXFx1MDAyNlxcdTAwMjZcXG40MjA3OlxcdFxcdFxcdFxcdCAgICAoIW5oLVxcdTAwM2VmaWJfbmhfZGV2IHx8XFxuNDIwODpcXHRcXHRcXHRcXHQgICAgIG5oLVxcdTAwM2VmaWJfbmhfZGV2LVxcdTAwM2VpZmluZGV4ICE9IGNmZy1cXHUwMDNlZmNfaWZpbmRleCkpXFxuNDIwOTpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG40MjEwOlxcdFxcdFxcdFxcdGlmIChjZmctXFx1MDAzZWZjX2ZsYWdzIFxcdTAwMjYgUlRGX0dBVEVXQVkgXFx1MDAyNlxcdTAwMjZcXG40MjExOlxcdFxcdFxcdFxcdCAgICAhaXB2Nl9hZGRyX2VxdWFsKFxcdTAwMjZjZmctXFx1MDAzZWZjX2dhdGV3YXksIFxcdTAwMjZuaC1cXHUwMDNlZmliX25oX2d3NikpXFxuNDIxMjpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG40MjEzOlxcdFxcdFxcdFxcdGlmICghZmliNl9pbmZvX2hvbGRfc2FmZShydCkpXFxuNDIxNDpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG40MjE1OlxcdFxcbjQyMTY6XFx0XFx0XFx0XFx0LyogaWYgZ2F0ZXdheSB3YXMgc3BlY2lmaWVkIG9ubHkgZGVsZXRlIHRoZSBvbmUgaG9wICovXFxuNDIxNzpcXHRcXHRcXHRcXHRpZiAoY2ZnLVxcdTAwM2VmY19mbGFncyBcXHUwMDI2IFJURl9HQVRFV0FZKVxcbjQyMTg6XFx0XFx0XFx0XFx0XFx0ZXJyID0gX19pcDZfZGVsX3J0KHJ0LCBcXHUwMDI2Y2ZnLVxcdTAwM2VmY19ubGluZm8pO1xcbjQyMTk6XFx0XFx0XFx0XFx0ZWxzZVxcbjQyMjA6XFx0XFx0XFx0XFx0XFx0ZXJyID0gX19pcDZfZGVsX3J0X3NpYmxpbmdzKHJ0LCBjZmcpO1xcbjQyMjE6XFx0XFx0XFx0XFx0YnJlYWs7XFxuNDIyMjpcXHRcXHRcXHR9XFxuNDIyMzpcXHRcXHR9XFxuNDIyNDpcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG40MjI1OlxcdFxcbjQyMjY6XFx0XFx0cmV0dXJuIGVycjtcXG40MjI3OlxcdH1cXG40MjI4OlxcdFxcbjQyMjk6XFx0c3RhdGljIHZvaWQgcnQ2X2RvX3JlZGlyZWN0KHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjQyMzA6XFx0e1xcbjQyMzE6XFx0XFx0c3RydWN0IG5ldGV2ZW50X3JlZGlyZWN0IG5ldGV2ZW50O1xcbjQyMzI6XFx0XFx0c3RydWN0IHJ0Nl9pbmZvICpydCwgKm5ydCA9IE5VTEw7XFxuNDIzMzpcXHRcXHRzdHJ1Y3QgZmliNl9yZXN1bHQgcmVzID0ge307XFxuNDIzNDpcXHRcXHRzdHJ1Y3QgbmRpc2Nfb3B0aW9ucyBuZG9wdHM7XFxuNDIzNTpcXHRcXHRzdHJ1Y3QgaW5ldDZfZGV2ICppbjZfZGV2O1xcbjQyMzY6XFx0XFx0c3RydWN0IG5laWdoYm91ciAqbmVpZ2g7XFxuNDIzNzpcXHRcXHRzdHJ1Y3QgcmRfbXNnICptc2c7XFxuNDIzODpcXHRcXHRpbnQgb3B0bGVuLCBvbl9saW5rO1xcbjQyMzk6XFx0XFx0dTggKmxsYWRkcjtcXG40MjQwOlxcdFxcbjQyNDE6XFx0XFx0b3B0bGVuID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gc2tiX3RyYW5zcG9ydF9oZWFkZXIoc2tiKTtcXG40MjQyOlxcdFxcdG9wdGxlbiAtPSBzaXplb2YoKm1zZyk7XFxuNDI0MzpcXHRcXG40MjQ0OlxcdFxcdGlmIChvcHRsZW4gXFx1MDAzYyAwKSB7XFxuNDI0NTpcXHRcXHRcXHRuZXRfZGJnX3JhdGVsaW1pdGVkKFxcXCJydDZfZG9fcmVkaXJlY3Q6IHBhY2tldCB0b28gc2hvcnRcXFxcblxcXCIpO1xcbjQyNDY6XFx0XFx0XFx0cmV0dXJuO1xcbjQyNDc6XFx0XFx0fVxcbjQyNDg6XFx0XFxuNDI0OTpcXHRcXHRtc2cgPSAoc3RydWN0IHJkX21zZyAqKWljbXA2X2hkcihza2IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo1NS4wNDYwMzA0NjNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA2MTU3MTgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IElQdjYgUm91dGluZyBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUuIEl0IHNlZW1zIGxpa2UgaXQncyBhZGRyZXNzaW5nIGFuIGlzc3VlIHdpdGhpbiB0aGUgSVB2NiByb3V0aW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGBfX2lwNl9kZWxfcnRfc2libGluZ3NgIGZ1bmN0aW9uLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlLCBzd2l0Y2hpbmcgZnJvbSBgZ2ZwX2FueSgpYCB0byBgR0ZQX0FUT01JQ2Agd2l0aGluIHRoYXQgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGxpa2VseSBhIGJ1ZyBmaXgsIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcHJvYmxlbSB3aGVyZSBgZ2ZwX2FueSgpYCBjb3VsZCBsZWFkIHRvIHNsZWVwaW5nIG9yIGluY29ycmVjdCBmbGFnIHVzYWdlIHdpdGhpbiBhbiBhdG9taWMgY29udGV4dC4gT3IgbWF5YmUgaXQncyBqdXN0IGEgY2xlYW51cC4gRWl0aGVyIHdheSwgaXQncyBjaGFuZ2luZyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGl0J3MgZnVuY3Rpb25hbC5cblxuVGhlIHByaW1hcnkgZnVuY3Rpb25zIG9mIGNvbmNlcm4gaGVyZSBhcmUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgYW5kIHRoZSByZWxhdGVkIGBpcDZfcm91dGVfZGVsYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRob3NlIGZvciBsYXRlci5cblxuV2FpdCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhleSB3ZXJlIHVzaW5nIGBnZnBfYW55KClgIHRvIGFsbG9jYXRlIHRoZSBzb2NrZXQgYnVmZmVyIChza2IpLiBOb3cgdGhleSdyZSB1c2luZyBgR0ZQX0FUT01JQ2AgYW5kIHRoYXQgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgYmVjYXVzZSB0aGlzIGlzIGFuIGltcG9ydGFudCBwYXJ0IG9mIHJvdXRlIGRlbGV0aW9uLCBzbyB0aGlzIHdhcnJhbnRzIGFkZGl0aW9uYWwgaW52ZXN0aWdhdGlvbi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcGF0Y2ggYWZmZWN0cyB0aGUgYElQVjZgIGNvbmZpZywgYW5kIHRoYXQgc2VlbXMgdG8gYmUgdGhlIG9ubHkgZW5hYmxpbmcgY29uZmlndXJhdGlvbi5cblxuR2l2ZW4gdGhpcywgSSB0aGluayBJIG5lZWQgdG8gZm9ybXVsYXRlIGEgcmVzcG9uc2Ugbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTAwLCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDExOjM2OjAxLjEwNzYwNDc4NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNDEzMzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pcDZfZGVsX3J0X3NpYmxpbmdzXCIsXG4gICAgXCJpcDZfcm91dGVfZGVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZmxhZyBmcm9tIGdmcF9hbnkoKSB0byBHRlBfQVRPTUlDIGluIF9faXA2X2RlbF9ydF9zaWJsaW5ncygpLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIElQdjYgcm91dGUgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2lwNl9kZWxfcnRfc2libGluZ3NcIixcbiAgICBcImlwNl9yb3V0ZV9kZWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnIGZyb20gZ2ZwX2FueSgpIHRvIEdGUF9BVE9NSUMgaW4gX19pcDZfZGVsX3J0X3NpYmxpbmdzKCksIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgSVB2NiByb3V0ZSBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-19 11:02:54 +0000 UTC FinishedAt: 2026-07-19 11:36:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "56d96fededd61192cd7cc8d2b0f36adfd59036c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "56d96fededd61192cd7cc8d2b0f36adfd59036c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "476ab480-dbdb-41ba-a982-9432079e9144" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__ip6_del_rt_siblings", "ip6_route_del" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDExOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2lwNl9kZWxfcnRfc2libGluZ3MmIzM0OywKICAgICYjMzQ7aXA2X3JvdXRlX2RlbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnIGZyb20gZ2ZwX2FueSgpIHRvIEdGUF9BVE9NSUMgaW4gX19pcDZfZGVsX3J0X3NpYmxpbmdzKCksIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgSVB2NiByb3V0ZSBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NmYxNzgzODZhNmJjN2FlMWY0MmZiNDdkYmY4OTA5MGU5ZGRjNDAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTE6MzU6MTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmNcbmluZGV4IGExMzAxMzM0ZGE0OGMwLi5mYzQyZDY3ZTU4MjI2MSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC00MDIyLDcgJiM0Mzs0MDIyLDcgQEAgc3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxuIFx0XHRzdHJ1Y3QgZmliNl9ub2RlICpmbjtcbiBcbiBcdFx0LyogcHJlZmVyIHRvIHNlbmQgYSBzaW5nbGUgbm90aWZpY2F0aW9uIHdpdGggYWxsIGhvcHMgKi9cbi1cdFx0c2tiID0gbmxtc2dfbmV3KHJ0Nl9ubG1zZ19zaXplKHJ0KSwgZ2ZwX2FueSgpKTtcbiYjNDM7XHRcdHNrYiA9IG5sbXNnX25ldyhydDZfbmxtc2dfc2l6ZShydCksIEdGUF9BVE9NSUMpO1xuIFx0XHRpZiAoc2tiKSB7XG4gXHRcdFx0dTMyIHNlcSA9IGluZm8tXHUwMDNlbmxoID8gaW5mby1cdTAwM2VubGgtXHUwMDNlbmxtc2dfc2VxIDogMDtcbiBcbkBAIC00MDc4LDcgJiM0Mzs0MDc4LDcgQEAgc3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxuIFxuIFx0aWYgKHNrYikge1xuIFx0XHRydG5sX25vdGlmeShza2IsIG5ldCwgaW5mby1cdTAwM2Vwb3J0aWQsIFJUTkxHUlBfSVBWNl9ST1VURSxcbi1cdFx0XHQgICAgaW5mby1cdTAwM2VubGgsIGdmcF9hbnkoKSk7XG4mIzQzO1x0XHRcdCAgICBpbmZvLVx1MDAzZW5saCwgR0ZQX0FUT01JQyk7XG4gXHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pcDZfZGVsX3J0X3NpYmxpbmdzJiMzNDssCiAgICAmIzM0O2lwNl9yb3V0ZV9kZWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZmxhZyBmcm9tIGdmcF9hbnkoKSB0byBHRlBfQVRPTUlDIGluIF9faXA2X2RlbF9ydF9zaWJsaW5ncygpLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIElQdjYgcm91dGUgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NmYxNzgzODZhNmJjN2FlMWY0MmZiNDdkYmY4OTA5MGU5ZGRjNDAxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTkgMTE6MzU6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuYwppbmRleCBhMTMwMTMzNGRhNDhjMC4uZmM0MmQ2N2U1ODIyNjEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JvdXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtNDAyMiw3ICYjNDM7NDAyMiw3IEBAIHN0YXRpYyBpbnQgX19pcDZfZGVsX3J0X3NpYmxpbmdzKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBzdHJ1Y3QgZmliNl9jb25maWcgKmNmZykKIAkJc3RydWN0IGZpYjZfbm9kZSAqZm47CiAKIAkJLyogcHJlZmVyIHRvIHNlbmQgYSBzaW5nbGUgbm90aWZpY2F0aW9uIHdpdGggYWxsIGhvcHMgKi8KLQkJc2tiID0gbmxtc2dfbmV3KHJ0Nl9ubG1zZ19zaXplKHJ0KSwgZ2ZwX2FueSgpKTsKJiM0MzsJCXNrYiA9IG5sbXNnX25ldyhydDZfbmxtc2dfc2l6ZShydCksIEdGUF9BVE9NSUMpOwogCQlpZiAoc2tiKSB7CiAJCQl1MzIgc2VxID0gaW5mby0mZ3Q7bmxoID8gaW5mby0mZ3Q7bmxoLSZndDtubG1zZ19zZXEgOiAwOwogCkBAIC00MDc4LDcgJiM0Mzs0MDc4LDcgQEAgc3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKQogCiAJaWYgKHNrYikgewogCQlydG5sX25vdGlmeShza2IsIG5ldCwgaW5mby0mZ3Q7cG9ydGlkLCBSVE5MR1JQX0lQVjZfUk9VVEUsCi0JCQkgICAgaW5mby0mZ3Q7bmxoLCBnZnBfYW55KCkpOwomIzQzOwkJCSAgICBpbmZvLSZndDtubGgsIEdGUF9BVE9NSUMpOwogCX0KIAlyZXR1cm4gZXJyOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTkxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJvdXRpbmcgVGFibGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHR3ZWFraW5nIGBuZXQvaXB2Ni9yb3V0ZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IHRoZXkmIzM5O3JlIHN3aXRjaGluZyBmcm9tIHVzaW5nIGBnZnBfYW55KClgIHRvIGBHRlBfQVRPTUlDYCBpbiB0aGUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgZnVuY3Rpb24uICBJdCYjMzk7cyBhIHByZXR0eSBsb3ctbGV2ZWwgbW9kaWZpY2F0aW9uLCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBhbGxvY2F0aW9uIGZsYWdzLCBub3RoaW5nIG1ham9yIGFyY2hpdGVjdHVyYWxseS4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIGNsZWFyIHRoaXMgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgZnVuY3Rpb24gaXMgZGVlcGx5IGludm9sdmVkIGluIElQdjYgcm91dGluZywgbGlrZWx5IHJlbGF0ZWQgdG8gcm91dGUgZGVsZXRpb24sIGZyb20gdGhlIG5hbWluZyBpdHNlbGYuICBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggYWx0ZXJzIGFsbG9jYXRpb25zIGZvciBjcmVhdGluZyBgc2tiYCB3aGljaCBhcmUgdXNlZCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgdG8gdXNlcnNwYWNlLgoKVGhlIGNvZGUmIzM5O3MgcHVycG9zZSBpcywgcHJlc3VtYWJseSwgdG8gc2VuZCBub3RpZmljYXRpb25zLCBwcmVzdW1hYmx5IHRvIHVzZXJzcGFjZSwgd2hlbiByb3V0ZXMgYXJlIGRlbGV0ZWQuIFRoZSBjaGFuZ2UgdG8gYEdGUF9BVE9NSUNgIHN1Z2dlc3RzIHRoaXMgY29kZSBwYXRoIGNvdWxkIGJlIGludm9rZWQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCBvciBhIGNyaXRpY2FsIHNlY3Rpb24gd2hlcmUgc2xlZXBpbmcgaXNuJiMzOTt0IGFsbG93ZWQuIExldCYjMzk7cyBkaWcgYSBiaXQgZGVlcGVyIGFuZCBzZWUgd2hlcmUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgaXMgY2FsbGVkLiBBIHF1aWNrIGdyZXAgc2hvdWxkIHJldmVhbCB0aGUgY2FsbGluZyBjb250ZXh0cywgYW5kIHRoYXQmIzM5O2xsIGdpdmUgbWUgYSBtdWNoIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoZXRoZXIgb3Igbm90IGl0JiMzOTtzIHJlYXNvbmFibGUuICBJIHNob3VsZCBjb25maXJtIHRoYXQgdGhlc2UgY29udGV4dHMgd291bGQgcmVhbGx5IHJlcXVpcmUgYWxsb2NhdGlvbiBmcm9tIGF0b21pYyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXA2X2RlbF9ydF9zaWJsaW5ncyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTM5OTc9aW50IGlwNl9kZWxfcnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl9pbmZvICpydCwgYm9vbCBza2lwX25vdGlmeSlcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQwMDYtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQwMDc6c3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxubmV0L2lwdjYvcm91dGUuYy00MDA4LXtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQxNDI9c3RhdGljIGludCBpcDZfcm91dGVfZGVsKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDIxOS1cdFx0XHRlbHNlXG5uZXQvaXB2Ni9yb3V0ZS5jOjQyMjA6XHRcdFx0XHRlcnIgPSBfX2lwNl9kZWxfcnRfc2libGluZ3MocnQsIGNmZyk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQyMjEtXHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwOAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkRpdmluZyBpbnRvIHRoZSBJUHY2IFJvdXRpbmcgVGFibGUgUmVtb3ZhbCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgc3RhcnRpbmcgd2l0aCBgaXA2X3JvdXRlX2RlbGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBhbG9uZSB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBkZWxldGlvbiBvZiBhbiBJUHY2IHJvdXRlLiBNeSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaG8mIzM5O3MgY2FsbGluZyB0aGlzIGZ1bmN0aW9uPyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgdXBzdHJlYW0gZnVuY3Rpb25zIHRoYXQgYXJlIHJlc3BvbnNpYmxlIGZvciB0cmlnZ2VyaW5nIHRoaXMgZGVsZXRpb24uIEZpbmRpbmcgdGhlIGNhbGxlcnMgb2YgYGlwNl9yb3V0ZV9kZWxgIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgKndoeSogdGhpcyByb3V0ZSBpcyBiZWluZyByZW1vdmVkLiBBcmUgd2UgZGVhbGluZyB3aXRoIGludGVyZmFjZSBzaHV0ZG93bnM/IFJvdXRpbmcgcHJvdG9jb2wgdXBkYXRlcz8gQ29uZmlndXJhdGlvbiBjaGFuZ2VzPyBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBpcyBlc3NlbnRpYWwgdG8gYW5zd2VyaW5nIHRob3NlIHF1ZXN0aW9ucy4gU28sIGxldCYjMzk7cyB0cmFjZSBiYWNrIGZyb20gYGlwNl9yb3V0ZV9kZWxgIGFuZCBzZWUgd2hvJiMzOTtzIGluaXRpYXRpbmcgdGhpcyByZW1vdmFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNl9yb3V0ZV9kZWwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYz00MTMyPXN0YXRpYyBpbnQgaXA2X2RlbF9jYWNoZWRfcnRfbmgoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsIHN0cnVjdCBmaWI2X2luZm8gKmY2aSlcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQxNDEtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQxNDI6c3RhdGljIGludCBpcDZfcm91dGVfZGVsKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLFxubmV0L2lwdjYvcm91dGUuYy00MTQzLVx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2lwdjYvcm91dGUuYz00NTc4PWludCBpcHY2X3JvdXRlX2lvY3RsKHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGNtZCwgc3RydWN0IGluNl9ydG1zZyAqcnRtc2cpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00NTk3LVx0Y2FzZSBTSU9DREVMUlQ6XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ1OTg6XHRcdGVyciA9IGlwNl9yb3V0ZV9kZWwoXHUwMDI2Y2ZnLCBOVUxMKTtcbm5ldC9pcHY2L3JvdXRlLmMtNDU5OS1cdFx0YnJlYWs7XG4tLVxubmV0L2lwdjYvcm91dGUuYz01NDE1PXN0YXRpYyBpbnQgaXA2X3JvdXRlX211bHRpcGF0aF9hZGQoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjYvcm91dGUuYy01NTY4LVx0Lyogc2VuZCBub3RpZmljYXRpb24gZm9yIHJvdXRlcyB0aGF0IHdlcmUgYWRkZWQgc28gdGhhdFxubmV0L2lwdjYvcm91dGUuYzo1NTY5Olx0ICogdGhlIGRlbGV0ZSBub3RpZmljYXRpb25zIHNlbnQgYnkgaXA2X3JvdXRlX2RlbCBhcmVcbm5ldC9pcHY2L3JvdXRlLmMtNTU3MC1cdCAqIGNvaGVyZW50XG4tLVxubmV0L2lwdjYvcm91dGUuYy01NTc4LVx0XHRcdGJyZWFrO1xubmV0L2lwdjYvcm91dGUuYzo1NTc5Olx0XHRpcDZfcm91dGVfZGVsKFx1MDAyNm5oLVx1MDAzZXJfY2ZnLCBleHRhY2spO1xubmV0L2lwdjYvcm91dGUuYy01NTgwLVx0fVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NTU5Mj1zdGF0aWMgaW50IGlwNl9yb3V0ZV9tdWx0aXBhdGhfZGVsKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNTYyMS1cbm5ldC9pcHY2L3JvdXRlLmM6NTYyMjpcdFx0ZXJyID0gaXA2X3JvdXRlX2RlbChcdTAwMjZyX2NmZywgZXh0YWNrKTtcbm5ldC9pcHY2L3JvdXRlLmMtNTYyMy1cdFx0aWYgKGVycilcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTU2MzI9c3RhdGljIGludCBpbmV0Nl9ydG1fZGVscm91dGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L2lwdjYvcm91dGUuYy01NjU2LVx0XHRjZmcuZmNfZGVsZXRlX2FsbF9uaCA9IDE7XG5uZXQvaXB2Ni9yb3V0ZS5jOjU2NTc6XHRcdHJldHVybiBpcDZfcm91dGVfZGVsKFx1MDAyNmNmZywgZXh0YWNrKTtcbm5ldC9pcHY2L3JvdXRlLmMtNTY1OC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODg5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgSVB2NiBSb3V0ZSBEZWxldGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIHR3byBwcmltYXJ5IHdheXMgdG8gZGVsZXRlIElQdjYgcm91dGVzOiBgaW5ldDZfcnRtX2RlbHJvdXRlYCB2aWEgTmV0bGluayBhbmQgYGlwdjZfcm91dGVfaW9jdGxgIHVzaW5nIHRoZSBgU0lPQ0RFTFJUYCBpb2N0bC4gR29vZC4gVGhpcyBtZWFucyBJIGhhdmUgbXVsdGlwbGUgZW50cnkgcG9pbnRzIHRvIHRhcmdldC4gVGhlIGtleSBmdW5jdGlvbiB0aGF0IGludGVyZXN0cyBtZSBpcyBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYC4gVGhhdCBmdW5jdGlvbiBnZXRzIGNhbGxlZCB3aGVuIGRlbGV0aW5nIGFuIElQdjYgcm91dGUgdGhhdCBoYXMgc2libGluZ3PigJRtZWFuaW5nLCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggbXVsdGlwYXRoIHJvdXRlcy4gVGhhdCBzb3VuZHMgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBzaGFyZWQgcmVzb3VyY2VzLgoKRm9jdXNpbmcgb24gYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgYW5kIGBpcDZfcm91dGVfZGVsYCBkaXJlY3RseSBzaG91bGQgYmUgbXkgc3RyYXRlZ3kuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQgZm9yIHRoaXMuIGBJUFY2YCBpcywgb2YgY291cnNlLCBlc3NlbnRpYWwsIGJ1dCBJIHN1c3BlY3QgSSBuZWVkIGVpdGhlciBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLCBgSVBWNl9ST1VURVJfUFJFRmAsIG9yIHBvdGVudGlhbGx5IGBJUFY2X1JPVVRFX0lORk9gIHRvIGVuYWJsZSBtdWx0aXBhdGggYmVoYXZpb3IuIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgYG5ldC9pcHY2L0tjb25maWdgIHRvIGNvbmZpcm0gd2hpY2ggb25lIGNvbnRyb2xzIHRoZSBtdWx0aXBhdGggYXNwZWN0cy4gQWx0aG91Z2ggbXVsdGlwYXRoIGlzIGZhaXJseSBzdGFuZGFyZCBmb3IgSVB2NiwgSSB3YW50IHRvIGJlICphYnNvbHV0ZWx5KiBzdXJlIEkgaGF2ZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBlbmFibGVkLiBOZWVkIHRvIGJlIHRob3JvdWdoIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXA2X2RlbF9ydF9zaWJsaW5ncyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTM5OTc9aW50IGlwNl9kZWxfcnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl9pbmZvICpydCwgYm9vbCBza2lwX25vdGlmeSlcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQwMDYtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQwMDc6c3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxubmV0L2lwdjYvcm91dGUuYy00MDA4LXtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQxNDI9c3RhdGljIGludCBpcDZfcm91dGVfZGVsKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDIxOS1cdFx0XHRlbHNlXG5uZXQvaXB2Ni9yb3V0ZS5jOjQyMjA6XHRcdFx0XHRlcnIgPSBfX2lwNl9kZWxfcnRfc2libGluZ3MocnQsIGNmZyk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQyMjEtXHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYxMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIElQdjYgUm91dGluZyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgSVB2NiByb3V0aW5nIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyB0aGUgYG5ldC9pcHY2L0tjb25maWdgIGZpbGUgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBvcHRpb25zIG9yIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gcm91dGluZyB0aGF0IEkgY2FuIGV4YW1pbmUuIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbGx5IHRvIHR3ZWFrIGEgc2V0dGluZyBvciB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgZmVhdHVyZSYjMzk7cyBhdmFpbGFiaWxpdHkuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBWNiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZy01LVxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtUaGUgSVB2NiBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy0yMC1cbm5ldC9pcHY2L0tjb25maWc6MjE6Y29uZmlnIElQVjZfUk9VVEVSX1BSRUZcbm5ldC9pcHY2L0tjb25maWctMjItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlciBQcmVmZXJlbmNlIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzAtXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cbm5ldC9pcHY2L0tjb25maWctMzItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzgtXG5uZXQvaXB2Ni9LY29uZmlnOjM5OmNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXG5uZXQvaXB2Ni9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtJUHY2OiBFbmFibGUgUkZDIDQ0MjkgT3B0aW1pc3RpYyBEQURcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXG5uZXQvaXB2Ni9LY29uZmlnOjExMjpjb25maWcgSVBWNl9NSVA2XG5uZXQvaXB2Ni9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IE1vYmlsaXR5XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTktXG5uZXQvaXB2Ni9LY29uZmlnOjEyMDpjb25maWcgSVBWNl9JTEFcbm5ldC9pcHY2L0tjb25maWctMTIxLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSWRlbnRpZmllciBMb2NhdG9yIEFkZHJlc3NpbmcgKElMQSlcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE0Nj1jb25maWcgSU5FVDZfVFVOTkVMXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNDktXG5uZXQvaXB2Ni9LY29uZmlnOjE1MDpjb25maWcgSVBWNl9WVElcbm5ldC9pcHY2L0tjb25maWctMTUxLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCAoc2VjdXJlKSBJUHY2OiB0dW5uZWxpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE2MS1cbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxubmV0L2lwdjYvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTc2LVxubmV0L2lwdjYvS2NvbmZpZzoxNzc6Y29uZmlnIElQVjZfU0lUXzZSRFxubmV0L2lwdjYvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O0lQdjY6IElQdjYgUmFwaWQgRGVwbG95bWVudCAoNlJEKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTk1LVxubmV0L2lwdjYvS2NvbmZpZzoxOTY6Y29uZmlnIElQVjZfTkRJU0NfTk9ERVRZUEVcbm5ldC9pcHY2L0tjb25maWctMTk3LVx0Ym9vbFxubmV0L2lwdjYvS2NvbmZpZy0xOTgtXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMDktXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcbm5ldC9pcHY2L0tjb25maWctMjExLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogR1JFIHR1bm5lbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjI3LVxubmV0L2lwdjYvS2NvbmZpZzoyMjg6Y29uZmlnIElQVjZfRk9VXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXG5uZXQvaXB2Ni9LY29uZmlnOjIzMjpjb25maWcgSVBWNl9GT1VfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIzMy1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjQyLVxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcbm5ldC9pcHY2L0tjb25maWctMjQ0LVx0Ym9vbCBcJiMzNDtJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yNTYtXG5uZXQvaXB2Ni9LY29uZmlnOjI1Nzpjb25maWcgSVBWNl9NUk9VVEVcbm5ldC9pcHY2L0tjb25maWctMjU4LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjY0LVxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvS2NvbmZpZy0yNjYtXHRib29sIFwmIzM0O0lQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjc4LVxubmV0L2lwdjYvS2NvbmZpZzoyNzk6Y29uZmlnIElQVjZfUElNU01fVjJcbm5ldC9pcHY2L0tjb25maWctMjgwLVx0Ym9vbCBcJiMzNDtJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjg3LVx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjk5LVxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9LY29uZmlnLTMwMS1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzExLVxubmV0L2lwdjYvS2NvbmZpZzozMTI6Y29uZmlnIElQVjZfU0VHNl9CUEZcbm5ldC9pcHY2L0tjb25maWctMzEzLVx0ZGVmX2Jvb2wgeVxuLS1cbm5ldC9pcHY2L0tjb25maWctMzE2LVxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTMxOC1cdGJvb2wgXCYjMzQ7SVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0zMjctXG5uZXQvaXB2Ni9LY29uZmlnOjMyODpjb25maWcgSVBWNl9JT0FNNl9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMjktXHRib29sIFwmIzM0O0lQdjY6IElPQU0gUHJlLWFsbG9jYXRlZCBUcmFjZSBpbnNlcnRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzQxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVB2NiBSb3V0aW5nIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9pcHY2L3JvdXRlLmNgLiBUaGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUgaXMgb2J2aW91c2x5IGBJUFY2YC4gTm93LCBJJiMzOTttIHNlZWluZyBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIG1lbnRpb25lZCwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHJlbGF0ZSB0aGF0IHRvIHJvdXRpbmcgdGFibGVzLiBIb3dldmVyLCBJUHY2IGluaGVyZW50bHkgc3VwcG9ydHMgbXVsdGlwYXRoIHJvdXRpbmcsIGFuZCBpdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBmZWF0dXJlLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgd2UgYWN0dWFsbHkgbmVlZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIHRvIGVuYWJsZSB0aGF0IGZ1bmN0aW9uYWxpdHksIG9yIGlmIHRoZXJlJiMzOTtzIHNvbWUgbnVhbmNlIEkmIzM5O20gbWlzc2luZy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgbXVsdGlwYXRoIGJlaW5nIHN1cHBvcnRlZCBieSBkZWZhdWx0IGluIHRoZSBJUHY2IGltcGxlbWVudGF0aW9uLgoKQWxyaWdodCwgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIGFuZCB0YWtlIGFub3RoZXIgbG9vayBhdCBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYCB3aXRoaW4gYG5ldC9pcHY2L3JvdXRlLmNgLiBOZWVkIHRvIGJlIHN1cmUgaXQmIzM5O3Mgbm90IHRoZSBjYXVzZSBvZiBhbnkgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2lwNl9kZWxfcnRfc2libGluZ3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmM9Mzk5Nz1pbnQgaXA2X2RlbF9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBib29sIHNraXBfbm90aWZ5KVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDAwNi1cbm5ldC9pcHY2L3JvdXRlLmM6NDAwNzpzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXG5uZXQvaXB2Ni9yb3V0ZS5jLTQwMDgte1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDE0Mj1zdGF0aWMgaW50IGlwNl9yb3V0ZV9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjYvcm91dGUuYy00MjE5LVx0XHRcdGVsc2Vcbm5ldC9pcHY2L3JvdXRlLmM6NDIyMDpcdFx0XHRcdGVyciA9IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhydCwgY2ZnKTtcbm5ldC9pcHY2L3JvdXRlLmMtNDIyMS1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYCBDYWxsIHdpdGhpbiBgaXA2X3JvdXRlX2RlbGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpc3NlY3QgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgY2FsbCBhcyBpdCBzaXRzIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBpcDZfcm91dGVfZGVsYC4gSSYjMzk7bSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBob3cgdGhlIHJlbW92YWwgb2YgYSByb3V0ZSYjMzk7cyBzaWJsaW5ncyBpbXBhY3RzIHRoZSBvdmVyYWxsIHJvdXRpbmcgdGFibGUgc3RhdGUgYW5kIHBvdGVudGlhbGx5IHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgcm91dGluZyBpbmZvcm1hdGlvbi4gSSYjMzk7bSBhc3N1bWluZywgb2YgY291cnNlLCB0aGF0IHNpYmxpbmdzIGFyZSByb3V0ZXMgdGhhdCBzaGFyZSBzb21lIGNvbW1vbiBjaGFyYWN0ZXJpc3RpY3MuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIHdoYXQgYXJlIHRoZSBjcml0ZXJpYSB1c2VkIHRvIGRlZmluZSBhIHJvdXRlJiMzOTtzICYjMzQ7c2libGluZyYjMzQ7IGluIHRoaXMgSVB2NiBjb250ZXh0PwoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIGxvY2tzIGluIHBsYXkgKGFuZCBhbnkgcG90ZW50aWFsIG9yZGVyaW5nIGlzc3VlcyksIGFuZCB0aGUgb3ZlcmFsbCBnb2FsIG9mIHRoaXMgZnVuY3Rpb24uIElzIHRoaXMgY2FsbCBhYm91dCBjbGVhbnVwIGFmdGVyIGEgcm91dGUgZGVsZXRpb24sIGEgcmVvcmdhbml6YXRpb24gb2YgdGhlIHJvdXRpbmcgdGFibGUsIG9yIHNvbWV0aGluZyBtb3JlIGludHJpY2F0ZT8gSXMgdGhpcyBhIGNyaXRpY2FsIHBhdGggb3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgZmFzdCBhbmQgYXRvbWljLCBvciBpcyBpdCBtb3JlIG9mIGEgaG91c2VrZWVwaW5nIHRhc2sgdGhhdCBjYW4gYWZmb3JkIHRvIGJlIG1vcmUgcmVsYXhlZD8gSSYjMzk7bGwgcHJvYmFibHkgYmUgY2hlY2tpbmcgaG93IHRoZSBzaWJsaW5nIHJvdXRlcyBhcmUgcmVsYXRlZCwgd2hldGhlciB0aGV5IHBvaW50IHRvIHRoZSBzYW1lIG5leHQgaG9wLCBiZWxvbmcgdG8gdGhlIHNhbWUgcm91dGluZyBkb21haW4sIGV0Yy4gVGhlbiwgSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBzaWJsaW5nIHJlbW92YWwgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByYWNlIGNvbmRpdGlvbnMgb3IgY2F1c2UgYW55IHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzIGluIG90aGVyIHBhcnRzIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJJiMzOTtsbCBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBkZXNpZ24gcHJldmVudHMgcm91dGUgZmxhcHBpbmcuIEkmIzM5O2xsIGJlIGxvb2tpbmcgY2FyZWZ1bGx5IGF0IGhvdyB0aGlzIGZ1bmN0aW9uIGludGVncmF0ZXMgd2l0aCB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIG1lY2hhbmlzbXMgYW5kIG90aGVyIHJvdXRpbmcgdGFibGUgdXBkYXRlcy4gRmluYWxseSwgSSYjMzk7bGwgYWxzbyBiZSBjb25zaWRlcmluZyBwb3NzaWJsZSBlZGdlIGNhc2VzIGFuZCBhbnkgaW1wbGljaXQgYXNzdW1wdGlvbnMgdGhhdCBtaWdodCBleGlzdCB3aXRoaW4gdGhpcyBmdW5jdGlvbiBhbmQgaXRzIGNhbGxlcnMvY2FsbGVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0MjAwOlx0XHRcdFx0XHRicmVhaztcbjQyMDE6XHRcdFx0XHR9XG40MjAyOlx0XHRcdFx0aWYgKGNmZy1cdTAwM2VmY19uaF9pZClcbjQyMDM6XHRcdFx0XHRcdGNvbnRpbnVlO1xuNDIwNDpcdFxuNDIwNTpcdFx0XHRcdG5oID0gcnQtXHUwMDNlZmliNl9uaDtcbjQyMDY6XHRcdFx0XHRpZiAoY2ZnLVx1MDAzZWZjX2lmaW5kZXggXHUwMDI2XHUwMDI2XG40MjA3Olx0XHRcdFx0ICAgICghbmgtXHUwMDNlZmliX25oX2RldiB8fFxuNDIwODpcdFx0XHRcdCAgICAgbmgtXHUwMDNlZmliX25oX2Rldi1cdTAwM2VpZmluZGV4ICE9IGNmZy1cdTAwM2VmY19pZmluZGV4KSlcbjQyMDk6XHRcdFx0XHRcdGNvbnRpbnVlO1xuNDIxMDpcdFx0XHRcdGlmIChjZmctXHUwMDNlZmNfZmxhZ3MgXHUwMDI2IFJURl9HQVRFV0FZIFx1MDAyNlx1MDAyNlxuNDIxMTpcdFx0XHRcdCAgICAhaXB2Nl9hZGRyX2VxdWFsKFx1MDAyNmNmZy1cdTAwM2VmY19nYXRld2F5LCBcdTAwMjZuaC1cdTAwM2VmaWJfbmhfZ3c2KSlcbjQyMTI6XHRcdFx0XHRcdGNvbnRpbnVlO1xuNDIxMzpcdFx0XHRcdGlmICghZmliNl9pbmZvX2hvbGRfc2FmZShydCkpXG40MjE0Olx0XHRcdFx0XHRjb250aW51ZTtcbjQyMTU6XHRcbjQyMTY6XHRcdFx0XHQvKiBpZiBnYXRld2F5IHdhcyBzcGVjaWZpZWQgb25seSBkZWxldGUgdGhlIG9uZSBob3AgKi9cbjQyMTc6XHRcdFx0XHRpZiAoY2ZnLVx1MDAzZWZjX2ZsYWdzIFx1MDAyNiBSVEZfR0FURVdBWSlcbjQyMTg6XHRcdFx0XHRcdGVyciA9IF9faXA2X2RlbF9ydChydCwgXHUwMDI2Y2ZnLVx1MDAzZWZjX25saW5mbyk7XG40MjE5Olx0XHRcdFx0ZWxzZVxuNDIyMDpcdFx0XHRcdFx0ZXJyID0gX19pcDZfZGVsX3J0X3NpYmxpbmdzKHJ0LCBjZmcpO1xuNDIyMTpcdFx0XHRcdGJyZWFrO1xuNDIyMjpcdFx0XHR9XG40MjIzOlx0XHR9XG40MjI0Olx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjQyMjU6XHRcbjQyMjY6XHRcdHJldHVybiBlcnI7XG40MjI3Olx0fVxuNDIyODpcdFxuNDIyOTpcdHN0YXRpYyB2b2lkIHJ0Nl9kb19yZWRpcmVjdChzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbjQyMzA6XHR7XG40MjMxOlx0XHRzdHJ1Y3QgbmV0ZXZlbnRfcmVkaXJlY3QgbmV0ZXZlbnQ7XG40MjMyOlx0XHRzdHJ1Y3QgcnQ2X2luZm8gKnJ0LCAqbnJ0ID0gTlVMTDtcbjQyMzM6XHRcdHN0cnVjdCBmaWI2X3Jlc3VsdCByZXMgPSB7fTtcbjQyMzQ6XHRcdHN0cnVjdCBuZGlzY19vcHRpb25zIG5kb3B0cztcbjQyMzU6XHRcdHN0cnVjdCBpbmV0Nl9kZXYgKmluNl9kZXY7XG40MjM2Olx0XHRzdHJ1Y3QgbmVpZ2hib3VyICpuZWlnaDtcbjQyMzc6XHRcdHN0cnVjdCByZF9tc2cgKm1zZztcbjQyMzg6XHRcdGludCBvcHRsZW4sIG9uX2xpbms7XG40MjM5Olx0XHR1OCAqbGxhZGRyO1xuNDI0MDpcdFxuNDI0MTpcdFx0b3B0bGVuID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gc2tiX3RyYW5zcG9ydF9oZWFkZXIoc2tiKTtcbjQyNDI6XHRcdG9wdGxlbiAtPSBzaXplb2YoKm1zZyk7XG40MjQzOlx0XG40MjQ0Olx0XHRpZiAob3B0bGVuIFx1MDAzYyAwKSB7XG40MjQ1Olx0XHRcdG5ldF9kYmdfcmF0ZWxpbWl0ZWQoXCYjMzQ7cnQ2X2RvX3JlZGlyZWN0OiBwYWNrZXQgdG9vIHNob3J0XFxuXCYjMzQ7KTtcbjQyNDY6XHRcdFx0cmV0dXJuO1xuNDI0NzpcdFx0fVxuNDI0ODpcdFxuNDI0OTpcdFx0bXNnID0gKHN0cnVjdCByZF9tc2cgKilpY21wNl9oZHIoc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODEwMAoJCQkJCQkJb3V0cHV0OiAxMDQKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBJUHY2IFJvdXRpbmcgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhbiBpc3N1ZSB3aXRoaW4gdGhlIElQdjYgcm91dGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IGluIHRoZSBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYCBmdW5jdGlvbi4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UsIHN3aXRjaGluZyBmcm9tIGBnZnBfYW55KClgIHRvIGBHRlBfQVRPTUlDYCB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgaXMgbGlrZWx5IGEgYnVnIGZpeCwgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBwcm9ibGVtIHdoZXJlIGBnZnBfYW55KClgIGNvdWxkIGxlYWQgdG8gc2xlZXBpbmcgb3IgaW5jb3JyZWN0IGZsYWcgdXNhZ2Ugd2l0aGluIGFuIGF0b21pYyBjb250ZXh0LiBPciBtYXliZSBpdCYjMzk7cyBqdXN0IGEgY2xlYW51cC4gRWl0aGVyIHdheSwgaXQmIzM5O3MgY2hhbmdpbmcgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBpdCYjMzk7cyBmdW5jdGlvbmFsLgoKVGhlIHByaW1hcnkgZnVuY3Rpb25zIG9mIGNvbmNlcm4gaGVyZSBhcmUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgYW5kIHRoZSByZWxhdGVkIGBpcDZfcm91dGVfZGVsYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRob3NlIGZvciBsYXRlci4KCldhaXQsIHRoaXMgaXMgaW50ZXJlc3RpbmcuIFRoZXkgd2VyZSB1c2luZyBgZ2ZwX2FueSgpYCB0byBhbGxvY2F0ZSB0aGUgc29ja2V0IGJ1ZmZlciAoc2tiKS4gTm93IHRoZXkmIzM5O3JlIHVzaW5nIGBHRlBfQVRPTUlDYCBhbmQgdGhhdCBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSBiZWNhdXNlIHRoaXMgaXMgYW4gaW1wb3J0YW50IHBhcnQgb2Ygcm91dGUgZGVsZXRpb24sIHNvIHRoaXMgd2FycmFudHMgYWRkaXRpb25hbCBpbnZlc3RpZ2F0aW9uLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcGF0Y2ggYWZmZWN0cyB0aGUgYElQVjZgIGNvbmZpZywgYW5kIHRoYXQgc2VlbXMgdG8gYmUgdGhlIG9ubHkgZW5hYmxpbmcgY29uZmlndXJhdGlvbi4KCkdpdmVuIHRoaXMsIEkgdGhpbmsgSSBuZWVkIHRvIGZvcm11bGF0ZSBhIHJlc3BvbnNlIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2lwNl9kZWxfcnRfc2libGluZ3MmIzM0OywKICAgICYjMzQ7aXA2X3JvdXRlX2RlbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnIGZyb20gZ2ZwX2FueSgpIHRvIEdGUF9BVE9NSUMgaW4gX19pcDZfZGVsX3J0X3NpYmxpbmdzKCksIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgSVB2NiByb3V0ZSBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2lwNl9kZWxfcnRfc2libGluZ3MmIzM0OywKICAgICYjMzQ7aXA2X3JvdXRlX2RlbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnIGZyb20gZ2ZwX2FueSgpIHRvIEdGUF9BVE9NSUMgaW4gX19pcDZfZGVsX3J0X3NpYmxpbmdzKCksIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgSVB2NiByb3V0ZSBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNToxOC42MjAwMDExMzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU2MDAyODcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pcDZfZGVsX3J0X3NpYmxpbmdzXCIsXG4gICAgXCJpcDZfcm91dGVfZGVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZmxhZyBmcm9tIGdmcF9hbnkoKSB0byBHRlBfQVRPTUlDIGluIF9faXA2X2RlbF9ydF9zaWJsaW5ncygpLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIElQdjYgcm91dGUgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNToxOC42MjAwMDcxMzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTUwNzkwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2ZjE3ODM4NmE2YmM3YWUxZjQyZmI0N2RiZjg5MDkwZTlkZGM0MDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTkgMTE6MzU6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmNcXG5pbmRleCBhMTMwMTMzNGRhNDhjMC4uZmM0MmQ2N2U1ODIyNjEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvcm91dGUuY1xcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcXG5AQCAtNDAyMiw3ICs0MDIyLDcgQEAgc3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxcbiBcXHRcXHRzdHJ1Y3QgZmliNl9ub2RlICpmbjtcXG4gXFxuIFxcdFxcdC8qIHByZWZlciB0byBzZW5kIGEgc2luZ2xlIG5vdGlmaWNhdGlvbiB3aXRoIGFsbCBob3BzICovXFxuLVxcdFxcdHNrYiA9IG5sbXNnX25ldyhydDZfbmxtc2dfc2l6ZShydCksIGdmcF9hbnkoKSk7XFxuK1xcdFxcdHNrYiA9IG5sbXNnX25ldyhydDZfbmxtc2dfc2l6ZShydCksIEdGUF9BVE9NSUMpO1xcbiBcXHRcXHRpZiAoc2tiKSB7XFxuIFxcdFxcdFxcdHUzMiBzZXEgPSBpbmZvLVxcdTAwM2VubGggPyBpbmZvLVxcdTAwM2VubGgtXFx1MDAzZW5sbXNnX3NlcSA6IDA7XFxuIFxcbkBAIC00MDc4LDcgKzQwNzgsNyBAQCBzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXFxuIFxcbiBcXHRpZiAoc2tiKSB7XFxuIFxcdFxcdHJ0bmxfbm90aWZ5KHNrYiwgbmV0LCBpbmZvLVxcdTAwM2Vwb3J0aWQsIFJUTkxHUlBfSVBWNl9ST1VURSxcXG4tXFx0XFx0XFx0ICAgIGluZm8tXFx1MDAzZW5saCwgZ2ZwX2FueSgpKTtcXG4rXFx0XFx0XFx0ICAgIGluZm8tXFx1MDAzZW5saCwgR0ZQX0FUT01JQyk7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNToxOS4wOTIyMTA2NTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDg3ODExMjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2lwNl9kZWxfcnRfc2libGluZ3NcIixcbiAgICBcImlwNl9yb3V0ZV9kZWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnIGZyb20gZ2ZwX2FueSgpIHRvIEdGUF9BVE9NSUMgaW4gX19pcDZfZGVsX3J0X3NpYmxpbmdzKCksIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgSVB2NiByb3V0ZSBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTZmMTc4Mzg2YTZiYzdhZTFmNDJmYjQ3ZGJmODkwOTBlOWRkYzQwMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDE5IDExOjM1OjE3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmNcbmluZGV4IGExMzAxMzM0ZGE0OGMwLi5mYzQyZDY3ZTU4MjI2MSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC00MDIyLDcgKzQwMjIsNyBAQCBzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXG4gXHRcdHN0cnVjdCBmaWI2X25vZGUgKmZuO1xuIFxuIFx0XHQvKiBwcmVmZXIgdG8gc2VuZCBhIHNpbmdsZSBub3RpZmljYXRpb24gd2l0aCBhbGwgaG9wcyAqL1xuLVx0XHRza2IgPSBubG1zZ19uZXcocnQ2X25sbXNnX3NpemUocnQpLCBnZnBfYW55KCkpO1xuK1x0XHRza2IgPSBubG1zZ19uZXcocnQ2X25sbXNnX3NpemUocnQpLCBHRlBfQVRPTUlDKTtcbiBcdFx0aWYgKHNrYikge1xuIFx0XHRcdHUzMiBzZXEgPSBpbmZvLVx1MDAzZW5saCA/IGluZm8tXHUwMDNlbmxoLVx1MDAzZW5sbXNnX3NlcSA6IDA7XG4gXG5AQCAtNDA3OCw3ICs0MDc4LDcgQEAgc3RhdGljIGludCBfX2lwNl9kZWxfcnRfc2libGluZ3Moc3RydWN0IGZpYjZfaW5mbyAqcnQsIHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnKVxuIFxuIFx0aWYgKHNrYikge1xuIFx0XHRydG5sX25vdGlmeShza2IsIG5ldCwgaW5mby1cdTAwM2Vwb3J0aWQsIFJUTkxHUlBfSVBWNl9ST1VURSxcbi1cdFx0XHQgICAgaW5mby1cdTAwM2VubGgsIGdmcF9hbnkoKSk7XG4rXHRcdFx0ICAgIGluZm8tXHUwMDNlbmxoLCBHRlBfQVRPTUlDKTtcbiBcdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTE6MzU6MTkuMDkyMjExODkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk1MDU1NTkwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSb3V0aW5nIFRhYmxlIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyBgbmV0L2lwdjYvcm91dGUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiB0aGV5J3JlIHN3aXRjaGluZyBmcm9tIHVzaW5nIGBnZnBfYW55KClgIHRvIGBHRlBfQVRPTUlDYCBpbiB0aGUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgZnVuY3Rpb24uICBJdCdzIGEgcHJldHR5IGxvdy1sZXZlbCBtb2RpZmljYXRpb24sIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGFsbG9jYXRpb24gZmxhZ3MsIG5vdGhpbmcgbWFqb3IgYXJjaGl0ZWN0dXJhbGx5LlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGNsZWFyIHRoaXMgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgZnVuY3Rpb24gaXMgZGVlcGx5IGludm9sdmVkIGluIElQdjYgcm91dGluZywgbGlrZWx5IHJlbGF0ZWQgdG8gcm91dGUgZGVsZXRpb24sIGZyb20gdGhlIG5hbWluZyBpdHNlbGYuICBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggYWx0ZXJzIGFsbG9jYXRpb25zIGZvciBjcmVhdGluZyBgc2tiYCB3aGljaCBhcmUgdXNlZCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgdG8gdXNlcnNwYWNlLlxuXG5UaGUgY29kZSdzIHB1cnBvc2UgaXMsIHByZXN1bWFibHksIHRvIHNlbmQgbm90aWZpY2F0aW9ucywgcHJlc3VtYWJseSB0byB1c2Vyc3BhY2UsIHdoZW4gcm91dGVzIGFyZSBkZWxldGVkLiBUaGUgY2hhbmdlIHRvIGBHRlBfQVRPTUlDYCBzdWdnZXN0cyB0aGlzIGNvZGUgcGF0aCBjb3VsZCBiZSBpbnZva2VkIGZyb20gaW50ZXJydXB0IGNvbnRleHQgb3IgYSBjcml0aWNhbCBzZWN0aW9uIHdoZXJlIHNsZWVwaW5nIGlzbid0IGFsbG93ZWQuIExldCdzIGRpZyBhIGJpdCBkZWVwZXIgYW5kIHNlZSB3aGVyZSBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYCBpcyBjYWxsZWQuIEEgcXVpY2sgZ3JlcCBzaG91bGQgcmV2ZWFsIHRoZSBjYWxsaW5nIGNvbnRleHRzLCBhbmQgdGhhdCdsbCBnaXZlIG1lIGEgbXVjaCBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCB3aGV0aGVyIG9yIG5vdCBpdCdzIHJlYXNvbmFibGUuICBJIHNob3VsZCBjb25maXJtIHRoYXQgdGhlc2UgY29udGV4dHMgd291bGQgcmVhbGx5IHJlcXVpcmUgYWxsb2NhdGlvbiBmcm9tIGF0b21pYyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTkxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTE6MzU6MjYuMDQyNzY5ODc4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDM1ODM1MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcDZfZGVsX3J0X3NpYmxpbmdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9Mzk5Nz1pbnQgaXA2X2RlbF9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBib29sIHNraXBfbm90aWZ5KVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00MDA2LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDAwNzpzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXFxubmV0L2lwdjYvcm91dGUuYy00MDA4LXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDE0Mj1zdGF0aWMgaW50IGlwNl9yb3V0ZV9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQyMTktXFx0XFx0XFx0ZWxzZVxcbm5ldC9pcHY2L3JvdXRlLmM6NDIyMDpcXHRcXHRcXHRcXHRlcnIgPSBfX2lwNl9kZWxfcnRfc2libGluZ3MocnQsIGNmZyk7XFxubmV0L2lwdjYvcm91dGUuYy00MjIxLVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNToyOC4yNDYzNTkxNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTE3MjQyODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBJUHY2IFJvdXRpbmcgVGFibGUgUmVtb3ZhbCoqXG5cbk9rYXksIHNvIHdlJ3JlIHN0YXJ0aW5nIHdpdGggYGlwNl9yb3V0ZV9kZWxgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgYWxvbmUgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBkZWxldGlvbiBvZiBhbiBJUHY2IHJvdXRlLiBNeSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaG8ncyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSB1cHN0cmVhbSBmdW5jdGlvbnMgdGhhdCBhcmUgcmVzcG9uc2libGUgZm9yIHRyaWdnZXJpbmcgdGhpcyBkZWxldGlvbi4gRmluZGluZyB0aGUgY2FsbGVycyBvZiBgaXA2X3JvdXRlX2RlbGAgd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiAqd2h5KiB0aGlzIHJvdXRlIGlzIGJlaW5nIHJlbW92ZWQuIEFyZSB3ZSBkZWFsaW5nIHdpdGggaW50ZXJmYWNlIHNodXRkb3ducz8gUm91dGluZyBwcm90b2NvbCB1cGRhdGVzPyBDb25maWd1cmF0aW9uIGNoYW5nZXM/IEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIGlzIGVzc2VudGlhbCB0byBhbnN3ZXJpbmcgdGhvc2UgcXVlc3Rpb25zLiBTbywgbGV0J3MgdHJhY2UgYmFjayBmcm9tIGBpcDZfcm91dGVfZGVsYCBhbmQgc2VlIHdobydzIGluaXRpYXRpbmcgdGhpcyByZW1vdmFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTE6MzU6MzIuMDU4MDg1MTY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTc3MzgxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXA2X3JvdXRlX2RlbFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jPTQxMzI9c3RhdGljIGludCBpcDZfZGVsX2NhY2hlZF9ydF9uaChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZywgc3RydWN0IGZpYjZfaW5mbyAqZjZpKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00MTQxLVxcbm5ldC9pcHY2L3JvdXRlLmM6NDE0MjpzdGF0aWMgaW50IGlwNl9yb3V0ZV9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxubmV0L2lwdjYvcm91dGUuYy00MTQzLVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ1Nzg9aW50IGlwdjZfcm91dGVfaW9jdGwoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgY21kLCBzdHJ1Y3QgaW42X3J0bXNnICpydG1zZylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDU5Ny1cXHRjYXNlIFNJT0NERUxSVDpcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ1OTg6XFx0XFx0ZXJyID0gaXA2X3JvdXRlX2RlbChcXHUwMDI2Y2ZnLCBOVUxMKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1OTktXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTU0MTU9c3RhdGljIGludCBpcDZfcm91dGVfbXVsdGlwYXRoX2FkZChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNTU2OC1cXHQvKiBzZW5kIG5vdGlmaWNhdGlvbiBmb3Igcm91dGVzIHRoYXQgd2VyZSBhZGRlZCBzbyB0aGF0XFxubmV0L2lwdjYvcm91dGUuYzo1NTY5OlxcdCAqIHRoZSBkZWxldGUgbm90aWZpY2F0aW9ucyBzZW50IGJ5IGlwNl9yb3V0ZV9kZWwgYXJlXFxubmV0L2lwdjYvcm91dGUuYy01NTcwLVxcdCAqIGNvaGVyZW50XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTU1NzgtXFx0XFx0XFx0YnJlYWs7XFxubmV0L2lwdjYvcm91dGUuYzo1NTc5OlxcdFxcdGlwNl9yb3V0ZV9kZWwoXFx1MDAyNm5oLVxcdTAwM2VyX2NmZywgZXh0YWNrKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTU1ODAtXFx0fVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz01NTkyPXN0YXRpYyBpbnQgaXA2X3JvdXRlX211bHRpcGF0aF9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTU2MjEtXFxubmV0L2lwdjYvcm91dGUuYzo1NjIyOlxcdFxcdGVyciA9IGlwNl9yb3V0ZV9kZWwoXFx1MDAyNnJfY2ZnLCBleHRhY2spO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTYyMy1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz01NjMyPXN0YXRpYyBpbnQgaW5ldDZfcnRtX2RlbHJvdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy01NjU2LVxcdFxcdGNmZy5mY19kZWxldGVfYWxsX25oID0gMTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjU2NTc6XFx0XFx0cmV0dXJuIGlwNl9yb3V0ZV9kZWwoXFx1MDAyNmNmZywgZXh0YWNrKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTU2NTgtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTozMy45NTU4MzI5MzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTYwOTE2NTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgSVB2NiBSb3V0ZSBEZWxldGlvbioqXG5cbk9rYXksIHNvIEkndmUgaWRlbnRpZmllZCB0d28gcHJpbWFyeSB3YXlzIHRvIGRlbGV0ZSBJUHY2IHJvdXRlczogYGluZXQ2X3J0bV9kZWxyb3V0ZWAgdmlhIE5ldGxpbmsgYW5kIGBpcHY2X3JvdXRlX2lvY3RsYCB1c2luZyB0aGUgYFNJT0NERUxSVGAgaW9jdGwuIEdvb2QuIFRoaXMgbWVhbnMgSSBoYXZlIG11bHRpcGxlIGVudHJ5IHBvaW50cyB0byB0YXJnZXQuIFRoZSBrZXkgZnVuY3Rpb24gdGhhdCBpbnRlcmVzdHMgbWUgaXMgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AuIFRoYXQgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgd2hlbiBkZWxldGluZyBhbiBJUHY2IHJvdXRlIHRoYXQgaGFzIHNpYmxpbmdz4oCUbWVhbmluZywgaXQncyBkZWFsaW5nIHdpdGggbXVsdGlwYXRoIHJvdXRlcy4gVGhhdCBzb3VuZHMgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBzaGFyZWQgcmVzb3VyY2VzLlxuXG5Gb2N1c2luZyBvbiBgX19pcDZfZGVsX3J0X3NpYmxpbmdzYCBhbmQgYGlwNl9yb3V0ZV9kZWxgIGRpcmVjdGx5IHNob3VsZCBiZSBteSBzdHJhdGVneS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb24gaXMgZW5hYmxlZCBmb3IgdGhpcy4gYElQVjZgIGlzLCBvZiBjb3Vyc2UsIGVzc2VudGlhbCwgYnV0IEkgc3VzcGVjdCBJIG5lZWQgZWl0aGVyIGBJUFY2X01VTFRJUExFX1RBQkxFU2AsIGBJUFY2X1JPVVRFUl9QUkVGYCwgb3IgcG90ZW50aWFsbHkgYElQVjZfUk9VVEVfSU5GT2AgdG8gZW5hYmxlIG11bHRpcGF0aCBiZWhhdmlvci4gSSBzaG91bGQgcXVpY2tseSBjaGVjayBgbmV0L2lwdjYvS2NvbmZpZ2AgdG8gY29uZmlybSB3aGljaCBvbmUgY29udHJvbHMgdGhlIG11bHRpcGF0aCBhc3BlY3RzLiBBbHRob3VnaCBtdWx0aXBhdGggaXMgZmFpcmx5IHN0YW5kYXJkIGZvciBJUHY2LCBJIHdhbnQgdG8gYmUgKmFic29sdXRlbHkqIHN1cmUgSSBoYXZlIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGVuYWJsZWQuIE5lZWQgdG8gYmUgdGhvcm91Z2ghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTE6MzU6NDEuMTE2NzUxMzk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzYyNDkxMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcDZfZGVsX3J0X3NpYmxpbmdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9Mzk5Nz1pbnQgaXA2X2RlbF9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBib29sIHNraXBfbm90aWZ5KVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00MDA2LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDAwNzpzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXFxubmV0L2lwdjYvcm91dGUuYy00MDA4LXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDE0Mj1zdGF0aWMgaW50IGlwNl9yb3V0ZV9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQyMTktXFx0XFx0XFx0ZWxzZVxcbm5ldC9pcHY2L3JvdXRlLmM6NDIyMDpcXHRcXHRcXHRcXHRlcnIgPSBfX2lwNl9kZWxfcnRfc2libGluZ3MocnQsIGNmZyk7XFxubmV0L2lwdjYvcm91dGUuYy00MjIxLVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo0My4xNTMwMDUzODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzIyMDA5OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyBJUHY2IFJvdXRpbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgSVB2NiByb3V0aW5nIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIHRoZSBgbmV0L2lwdjYvS2NvbmZpZ2AgZmlsZSBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nLiBJJ2xsIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgb3B0aW9ucyBvciBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHJvdXRpbmcgdGhhdCBJIGNhbiBleGFtaW5lLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbGx5IHRvIHR3ZWFrIGEgc2V0dGluZyBvciB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgZmVhdHVyZSdzIGF2YWlsYWJpbGl0eS4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo0Ni40NzUwMTc0MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNjgzNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUFY2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZy01LVxcbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcXG5uZXQvaXB2Ni9LY29uZmlnLTctXFx0Ym9vbCBcXFwiVGhlIElQdjYgcHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTE5PWlmIElQVjZcXG5uZXQvaXB2Ni9LY29uZmlnLTIwLVxcbm5ldC9pcHY2L0tjb25maWc6MjE6Y29uZmlnIElQVjZfUk9VVEVSX1BSRUZcXG5uZXQvaXB2Ni9LY29uZmlnLTIyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlciBQcmVmZXJlbmNlIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzAtXFxubmV0L2lwdjYvS2NvbmZpZzozMTpjb25maWcgSVBWNl9ST1VURV9JTkZPXFxubmV0L2lwdjYvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJJUHY2OiBSb3V0ZSBJbmZvcm1hdGlvbiAoUkZDIDQxOTEpIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTM4LVxcbm5ldC9pcHY2L0tjb25maWc6Mzk6Y29uZmlnIElQVjZfT1BUSU1JU1RJQ19EQURcXG5uZXQvaXB2Ni9LY29uZmlnLTQwLVxcdGJvb2wgXFxcIklQdjY6IEVuYWJsZSBSRkMgNDQyOSBPcHRpbWlzdGljIERBRFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTAyPWNvbmZpZyBJTkVUNl9JUENPTVBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTExLVxcbm5ldC9pcHY2L0tjb25maWc6MTEyOmNvbmZpZyBJUFY2X01JUDZcXG5uZXQvaXB2Ni9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogTW9iaWxpdHlcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTExOS1cXG5uZXQvaXB2Ni9LY29uZmlnOjEyMDpjb25maWcgSVBWNl9JTEFcXG5uZXQvaXB2Ni9LY29uZmlnLTEyMS1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSWRlbnRpZmllciBMb2NhdG9yIEFkZHJlc3NpbmcgKElMQSlcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTE0Nj1jb25maWcgSU5FVDZfVFVOTkVMXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE0OS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE1MDpjb25maWcgSVBWNl9WVElcXG5uZXQvaXB2Ni9LY29uZmlnLTE1MS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCAoc2VjdXJlKSBJUHY2OiB0dW5uZWxpbmdcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE2MS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE2Mjpjb25maWcgSVBWNl9TSVRcXG5uZXQvaXB2Ni9LY29uZmlnLTE2My1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVB2Ni1pbi1JUHY0IHR1bm5lbCAoU0lUIGRyaXZlcilcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE3Ni1cXG5uZXQvaXB2Ni9LY29uZmlnOjE3Nzpjb25maWcgSVBWNl9TSVRfNlJEXFxubmV0L2lwdjYvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwiSVB2NjogSVB2NiBSYXBpZCBEZXBsb3ltZW50ICg2UkQpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xOTUtXFxubmV0L2lwdjYvS2NvbmZpZzoxOTY6Y29uZmlnIElQVjZfTkRJU0NfTk9ERVRZUEVcXG5uZXQvaXB2Ni9LY29uZmlnLTE5Ny1cXHRib29sXFxubmV0L2lwdjYvS2NvbmZpZy0xOTgtXFxubmV0L2lwdjYvS2NvbmZpZzoxOTk6Y29uZmlnIElQVjZfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGUgXFxcIklQdjY6IElQLWluLUlQdjYgdHVubmVsIChSRkMyNDczKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjA5LVxcbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxcbm5ldC9pcHY2L0tjb25maWctMjExLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBHUkUgdHVubmVsXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMjctXFxubmV0L2lwdjYvS2NvbmZpZzoyMjg6Y29uZmlnIElQVjZfRk9VXFxubmV0L2lwdjYvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjMxLVxcbm5ldC9pcHY2L0tjb25maWc6MjMyOmNvbmZpZyBJUFY2X0ZPVV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIzMy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiSVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cXG5uZXQvaXB2Ni9LY29uZmlnOjI0Mzpjb25maWcgSVBWNl9TVUJUUkVFU1xcbm5ldC9pcHY2L0tjb25maWctMjQ0LVxcdGJvb2wgXFxcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI1Ni1cXG5uZXQvaXB2Ni9LY29uZmlnOjI1Nzpjb25maWcgSVBWNl9NUk9VVEVcXG5uZXQvaXB2Ni9LY29uZmlnLTI1OC1cXHRib29sIFxcXCJJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjY0LVxcbm5ldC9pcHY2L0tjb25maWc6MjY1OmNvbmZpZyBJUFY2X01ST1VURV9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTI2Ni1cXHRib29sIFxcXCJJUHY2OiBtdWx0aWNhc3QgcG9saWN5IHJvdXRpbmdcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI3OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjI3OTpjb25maWcgSVBWNl9QSU1TTV9WMlxcbm5ldC9pcHY2L0tjb25maWctMjgwLVxcdGJvb2wgXFxcIklQdjY6IFBJTS1TTSB2ZXJzaW9uIDIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjg1LVxcbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cXHRib29sIFxcXCJJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjk5LVxcbm5ldC9pcHY2L0tjb25maWc6MzAwOmNvbmZpZyBJUFY2X1NFRzZfSE1BQ1xcbm5ldC9pcHY2L0tjb25maWctMzAxLVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBITUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMxMS1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxMjpjb25maWcgSVBWNl9TRUc2X0JQRlxcbm5ldC9pcHY2L0tjb25maWctMzEzLVxcdGRlZl9ib29sIHlcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzE2LVxcbm5ldC9pcHY2L0tjb25maWc6MzE3OmNvbmZpZyBJUFY2X1JQTF9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMzE4LVxcdGJvb2wgXFxcIklQdjY6IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzI3LVxcbm5ldC9pcHY2L0tjb25maWc6MzI4OmNvbmZpZyBJUFY2X0lPQU02X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMjktXFx0Ym9vbCBcXFwiSVB2NjogSU9BTSBQcmUtYWxsb2NhdGVkIFRyYWNlIGluc2VydGlvbiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo0Ni41Mzg3MDc2MThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwMTk5NjQyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQdjYgUm91dGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9pcHY2L3JvdXRlLmNgLiBUaGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUgaXMgb2J2aW91c2x5IGBJUFY2YC4gTm93LCBJJ20gc2VlaW5nIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgbWVudGlvbmVkLCBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gcmVsYXRlIHRoYXQgdG8gcm91dGluZyB0YWJsZXMuIEhvd2V2ZXIsIElQdjYgaW5oZXJlbnRseSBzdXBwb3J0cyBtdWx0aXBhdGggcm91dGluZywgYW5kIGl0J3MgYSBwcmV0dHkgc3RhbmRhcmQgZmVhdHVyZS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIHdlIGFjdHVhbGx5IG5lZWQgYElQVjZfTVVMVElQTEVfVEFCTEVTYCB0byBlbmFibGUgdGhhdCBmdW5jdGlvbmFsaXR5LCBvciBpZiB0aGVyZSdzIHNvbWUgbnVhbmNlIEknbSBtaXNzaW5nLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gbGVhbmluZyB0b3dhcmRzIG11bHRpcGF0aCBiZWluZyBzdXBwb3J0ZWQgYnkgZGVmYXVsdCBpbiB0aGUgSVB2NiBpbXBsZW1lbnRhdGlvbi5cblxuQWxyaWdodCwgbGV0J3MgY2lyY2xlIGJhY2sgYW5kIHRha2UgYW5vdGhlciBsb29rIGF0IGBfX2lwNl9kZWxfcnRfc2libGluZ3NgIHdpdGhpbiBgbmV0L2lwdjYvcm91dGUuY2AuIE5lZWQgdG8gYmUgc3VyZSBpdCdzIG5vdCB0aGUgY2F1c2Ugb2YgYW55IGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM0MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo1MC44NDA3MDU3MTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNTI2Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faXA2X2RlbF9ydF9zaWJsaW5nc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9Mzk5Nz1pbnQgaXA2X2RlbF9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBib29sIHNraXBfbm90aWZ5KVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00MDA2LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDAwNzpzdGF0aWMgaW50IF9faXA2X2RlbF9ydF9zaWJsaW5ncyhzdHJ1Y3QgZmliNl9pbmZvICpydCwgc3RydWN0IGZpYjZfY29uZmlnICpjZmcpXFxubmV0L2lwdjYvcm91dGUuYy00MDA4LXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDE0Mj1zdGF0aWMgaW50IGlwNl9yb3V0ZV9kZWwoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQyMTktXFx0XFx0XFx0ZWxzZVxcbm5ldC9pcHY2L3JvdXRlLmM6NDIyMDpcXHRcXHRcXHRcXHRlcnIgPSBfX2lwNl9kZWxfcnRfc2libGluZ3MocnQsIGNmZyk7XFxubmV0L2lwdjYvcm91dGUuYy00MjIxLVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo1MC45MjMyMzc4OTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyMjU0MTM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBfX2lwNl9kZWxfcnRfc2libGluZ3NgIENhbGwgd2l0aGluIGBpcDZfcm91dGVfZGVsYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpc3NlY3QgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgY2FsbCBhcyBpdCBzaXRzIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBpcDZfcm91dGVfZGVsYC4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGhvdyB0aGUgcmVtb3ZhbCBvZiBhIHJvdXRlJ3Mgc2libGluZ3MgaW1wYWN0cyB0aGUgb3ZlcmFsbCByb3V0aW5nIHRhYmxlIHN0YXRlIGFuZCBwb3RlbnRpYWxseSB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIHJvdXRpbmcgaW5mb3JtYXRpb24uIEknbSBhc3N1bWluZywgb2YgY291cnNlLCB0aGF0IHNpYmxpbmdzIGFyZSByb3V0ZXMgdGhhdCBzaGFyZSBzb21lIGNvbW1vbiBjaGFyYWN0ZXJpc3RpY3MuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIHdoYXQgYXJlIHRoZSBjcml0ZXJpYSB1c2VkIHRvIGRlZmluZSBhIHJvdXRlJ3MgXCJzaWJsaW5nXCIgaW4gdGhpcyBJUHY2IGNvbnRleHQ/XG5cbkknbGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIGxvY2tzIGluIHBsYXkgKGFuZCBhbnkgcG90ZW50aWFsIG9yZGVyaW5nIGlzc3VlcyksIGFuZCB0aGUgb3ZlcmFsbCBnb2FsIG9mIHRoaXMgZnVuY3Rpb24uIElzIHRoaXMgY2FsbCBhYm91dCBjbGVhbnVwIGFmdGVyIGEgcm91dGUgZGVsZXRpb24sIGEgcmVvcmdhbml6YXRpb24gb2YgdGhlIHJvdXRpbmcgdGFibGUsIG9yIHNvbWV0aGluZyBtb3JlIGludHJpY2F0ZT8gSXMgdGhpcyBhIGNyaXRpY2FsIHBhdGggb3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgZmFzdCBhbmQgYXRvbWljLCBvciBpcyBpdCBtb3JlIG9mIGEgaG91c2VrZWVwaW5nIHRhc2sgdGhhdCBjYW4gYWZmb3JkIHRvIGJlIG1vcmUgcmVsYXhlZD8gSSdsbCBwcm9iYWJseSBiZSBjaGVja2luZyBob3cgdGhlIHNpYmxpbmcgcm91dGVzIGFyZSByZWxhdGVkLCB3aGV0aGVyIHRoZXkgcG9pbnQgdG8gdGhlIHNhbWUgbmV4dCBob3AsIGJlbG9uZyB0byB0aGUgc2FtZSByb3V0aW5nIGRvbWFpbiwgZXRjLiBUaGVuLCBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgc2libGluZyByZW1vdmFsIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByYWNlIGNvbmRpdGlvbnMgb3IgY2F1c2UgYW55IHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzIGluIG90aGVyIHBhcnRzIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ2xsIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlIGRlc2lnbiBwcmV2ZW50cyByb3V0ZSBmbGFwcGluZy4gSSdsbCBiZSBsb29raW5nIGNhcmVmdWxseSBhdCBob3cgdGhpcyBmdW5jdGlvbiBpbnRlZ3JhdGVzIHdpdGggdGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBtZWNoYW5pc21zIGFuZCBvdGhlciByb3V0aW5nIHRhYmxlIHVwZGF0ZXMuIEZpbmFsbHksIEknbGwgYWxzbyBiZSBjb25zaWRlcmluZyBwb3NzaWJsZSBlZGdlIGNhc2VzIGFuZCBhbnkgaW1wbGljaXQgYXNzdW1wdGlvbnMgdGhhdCBtaWdodCBleGlzdCB3aXRoaW4gdGhpcyBmdW5jdGlvbiBhbmQgaXRzIGNhbGxlcnMvY2FsbGVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkxNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDExOjM1OjU1LjA0NTc4MDY3M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDg1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvcm91dGUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjAwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MjAwOlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbjQyMDE6XFx0XFx0XFx0XFx0fVxcbjQyMDI6XFx0XFx0XFx0XFx0aWYgKGNmZy1cXHUwMDNlZmNfbmhfaWQpXFxuNDIwMzpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG40MjA0OlxcdFxcbjQyMDU6XFx0XFx0XFx0XFx0bmggPSBydC1cXHUwMDNlZmliNl9uaDtcXG40MjA2OlxcdFxcdFxcdFxcdGlmIChjZmctXFx1MDAzZWZjX2lmaW5kZXggXFx1MDAyNlxcdTAwMjZcXG40MjA3OlxcdFxcdFxcdFxcdCAgICAoIW5oLVxcdTAwM2VmaWJfbmhfZGV2IHx8XFxuNDIwODpcXHRcXHRcXHRcXHQgICAgIG5oLVxcdTAwM2VmaWJfbmhfZGV2LVxcdTAwM2VpZmluZGV4ICE9IGNmZy1cXHUwMDNlZmNfaWZpbmRleCkpXFxuNDIwOTpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG40MjEwOlxcdFxcdFxcdFxcdGlmIChjZmctXFx1MDAzZWZjX2ZsYWdzIFxcdTAwMjYgUlRGX0dBVEVXQVkgXFx1MDAyNlxcdTAwMjZcXG40MjExOlxcdFxcdFxcdFxcdCAgICAhaXB2Nl9hZGRyX2VxdWFsKFxcdTAwMjZjZmctXFx1MDAzZWZjX2dhdGV3YXksIFxcdTAwMjZuaC1cXHUwMDNlZmliX25oX2d3NikpXFxuNDIxMjpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG40MjEzOlxcdFxcdFxcdFxcdGlmICghZmliNl9pbmZvX2hvbGRfc2FmZShydCkpXFxuNDIxNDpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG40MjE1OlxcdFxcbjQyMTY6XFx0XFx0XFx0XFx0LyogaWYgZ2F0ZXdheSB3YXMgc3BlY2lmaWVkIG9ubHkgZGVsZXRlIHRoZSBvbmUgaG9wICovXFxuNDIxNzpcXHRcXHRcXHRcXHRpZiAoY2ZnLVxcdTAwM2VmY19mbGFncyBcXHUwMDI2IFJURl9HQVRFV0FZKVxcbjQyMTg6XFx0XFx0XFx0XFx0XFx0ZXJyID0gX19pcDZfZGVsX3J0KHJ0LCBcXHUwMDI2Y2ZnLVxcdTAwM2VmY19ubGluZm8pO1xcbjQyMTk6XFx0XFx0XFx0XFx0ZWxzZVxcbjQyMjA6XFx0XFx0XFx0XFx0XFx0ZXJyID0gX19pcDZfZGVsX3J0X3NpYmxpbmdzKHJ0LCBjZmcpO1xcbjQyMjE6XFx0XFx0XFx0XFx0YnJlYWs7XFxuNDIyMjpcXHRcXHRcXHR9XFxuNDIyMzpcXHRcXHR9XFxuNDIyNDpcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG40MjI1OlxcdFxcbjQyMjY6XFx0XFx0cmV0dXJuIGVycjtcXG40MjI3OlxcdH1cXG40MjI4OlxcdFxcbjQyMjk6XFx0c3RhdGljIHZvaWQgcnQ2X2RvX3JlZGlyZWN0KHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjQyMzA6XFx0e1xcbjQyMzE6XFx0XFx0c3RydWN0IG5ldGV2ZW50X3JlZGlyZWN0IG5ldGV2ZW50O1xcbjQyMzI6XFx0XFx0c3RydWN0IHJ0Nl9pbmZvICpydCwgKm5ydCA9IE5VTEw7XFxuNDIzMzpcXHRcXHRzdHJ1Y3QgZmliNl9yZXN1bHQgcmVzID0ge307XFxuNDIzNDpcXHRcXHRzdHJ1Y3QgbmRpc2Nfb3B0aW9ucyBuZG9wdHM7XFxuNDIzNTpcXHRcXHRzdHJ1Y3QgaW5ldDZfZGV2ICppbjZfZGV2O1xcbjQyMzY6XFx0XFx0c3RydWN0IG5laWdoYm91ciAqbmVpZ2g7XFxuNDIzNzpcXHRcXHRzdHJ1Y3QgcmRfbXNnICptc2c7XFxuNDIzODpcXHRcXHRpbnQgb3B0bGVuLCBvbl9saW5rO1xcbjQyMzk6XFx0XFx0dTggKmxsYWRkcjtcXG40MjQwOlxcdFxcbjQyNDE6XFx0XFx0b3B0bGVuID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gc2tiX3RyYW5zcG9ydF9oZWFkZXIoc2tiKTtcXG40MjQyOlxcdFxcdG9wdGxlbiAtPSBzaXplb2YoKm1zZyk7XFxuNDI0MzpcXHRcXG40MjQ0OlxcdFxcdGlmIChvcHRsZW4gXFx1MDAzYyAwKSB7XFxuNDI0NTpcXHRcXHRcXHRuZXRfZGJnX3JhdGVsaW1pdGVkKFxcXCJydDZfZG9fcmVkaXJlY3Q6IHBhY2tldCB0b28gc2hvcnRcXFxcblxcXCIpO1xcbjQyNDY6XFx0XFx0XFx0cmV0dXJuO1xcbjQyNDc6XFx0XFx0fVxcbjQyNDg6XFx0XFxuNDI0OTpcXHRcXHRtc2cgPSAoc3RydWN0IHJkX21zZyAqKWljbXA2X2hkcihza2IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMTozNTo1NS4wNDYwMzA0NjNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA2MTU3MTgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IElQdjYgUm91dGluZyBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUuIEl0IHNlZW1zIGxpa2UgaXQncyBhZGRyZXNzaW5nIGFuIGlzc3VlIHdpdGhpbiB0aGUgSVB2NiByb3V0aW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGBfX2lwNl9kZWxfcnRfc2libGluZ3NgIGZ1bmN0aW9uLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlLCBzd2l0Y2hpbmcgZnJvbSBgZ2ZwX2FueSgpYCB0byBgR0ZQX0FUT01JQ2Agd2l0aGluIHRoYXQgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGxpa2VseSBhIGJ1ZyBmaXgsIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcHJvYmxlbSB3aGVyZSBgZ2ZwX2FueSgpYCBjb3VsZCBsZWFkIHRvIHNsZWVwaW5nIG9yIGluY29ycmVjdCBmbGFnIHVzYWdlIHdpdGhpbiBhbiBhdG9taWMgY29udGV4dC4gT3IgbWF5YmUgaXQncyBqdXN0IGEgY2xlYW51cC4gRWl0aGVyIHdheSwgaXQncyBjaGFuZ2luZyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGl0J3MgZnVuY3Rpb25hbC5cblxuVGhlIHByaW1hcnkgZnVuY3Rpb25zIG9mIGNvbmNlcm4gaGVyZSBhcmUgYF9faXA2X2RlbF9ydF9zaWJsaW5nc2AgYW5kIHRoZSByZWxhdGVkIGBpcDZfcm91dGVfZGVsYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRob3NlIGZvciBsYXRlci5cblxuV2FpdCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhleSB3ZXJlIHVzaW5nIGBnZnBfYW55KClgIHRvIGFsbG9jYXRlIHRoZSBzb2NrZXQgYnVmZmVyIChza2IpLiBOb3cgdGhleSdyZSB1c2luZyBgR0ZQX0FUT01JQ2AgYW5kIHRoYXQgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgYmVjYXVzZSB0aGlzIGlzIGFuIGltcG9ydGFudCBwYXJ0IG9mIHJvdXRlIGRlbGV0aW9uLCBzbyB0aGlzIHdhcnJhbnRzIGFkZGl0aW9uYWwgaW52ZXN0aWdhdGlvbi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcGF0Y2ggYWZmZWN0cyB0aGUgYElQVjZgIGNvbmZpZywgYW5kIHRoYXQgc2VlbXMgdG8gYmUgdGhlIG9ubHkgZW5hYmxpbmcgY29uZmlndXJhdGlvbi5cblxuR2l2ZW4gdGhpcywgSSB0aGluayBJIG5lZWQgdG8gZm9ybXVsYXRlIGEgcmVzcG9uc2Ugbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTAwLCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDExOjM2OjAxLjEwNzYwNDc4NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNDEzMzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pcDZfZGVsX3J0X3NpYmxpbmdzXCIsXG4gICAgXCJpcDZfcm91dGVfZGVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZmxhZyBmcm9tIGdmcF9hbnkoKSB0byBHRlBfQVRPTUlDIGluIF9faXA2X2RlbF9ydF9zaWJsaW5ncygpLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIElQdjYgcm91dGUgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2lwNl9kZWxfcnRfc2libGluZ3NcIixcbiAgICBcImlwNl9yb3V0ZV9kZWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnIGZyb20gZ2ZwX2FueSgpIHRvIEdGUF9BVE9NSUMgaW4gX19pcDZfZGVsX3J0X3NpYmxpbmdzKCksIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgSVB2NiByb3V0ZSBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[1] Phase: Succeeded StartedAt: 2026-07-19 11:36:12 +0000 UTC FinishedAt: 2026-07-19 11:36:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-19 11:36:12 +0000 UTC FinishedAt: 2026-07-19 11:36:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2] Phase: Succeeded StartedAt: 2026-07-19 11:36:12 +0000 UTC FinishedAt: 2026-07-19 16:07:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-19 11:36:12 +0000 UTC FinishedAt: 2026-07-19 16:07:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-19 11:36:12 +0000 UTC FinishedAt: 2026-07-19 11:36:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-19 11:36:12 +0000 UTC FinishedAt: 2026-07-19 11:36:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-convert-artifact-1268389251/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-19 11:36:23 +0000 UTC FinishedAt: 2026-07-19 12:24:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-19 11:36:23 +0000 UTC FinishedAt: 2026-07-19 12:24:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*87d5fe67-0585-4d50-9a12-68b20ee93fae,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-convert-artifact-1268389251/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c3666c1b-9e47-4806-be9a-7f0d8a18fb89", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-build-action-3654075889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-19 11:36:23 +0000 UTC FinishedAt: 2026-07-19 12:24:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*87d5fe67-0585-4d50-9a12-68b20ee93fae,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-convert-artifact-1268389251/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c3666c1b-9e47-4806-be9a-7f0d8a18fb89", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-build-action-3654075889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-19 12:24:29 +0000 UTC FinishedAt: 2026-07-19 12:24:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-19 12:24:29 +0000 UTC FinishedAt: 2026-07-19 12:24:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-19 12:24:29 +0000 UTC FinishedAt: 2026-07-19 12:24:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-19 12:24:29 +0000 UTC FinishedAt: 2026-07-19 12:24:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-convert-artifact-2438502202/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-19 12:24:39 +0000 UTC FinishedAt: 2026-07-19 12:26:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-19 12:24:39 +0000 UTC FinishedAt: 2026-07-19 12:26:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c3666c1b-9e47-4806-be9a-7f0d8a18fb89,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-build-action-3654075889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-19 12:26:51 +0000 UTC FinishedAt: 2026-07-19 12:26:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-19 12:26:51 +0000 UTC FinishedAt: 2026-07-19 12:26:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-19 12:26:51 +0000 UTC FinishedAt: 2026-07-19 13:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-19 12:26:51 +0000 UTC FinishedAt: 2026-07-19 13:02:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*87d5fe67-0585-4d50-9a12-68b20ee93fae,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-convert-artifact-2438502202/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "7478d186-3479-47b5-ab95-c1a8ff4e9a5f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-build-action-612844958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-19 12:26:51 +0000 UTC FinishedAt: 2026-07-19 13:02:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*87d5fe67-0585-4d50-9a12-68b20ee93fae,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-convert-artifact-2438502202/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "7478d186-3479-47b5-ab95-c1a8ff4e9a5f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-build-action-612844958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-19 13:02:19 +0000 UTC FinishedAt: 2026-07-19 13:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-19 13:02:19 +0000 UTC FinishedAt: 2026-07-19 13:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-19 13:02:19 +0000 UTC FinishedAt: 2026-07-19 13:04:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-19 13:02:19 +0000 UTC FinishedAt: 2026-07-19 13:04:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7478d186-3479-47b5-ab95-c1a8ff4e9a5f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-build-action-612844958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-19 13:04:54 +0000 UTC FinishedAt: 2026-07-19 16:07:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-19 13:04:54 +0000 UTC FinishedAt: 2026-07-19 16:07:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*c3666c1b-9e47-4806-be9a-7f0d8a18fb89,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7478d186-3479-47b5-ab95-c1a8ff4e9a5f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-build-action-3654075889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-build-action-612844958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-19 13:04:54 +0000 UTC FinishedAt: 2026-07-19 13:05:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-19 13:04:54 +0000 UTC FinishedAt: 2026-07-19 13:05:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-convert-artifact-354797167/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-19 13:04:54 +0000 UTC FinishedAt: 2026-07-19 13:04:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-19 13:04:54 +0000 UTC FinishedAt: 2026-07-19 13:04:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-19 13:04:54 +0000 UTC FinishedAt: 2026-07-19 13:04:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-19 13:05:15 +0000 UTC FinishedAt: 2026-07-19 16:07:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bgmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__ip6_del_rt_siblings","ip6_route_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"476ab480-dbdb-41ba-a982-9432079e9144","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-19 13:05:15 +0000 UTC FinishedAt: 2026-07-19 16:07:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c3666c1b-9e47-4806-be9a-7f0d8a18fb89,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7478d186-3479-47b5-ab95-c1a8ff4e9a5f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-build-action-3654075889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-build-action-612844958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5bgmm/series-workflow5bgmm-convert-artifact-354797167/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}