Name: series-workflow6729w Phase: Succeeded StartedAt: 2026-07-17 06:49:57 +0000 UTC FinishedAt: 2026-07-17 11:58:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[0] Phase: Succeeded StartedAt: 2026-07-17 06:49:57 +0000 UTC FinishedAt: 2026-07-17 07:14:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 06:49:57 +0000 UTC FinishedAt: 2026-07-17 07:14:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e57d6e9e20b551e4910d7a6331a81775c3ad6693", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e57d6e9e20b551e4910d7a6331a81775c3ad6693", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG" ], "series_id": "592f505e-6e6c-48a1-9ea8-4e87ff340b6d" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "free_area_init_core_hotplug", "hotadd_init_pgdat", "__try_online_node" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA3OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnJiMzNDssCiAgICAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDssCiAgICAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNzoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJiZWVkMjA0Y2JhYTMxYjg2OWEzNTdlMjEwNmFlYjZhYWQyNGE2MDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAwNzoxNDoxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmggYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcbmluZGV4IDdjOWQ2NjcyOWM2MDk1Li5mMDRiOTE1Njc4ZGJkOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oXG5AQCAtMjg5LDcgJiM0MzsyODksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpIHt9XG4gLyogRGVmYXVsdCBvbmxpbmVfdHlwZSAoTU1PUF8qKSB3aGVuIG5ldyBtZW1vcnkgYmxvY2tzIGFyZSBhZGRlZC4gKi9cbiBleHRlcm4gZW51bSBtbW9wIG1ocF9nZXRfZGVmYXVsdF9vbmxpbmVfdHlwZSh2b2lkKTtcbiBleHRlcm4gdm9pZCBtaHBfc2V0X2RlZmF1bHRfb25saW5lX3R5cGUoZW51bSBtbW9wIG9ubGluZV90eXBlKTtcbi1leHRlcm4gdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7XG4mIzQzO2V4dGVybiBpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xuIGV4dGVybiBpbnQgX19hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2UsXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbmluZGV4IDdhYzE5ZmFiMjI2MzI0Li44YjEzNzMyOGRjZjAxNCAxMDA2NDRcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbkBAIC0xMjYzLDcgJiM0MzsxMjYzLDggQEAgc3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcbiBcdHBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7XG4gXG4gXHQvKiBpbml0IG5vZGUmIzM5O3Mgem9uZXMgYXMgZW1wdHkgem9uZXMsIHdlIGRvbiYjMzk7dCBoYXZlIGFueSBwcmVzZW50IHBhZ2VzLiovXG4tXHRmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpO1xuJiM0MztcdGlmIChmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHQvKlxuIFx0ICogVGhlIG5vZGUgd2UgYWxsb2NhdGVkIGhhcyBubyB6b25lIGZhbGxiYWNrIGxpc3RzLiBGb3IgYXZvaWRpbmdcbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcbmluZGV4IDBmNjQ5MDllOGQyMGUyLi4yNDc3MDk0N2E2NmY5OCAxMDA2NDRcbi0tLSBhL21tL21tX2luaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbW1faW5pdC5jXG5AQCAtMTUzNiw3ICYjNDM7MTUzNiw3IEBAIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcbiAgKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1Z1xuICAqL1xuICNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbi12b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuJiM0MztpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4ge1xuIFx0aW50IG5pZCA9IHBnZGF0LVx1MDAzZW5vZGVfaWQ7XG4gXHRlbnVtIHpvbmVfdHlwZSB6O1xuQEAgLTE1NDQsOCAmIzQzOzE1NDQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbiBcbiBcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcbiBcbi1cdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cylcbi1cdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xuJiM0MztcdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cykge1xuJiM0MztcdFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgX19wZXJjcHUgKm5ldztcbiYjNDM7XG4mIzQzO1x0XHRuZXcgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xuJiM0MztcdFx0aWYgKCFuZXcpXG4mIzQzO1x0XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBuZXc7XG4mIzQzO1x0fVxuIFxuIFx0LypcbiBcdCAqIFJlc2V0IHRoZSBucl96b25lcywgb3JkZXIgYW5kIGhpZ2hlc3Rfem9uZWlkeCBiZWZvcmUgcmV1c2UuXG5AQCAtMTU3Niw2ICYjNDM7MTU4Miw4IEBAIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4gXHRcdHpvbmUtXHUwMDNlcHJlc2VudF9wYWdlcyA9IDA7XG4gXHRcdHpvbmVfaW5pdF9pbnRlcm5hbHMoem9uZSwgeiwgbmlkLCAwKTtcbiBcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuICNlbmRpZlxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA3OjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnJiMzNDssCiAgICAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDssCiAgICAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmJlZWQyMDRjYmFhMzFiODY5YTM1N2UyMTA2YWViNmFhZDI0YTYwNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDE3IDA3OjE0OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oIGIvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oCmluZGV4IDdjOWQ2NjcyOWM2MDk1Li5mMDRiOTE1Njc4ZGJkOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaApAQCAtMjg5LDcgJiM0MzsyODksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpIHt9CiAvKiBEZWZhdWx0IG9ubGluZV90eXBlIChNTU9QXyopIHdoZW4gbmV3IG1lbW9yeSBibG9ja3MgYXJlIGFkZGVkLiAqLwogZXh0ZXJuIGVudW0gbW1vcCBtaHBfZ2V0X2RlZmF1bHRfb25saW5lX3R5cGUodm9pZCk7CiBleHRlcm4gdm9pZCBtaHBfc2V0X2RlZmF1bHRfb25saW5lX3R5cGUoZW51bSBtbW9wIG9ubGluZV90eXBlKTsKLWV4dGVybiB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTsKJiM0MztleHRlcm4gaW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTsKIGV4dGVybiBpbnQgX19hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7CiBleHRlcm4gaW50IGFkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKTsKIGV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlLApkaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmMKaW5kZXggN2FjMTlmYWIyMjYzMjQuLjhiMTM3MzI4ZGNmMDE0IDEwMDY0NAotLS0gYS9tbS9tZW1vcnlfaG90cGx1Zy5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21lbW9yeV9ob3RwbHVnLmMKQEAgLTEyNjMsNyAmIzQzOzEyNjMsOCBAQCBzdGF0aWMgcGdfZGF0YV90ICpob3RhZGRfaW5pdF9wZ2RhdChpbnQgbmlkKQogCXBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7CiAKIAkvKiBpbml0IG5vZGUmIzM5O3Mgem9uZXMgYXMgZW1wdHkgem9uZXMsIHdlIGRvbiYjMzk7dCBoYXZlIGFueSBwcmVzZW50IHBhZ2VzLiovCi0JZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KTsKJiM0MzsJaWYgKGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhwZ2RhdCkpCiYjNDM7CQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogVGhlIG5vZGUgd2UgYWxsb2NhdGVkIGhhcyBubyB6b25lIGZhbGxiYWNrIGxpc3RzLiBGb3IgYXZvaWRpbmcKZGlmZiAtLWdpdCBhL21tL21tX2luaXQuYyBiL21tL21tX2luaXQuYwppbmRleCAwZjY0OTA5ZThkMjBlMi4uMjQ3NzA5NDdhNjZmOTggMTAwNjQ0Ci0tLSBhL21tL21tX2luaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tbV9pbml0LmMKQEAgLTE1MzYsNyAmIzQzOzE1MzYsNyBAQCB2b2lkIF9faW5pdCBzZXRfcGFnZWJsb2NrX29yZGVyKHZvaWQpCiAgKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1ZwogICovCiAjaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHCi12b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KQomIzQzO2ludCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIHsKIAlpbnQgbmlkID0gcGdkYXQtJmd0O25vZGVfaWQ7CiAJZW51bSB6b25lX3R5cGUgejsKQEAgLTE1NDQsOCAmIzQzOzE1NDQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIAogCXBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTsKIAotCWlmIChwZ2RhdC0mZ3Q7cGVyX2NwdV9ub2Rlc3RhdHMgPT0gJmFtcDtib290X25vZGVzdGF0cykKLQkJcGdkYXQtJmd0O3Blcl9jcHVfbm9kZXN0YXRzID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTsKJiM0MzsJaWYgKHBnZGF0LSZndDtwZXJfY3B1X25vZGVzdGF0cyA9PSAmYW1wO2Jvb3Rfbm9kZXN0YXRzKSB7CiYjNDM7CQlzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCBfX3BlcmNwdSAqbmV3OwomIzQzOwomIzQzOwkJbmV3ID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTsKJiM0MzsJCWlmICghbmV3KQomIzQzOwkJCXJldHVybiAtRU5PTUVNOwomIzQzOwkJcGdkYXQtJmd0O3Blcl9jcHVfbm9kZXN0YXRzID0gbmV3OwomIzQzOwl9CiAKIAkvKgogCSAqIFJlc2V0IHRoZSBucl96b25lcywgb3JkZXIgYW5kIGhpZ2hlc3Rfem9uZWlkeCBiZWZvcmUgcmV1c2UuCkBAIC0xNTc2LDYgJiM0MzsxNTgyLDggQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIAkJem9uZS0mZ3Q7cHJlc2VudF9wYWdlcyA9IDA7CiAJCXpvbmVfaW5pdF9pbnRlcm5hbHMoem9uZSwgeiwgbmlkLCAwKTsKIAl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogI2VuZGlmCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY4OQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYC4gSW50ZXJlc3RpbmcuIFRoZXkmIzM5O3ZlIGNoYW5nZWQgdGhlIHJldHVybiB0eXBlIGZyb20gYHZvaWRgIHRvIGBpbnRgLiBTbWFydCBtb3ZlIOKAkyBub3cgd2UgY2FuIGFjdHVhbGx5IHNpZ25hbCBlcnJvcnMgaW5zdGVhZCBvZiBzaWxlbnRseSBmYWlsaW5nLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2hlY2sgZm9yIHRoZSBgYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KWAgY2FsbC4gSWYgdGhhdCBhbGxvY2F0aW9uIGJvbWJzIG91dCwgd2hpY2gsIGxldCYjMzk7cyBiZSBob25lc3QsIGNhbiBoYXBwZW4gaW4gYSB0aWdodCBzcG90LCBpdCByZXR1cm5zIGAtRU5PTUVNYC4gVGhhdCBtYWtlcyBzZW5zZTsgYSBjbGVhciBpbmRpY2F0b3Igb2YgbWVtb3J5IGV4aGF1c3Rpb24uCgpOb3csIGluIGBob3RhZGRfaW5pdF9wZ2RhdGAsIHRoZSBjb2RlIGNoZWNrcyB0aGUgcmV0dXJuIG9mIGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLiBJZiBpdCBkZXRlY3RzIHRoZSBlcnJvciwgaXQgcmV0dXJucyBgTlVMTGAuIFRoaXMgaXMgYSBjcnVjaWFsIGRlc2lnbiBkZWNpc2lvbjsgYSBgTlVMTGAgcmV0dXJuIHNpZ25hbHMgZmFpbHVyZSB0byB0aGUgY2FsbGluZyBmdW5jdGlvbi4gVGhpcyBpcyBzdGFuZGFyZCBlcnJvciBwcm9wYWdhdGlvbiB0ZWNobmlxdWUgYW5kIG1ha2VzIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZyB1cCBvciB0YWtpbmcgYWx0ZXJuYXRpdmUgYWN0aW9uLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLCBzbyBJJiMzOTtsbCBuZXh0IGNoZWNrIHdoZXJlIGBob3RhZGRfaW5pdF9wZ2RhdGAgaXMgY2FsbGVkLiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGBOVUxMYCByZXR1cm5zIHdpbGwgYmUgdGhlIG5leHQgc3RlcCBpbiBldmFsdWF0aW5nIHRoZSBvdmVyYWxsIGltcGFjdCBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA3OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbW9yeV9ob3RwbHVnLmM9MTEzNz1pbnQgb25saW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI1Mi0vKiB3ZSBhcmUgT0sgY2FsbGluZyBfX21lbWluaXQgc3R1ZmYgaGVyZSAtIHdlIGhhdmUgQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyNTM6c3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI1NC17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0xMjg5PXN0YXRpYyBpbnQgX190cnlfb25saW5lX25vZGUoaW50IG5pZCwgYm9vbCBzZXRfbm9kZV9vbmxpbmUpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjk2LVxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjk3Olx0cGdkYXQgPSBob3RhZGRfaW5pdF9wZ2RhdChuaWQpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjk4LVx0aWYgKCFwZ2RhdCkge1xuLS1cbm1tL21tX2luaXQuYz0xODE3PXN0YXRpYyB2b2lkIF9faW5pdCBmcmVlX2FyZWFfaW5pdCh2b2lkKVxuLS1cbm1tL21tX2luaXQuYy0xOTExLVx0XHQgKm1lbW9yeS1sZXNzIG5vZGUuIFRoZSBwZ2RhdCB3aWxsIGdldCBmdWxseSBpbml0aWFsaXplZCBieVxubW0vbW1faW5pdC5jOjE5MTI6XHRcdCAqaG90YWRkX2luaXRfcGdkYXQoKSB3aGVuIG1lbW9yeSBpcyBob3RwbHVnZ2VkIGludG8gdGhpcyBub2RlLlxubW0vbW1faW5pdC5jLTE5MTMtXHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA3OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NDUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIE5vZGUgT25saW5lIExvZ2ljIGFuZCBQb3RlbnRpYWwgYHBnZGF0YCBJbml0aWFsaXphdGlvbiBGYWlsdXJlKioKClJpZ2h0LCBzbyBgaG90YWRkX2luaXRfcGdkYXRgIGlzIGludm9rZWQgZnJvbSB3aXRoaW4gYF9fdHJ5X29ubGluZV9ub2RlYC4gVGhhdCYjMzk7cyB0aGUgc2V0dXAuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgaWYgYGhvdGFkZF9pbml0X3BnZGF0YCAqcmV0dXJucyogYSBgTlVMTGAgdmFsdWUsIHNpZ25hbGluZyBhIGZhaWx1cmUgdG8gaW5pdGlhbGl6ZSB0aGUgcGFnZSBkYXRhIHN0cnVjdHVyZSAoYHBnZGF0YCksIGBfX3RyeV9vbmxpbmVfbm9kZWAgaXMgZGVzaWduZWQgdG8gaGFuZGxlIHRoYXQgY29uZGl0aW9uLiBUaGUgaW1wbGljYXRpb24gYmVpbmcgdGhhdCB0aGUgb25saW5lIGF0dGVtcHQgY2FuIHJlY292ZXIgZ3JhY2VmdWxseSwgcGVyaGFwcywgb3IgYXQgbGVhc3QgZGVhbCB3aXRoIHRoZSBlcnJvciBpbiBzb21lIGRlZmluZWQgbWFubmVyLgoKTXkgcHJpbWFyeSBmb2N1cyBub3cgbmVlZHMgdG8gc2hpZnQgdG8gdW5kZXJzdGFuZGluZyBleGFjdGx5ICpob3cqIGBfX3RyeV9vbmxpbmVfbm9kZWAgcmVzcG9uZHMgdG8gdGhpcyBgTlVMTGAgcmV0dXJuLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgY29udHJvbCBmbG93IHdpdGhpbiBgX190cnlfb25saW5lX25vZGVgIGl0c2VsZiB0byBncmFzcCB0aGUgY29uc2VxdWVuY2VzIGFuZCB3aGF0IGxvZ2ljIG9yIGFjdGlvbiB0YWtlcyBwbGFjZSBpbiBzdWNoIGEgZmFpbHVyZSBzY2VuYXJpby4gV2hhdCBhcmUgdGhlIGZhbGxiYWNrIG1lY2hhbmlzbXMsIGVycm9yIHJlcG9ydGluZywgb3IgcmV0cnkgYXR0ZW1wdHMgZW1wbG95ZWQ/IFRoZSBudWFuY2VzIG9mIHRoYXQgcmVzcG9uc2UgYXJlIGNyaXRpY2FsIHRvIHRoZSBvdmVyYWxsIHJlbGlhYmlsaXR5IG9mIHRoZSBob3QtYWRkIHByb2Nlc3MsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGRpZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3RyeV9vbmxpbmVfbm9kZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9tbS9udW1hLmM9MjY0PXZvaWQgX19pbml0IGluaXRfZ2lfbm9kZXModm9pZClcbi0tXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjcxLVx0ICogIGNwdV91cFxuYXJjaC94ODYvbW0vbnVtYS5jOjI3MjpcdCAqICAgX190cnlfb25saW5lX25vZGVcbmFyY2gveDg2L21tL251bWEuYy0yNzMtXHQgKiAgICByZWdpc3Rlcl9ub2RlXG4tLVxuYXJjaC94ODYvbW0vbnVtYS5jPTI5Nj12b2lkIF9faW5pdCBpbml0X2NwdV90b19ub2RlKHZvaWQpXG4tLVxuYXJjaC94ODYvbW0vbnVtYS5jLTMxMi1cdFx0ICogIGNwdV91cFxuYXJjaC94ODYvbW0vbnVtYS5jOjMxMzpcdFx0ICogICBfX3RyeV9vbmxpbmVfbm9kZVxuYXJjaC94ODYvbW0vbnVtYS5jLTMxNC1cdFx0ICogICAgcmVnaXN0ZXJfbm9kZVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTI1Mz1zdGF0aWMgcGdfZGF0YV90ICpob3RhZGRfaW5pdF9wZ2RhdChpbnQgbmlkKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI3OC0vKlxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjc5OiAqIF9fdHJ5X29ubGluZV9ub2RlIC0gb25saW5lIGEgbm9kZSBpZiBvZmZsaW5lZFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjgwLSAqIEBuaWQ6IHRoZSBub2RlIElEXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjg4LSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjg5OnN0YXRpYyBpbnQgX190cnlfb25saW5lX25vZGUoaW50IG5pZCwgYm9vbCBzZXRfbm9kZV9vbmxpbmUpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyOTAte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTMxNj1pbnQgdHJ5X29ubGluZV9ub2RlKGludCBuaWQpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzIwLVx0bWVtX2hvdHBsdWdfYmVnaW4oKTtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTMyMTpcdHJldCA9ICBfX3RyeV9vbmxpbmVfbm9kZShuaWQsIHRydWUpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzIyLVx0bWVtX2hvdHBsdWdfZG9uZSgpO1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ5NT1pbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzMi1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTUzMzpcdHJldCA9IF9fdHJ5X29ubGluZV9ub2RlKG5pZCwgZmFsc2UpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNTM0LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzc3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgRXJyb3IgSGFuZGxpbmcgb2YgYF9fdHJ5X29ubGluZV9ub2RlYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIGluIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9fdHJ5X29ubGluZV9ub2RlYC4gSSBrbm93IGl0JiMzOTtzIGFuIGludGVnZXIsIHdoaWNoIGxpa2VseSByZXByZXNlbnRzIHNvbWUgc29ydCBvZiBzdGF0dXMgb3IgZXJyb3IgY29kZS4gVGhlIHJlYWwgY3J1eCBvZiB0aGlzIGludmVzdGlnYXRpb24gc2VlbXMgdG8gYmUgd2hhdCBoYXBwZW5zIHdoZW4gYGhvdGFkZF9pbml0X3BnZGF0YCBraWNrcyBiYWNrIGEgYE5VTExgIHBvaW50ZXIuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIGJyYW5jaGluZyBjb25kaXRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBgTlVMTGAgc2lnbmlmaWVzIGEgZmFpbHVyZSBpbiB0aGUgcGFnZSBkYXRhIGluaXRpYWxpemF0aW9uLiBOb3cgSSB3YW50IHRvIHNlZSBob3cgYF9fdHJ5X29ubGluZV9ub2RlYCBncmFjZWZ1bGx5IChvciBub3Qgc28gZ3JhY2VmdWxseSkgaGFuZGxlcyB0aGF0IHNwZWNpZmljIGZhaWx1cmUgc2NlbmFyaW8uIE15IGZvY3VzIGhlcmUgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aDsgSSBuZWVkIHRvIGtub3cgaWYgd2UmIzM5O3JlIHByb3Blcmx5IGRldGVjdGluZywgcmVwb3J0aW5nLCBhbmQsIG1vc3QgaW1wb3J0YW50bHksIHJlY292ZXJpbmcgZnJvbSBvciBtaXRpZ2F0aW5nIHRoYXQgcGFydGljdWxhciBmYWlsdXJlIHBvaW50IGR1cmluZyBub2RlIG9ubGluZSBvcGVyYXRpb25zLiBBIE5VTEwgcmV0dXJuIGZyb20gaG90YWRkX2luaXRfcGdkYXQgaXMgYW4gaW1wb3J0YW50IGZhaWx1cmUgcG9pbnQgSSBuZWVkIHRvIGRlZXBseSB1bmRlcnN0YW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA3OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vbWVtb3J5X2hvdHBsdWcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyODksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTI4OTpcdHN0YXRpYyBpbnQgX190cnlfb25saW5lX25vZGUoaW50IG5pZCwgYm9vbCBzZXRfbm9kZV9vbmxpbmUpXG4xMjkwOlx0e1xuMTI5MTpcdFx0cGdfZGF0YV90ICpwZ2RhdDtcbjEyOTI6XHRcdGludCByZXQgPSAxO1xuMTI5MzpcdFxuMTI5NDpcdFx0aWYgKG5vZGVfb25saW5lKG5pZCkpXG4xMjk1Olx0XHRcdHJldHVybiAwO1xuMTI5NjpcdFxuMTI5NzpcdFx0cGdkYXQgPSBob3RhZGRfaW5pdF9wZ2RhdChuaWQpO1xuMTI5ODpcdFx0aWYgKCFwZ2RhdCkge1xuMTI5OTpcdFx0XHRwcl9lcnIoXCYjMzQ7Q2Fubm90IG9ubGluZSBub2RlICVkIGR1ZSB0byBOVUxMIHBnZGF0XFxuXCYjMzQ7LCBuaWQpO1xuMTMwMDpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTMwMTpcdFx0XHRnb3RvIG91dDtcbjEzMDI6XHRcdH1cbjEzMDM6XHRcbjEzMDQ6XHRcdGlmIChzZXRfbm9kZV9vbmxpbmUpIHtcbjEzMDU6XHRcdFx0bm9kZV9zZXRfb25saW5lKG5pZCk7XG4xMzA2Olx0XHRcdHJldCA9IHJlZ2lzdGVyX25vZGUobmlkKTtcbjEzMDc6XHRcdFx0QlVHX09OKHJldCk7XG4xMzA4Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1OAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0JiMzOTtzIGRlYWxpbmcgd2l0aCBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGBhbGxvY19wZXJjcHVgIGZhaWxpbmcgd2l0aGluIHRoZSBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiBgYWxsb2NfcGVyY3B1YCByZXR1cm5zIGAtRU5PTUVNYCwgdGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQgZXJyb3IgcHJvcGFnYXRlcyBjb3JyZWN0bHksIGFsbCB0aGUgd2F5IHVwIHRocm91Z2ggYGhvdGFkZF9pbml0X3BnZGF0YCByZXR1cm5pbmcgYE5VTExgLCB0aGVuIGBfX3RyeV9vbmxpbmVfbm9kZWAgYWxzbyByZXR1cm5pbmcgYC1FTk9NRU1gLiBVbHRpbWF0ZWx5LCB0aGlzIHByZXZlbnRzIGFueSBwb3RlbnRpYWwgaXNzdWVzLCBsaWtlIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBpZiB3ZSYjMzk7cmUgb3V0IG9mIG1lbW9yeSBkdXJpbmcgYSBtZW1vcnkgaG90cGx1Zy4KClRoZSByZWFsIHF1ZXN0aW9uIEkgbmVlZCB0byBhc2sgbXlzZWxmIGlzIHdoZXRoZXIgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBJdCYjMzk7cyBhIGZhaXJseSBzaW1wbGUgYWRkaXRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nLiBIb3dldmVyLCBhIGZhaWx1cmUgaW4gYGFsbG9jX3BlcmNwdWAgaW1wbGllcyBhbiBvdXQtb2YtbWVtb3J5IGNvbmRpdGlvbiwgYW5kIG1lbW9yeSBob3RwbHVnIGlzLCBieSBkZWZpbml0aW9uLCBhIGZ1bmN0aW9uYWwgYXJlYS4gR2l2ZW4gdGhhdCwgeWVzLCBJIHRoaW5rIGl0JiMzOTtzIHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGhvdHBsdWcgaXNzdWVzIGFyZSBjcml0aWNhbC4KCk5vdywgbGV0JiMzOTtzIGtlZXAgaW4gbWluZCB0aGUgY29yZSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLCBgaG90YWRkX2luaXRfcGdkYXRgLCBgX190cnlfb25saW5lX25vZGVgLCBgdHJ5X29ubGluZV9ub2RlYCwgYW5kIGBhZGRfbWVtb3J5X3Jlc291cmNlYC4gVGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMgaGVyZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGUgYE1FTU9SWV9IT1RQTFVHYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkgdGhpbmcgdGhhdCBuZWVkcyB0byBiZSBhY3RpdmUgZm9yIGFsbCBvZiB0aGlzIHRvIHRha2UgcGxhY2UuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGF0IHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBpcyBldmVuIHJlbGV2YW50IGluIHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVNT1JZX0hPVFBMVUcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz01MTk9Y29uZmlnIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHXG4tLVxubW0vS2NvbmZpZy01MjItIyBldmVudHVhbGx5LCB3ZSBjYW4gaGF2ZSB0aGlzIG9wdGlvbiBqdXN0ICYjMzk7c2VsZWN0IFNQQVJTRU1FTSYjMzk7XG5tbS9LY29uZmlnOjUyMzptZW51Y29uZmlnIE1FTU9SWV9IT1RQTFVHXG5tbS9LY29uZmlnLTUyNC1cdGJvb2wgXCYjMzQ7TWVtb3J5IGhvdHBsdWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY2OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbW9yeSBIb3RwbHVnIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYE1FTU9SWV9IT1RQTFVHYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIga2V5IGNvbmZpZ3VyYXRpb25zIHdlIHNob3VsZCBiZSBhd2FyZSBvZi4gVGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgbW9kaWZ5aW5nIGBtbS9tbV9pbml0LmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgI2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR2AgYmxvY2suCgpNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgaW1wb3J0YW50IHN5bWJvbHM6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLCBgaG90YWRkX2luaXRfcGdkYXRgLCBhbmQgYF9fdHJ5X29ubGluZV9ub2RlYC4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgcmVhY2hhYmxlLCBhbmQgaXQgc2VlbXMgdGhlIGFuc3dlciBpcyBhIGNsZWFyIHllcyDigJMgdGhleSBhcmUgYWxsIHBhcnQgb2YgdGhlIG1lbW9yeSBob3RwbHVnIHBhdGguIEdpdmVuIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZnV6emluZyB0aGlzIGFyZWEgbG9va3MgcHJvbWlzaW5nLgoKV2FpdCBhIHNlY29uZOKApiB0aGlua2luZyBhYm91dCBpdCBtb3JlLCBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCBpcyAqb25seSogY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zLiBUaGUgbmV4dCBxdWVzdGlvbiwgYW5kIGEgY3JpdGljYWwgb25lIGZvciBleHBsb2l0YWJpbGl0eSwgaXMgd2hldGhlciBtZW1vcnkgaG90cGx1ZyBpcyBldmVuICpyZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSG1tLCB0aGlua2luZyBhYm91dCBpdCwgdGhhdCYjMzk7cyBwb3NzaWJsZSAtIEFDUEkgbWVtb3J5IGhvdHBsdWcgb3IgdmlydGlvLW1lbSBjb21lIHRvIG1pbmQuIFNvLCB0aGUgYXR0YWNrIHN1cmZhY2UgaXMsIGluIGZhY3QsIHRoZXJlLiBOb3csIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgIGNhbGwgaW4gYG1tL21tX2luaXQuY2AgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDc6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9tbV9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE1MzU6XHQgKlxuMTUzNjpcdCAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgZHVyaW5nIG1lbW9yeSBob3RwbHVnXG4xNTM3Olx0ICovXG4xNTM4Olx0I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuMTUzOTpcdGludCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbjE1NDA6XHR7XG4xNTQxOlx0XHRpbnQgbmlkID0gcGdkYXQtXHUwMDNlbm9kZV9pZDtcbjE1NDI6XHRcdGVudW0gem9uZV90eXBlIHo7XG4xNTQzOlx0XHRpbnQgY3B1O1xuMTU0NDpcdFxuMTU0NTpcdFx0cGdkYXRfaW5pdF9pbnRlcm5hbHMocGdkYXQpO1xuMTU0NjpcdFxuMTU0NzpcdFx0aWYgKHBnZGF0LVx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFx1MDAyNmJvb3Rfbm9kZXN0YXRzKSB7XG4xNTQ4Olx0XHRcdHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0IF9fcGVyY3B1ICpuZXc7XG4xNTQ5Olx0XG4xNTUwOlx0XHRcdG5ldyA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7XG4xNTUxOlx0XHRcdGlmICghbmV3KVxuMTU1MjpcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTU1MzpcdFx0XHRwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9IG5ldztcbjE1NTQ6XHRcdH1cbjE1NTU6XHRcbjE1NTY6XHRcdC8qXG4xNTU3Olx0XHQgKiBSZXNldCB0aGUgbnJfem9uZXMsIG9yZGVyIGFuZCBoaWdoZXN0X3pvbmVpZHggYmVmb3JlIHJldXNlLlxuMTU1ODpcdFx0ICogTm90ZSB0aGF0IGtzd2FwZCB3aWxsIGluaXQga3N3YXBkX2hpZ2hlc3Rfem9uZWlkeCBwcm9wZXJseVxuMTU1OTpcdFx0ICogd2hlbiBpdCBzdGFydHMgaW4gdGhlIG5lYXIgZnV0dXJlLlxuMTU2MDpcdFx0ICovXG4xNTYxOlx0XHRwZ2RhdC1cdTAwM2Vucl96b25lcyA9IDA7XG4xNTYyOlx0XHRwZ2RhdC1cdTAwM2Vrc3dhcGRfb3JkZXIgPSAwO1xuMTU2MzpcdFx0cGdkYXQtXHUwMDNla3N3YXBkX2hpZ2hlc3Rfem9uZWlkeCA9IDA7XG4xNTY0Olx0XHRwZ2RhdC1cdTAwM2Vub2RlX3N0YXJ0X3BmbiA9IDA7XG4xNTY1Olx0XHRwZ2RhdC1cdTAwM2Vub2RlX3ByZXNlbnRfcGFnZXMgPSAwO1xuMTU2NjpcdFxuMTU2NzpcdFx0Zm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHtcbjE1Njg6XHRcdFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgKnA7XG4xNTY5Olx0XG4xNTcwOlx0XHRcdHAgPSBwZXJfY3B1X3B0cihwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cywgY3B1KTtcbjE1NzE6XHRcdFx0bWVtc2V0KHAsIDAsIHNpemVvZigqcCkpO1xuMTU3MjpcdFx0fVxuMTU3MzpcdFxuMTU3NDpcdFx0LypcbjE1NzU6XHRcdCAqIFdoZW4gbWVtb3J5IGlzIGhvdC1hZGRlZCwgYWxsIHRoZSBtZW1vcnkgaXMgaW4gb2ZmbGluZSBzdGF0ZS4gU29cbjE1NzY6XHRcdCAqIGNsZWFyIGFsbCB6b25lcyYjMzk7IHByZXNlbnRfcGFnZXMgYW5kIG1hbmFnZWRfcGFnZXMgYmVjYXVzZSB0aGV5IHdpbGxcbjE1Nzc6XHRcdCAqIGJlIHVwZGF0ZWQgaW4gb25saW5lX3BhZ2VzKCkgYW5kIG9mZmxpbmVfcGFnZXMoKS5cbjE1Nzg6XHRcdCAqL1xuMTU3OTpcdFx0Zm9yICh6ID0gMDsgeiBcdTAwM2MgTUFYX05SX1pPTkVTOyB6JiM0MzsmIzQzOykge1xuMTU4MDpcdFx0XHRzdHJ1Y3Qgem9uZSAqem9uZSA9IHBnZGF0LVx1MDAzZW5vZGVfem9uZXMgJiM0MzsgejtcbjE1ODE6XHRcbjE1ODI6XHRcdFx0em9uZS1cdTAwM2VwcmVzZW50X3BhZ2VzID0gMDtcbjE1ODM6XHRcdFx0em9uZV9pbml0X2ludGVybmFscyh6b25lLCB6LCBuaWQsIDApO1xuMTU4NDpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTgyCgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkVycm9yIEhhbmRsaW5nIGluIEhvdHBsdWcgTWVtb3J5IEluaXRpYWxpemF0aW9uKioKClJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwcmV0dHkgY3JpdGljYWwgYXNwZWN0IG9mIGhvdHBsdWcgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGVycm9yIGhhbmRsaW5nIGFyb3VuZCBgYWxsb2NfcGVyY3B1YCB3aXRoaW4gYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AuIFRoaXMgaXMgZ29vZCwgYmVjYXVzZSBhIGZhaWx1cmUgaW4gYGFsbG9jX3BlcmNwdWAgaW4gdGhhdCBjb250ZXh0IGlzIGEgcmVjaXBlIGZvciBhIGJhZCBkYXkuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHByZXZlbnRpbmcgYSBuYXN0eSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UsIG9yIHdvcnNlLCBzb21lIG90aGVyIGluc2lkaW91cyBpc3N1ZSB0aGF0IG1pZ2h0IGNyb3AgdXAgbGF0ZXIuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGRlZmluaXRlIGltcHJvdmVtZW50LgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgYWJzb2x1dGVseSAqZGVtYW5kcyogdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byBiZSBoYW1tZXJpbmcgdGhlIGVycm9yIHBhdGguIE1ha2Ugc3VyZSB0aGF0IGlmIGBhbGxvY19wZXJjcHVgIGJhaWxzLCB3ZSBkb24mIzM5O3QgbGVhayBtZW1vcnksIHdlIGRvbiYjMzk7dCBlbmQgdXAgd2l0aCBzb21lIGNvcnJ1cHQgZGF0YSBzdHJ1Y3R1cmUsIGFuZCB0aGUgd2hvbGUgaG90cGx1ZyBwcm9jZXNzIGRvZXNuJiMzOTt0IGp1c3QgZ28gc2lkZXdheXMuIEdvdHRhIGNoZWNrIGZvciBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgYW5kIGVuc3VyZSBhIGNsZWFuIHJlY292ZXJ5LgoKVGhlIGtleSBzeW1ib2xzIHRvIGtlZXAgYW4gZXllIG9uLCBvZiBjb3Vyc2UsIGFyZSBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCAod2hlcmUgdGhlIGNoYW5nZSBpcyksIGBob3RhZGRfaW5pdF9wZ2RhdGAsIGFuZCBgX190cnlfb25saW5lX25vZGVgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgY3JpdGljYWwgaW5pdGlhbGl6YXRpb24gc3RlcHMuIFRoZSBvYnZpb3VzIGFzc29jaWF0ZWQgY29uZmlnIGlzIGBNRU1PUllfSE9UUExVR2AsIHNpbmNlIHRoYXQmIzM5O3MgdGhlIHRyaWdnZXIuCgpJIHRoaW5rIHdlIG5lZWQgdG8gY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDc6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnJiMzNDssCiAgICAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDssCiAgICAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVNT1JZX0hPVFBMVUcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcmIzM0OywKICAgICYjMzQ7aG90YWRkX2luaXRfcGdkYXQmIzM0OywKICAgICYjMzQ7X190cnlfb25saW5lX25vZGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBlcnJvciBoYW5kbGluZyBmb3IgYWxsb2NfcGVyY3B1IGZhaWx1cmUgaW4gZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnIGR1cmluZyBtZW1vcnkgaG90cGx1Zy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGlzc3VlcyB3aGVuIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLiBGdXp6aW5nIGNhbiBoZWxwIGVuc3VyZSB0aGUgZXJyb3IgcGF0aCBpcyBoYW5kbGVkIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MTUuNTU3MDEwMzYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMxNTgwOTI4NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdcIixcbiAgICBcImhvdGFkZF9pbml0X3BnZGF0XCIsXG4gICAgXCJfX3RyeV9vbmxpbmVfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MTUuNTU3MDE1MDgyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTA3OTc3MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiYmVlZDIwNGNiYWEzMWI4NjlhMzU3ZTIxMDZhZWI2YWFkMjRhNjA2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDE3IDA3OjE0OjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCBiL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxcbmluZGV4IDdjOWQ2NjcyOWM2MDk1Li5mMDRiOTE1Njc4ZGJkOSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcXG5AQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge31cXG4gLyogRGVmYXVsdCBvbmxpbmVfdHlwZSAoTU1PUF8qKSB3aGVuIG5ldyBtZW1vcnkgYmxvY2tzIGFyZSBhZGRlZC4gKi9cXG4gZXh0ZXJuIGVudW0gbW1vcCBtaHBfZ2V0X2RlZmF1bHRfb25saW5lX3R5cGUodm9pZCk7XFxuIGV4dGVybiB2b2lkIG1ocF9zZXRfZGVmYXVsdF9vbmxpbmVfdHlwZShlbnVtIG1tb3Agb25saW5lX3R5cGUpO1xcbi1leHRlcm4gdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7XFxuK2V4dGVybiBpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xcbiBleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xcbiBleHRlcm4gaW50IGFkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKTtcXG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2UsXFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeV9ob3RwbHVnLmMgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXFxuaW5kZXggN2FjMTlmYWIyMjYzMjQuLjhiMTM3MzI4ZGNmMDE0IDEwMDY0NFxcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcXG4rKysgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXFxuQEAgLTEyNjMsNyArMTI2Myw4IEBAIHN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXFxuIFxcdHBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7XFxuIFxcbiBcXHQvKiBpbml0IG5vZGUncyB6b25lcyBhcyBlbXB0eSB6b25lcywgd2UgZG9uJ3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qL1xcbi1cXHRmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpO1xcbitcXHRpZiAoZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBUaGUgbm9kZSB3ZSBhbGxvY2F0ZWQgaGFzIG5vIHpvbmUgZmFsbGJhY2sgbGlzdHMuIEZvciBhdm9pZGluZ1xcbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcXG5pbmRleCAwZjY0OTA5ZThkMjBlMi4uMjQ3NzA5NDdhNjZmOTggMTAwNjQ0XFxuLS0tIGEvbW0vbW1faW5pdC5jXFxuKysrIGIvbW0vbW1faW5pdC5jXFxuQEAgLTE1MzYsNyArMTUzNiw3IEBAIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcXG4gICogTk9URTogdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBkdXJpbmcgbWVtb3J5IGhvdHBsdWdcXG4gICovXFxuICNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG4tdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcXG4raW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxcbiB7XFxuIFxcdGludCBuaWQgPSBwZ2RhdC1cXHUwMDNlbm9kZV9pZDtcXG4gXFx0ZW51bSB6b25lX3R5cGUgejtcXG5AQCAtMTU0NCw4ICsxNTQ0LDE0IEBAIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXFxuIFxcbiBcXHRwZ2RhdF9pbml0X2ludGVybmFscyhwZ2RhdCk7XFxuIFxcbi1cXHRpZiAocGdkYXQtXFx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFxcdTAwMjZib290X25vZGVzdGF0cylcXG4tXFx0XFx0cGdkYXQtXFx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTtcXG4rXFx0aWYgKHBnZGF0LVxcdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcXHUwMDI2Ym9vdF9ub2Rlc3RhdHMpIHtcXG4rXFx0XFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgX19wZXJjcHUgKm5ldztcXG4rXFxuK1xcdFxcdG5ldyA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7XFxuK1xcdFxcdGlmICghbmV3KVxcbitcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0XFx0cGdkYXQtXFx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID0gbmV3O1xcbitcXHR9XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBSZXNldCB0aGUgbnJfem9uZXMsIG9yZGVyIGFuZCBoaWdoZXN0X3pvbmVpZHggYmVmb3JlIHJldXNlLlxcbkBAIC0xNTc2LDYgKzE1ODIsOCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxcbiBcXHRcXHR6b25lLVxcdTAwM2VwcmVzZW50X3BhZ2VzID0gMDtcXG4gXFx0XFx0em9uZV9pbml0X2ludGVybmFscyh6b25lLCB6LCBuaWQsIDApO1xcbiBcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiAjZW5kaWZcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA3OjE0OjE1Ljk2ODQ4Mjg2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3NDY2MTE4MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdcIixcbiAgICBcImhvdGFkZF9pbml0X3BnZGF0XCIsXG4gICAgXCJfX3RyeV9vbmxpbmVfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYmVlZDIwNGNiYWEzMWI4NjlhMzU3ZTIxMDZhZWI2YWFkMjRhNjA2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDc6MTQ6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmggYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcbmluZGV4IDdjOWQ2NjcyOWM2MDk1Li5mMDRiOTE1Njc4ZGJkOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxuKysrIGIvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oXG5AQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge31cbiAvKiBEZWZhdWx0IG9ubGluZV90eXBlIChNTU9QXyopIHdoZW4gbmV3IG1lbW9yeSBibG9ja3MgYXJlIGFkZGVkLiAqL1xuIGV4dGVybiBlbnVtIG1tb3AgbWhwX2dldF9kZWZhdWx0X29ubGluZV90eXBlKHZvaWQpO1xuIGV4dGVybiB2b2lkIG1ocF9zZXRfZGVmYXVsdF9vbmxpbmVfdHlwZShlbnVtIG1tb3Agb25saW5lX3R5cGUpO1xuLWV4dGVybiB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTtcbitleHRlcm4gaW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTtcbiBleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xuIGV4dGVybiBpbnQgYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xuIGV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlLFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeV9ob3RwbHVnLmMgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXG5pbmRleCA3YWMxOWZhYjIyNjMyNC4uOGIxMzczMjhkY2YwMTQgMTAwNjQ0XG4tLS0gYS9tbS9tZW1vcnlfaG90cGx1Zy5jXG4rKysgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXG5AQCAtMTI2Myw3ICsxMjYzLDggQEAgc3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcbiBcdHBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7XG4gXG4gXHQvKiBpbml0IG5vZGUncyB6b25lcyBhcyBlbXB0eSB6b25lcywgd2UgZG9uJ3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qL1xuLVx0ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KTtcbitcdGlmIChmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdC8qXG4gXHQgKiBUaGUgbm9kZSB3ZSBhbGxvY2F0ZWQgaGFzIG5vIHpvbmUgZmFsbGJhY2sgbGlzdHMuIEZvciBhdm9pZGluZ1xuZGlmZiAtLWdpdCBhL21tL21tX2luaXQuYyBiL21tL21tX2luaXQuY1xuaW5kZXggMGY2NDkwOWU4ZDIwZTIuLjI0NzcwOTQ3YTY2Zjk4IDEwMDY0NFxuLS0tIGEvbW0vbW1faW5pdC5jXG4rKysgYi9tbS9tbV9pbml0LmNcbkBAIC0xNTM2LDcgKzE1MzYsNyBAQCB2b2lkIF9faW5pdCBzZXRfcGFnZWJsb2NrX29yZGVyKHZvaWQpXG4gICogTk9URTogdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBkdXJpbmcgbWVtb3J5IGhvdHBsdWdcbiAgKi9cbiAjaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG4tdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbitpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4ge1xuIFx0aW50IG5pZCA9IHBnZGF0LVx1MDAzZW5vZGVfaWQ7XG4gXHRlbnVtIHpvbmVfdHlwZSB6O1xuQEAgLTE1NDQsOCArMTU0NCwxNCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuIFxuIFx0cGdkYXRfaW5pdF9pbnRlcm5hbHMocGdkYXQpO1xuIFxuLVx0aWYgKHBnZGF0LVx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFx1MDAyNmJvb3Rfbm9kZXN0YXRzKVxuLVx0XHRwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7XG4rXHRpZiAocGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPT0gXHUwMDI2Ym9vdF9ub2Rlc3RhdHMpIHtcbitcdFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgX19wZXJjcHUgKm5ldztcbitcbitcdFx0bmV3ID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTtcbitcdFx0aWYgKCFuZXcpXG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHRcdHBnZGF0LVx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID0gbmV3O1xuK1x0fVxuIFxuIFx0LypcbiBcdCAqIFJlc2V0IHRoZSBucl96b25lcywgb3JkZXIgYW5kIGhpZ2hlc3Rfem9uZWlkeCBiZWZvcmUgcmV1c2UuXG5AQCAtMTU3Niw2ICsxNTgyLDggQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbiBcdFx0em9uZS1cdTAwM2VwcmVzZW50X3BhZ2VzID0gMDtcbiBcdFx0em9uZV9pbml0X2ludGVybmFscyh6b25lLCB6LCBuaWQsIDApO1xuIFx0fVxuK1xuK1x0cmV0dXJuIDA7XG4gfVxuICNlbmRpZlxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MTUuOTY4NTAyNTY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwNDU4MzUwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AuIEludGVyZXN0aW5nLiBUaGV5J3ZlIGNoYW5nZWQgdGhlIHJldHVybiB0eXBlIGZyb20gYHZvaWRgIHRvIGBpbnRgLiBTbWFydCBtb3ZlIOKAkyBub3cgd2UgY2FuIGFjdHVhbGx5IHNpZ25hbCBlcnJvcnMgaW5zdGVhZCBvZiBzaWxlbnRseSBmYWlsaW5nLiBJdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSBjaGVjayBmb3IgdGhlIGBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpYCBjYWxsLiBJZiB0aGF0IGFsbG9jYXRpb24gYm9tYnMgb3V0LCB3aGljaCwgbGV0J3MgYmUgaG9uZXN0LCBjYW4gaGFwcGVuIGluIGEgdGlnaHQgc3BvdCwgaXQgcmV0dXJucyBgLUVOT01FTWAuIFRoYXQgbWFrZXMgc2Vuc2U7IGEgY2xlYXIgaW5kaWNhdG9yIG9mIG1lbW9yeSBleGhhdXN0aW9uLlxuXG5Ob3csIGluIGBob3RhZGRfaW5pdF9wZ2RhdGAsIHRoZSBjb2RlIGNoZWNrcyB0aGUgcmV0dXJuIG9mIGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLiBJZiBpdCBkZXRlY3RzIHRoZSBlcnJvciwgaXQgcmV0dXJucyBgTlVMTGAuIFRoaXMgaXMgYSBjcnVjaWFsIGRlc2lnbiBkZWNpc2lvbjsgYSBgTlVMTGAgcmV0dXJuIHNpZ25hbHMgZmFpbHVyZSB0byB0aGUgY2FsbGluZyBmdW5jdGlvbi4gVGhpcyBpcyBzdGFuZGFyZCBlcnJvciBwcm9wYWdhdGlvbiB0ZWNobmlxdWUgYW5kIG1ha2VzIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZyB1cCBvciB0YWtpbmcgYWx0ZXJuYXRpdmUgYWN0aW9uLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UsIHNvIEknbGwgbmV4dCBjaGVjayB3aGVyZSBgaG90YWRkX2luaXRfcGdkYXRgIGlzIGNhbGxlZC4gVW5kZXJzdGFuZGluZyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYW5kIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCBgTlVMTGAgcmV0dXJucyB3aWxsIGJlIHRoZSBuZXh0IHN0ZXAgaW4gZXZhbHVhdGluZyB0aGUgb3ZlcmFsbCBpbXBhY3Qgb2YgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY4OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA3OjE0OjIwLjI3MzA4Nzk2M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODgzOTQwMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhvdGFkZF9pbml0X3BnZGF0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21lbW9yeV9ob3RwbHVnLmM9MTEzNz1pbnQgb25saW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjUyLS8qIHdlIGFyZSBPSyBjYWxsaW5nIF9fbWVtaW5pdCBzdHVmZiBoZXJlIC0gd2UgaGF2ZSBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyNTM6c3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyNTQte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0xMjg5PXN0YXRpYyBpbnQgX190cnlfb25saW5lX25vZGUoaW50IG5pZCwgYm9vbCBzZXRfbm9kZV9vbmxpbmUpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyOTYtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjk3OlxcdHBnZGF0ID0gaG90YWRkX2luaXRfcGdkYXQobmlkKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyOTgtXFx0aWYgKCFwZ2RhdCkge1xcbi0tXFxubW0vbW1faW5pdC5jPTE4MTc9c3RhdGljIHZvaWQgX19pbml0IGZyZWVfYXJlYV9pbml0KHZvaWQpXFxuLS1cXG5tbS9tbV9pbml0LmMtMTkxMS1cXHRcXHQgKm1lbW9yeS1sZXNzIG5vZGUuIFRoZSBwZ2RhdCB3aWxsIGdldCBmdWxseSBpbml0aWFsaXplZCBieVxcbm1tL21tX2luaXQuYzoxOTEyOlxcdFxcdCAqaG90YWRkX2luaXRfcGdkYXQoKSB3aGVuIG1lbW9yeSBpcyBob3RwbHVnZ2VkIGludG8gdGhpcyBub2RlLlxcbm1tL21tX2luaXQuYy0xOTEzLVxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNzoxNDoyMi4xNTcwMzMxMzNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI4NjkxNzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIE5vZGUgT25saW5lIExvZ2ljIGFuZCBQb3RlbnRpYWwgYHBnZGF0YCBJbml0aWFsaXphdGlvbiBGYWlsdXJlKipcblxuUmlnaHQsIHNvIGBob3RhZGRfaW5pdF9wZ2RhdGAgaXMgaW52b2tlZCBmcm9tIHdpdGhpbiBgX190cnlfb25saW5lX25vZGVgLiBUaGF0J3MgdGhlIHNldHVwLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IGlmIGBob3RhZGRfaW5pdF9wZ2RhdGAgKnJldHVybnMqIGEgYE5VTExgIHZhbHVlLCBzaWduYWxpbmcgYSBmYWlsdXJlIHRvIGluaXRpYWxpemUgdGhlIHBhZ2UgZGF0YSBzdHJ1Y3R1cmUgKGBwZ2RhdGApLCBgX190cnlfb25saW5lX25vZGVgIGlzIGRlc2lnbmVkIHRvIGhhbmRsZSB0aGF0IGNvbmRpdGlvbi4gVGhlIGltcGxpY2F0aW9uIGJlaW5nIHRoYXQgdGhlIG9ubGluZSBhdHRlbXB0IGNhbiByZWNvdmVyIGdyYWNlZnVsbHksIHBlcmhhcHMsIG9yIGF0IGxlYXN0IGRlYWwgd2l0aCB0aGUgZXJyb3IgaW4gc29tZSBkZWZpbmVkIG1hbm5lci5cblxuTXkgcHJpbWFyeSBmb2N1cyBub3cgbmVlZHMgdG8gc2hpZnQgdG8gdW5kZXJzdGFuZGluZyBleGFjdGx5ICpob3cqIGBfX3RyeV9vbmxpbmVfbm9kZWAgcmVzcG9uZHMgdG8gdGhpcyBgTlVMTGAgcmV0dXJuLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgY29udHJvbCBmbG93IHdpdGhpbiBgX190cnlfb25saW5lX25vZGVgIGl0c2VsZiB0byBncmFzcCB0aGUgY29uc2VxdWVuY2VzIGFuZCB3aGF0IGxvZ2ljIG9yIGFjdGlvbiB0YWtlcyBwbGFjZSBpbiBzdWNoIGEgZmFpbHVyZSBzY2VuYXJpby4gV2hhdCBhcmUgdGhlIGZhbGxiYWNrIG1lY2hhbmlzbXMsIGVycm9yIHJlcG9ydGluZywgb3IgcmV0cnkgYXR0ZW1wdHMgZW1wbG95ZWQ/IFRoZSBudWFuY2VzIG9mIHRoYXQgcmVzcG9uc2UgYXJlIGNyaXRpY2FsIHRvIHRoZSBvdmVyYWxsIHJlbGlhYmlsaXR5IG9mIHRoZSBob3QtYWRkIHByb2Nlc3MsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZGlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQ1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MjUuODg1NzI2NzE0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjMyNjQzOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX190cnlfb25saW5lX25vZGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvbW0vbnVtYS5jPTI2ND12b2lkIF9faW5pdCBpbml0X2dpX25vZGVzKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjcxLVxcdCAqICBjcHVfdXBcXG5hcmNoL3g4Ni9tbS9udW1hLmM6MjcyOlxcdCAqICAgX190cnlfb25saW5lX25vZGVcXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjczLVxcdCAqICAgIHJlZ2lzdGVyX25vZGVcXG4tLVxcbmFyY2gveDg2L21tL251bWEuYz0yOTY9dm9pZCBfX2luaXQgaW5pdF9jcHVfdG9fbm9kZSh2b2lkKVxcbi0tXFxuYXJjaC94ODYvbW0vbnVtYS5jLTMxMi1cXHRcXHQgKiAgY3B1X3VwXFxuYXJjaC94ODYvbW0vbnVtYS5jOjMxMzpcXHRcXHQgKiAgIF9fdHJ5X29ubGluZV9ub2RlXFxuYXJjaC94ODYvbW0vbnVtYS5jLTMxNC1cXHRcXHQgKiAgICByZWdpc3Rlcl9ub2RlXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTEyNTM9c3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI3OC0vKlxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI3OTogKiBfX3RyeV9vbmxpbmVfbm9kZSAtIG9ubGluZSBhIG5vZGUgaWYgb2ZmbGluZWRcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyODAtICogQG5pZDogdGhlIG5vZGUgSURcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI4OC0gKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyODk6c3RhdGljIGludCBfX3RyeV9vbmxpbmVfbm9kZShpbnQgbmlkLCBib29sIHNldF9ub2RlX29ubGluZSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyOTAte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0xMzE2PWludCB0cnlfb25saW5lX25vZGUoaW50IG5pZClcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMyMC1cXHRtZW1faG90cGx1Z19iZWdpbigpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTMyMTpcXHRyZXQgPSAgX190cnlfb25saW5lX25vZGUobmlkLCB0cnVlKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEzMjItXFx0bWVtX2hvdHBsdWdfZG9uZSgpO1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0xNDk1PWludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzLCBtaHBfdCBtaHBfZmxhZ3MpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1MzItXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNTMzOlxcdHJldCA9IF9fdHJ5X29ubGluZV9ub2RlKG5pZCwgZmFsc2UpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzNC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MjcuODQ4OTk2NjYzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwMDUyMjkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBFcnJvciBIYW5kbGluZyBvZiBgX190cnlfb25saW5lX25vZGVgKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIGluIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9fdHJ5X29ubGluZV9ub2RlYC4gSSBrbm93IGl0J3MgYW4gaW50ZWdlciwgd2hpY2ggbGlrZWx5IHJlcHJlc2VudHMgc29tZSBzb3J0IG9mIHN0YXR1cyBvciBlcnJvciBjb2RlLiBUaGUgcmVhbCBjcnV4IG9mIHRoaXMgaW52ZXN0aWdhdGlvbiBzZWVtcyB0byBiZSB3aGF0IGhhcHBlbnMgd2hlbiBgaG90YWRkX2luaXRfcGdkYXRgIGtpY2tzIGJhY2sgYSBgTlVMTGAgcG9pbnRlci4gVGhhdCdzIHRoZSBjcml0aWNhbCBicmFuY2hpbmcgY29uZGl0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJJ20gYXNzdW1pbmcgdGhhdCBgTlVMTGAgc2lnbmlmaWVzIGEgZmFpbHVyZSBpbiB0aGUgcGFnZSBkYXRhIGluaXRpYWxpemF0aW9uLiBOb3cgSSB3YW50IHRvIHNlZSBob3cgYF9fdHJ5X29ubGluZV9ub2RlYCBncmFjZWZ1bGx5IChvciBub3Qgc28gZ3JhY2VmdWxseSkgaGFuZGxlcyB0aGF0IHNwZWNpZmljIGZhaWx1cmUgc2NlbmFyaW8uIE15IGZvY3VzIGhlcmUgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aDsgSSBuZWVkIHRvIGtub3cgaWYgd2UncmUgcHJvcGVybHkgZGV0ZWN0aW5nLCByZXBvcnRpbmcsIGFuZCwgbW9zdCBpbXBvcnRhbnRseSwgcmVjb3ZlcmluZyBmcm9tIG9yIG1pdGlnYXRpbmcgdGhhdCBwYXJ0aWN1bGFyIGZhaWx1cmUgcG9pbnQgZHVyaW5nIG5vZGUgb25saW5lIG9wZXJhdGlvbnMuIEEgTlVMTCByZXR1cm4gZnJvbSBob3RhZGRfaW5pdF9wZ2RhdCBpcyBhbiBpbXBvcnRhbnQgZmFpbHVyZSBwb2ludCBJIG5lZWQgdG8gZGVlcGx5IHVuZGVyc3RhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNzcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNzoxNDozMS4yNDk1MjMzMTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vbWVtb3J5X2hvdHBsdWcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjg5LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjg5OlxcdHN0YXRpYyBpbnQgX190cnlfb25saW5lX25vZGUoaW50IG5pZCwgYm9vbCBzZXRfbm9kZV9vbmxpbmUpXFxuMTI5MDpcXHR7XFxuMTI5MTpcXHRcXHRwZ19kYXRhX3QgKnBnZGF0O1xcbjEyOTI6XFx0XFx0aW50IHJldCA9IDE7XFxuMTI5MzpcXHRcXG4xMjk0OlxcdFxcdGlmIChub2RlX29ubGluZShuaWQpKVxcbjEyOTU6XFx0XFx0XFx0cmV0dXJuIDA7XFxuMTI5NjpcXHRcXG4xMjk3OlxcdFxcdHBnZGF0ID0gaG90YWRkX2luaXRfcGdkYXQobmlkKTtcXG4xMjk4OlxcdFxcdGlmICghcGdkYXQpIHtcXG4xMjk5OlxcdFxcdFxcdHByX2VycihcXFwiQ2Fubm90IG9ubGluZSBub2RlICVkIGR1ZSB0byBOVUxMIHBnZGF0XFxcXG5cXFwiLCBuaWQpO1xcbjEzMDA6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4xMzAxOlxcdFxcdFxcdGdvdG8gb3V0O1xcbjEzMDI6XFx0XFx0fVxcbjEzMDM6XFx0XFxuMTMwNDpcXHRcXHRpZiAoc2V0X25vZGVfb25saW5lKSB7XFxuMTMwNTpcXHRcXHRcXHRub2RlX3NldF9vbmxpbmUobmlkKTtcXG4xMzA2OlxcdFxcdFxcdHJldCA9IHJlZ2lzdGVyX25vZGUobmlkKTtcXG4xMzA3OlxcdFxcdFxcdEJVR19PTihyZXQpO1xcbjEzMDg6XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNzoxNDozMS4yNDk2ODE5MTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjYxNjQ4OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQncyBkZWFsaW5nIHdpdGggZXJyb3IgaGFuZGxpbmcgcmVsYXRlZCB0byBgYWxsb2NfcGVyY3B1YCBmYWlsaW5nIHdpdGhpbiB0aGUgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaWYgYGFsbG9jX3BlcmNwdWAgcmV0dXJucyBgLUVOT01FTWAsIHRoaXMgcGF0Y2ggZW5zdXJlcyB0aGF0IGVycm9yIHByb3BhZ2F0ZXMgY29ycmVjdGx5LCBhbGwgdGhlIHdheSB1cCB0aHJvdWdoIGBob3RhZGRfaW5pdF9wZ2RhdGAgcmV0dXJuaW5nIGBOVUxMYCwgdGhlbiBgX190cnlfb25saW5lX25vZGVgIGFsc28gcmV0dXJuaW5nIGAtRU5PTUVNYC4gVWx0aW1hdGVseSwgdGhpcyBwcmV2ZW50cyBhbnkgcG90ZW50aWFsIGlzc3VlcywgbGlrZSBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgaWYgd2UncmUgb3V0IG9mIG1lbW9yeSBkdXJpbmcgYSBtZW1vcnkgaG90cGx1Zy5cblxuVGhlIHJlYWwgcXVlc3Rpb24gSSBuZWVkIHRvIGFzayBteXNlbGYgaXMgd2hldGhlciB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEl0J3MgYSBmYWlybHkgc2ltcGxlIGFkZGl0aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZy4gSG93ZXZlciwgYSBmYWlsdXJlIGluIGBhbGxvY19wZXJjcHVgIGltcGxpZXMgYW4gb3V0LW9mLW1lbW9yeSBjb25kaXRpb24sIGFuZCBtZW1vcnkgaG90cGx1ZyBpcywgYnkgZGVmaW5pdGlvbiwgYSBmdW5jdGlvbmFsIGFyZWEuIEdpdmVuIHRoYXQsIHllcywgSSB0aGluayBpdCdzIHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaG90cGx1ZyBpc3N1ZXMgYXJlIGNyaXRpY2FsLlxuXG5Ob3csIGxldCdzIGtlZXAgaW4gbWluZCB0aGUgY29yZSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLCBgaG90YWRkX2luaXRfcGdkYXRgLCBgX190cnlfb25saW5lX25vZGVgLCBgdHJ5X29ubGluZV9ub2RlYCwgYW5kIGBhZGRfbWVtb3J5X3Jlc291cmNlYC4gVGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMgaGVyZS4gTGV0J3MgbWFrZSBzdXJlIHRoZSBgTUVNT1JZX0hPVFBMVUdgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQg4oCTIHRoYXQncyB0aGUga2V5IHRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgYWN0aXZlIGZvciBhbGwgb2YgdGhpcyB0byB0YWtlIHBsYWNlLiBJJ2xsIGRvdWJsZS1jaGVjayB0aGF0IHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBpcyBldmVuIHJlbGV2YW50IGluIHRoZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTU4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MzYuNTExMzMzMzQ5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDUzMjE1NzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRU1PUllfSE9UUExVR1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTUxOT1jb25maWcgQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUdcXG4tLVxcbm1tL0tjb25maWctNTIyLSMgZXZlbnR1YWxseSwgd2UgY2FuIGhhdmUgdGhpcyBvcHRpb24ganVzdCAnc2VsZWN0IFNQQVJTRU1FTSdcXG5tbS9LY29uZmlnOjUyMzptZW51Y29uZmlnIE1FTU9SWV9IT1RQTFVHXFxubW0vS2NvbmZpZy01MjQtXFx0Ym9vbCBcXFwiTWVtb3J5IGhvdHBsdWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA3OjE0OjM4LjU2NDU1NTgzNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzU5NTEyNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWVtb3J5IEhvdHBsdWcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYE1FTU9SWV9IT1RQTFVHYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBrZXkgY29uZmlndXJhdGlvbnMgd2Ugc2hvdWxkIGJlIGF3YXJlIG9mLiBUaGUgcGF0Y2ggaXMgZGVmaW5pdGVseSBtb2RpZnlpbmcgYG1tL21tX2luaXQuY2AsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGAjaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHYCBibG9jay5cblxuTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGltcG9ydGFudCBzeW1ib2xzOiBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCwgYGhvdGFkZF9pbml0X3BnZGF0YCwgYW5kIGBfX3RyeV9vbmxpbmVfbm9kZWAuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHJlYWNoYWJsZSwgYW5kIGl0IHNlZW1zIHRoZSBhbnN3ZXIgaXMgYSBjbGVhciB5ZXMg4oCTIHRoZXkgYXJlIGFsbCBwYXJ0IG9mIHRoZSBtZW1vcnkgaG90cGx1ZyBwYXRoLiBHaXZlbiB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGZ1enppbmcgdGhpcyBhcmVhIGxvb2tzIHByb21pc2luZy5cblxuV2FpdCBhIHNlY29uZOKApiB0aGlua2luZyBhYm91dCBpdCBtb3JlLCBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCBpcyAqb25seSogY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zLiBUaGUgbmV4dCBxdWVzdGlvbiwgYW5kIGEgY3JpdGljYWwgb25lIGZvciBleHBsb2l0YWJpbGl0eSwgaXMgd2hldGhlciBtZW1vcnkgaG90cGx1ZyBpcyBldmVuICpyZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSG1tLCB0aGlua2luZyBhYm91dCBpdCwgdGhhdCdzIHBvc3NpYmxlIC0gQUNQSSBtZW1vcnkgaG90cGx1ZyBvciB2aXJ0aW8tbWVtIGNvbWUgdG8gbWluZC4gU28sIHRoZSBhdHRhY2sgc3VyZmFjZSBpcywgaW4gZmFjdCwgdGhlcmUuIE5vdywgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgY2FsbCBpbiBgbW0vbW1faW5pdC5jYCBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6NDMuMzI0MDcwNDY2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9tbV9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTUzNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTUzNTpcXHQgKlxcbjE1MzY6XFx0ICogTk9URTogdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBkdXJpbmcgbWVtb3J5IGhvdHBsdWdcXG4xNTM3OlxcdCAqL1xcbjE1Mzg6XFx0I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbjE1Mzk6XFx0aW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxcbjE1NDA6XFx0e1xcbjE1NDE6XFx0XFx0aW50IG5pZCA9IHBnZGF0LVxcdTAwM2Vub2RlX2lkO1xcbjE1NDI6XFx0XFx0ZW51bSB6b25lX3R5cGUgejtcXG4xNTQzOlxcdFxcdGludCBjcHU7XFxuMTU0NDpcXHRcXG4xNTQ1OlxcdFxcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcXG4xNTQ2OlxcdFxcbjE1NDc6XFx0XFx0aWYgKHBnZGF0LVxcdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcXHUwMDI2Ym9vdF9ub2Rlc3RhdHMpIHtcXG4xNTQ4OlxcdFxcdFxcdHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0IF9fcGVyY3B1ICpuZXc7XFxuMTU0OTpcXHRcXG4xNTUwOlxcdFxcdFxcdG5ldyA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7XFxuMTU1MTpcXHRcXHRcXHRpZiAoIW5ldylcXG4xNTUyOlxcdFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjE1NTM6XFx0XFx0XFx0cGdkYXQtXFx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID0gbmV3O1xcbjE1NTQ6XFx0XFx0fVxcbjE1NTU6XFx0XFxuMTU1NjpcXHRcXHQvKlxcbjE1NTc6XFx0XFx0ICogUmVzZXQgdGhlIG5yX3pvbmVzLCBvcmRlciBhbmQgaGlnaGVzdF96b25laWR4IGJlZm9yZSByZXVzZS5cXG4xNTU4OlxcdFxcdCAqIE5vdGUgdGhhdCBrc3dhcGQgd2lsbCBpbml0IGtzd2FwZF9oaWdoZXN0X3pvbmVpZHggcHJvcGVybHlcXG4xNTU5OlxcdFxcdCAqIHdoZW4gaXQgc3RhcnRzIGluIHRoZSBuZWFyIGZ1dHVyZS5cXG4xNTYwOlxcdFxcdCAqL1xcbjE1NjE6XFx0XFx0cGdkYXQtXFx1MDAzZW5yX3pvbmVzID0gMDtcXG4xNTYyOlxcdFxcdHBnZGF0LVxcdTAwM2Vrc3dhcGRfb3JkZXIgPSAwO1xcbjE1NjM6XFx0XFx0cGdkYXQtXFx1MDAzZWtzd2FwZF9oaWdoZXN0X3pvbmVpZHggPSAwO1xcbjE1NjQ6XFx0XFx0cGdkYXQtXFx1MDAzZW5vZGVfc3RhcnRfcGZuID0gMDtcXG4xNTY1OlxcdFxcdHBnZGF0LVxcdTAwM2Vub2RlX3ByZXNlbnRfcGFnZXMgPSAwO1xcbjE1NjY6XFx0XFxuMTU2NzpcXHRcXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xcbjE1Njg6XFx0XFx0XFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgKnA7XFxuMTU2OTpcXHRcXG4xNTcwOlxcdFxcdFxcdHAgPSBwZXJfY3B1X3B0cihwZ2RhdC1cXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMsIGNwdSk7XFxuMTU3MTpcXHRcXHRcXHRtZW1zZXQocCwgMCwgc2l6ZW9mKCpwKSk7XFxuMTU3MjpcXHRcXHR9XFxuMTU3MzpcXHRcXG4xNTc0OlxcdFxcdC8qXFxuMTU3NTpcXHRcXHQgKiBXaGVuIG1lbW9yeSBpcyBob3QtYWRkZWQsIGFsbCB0aGUgbWVtb3J5IGlzIGluIG9mZmxpbmUgc3RhdGUuIFNvXFxuMTU3NjpcXHRcXHQgKiBjbGVhciBhbGwgem9uZXMnIHByZXNlbnRfcGFnZXMgYW5kIG1hbmFnZWRfcGFnZXMgYmVjYXVzZSB0aGV5IHdpbGxcXG4xNTc3OlxcdFxcdCAqIGJlIHVwZGF0ZWQgaW4gb25saW5lX3BhZ2VzKCkgYW5kIG9mZmxpbmVfcGFnZXMoKS5cXG4xNTc4OlxcdFxcdCAqL1xcbjE1Nzk6XFx0XFx0Zm9yICh6ID0gMDsgeiBcXHUwMDNjIE1BWF9OUl9aT05FUzsgeisrKSB7XFxuMTU4MDpcXHRcXHRcXHRzdHJ1Y3Qgem9uZSAqem9uZSA9IHBnZGF0LVxcdTAwM2Vub2RlX3pvbmVzICsgejtcXG4xNTgxOlxcdFxcbjE1ODI6XFx0XFx0XFx0em9uZS1cXHUwMDNlcHJlc2VudF9wYWdlcyA9IDA7XFxuMTU4MzpcXHRcXHRcXHR6b25lX2luaXRfaW50ZXJuYWxzKHpvbmUsIHosIG5pZCwgMCk7XFxuMTU4NDpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA3OjE0OjQzLjMyNDIwMjE2NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEzMTA4MjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkVycm9yIEhhbmRsaW5nIGluIEhvdHBsdWcgTWVtb3J5IEluaXRpYWxpemF0aW9uKipcblxuUmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHByZXR0eSBjcml0aWNhbCBhc3BlY3Qgb2YgaG90cGx1ZyBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIHNwZWNpZmljYWxseSB0aGUgZXJyb3IgaGFuZGxpbmcgYXJvdW5kIGBhbGxvY19wZXJjcHVgIHdpdGhpbiBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYC4gVGhpcyBpcyBnb29kLCBiZWNhdXNlIGEgZmFpbHVyZSBpbiBgYWxsb2NfcGVyY3B1YCBpbiB0aGF0IGNvbnRleHQgaXMgYSByZWNpcGUgZm9yIGEgYmFkIGRheS4gV2UncmUgdGFsa2luZyBhYm91dCBwcmV2ZW50aW5nIGEgbmFzdHkgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBvciB3b3JzZSwgc29tZSBvdGhlciBpbnNpZGlvdXMgaXNzdWUgdGhhdCBtaWdodCBjcm9wIHVwIGxhdGVyLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBkZWZpbml0ZSBpbXByb3ZlbWVudC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgYWJzb2x1dGVseSAqZGVtYW5kcyogdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byBiZSBoYW1tZXJpbmcgdGhlIGVycm9yIHBhdGguIE1ha2Ugc3VyZSB0aGF0IGlmIGBhbGxvY19wZXJjcHVgIGJhaWxzLCB3ZSBkb24ndCBsZWFrIG1lbW9yeSwgd2UgZG9uJ3QgZW5kIHVwIHdpdGggc29tZSBjb3JydXB0IGRhdGEgc3RydWN0dXJlLCBhbmQgdGhlIHdob2xlIGhvdHBsdWcgcHJvY2VzcyBkb2Vzbid0IGp1c3QgZ28gc2lkZXdheXMuIEdvdHRhIGNoZWNrIGZvciBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgYW5kIGVuc3VyZSBhIGNsZWFuIHJlY292ZXJ5LlxuXG5UaGUga2V5IHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24sIG9mIGNvdXJzZSwgYXJlIGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgICh3aGVyZSB0aGUgY2hhbmdlIGlzKSwgYGhvdGFkZF9pbml0X3BnZGF0YCwgYW5kIGBfX3RyeV9vbmxpbmVfbm9kZWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBzdGVwcy4gVGhlIG9idmlvdXMgYXNzb2NpYXRlZCBjb25maWcgaXMgYE1FTU9SWV9IT1RQTFVHYCwgc2luY2UgdGhhdCdzIHRoZSB0cmlnZ2VyLlxuXG5JIHRoaW5rIHdlIG5lZWQgdG8gY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk4MiwiT3V0cHV0VG9rZW5zIjoxMzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNzoxNDo0OC42MzczMTI1NTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc3ODI1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdcIixcbiAgICBcImhvdGFkZF9pbml0X3BnZGF0XCIsXG4gICAgXCJfX3RyeV9vbmxpbmVfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRU1PUllfSE9UUExVR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z1wiLFxuICAgIFwiaG90YWRkX2luaXRfcGdkYXRcIixcbiAgICBcIl9fdHJ5X29ubGluZV9ub2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBlcnJvciBoYW5kbGluZyBmb3IgYWxsb2NfcGVyY3B1IGZhaWx1cmUgaW4gZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnIGR1cmluZyBtZW1vcnkgaG90cGx1Zy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGlzc3VlcyB3aGVuIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLiBGdXp6aW5nIGNhbiBoZWxwIGVuc3VyZSB0aGUgZXJyb3IgcGF0aCBpcyBoYW5kbGVkIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow6729w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 06:49:57 +0000 UTC FinishedAt: 2026-07-17 07:14:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e57d6e9e20b551e4910d7a6331a81775c3ad6693", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e57d6e9e20b551e4910d7a6331a81775c3ad6693", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG" ], "series_id": "592f505e-6e6c-48a1-9ea8-4e87ff340b6d" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "free_area_init_core_hotplug", "hotadd_init_pgdat", "__try_online_node" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA3OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnJiMzNDssCiAgICAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDssCiAgICAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNzoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJiZWVkMjA0Y2JhYTMxYjg2OWEzNTdlMjEwNmFlYjZhYWQyNGE2MDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAwNzoxNDoxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmggYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcbmluZGV4IDdjOWQ2NjcyOWM2MDk1Li5mMDRiOTE1Njc4ZGJkOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oXG5AQCAtMjg5LDcgJiM0MzsyODksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpIHt9XG4gLyogRGVmYXVsdCBvbmxpbmVfdHlwZSAoTU1PUF8qKSB3aGVuIG5ldyBtZW1vcnkgYmxvY2tzIGFyZSBhZGRlZC4gKi9cbiBleHRlcm4gZW51bSBtbW9wIG1ocF9nZXRfZGVmYXVsdF9vbmxpbmVfdHlwZSh2b2lkKTtcbiBleHRlcm4gdm9pZCBtaHBfc2V0X2RlZmF1bHRfb25saW5lX3R5cGUoZW51bSBtbW9wIG9ubGluZV90eXBlKTtcbi1leHRlcm4gdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7XG4mIzQzO2V4dGVybiBpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xuIGV4dGVybiBpbnQgX19hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2UsXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbmluZGV4IDdhYzE5ZmFiMjI2MzI0Li44YjEzNzMyOGRjZjAxNCAxMDA2NDRcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbkBAIC0xMjYzLDcgJiM0MzsxMjYzLDggQEAgc3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcbiBcdHBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7XG4gXG4gXHQvKiBpbml0IG5vZGUmIzM5O3Mgem9uZXMgYXMgZW1wdHkgem9uZXMsIHdlIGRvbiYjMzk7dCBoYXZlIGFueSBwcmVzZW50IHBhZ2VzLiovXG4tXHRmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpO1xuJiM0MztcdGlmIChmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHQvKlxuIFx0ICogVGhlIG5vZGUgd2UgYWxsb2NhdGVkIGhhcyBubyB6b25lIGZhbGxiYWNrIGxpc3RzLiBGb3IgYXZvaWRpbmdcbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcbmluZGV4IDBmNjQ5MDllOGQyMGUyLi4yNDc3MDk0N2E2NmY5OCAxMDA2NDRcbi0tLSBhL21tL21tX2luaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbW1faW5pdC5jXG5AQCAtMTUzNiw3ICYjNDM7MTUzNiw3IEBAIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcbiAgKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1Z1xuICAqL1xuICNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbi12b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuJiM0MztpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4ge1xuIFx0aW50IG5pZCA9IHBnZGF0LVx1MDAzZW5vZGVfaWQ7XG4gXHRlbnVtIHpvbmVfdHlwZSB6O1xuQEAgLTE1NDQsOCAmIzQzOzE1NDQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbiBcbiBcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcbiBcbi1cdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cylcbi1cdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xuJiM0MztcdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cykge1xuJiM0MztcdFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgX19wZXJjcHUgKm5ldztcbiYjNDM7XG4mIzQzO1x0XHRuZXcgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xuJiM0MztcdFx0aWYgKCFuZXcpXG4mIzQzO1x0XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBuZXc7XG4mIzQzO1x0fVxuIFxuIFx0LypcbiBcdCAqIFJlc2V0IHRoZSBucl96b25lcywgb3JkZXIgYW5kIGhpZ2hlc3Rfem9uZWlkeCBiZWZvcmUgcmV1c2UuXG5AQCAtMTU3Niw2ICYjNDM7MTU4Miw4IEBAIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4gXHRcdHpvbmUtXHUwMDNlcHJlc2VudF9wYWdlcyA9IDA7XG4gXHRcdHpvbmVfaW5pdF9pbnRlcm5hbHMoem9uZSwgeiwgbmlkLCAwKTtcbiBcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuICNlbmRpZlxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA3OjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnJiMzNDssCiAgICAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDssCiAgICAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmJlZWQyMDRjYmFhMzFiODY5YTM1N2UyMTA2YWViNmFhZDI0YTYwNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDE3IDA3OjE0OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oIGIvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oCmluZGV4IDdjOWQ2NjcyOWM2MDk1Li5mMDRiOTE1Njc4ZGJkOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaApAQCAtMjg5LDcgJiM0MzsyODksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpIHt9CiAvKiBEZWZhdWx0IG9ubGluZV90eXBlIChNTU9QXyopIHdoZW4gbmV3IG1lbW9yeSBibG9ja3MgYXJlIGFkZGVkLiAqLwogZXh0ZXJuIGVudW0gbW1vcCBtaHBfZ2V0X2RlZmF1bHRfb25saW5lX3R5cGUodm9pZCk7CiBleHRlcm4gdm9pZCBtaHBfc2V0X2RlZmF1bHRfb25saW5lX3R5cGUoZW51bSBtbW9wIG9ubGluZV90eXBlKTsKLWV4dGVybiB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTsKJiM0MztleHRlcm4gaW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTsKIGV4dGVybiBpbnQgX19hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7CiBleHRlcm4gaW50IGFkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKTsKIGV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlLApkaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmMKaW5kZXggN2FjMTlmYWIyMjYzMjQuLjhiMTM3MzI4ZGNmMDE0IDEwMDY0NAotLS0gYS9tbS9tZW1vcnlfaG90cGx1Zy5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21lbW9yeV9ob3RwbHVnLmMKQEAgLTEyNjMsNyAmIzQzOzEyNjMsOCBAQCBzdGF0aWMgcGdfZGF0YV90ICpob3RhZGRfaW5pdF9wZ2RhdChpbnQgbmlkKQogCXBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7CiAKIAkvKiBpbml0IG5vZGUmIzM5O3Mgem9uZXMgYXMgZW1wdHkgem9uZXMsIHdlIGRvbiYjMzk7dCBoYXZlIGFueSBwcmVzZW50IHBhZ2VzLiovCi0JZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KTsKJiM0MzsJaWYgKGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhwZ2RhdCkpCiYjNDM7CQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogVGhlIG5vZGUgd2UgYWxsb2NhdGVkIGhhcyBubyB6b25lIGZhbGxiYWNrIGxpc3RzLiBGb3IgYXZvaWRpbmcKZGlmZiAtLWdpdCBhL21tL21tX2luaXQuYyBiL21tL21tX2luaXQuYwppbmRleCAwZjY0OTA5ZThkMjBlMi4uMjQ3NzA5NDdhNjZmOTggMTAwNjQ0Ci0tLSBhL21tL21tX2luaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tbV9pbml0LmMKQEAgLTE1MzYsNyAmIzQzOzE1MzYsNyBAQCB2b2lkIF9faW5pdCBzZXRfcGFnZWJsb2NrX29yZGVyKHZvaWQpCiAgKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1ZwogICovCiAjaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHCi12b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KQomIzQzO2ludCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIHsKIAlpbnQgbmlkID0gcGdkYXQtJmd0O25vZGVfaWQ7CiAJZW51bSB6b25lX3R5cGUgejsKQEAgLTE1NDQsOCAmIzQzOzE1NDQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIAogCXBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTsKIAotCWlmIChwZ2RhdC0mZ3Q7cGVyX2NwdV9ub2Rlc3RhdHMgPT0gJmFtcDtib290X25vZGVzdGF0cykKLQkJcGdkYXQtJmd0O3Blcl9jcHVfbm9kZXN0YXRzID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTsKJiM0MzsJaWYgKHBnZGF0LSZndDtwZXJfY3B1X25vZGVzdGF0cyA9PSAmYW1wO2Jvb3Rfbm9kZXN0YXRzKSB7CiYjNDM7CQlzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCBfX3BlcmNwdSAqbmV3OwomIzQzOwomIzQzOwkJbmV3ID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTsKJiM0MzsJCWlmICghbmV3KQomIzQzOwkJCXJldHVybiAtRU5PTUVNOwomIzQzOwkJcGdkYXQtJmd0O3Blcl9jcHVfbm9kZXN0YXRzID0gbmV3OwomIzQzOwl9CiAKIAkvKgogCSAqIFJlc2V0IHRoZSBucl96b25lcywgb3JkZXIgYW5kIGhpZ2hlc3Rfem9uZWlkeCBiZWZvcmUgcmV1c2UuCkBAIC0xNTc2LDYgJiM0MzsxNTgyLDggQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIAkJem9uZS0mZ3Q7cHJlc2VudF9wYWdlcyA9IDA7CiAJCXpvbmVfaW5pdF9pbnRlcm5hbHMoem9uZSwgeiwgbmlkLCAwKTsKIAl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogI2VuZGlmCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY4OQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYC4gSW50ZXJlc3RpbmcuIFRoZXkmIzM5O3ZlIGNoYW5nZWQgdGhlIHJldHVybiB0eXBlIGZyb20gYHZvaWRgIHRvIGBpbnRgLiBTbWFydCBtb3ZlIOKAkyBub3cgd2UgY2FuIGFjdHVhbGx5IHNpZ25hbCBlcnJvcnMgaW5zdGVhZCBvZiBzaWxlbnRseSBmYWlsaW5nLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2hlY2sgZm9yIHRoZSBgYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KWAgY2FsbC4gSWYgdGhhdCBhbGxvY2F0aW9uIGJvbWJzIG91dCwgd2hpY2gsIGxldCYjMzk7cyBiZSBob25lc3QsIGNhbiBoYXBwZW4gaW4gYSB0aWdodCBzcG90LCBpdCByZXR1cm5zIGAtRU5PTUVNYC4gVGhhdCBtYWtlcyBzZW5zZTsgYSBjbGVhciBpbmRpY2F0b3Igb2YgbWVtb3J5IGV4aGF1c3Rpb24uCgpOb3csIGluIGBob3RhZGRfaW5pdF9wZ2RhdGAsIHRoZSBjb2RlIGNoZWNrcyB0aGUgcmV0dXJuIG9mIGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLiBJZiBpdCBkZXRlY3RzIHRoZSBlcnJvciwgaXQgcmV0dXJucyBgTlVMTGAuIFRoaXMgaXMgYSBjcnVjaWFsIGRlc2lnbiBkZWNpc2lvbjsgYSBgTlVMTGAgcmV0dXJuIHNpZ25hbHMgZmFpbHVyZSB0byB0aGUgY2FsbGluZyBmdW5jdGlvbi4gVGhpcyBpcyBzdGFuZGFyZCBlcnJvciBwcm9wYWdhdGlvbiB0ZWNobmlxdWUgYW5kIG1ha2VzIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZyB1cCBvciB0YWtpbmcgYWx0ZXJuYXRpdmUgYWN0aW9uLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLCBzbyBJJiMzOTtsbCBuZXh0IGNoZWNrIHdoZXJlIGBob3RhZGRfaW5pdF9wZ2RhdGAgaXMgY2FsbGVkLiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGBOVUxMYCByZXR1cm5zIHdpbGwgYmUgdGhlIG5leHQgc3RlcCBpbiBldmFsdWF0aW5nIHRoZSBvdmVyYWxsIGltcGFjdCBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA3OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbW9yeV9ob3RwbHVnLmM9MTEzNz1pbnQgb25saW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI1Mi0vKiB3ZSBhcmUgT0sgY2FsbGluZyBfX21lbWluaXQgc3R1ZmYgaGVyZSAtIHdlIGhhdmUgQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyNTM6c3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI1NC17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0xMjg5PXN0YXRpYyBpbnQgX190cnlfb25saW5lX25vZGUoaW50IG5pZCwgYm9vbCBzZXRfbm9kZV9vbmxpbmUpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjk2LVxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjk3Olx0cGdkYXQgPSBob3RhZGRfaW5pdF9wZ2RhdChuaWQpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjk4LVx0aWYgKCFwZ2RhdCkge1xuLS1cbm1tL21tX2luaXQuYz0xODE3PXN0YXRpYyB2b2lkIF9faW5pdCBmcmVlX2FyZWFfaW5pdCh2b2lkKVxuLS1cbm1tL21tX2luaXQuYy0xOTExLVx0XHQgKm1lbW9yeS1sZXNzIG5vZGUuIFRoZSBwZ2RhdCB3aWxsIGdldCBmdWxseSBpbml0aWFsaXplZCBieVxubW0vbW1faW5pdC5jOjE5MTI6XHRcdCAqaG90YWRkX2luaXRfcGdkYXQoKSB3aGVuIG1lbW9yeSBpcyBob3RwbHVnZ2VkIGludG8gdGhpcyBub2RlLlxubW0vbW1faW5pdC5jLTE5MTMtXHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA3OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NDUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIE5vZGUgT25saW5lIExvZ2ljIGFuZCBQb3RlbnRpYWwgYHBnZGF0YCBJbml0aWFsaXphdGlvbiBGYWlsdXJlKioKClJpZ2h0LCBzbyBgaG90YWRkX2luaXRfcGdkYXRgIGlzIGludm9rZWQgZnJvbSB3aXRoaW4gYF9fdHJ5X29ubGluZV9ub2RlYC4gVGhhdCYjMzk7cyB0aGUgc2V0dXAuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgaWYgYGhvdGFkZF9pbml0X3BnZGF0YCAqcmV0dXJucyogYSBgTlVMTGAgdmFsdWUsIHNpZ25hbGluZyBhIGZhaWx1cmUgdG8gaW5pdGlhbGl6ZSB0aGUgcGFnZSBkYXRhIHN0cnVjdHVyZSAoYHBnZGF0YCksIGBfX3RyeV9vbmxpbmVfbm9kZWAgaXMgZGVzaWduZWQgdG8gaGFuZGxlIHRoYXQgY29uZGl0aW9uLiBUaGUgaW1wbGljYXRpb24gYmVpbmcgdGhhdCB0aGUgb25saW5lIGF0dGVtcHQgY2FuIHJlY292ZXIgZ3JhY2VmdWxseSwgcGVyaGFwcywgb3IgYXQgbGVhc3QgZGVhbCB3aXRoIHRoZSBlcnJvciBpbiBzb21lIGRlZmluZWQgbWFubmVyLgoKTXkgcHJpbWFyeSBmb2N1cyBub3cgbmVlZHMgdG8gc2hpZnQgdG8gdW5kZXJzdGFuZGluZyBleGFjdGx5ICpob3cqIGBfX3RyeV9vbmxpbmVfbm9kZWAgcmVzcG9uZHMgdG8gdGhpcyBgTlVMTGAgcmV0dXJuLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgY29udHJvbCBmbG93IHdpdGhpbiBgX190cnlfb25saW5lX25vZGVgIGl0c2VsZiB0byBncmFzcCB0aGUgY29uc2VxdWVuY2VzIGFuZCB3aGF0IGxvZ2ljIG9yIGFjdGlvbiB0YWtlcyBwbGFjZSBpbiBzdWNoIGEgZmFpbHVyZSBzY2VuYXJpby4gV2hhdCBhcmUgdGhlIGZhbGxiYWNrIG1lY2hhbmlzbXMsIGVycm9yIHJlcG9ydGluZywgb3IgcmV0cnkgYXR0ZW1wdHMgZW1wbG95ZWQ/IFRoZSBudWFuY2VzIG9mIHRoYXQgcmVzcG9uc2UgYXJlIGNyaXRpY2FsIHRvIHRoZSBvdmVyYWxsIHJlbGlhYmlsaXR5IG9mIHRoZSBob3QtYWRkIHByb2Nlc3MsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGRpZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3RyeV9vbmxpbmVfbm9kZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9tbS9udW1hLmM9MjY0PXZvaWQgX19pbml0IGluaXRfZ2lfbm9kZXModm9pZClcbi0tXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjcxLVx0ICogIGNwdV91cFxuYXJjaC94ODYvbW0vbnVtYS5jOjI3MjpcdCAqICAgX190cnlfb25saW5lX25vZGVcbmFyY2gveDg2L21tL251bWEuYy0yNzMtXHQgKiAgICByZWdpc3Rlcl9ub2RlXG4tLVxuYXJjaC94ODYvbW0vbnVtYS5jPTI5Nj12b2lkIF9faW5pdCBpbml0X2NwdV90b19ub2RlKHZvaWQpXG4tLVxuYXJjaC94ODYvbW0vbnVtYS5jLTMxMi1cdFx0ICogIGNwdV91cFxuYXJjaC94ODYvbW0vbnVtYS5jOjMxMzpcdFx0ICogICBfX3RyeV9vbmxpbmVfbm9kZVxuYXJjaC94ODYvbW0vbnVtYS5jLTMxNC1cdFx0ICogICAgcmVnaXN0ZXJfbm9kZVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTI1Mz1zdGF0aWMgcGdfZGF0YV90ICpob3RhZGRfaW5pdF9wZ2RhdChpbnQgbmlkKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI3OC0vKlxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjc5OiAqIF9fdHJ5X29ubGluZV9ub2RlIC0gb25saW5lIGEgbm9kZSBpZiBvZmZsaW5lZFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjgwLSAqIEBuaWQ6IHRoZSBub2RlIElEXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjg4LSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjg5OnN0YXRpYyBpbnQgX190cnlfb25saW5lX25vZGUoaW50IG5pZCwgYm9vbCBzZXRfbm9kZV9vbmxpbmUpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyOTAte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTMxNj1pbnQgdHJ5X29ubGluZV9ub2RlKGludCBuaWQpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzIwLVx0bWVtX2hvdHBsdWdfYmVnaW4oKTtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTMyMTpcdHJldCA9ICBfX3RyeV9vbmxpbmVfbm9kZShuaWQsIHRydWUpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzIyLVx0bWVtX2hvdHBsdWdfZG9uZSgpO1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ5NT1pbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzMi1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTUzMzpcdHJldCA9IF9fdHJ5X29ubGluZV9ub2RlKG5pZCwgZmFsc2UpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNTM0LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzc3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgRXJyb3IgSGFuZGxpbmcgb2YgYF9fdHJ5X29ubGluZV9ub2RlYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIGluIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9fdHJ5X29ubGluZV9ub2RlYC4gSSBrbm93IGl0JiMzOTtzIGFuIGludGVnZXIsIHdoaWNoIGxpa2VseSByZXByZXNlbnRzIHNvbWUgc29ydCBvZiBzdGF0dXMgb3IgZXJyb3IgY29kZS4gVGhlIHJlYWwgY3J1eCBvZiB0aGlzIGludmVzdGlnYXRpb24gc2VlbXMgdG8gYmUgd2hhdCBoYXBwZW5zIHdoZW4gYGhvdGFkZF9pbml0X3BnZGF0YCBraWNrcyBiYWNrIGEgYE5VTExgIHBvaW50ZXIuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIGJyYW5jaGluZyBjb25kaXRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBgTlVMTGAgc2lnbmlmaWVzIGEgZmFpbHVyZSBpbiB0aGUgcGFnZSBkYXRhIGluaXRpYWxpemF0aW9uLiBOb3cgSSB3YW50IHRvIHNlZSBob3cgYF9fdHJ5X29ubGluZV9ub2RlYCBncmFjZWZ1bGx5IChvciBub3Qgc28gZ3JhY2VmdWxseSkgaGFuZGxlcyB0aGF0IHNwZWNpZmljIGZhaWx1cmUgc2NlbmFyaW8uIE15IGZvY3VzIGhlcmUgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aDsgSSBuZWVkIHRvIGtub3cgaWYgd2UmIzM5O3JlIHByb3Blcmx5IGRldGVjdGluZywgcmVwb3J0aW5nLCBhbmQsIG1vc3QgaW1wb3J0YW50bHksIHJlY292ZXJpbmcgZnJvbSBvciBtaXRpZ2F0aW5nIHRoYXQgcGFydGljdWxhciBmYWlsdXJlIHBvaW50IGR1cmluZyBub2RlIG9ubGluZSBvcGVyYXRpb25zLiBBIE5VTEwgcmV0dXJuIGZyb20gaG90YWRkX2luaXRfcGdkYXQgaXMgYW4gaW1wb3J0YW50IGZhaWx1cmUgcG9pbnQgSSBuZWVkIHRvIGRlZXBseSB1bmRlcnN0YW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA3OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vbWVtb3J5X2hvdHBsdWcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyODksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTI4OTpcdHN0YXRpYyBpbnQgX190cnlfb25saW5lX25vZGUoaW50IG5pZCwgYm9vbCBzZXRfbm9kZV9vbmxpbmUpXG4xMjkwOlx0e1xuMTI5MTpcdFx0cGdfZGF0YV90ICpwZ2RhdDtcbjEyOTI6XHRcdGludCByZXQgPSAxO1xuMTI5MzpcdFxuMTI5NDpcdFx0aWYgKG5vZGVfb25saW5lKG5pZCkpXG4xMjk1Olx0XHRcdHJldHVybiAwO1xuMTI5NjpcdFxuMTI5NzpcdFx0cGdkYXQgPSBob3RhZGRfaW5pdF9wZ2RhdChuaWQpO1xuMTI5ODpcdFx0aWYgKCFwZ2RhdCkge1xuMTI5OTpcdFx0XHRwcl9lcnIoXCYjMzQ7Q2Fubm90IG9ubGluZSBub2RlICVkIGR1ZSB0byBOVUxMIHBnZGF0XFxuXCYjMzQ7LCBuaWQpO1xuMTMwMDpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTMwMTpcdFx0XHRnb3RvIG91dDtcbjEzMDI6XHRcdH1cbjEzMDM6XHRcbjEzMDQ6XHRcdGlmIChzZXRfbm9kZV9vbmxpbmUpIHtcbjEzMDU6XHRcdFx0bm9kZV9zZXRfb25saW5lKG5pZCk7XG4xMzA2Olx0XHRcdHJldCA9IHJlZ2lzdGVyX25vZGUobmlkKTtcbjEzMDc6XHRcdFx0QlVHX09OKHJldCk7XG4xMzA4Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1OAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0JiMzOTtzIGRlYWxpbmcgd2l0aCBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGBhbGxvY19wZXJjcHVgIGZhaWxpbmcgd2l0aGluIHRoZSBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiBgYWxsb2NfcGVyY3B1YCByZXR1cm5zIGAtRU5PTUVNYCwgdGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQgZXJyb3IgcHJvcGFnYXRlcyBjb3JyZWN0bHksIGFsbCB0aGUgd2F5IHVwIHRocm91Z2ggYGhvdGFkZF9pbml0X3BnZGF0YCByZXR1cm5pbmcgYE5VTExgLCB0aGVuIGBfX3RyeV9vbmxpbmVfbm9kZWAgYWxzbyByZXR1cm5pbmcgYC1FTk9NRU1gLiBVbHRpbWF0ZWx5LCB0aGlzIHByZXZlbnRzIGFueSBwb3RlbnRpYWwgaXNzdWVzLCBsaWtlIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBpZiB3ZSYjMzk7cmUgb3V0IG9mIG1lbW9yeSBkdXJpbmcgYSBtZW1vcnkgaG90cGx1Zy4KClRoZSByZWFsIHF1ZXN0aW9uIEkgbmVlZCB0byBhc2sgbXlzZWxmIGlzIHdoZXRoZXIgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBJdCYjMzk7cyBhIGZhaXJseSBzaW1wbGUgYWRkaXRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nLiBIb3dldmVyLCBhIGZhaWx1cmUgaW4gYGFsbG9jX3BlcmNwdWAgaW1wbGllcyBhbiBvdXQtb2YtbWVtb3J5IGNvbmRpdGlvbiwgYW5kIG1lbW9yeSBob3RwbHVnIGlzLCBieSBkZWZpbml0aW9uLCBhIGZ1bmN0aW9uYWwgYXJlYS4gR2l2ZW4gdGhhdCwgeWVzLCBJIHRoaW5rIGl0JiMzOTtzIHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGhvdHBsdWcgaXNzdWVzIGFyZSBjcml0aWNhbC4KCk5vdywgbGV0JiMzOTtzIGtlZXAgaW4gbWluZCB0aGUgY29yZSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLCBgaG90YWRkX2luaXRfcGdkYXRgLCBgX190cnlfb25saW5lX25vZGVgLCBgdHJ5X29ubGluZV9ub2RlYCwgYW5kIGBhZGRfbWVtb3J5X3Jlc291cmNlYC4gVGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMgaGVyZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGUgYE1FTU9SWV9IT1RQTFVHYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkgdGhpbmcgdGhhdCBuZWVkcyB0byBiZSBhY3RpdmUgZm9yIGFsbCBvZiB0aGlzIHRvIHRha2UgcGxhY2UuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGF0IHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBpcyBldmVuIHJlbGV2YW50IGluIHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVNT1JZX0hPVFBMVUcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz01MTk9Y29uZmlnIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHXG4tLVxubW0vS2NvbmZpZy01MjItIyBldmVudHVhbGx5LCB3ZSBjYW4gaGF2ZSB0aGlzIG9wdGlvbiBqdXN0ICYjMzk7c2VsZWN0IFNQQVJTRU1FTSYjMzk7XG5tbS9LY29uZmlnOjUyMzptZW51Y29uZmlnIE1FTU9SWV9IT1RQTFVHXG5tbS9LY29uZmlnLTUyNC1cdGJvb2wgXCYjMzQ7TWVtb3J5IGhvdHBsdWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY2OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbW9yeSBIb3RwbHVnIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYE1FTU9SWV9IT1RQTFVHYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIga2V5IGNvbmZpZ3VyYXRpb25zIHdlIHNob3VsZCBiZSBhd2FyZSBvZi4gVGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgbW9kaWZ5aW5nIGBtbS9tbV9pbml0LmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgI2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR2AgYmxvY2suCgpNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgaW1wb3J0YW50IHN5bWJvbHM6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLCBgaG90YWRkX2luaXRfcGdkYXRgLCBhbmQgYF9fdHJ5X29ubGluZV9ub2RlYC4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgcmVhY2hhYmxlLCBhbmQgaXQgc2VlbXMgdGhlIGFuc3dlciBpcyBhIGNsZWFyIHllcyDigJMgdGhleSBhcmUgYWxsIHBhcnQgb2YgdGhlIG1lbW9yeSBob3RwbHVnIHBhdGguIEdpdmVuIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZnV6emluZyB0aGlzIGFyZWEgbG9va3MgcHJvbWlzaW5nLgoKV2FpdCBhIHNlY29uZOKApiB0aGlua2luZyBhYm91dCBpdCBtb3JlLCBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCBpcyAqb25seSogY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zLiBUaGUgbmV4dCBxdWVzdGlvbiwgYW5kIGEgY3JpdGljYWwgb25lIGZvciBleHBsb2l0YWJpbGl0eSwgaXMgd2hldGhlciBtZW1vcnkgaG90cGx1ZyBpcyBldmVuICpyZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSG1tLCB0aGlua2luZyBhYm91dCBpdCwgdGhhdCYjMzk7cyBwb3NzaWJsZSAtIEFDUEkgbWVtb3J5IGhvdHBsdWcgb3IgdmlydGlvLW1lbSBjb21lIHRvIG1pbmQuIFNvLCB0aGUgYXR0YWNrIHN1cmZhY2UgaXMsIGluIGZhY3QsIHRoZXJlLiBOb3csIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgIGNhbGwgaW4gYG1tL21tX2luaXQuY2AgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDc6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9tbV9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE1MzU6XHQgKlxuMTUzNjpcdCAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgZHVyaW5nIG1lbW9yeSBob3RwbHVnXG4xNTM3Olx0ICovXG4xNTM4Olx0I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuMTUzOTpcdGludCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbjE1NDA6XHR7XG4xNTQxOlx0XHRpbnQgbmlkID0gcGdkYXQtXHUwMDNlbm9kZV9pZDtcbjE1NDI6XHRcdGVudW0gem9uZV90eXBlIHo7XG4xNTQzOlx0XHRpbnQgY3B1O1xuMTU0NDpcdFxuMTU0NTpcdFx0cGdkYXRfaW5pdF9pbnRlcm5hbHMocGdkYXQpO1xuMTU0NjpcdFxuMTU0NzpcdFx0aWYgKHBnZGF0LVx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFx1MDAyNmJvb3Rfbm9kZXN0YXRzKSB7XG4xNTQ4Olx0XHRcdHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0IF9fcGVyY3B1ICpuZXc7XG4xNTQ5Olx0XG4xNTUwOlx0XHRcdG5ldyA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7XG4xNTUxOlx0XHRcdGlmICghbmV3KVxuMTU1MjpcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTU1MzpcdFx0XHRwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9IG5ldztcbjE1NTQ6XHRcdH1cbjE1NTU6XHRcbjE1NTY6XHRcdC8qXG4xNTU3Olx0XHQgKiBSZXNldCB0aGUgbnJfem9uZXMsIG9yZGVyIGFuZCBoaWdoZXN0X3pvbmVpZHggYmVmb3JlIHJldXNlLlxuMTU1ODpcdFx0ICogTm90ZSB0aGF0IGtzd2FwZCB3aWxsIGluaXQga3N3YXBkX2hpZ2hlc3Rfem9uZWlkeCBwcm9wZXJseVxuMTU1OTpcdFx0ICogd2hlbiBpdCBzdGFydHMgaW4gdGhlIG5lYXIgZnV0dXJlLlxuMTU2MDpcdFx0ICovXG4xNTYxOlx0XHRwZ2RhdC1cdTAwM2Vucl96b25lcyA9IDA7XG4xNTYyOlx0XHRwZ2RhdC1cdTAwM2Vrc3dhcGRfb3JkZXIgPSAwO1xuMTU2MzpcdFx0cGdkYXQtXHUwMDNla3N3YXBkX2hpZ2hlc3Rfem9uZWlkeCA9IDA7XG4xNTY0Olx0XHRwZ2RhdC1cdTAwM2Vub2RlX3N0YXJ0X3BmbiA9IDA7XG4xNTY1Olx0XHRwZ2RhdC1cdTAwM2Vub2RlX3ByZXNlbnRfcGFnZXMgPSAwO1xuMTU2NjpcdFxuMTU2NzpcdFx0Zm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHtcbjE1Njg6XHRcdFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgKnA7XG4xNTY5Olx0XG4xNTcwOlx0XHRcdHAgPSBwZXJfY3B1X3B0cihwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cywgY3B1KTtcbjE1NzE6XHRcdFx0bWVtc2V0KHAsIDAsIHNpemVvZigqcCkpO1xuMTU3MjpcdFx0fVxuMTU3MzpcdFxuMTU3NDpcdFx0LypcbjE1NzU6XHRcdCAqIFdoZW4gbWVtb3J5IGlzIGhvdC1hZGRlZCwgYWxsIHRoZSBtZW1vcnkgaXMgaW4gb2ZmbGluZSBzdGF0ZS4gU29cbjE1NzY6XHRcdCAqIGNsZWFyIGFsbCB6b25lcyYjMzk7IHByZXNlbnRfcGFnZXMgYW5kIG1hbmFnZWRfcGFnZXMgYmVjYXVzZSB0aGV5IHdpbGxcbjE1Nzc6XHRcdCAqIGJlIHVwZGF0ZWQgaW4gb25saW5lX3BhZ2VzKCkgYW5kIG9mZmxpbmVfcGFnZXMoKS5cbjE1Nzg6XHRcdCAqL1xuMTU3OTpcdFx0Zm9yICh6ID0gMDsgeiBcdTAwM2MgTUFYX05SX1pPTkVTOyB6JiM0MzsmIzQzOykge1xuMTU4MDpcdFx0XHRzdHJ1Y3Qgem9uZSAqem9uZSA9IHBnZGF0LVx1MDAzZW5vZGVfem9uZXMgJiM0MzsgejtcbjE1ODE6XHRcbjE1ODI6XHRcdFx0em9uZS1cdTAwM2VwcmVzZW50X3BhZ2VzID0gMDtcbjE1ODM6XHRcdFx0em9uZV9pbml0X2ludGVybmFscyh6b25lLCB6LCBuaWQsIDApO1xuMTU4NDpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTgyCgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkVycm9yIEhhbmRsaW5nIGluIEhvdHBsdWcgTWVtb3J5IEluaXRpYWxpemF0aW9uKioKClJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwcmV0dHkgY3JpdGljYWwgYXNwZWN0IG9mIGhvdHBsdWcgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGVycm9yIGhhbmRsaW5nIGFyb3VuZCBgYWxsb2NfcGVyY3B1YCB3aXRoaW4gYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AuIFRoaXMgaXMgZ29vZCwgYmVjYXVzZSBhIGZhaWx1cmUgaW4gYGFsbG9jX3BlcmNwdWAgaW4gdGhhdCBjb250ZXh0IGlzIGEgcmVjaXBlIGZvciBhIGJhZCBkYXkuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHByZXZlbnRpbmcgYSBuYXN0eSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UsIG9yIHdvcnNlLCBzb21lIG90aGVyIGluc2lkaW91cyBpc3N1ZSB0aGF0IG1pZ2h0IGNyb3AgdXAgbGF0ZXIuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGRlZmluaXRlIGltcHJvdmVtZW50LgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgYWJzb2x1dGVseSAqZGVtYW5kcyogdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byBiZSBoYW1tZXJpbmcgdGhlIGVycm9yIHBhdGguIE1ha2Ugc3VyZSB0aGF0IGlmIGBhbGxvY19wZXJjcHVgIGJhaWxzLCB3ZSBkb24mIzM5O3QgbGVhayBtZW1vcnksIHdlIGRvbiYjMzk7dCBlbmQgdXAgd2l0aCBzb21lIGNvcnJ1cHQgZGF0YSBzdHJ1Y3R1cmUsIGFuZCB0aGUgd2hvbGUgaG90cGx1ZyBwcm9jZXNzIGRvZXNuJiMzOTt0IGp1c3QgZ28gc2lkZXdheXMuIEdvdHRhIGNoZWNrIGZvciBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgYW5kIGVuc3VyZSBhIGNsZWFuIHJlY292ZXJ5LgoKVGhlIGtleSBzeW1ib2xzIHRvIGtlZXAgYW4gZXllIG9uLCBvZiBjb3Vyc2UsIGFyZSBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCAod2hlcmUgdGhlIGNoYW5nZSBpcyksIGBob3RhZGRfaW5pdF9wZ2RhdGAsIGFuZCBgX190cnlfb25saW5lX25vZGVgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgY3JpdGljYWwgaW5pdGlhbGl6YXRpb24gc3RlcHMuIFRoZSBvYnZpb3VzIGFzc29jaWF0ZWQgY29uZmlnIGlzIGBNRU1PUllfSE9UUExVR2AsIHNpbmNlIHRoYXQmIzM5O3MgdGhlIHRyaWdnZXIuCgpJIHRoaW5rIHdlIG5lZWQgdG8gY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDc6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnJiMzNDssCiAgICAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDssCiAgICAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVNT1JZX0hPVFBMVUcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcmIzM0OywKICAgICYjMzQ7aG90YWRkX2luaXRfcGdkYXQmIzM0OywKICAgICYjMzQ7X190cnlfb25saW5lX25vZGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBlcnJvciBoYW5kbGluZyBmb3IgYWxsb2NfcGVyY3B1IGZhaWx1cmUgaW4gZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnIGR1cmluZyBtZW1vcnkgaG90cGx1Zy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGlzc3VlcyB3aGVuIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLiBGdXp6aW5nIGNhbiBoZWxwIGVuc3VyZSB0aGUgZXJyb3IgcGF0aCBpcyBoYW5kbGVkIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MTUuNTU3MDEwMzYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMxNTgwOTI4NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdcIixcbiAgICBcImhvdGFkZF9pbml0X3BnZGF0XCIsXG4gICAgXCJfX3RyeV9vbmxpbmVfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MTUuNTU3MDE1MDgyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTA3OTc3MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiYmVlZDIwNGNiYWEzMWI4NjlhMzU3ZTIxMDZhZWI2YWFkMjRhNjA2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDE3IDA3OjE0OjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCBiL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxcbmluZGV4IDdjOWQ2NjcyOWM2MDk1Li5mMDRiOTE1Njc4ZGJkOSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcXG5AQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge31cXG4gLyogRGVmYXVsdCBvbmxpbmVfdHlwZSAoTU1PUF8qKSB3aGVuIG5ldyBtZW1vcnkgYmxvY2tzIGFyZSBhZGRlZC4gKi9cXG4gZXh0ZXJuIGVudW0gbW1vcCBtaHBfZ2V0X2RlZmF1bHRfb25saW5lX3R5cGUodm9pZCk7XFxuIGV4dGVybiB2b2lkIG1ocF9zZXRfZGVmYXVsdF9vbmxpbmVfdHlwZShlbnVtIG1tb3Agb25saW5lX3R5cGUpO1xcbi1leHRlcm4gdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7XFxuK2V4dGVybiBpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xcbiBleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xcbiBleHRlcm4gaW50IGFkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKTtcXG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2UsXFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeV9ob3RwbHVnLmMgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXFxuaW5kZXggN2FjMTlmYWIyMjYzMjQuLjhiMTM3MzI4ZGNmMDE0IDEwMDY0NFxcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcXG4rKysgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXFxuQEAgLTEyNjMsNyArMTI2Myw4IEBAIHN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXFxuIFxcdHBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7XFxuIFxcbiBcXHQvKiBpbml0IG5vZGUncyB6b25lcyBhcyBlbXB0eSB6b25lcywgd2UgZG9uJ3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qL1xcbi1cXHRmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpO1xcbitcXHRpZiAoZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBUaGUgbm9kZSB3ZSBhbGxvY2F0ZWQgaGFzIG5vIHpvbmUgZmFsbGJhY2sgbGlzdHMuIEZvciBhdm9pZGluZ1xcbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcXG5pbmRleCAwZjY0OTA5ZThkMjBlMi4uMjQ3NzA5NDdhNjZmOTggMTAwNjQ0XFxuLS0tIGEvbW0vbW1faW5pdC5jXFxuKysrIGIvbW0vbW1faW5pdC5jXFxuQEAgLTE1MzYsNyArMTUzNiw3IEBAIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcXG4gICogTk9URTogdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBkdXJpbmcgbWVtb3J5IGhvdHBsdWdcXG4gICovXFxuICNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG4tdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcXG4raW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxcbiB7XFxuIFxcdGludCBuaWQgPSBwZ2RhdC1cXHUwMDNlbm9kZV9pZDtcXG4gXFx0ZW51bSB6b25lX3R5cGUgejtcXG5AQCAtMTU0NCw4ICsxNTQ0LDE0IEBAIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXFxuIFxcbiBcXHRwZ2RhdF9pbml0X2ludGVybmFscyhwZ2RhdCk7XFxuIFxcbi1cXHRpZiAocGdkYXQtXFx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFxcdTAwMjZib290X25vZGVzdGF0cylcXG4tXFx0XFx0cGdkYXQtXFx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTtcXG4rXFx0aWYgKHBnZGF0LVxcdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcXHUwMDI2Ym9vdF9ub2Rlc3RhdHMpIHtcXG4rXFx0XFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgX19wZXJjcHUgKm5ldztcXG4rXFxuK1xcdFxcdG5ldyA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7XFxuK1xcdFxcdGlmICghbmV3KVxcbitcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0XFx0cGdkYXQtXFx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID0gbmV3O1xcbitcXHR9XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBSZXNldCB0aGUgbnJfem9uZXMsIG9yZGVyIGFuZCBoaWdoZXN0X3pvbmVpZHggYmVmb3JlIHJldXNlLlxcbkBAIC0xNTc2LDYgKzE1ODIsOCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxcbiBcXHRcXHR6b25lLVxcdTAwM2VwcmVzZW50X3BhZ2VzID0gMDtcXG4gXFx0XFx0em9uZV9pbml0X2ludGVybmFscyh6b25lLCB6LCBuaWQsIDApO1xcbiBcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiAjZW5kaWZcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA3OjE0OjE1Ljk2ODQ4Mjg2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3NDY2MTE4MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdcIixcbiAgICBcImhvdGFkZF9pbml0X3BnZGF0XCIsXG4gICAgXCJfX3RyeV9vbmxpbmVfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYmVlZDIwNGNiYWEzMWI4NjlhMzU3ZTIxMDZhZWI2YWFkMjRhNjA2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDc6MTQ6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmggYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcbmluZGV4IDdjOWQ2NjcyOWM2MDk1Li5mMDRiOTE1Njc4ZGJkOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxuKysrIGIvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oXG5AQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge31cbiAvKiBEZWZhdWx0IG9ubGluZV90eXBlIChNTU9QXyopIHdoZW4gbmV3IG1lbW9yeSBibG9ja3MgYXJlIGFkZGVkLiAqL1xuIGV4dGVybiBlbnVtIG1tb3AgbWhwX2dldF9kZWZhdWx0X29ubGluZV90eXBlKHZvaWQpO1xuIGV4dGVybiB2b2lkIG1ocF9zZXRfZGVmYXVsdF9vbmxpbmVfdHlwZShlbnVtIG1tb3Agb25saW5lX3R5cGUpO1xuLWV4dGVybiB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTtcbitleHRlcm4gaW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTtcbiBleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xuIGV4dGVybiBpbnQgYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xuIGV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlLFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeV9ob3RwbHVnLmMgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXG5pbmRleCA3YWMxOWZhYjIyNjMyNC4uOGIxMzczMjhkY2YwMTQgMTAwNjQ0XG4tLS0gYS9tbS9tZW1vcnlfaG90cGx1Zy5jXG4rKysgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXG5AQCAtMTI2Myw3ICsxMjYzLDggQEAgc3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcbiBcdHBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7XG4gXG4gXHQvKiBpbml0IG5vZGUncyB6b25lcyBhcyBlbXB0eSB6b25lcywgd2UgZG9uJ3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qL1xuLVx0ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KTtcbitcdGlmIChmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdC8qXG4gXHQgKiBUaGUgbm9kZSB3ZSBhbGxvY2F0ZWQgaGFzIG5vIHpvbmUgZmFsbGJhY2sgbGlzdHMuIEZvciBhdm9pZGluZ1xuZGlmZiAtLWdpdCBhL21tL21tX2luaXQuYyBiL21tL21tX2luaXQuY1xuaW5kZXggMGY2NDkwOWU4ZDIwZTIuLjI0NzcwOTQ3YTY2Zjk4IDEwMDY0NFxuLS0tIGEvbW0vbW1faW5pdC5jXG4rKysgYi9tbS9tbV9pbml0LmNcbkBAIC0xNTM2LDcgKzE1MzYsNyBAQCB2b2lkIF9faW5pdCBzZXRfcGFnZWJsb2NrX29yZGVyKHZvaWQpXG4gICogTk9URTogdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBkdXJpbmcgbWVtb3J5IGhvdHBsdWdcbiAgKi9cbiAjaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG4tdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbitpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4ge1xuIFx0aW50IG5pZCA9IHBnZGF0LVx1MDAzZW5vZGVfaWQ7XG4gXHRlbnVtIHpvbmVfdHlwZSB6O1xuQEAgLTE1NDQsOCArMTU0NCwxNCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuIFxuIFx0cGdkYXRfaW5pdF9pbnRlcm5hbHMocGdkYXQpO1xuIFxuLVx0aWYgKHBnZGF0LVx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFx1MDAyNmJvb3Rfbm9kZXN0YXRzKVxuLVx0XHRwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7XG4rXHRpZiAocGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPT0gXHUwMDI2Ym9vdF9ub2Rlc3RhdHMpIHtcbitcdFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgX19wZXJjcHUgKm5ldztcbitcbitcdFx0bmV3ID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTtcbitcdFx0aWYgKCFuZXcpXG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHRcdHBnZGF0LVx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID0gbmV3O1xuK1x0fVxuIFxuIFx0LypcbiBcdCAqIFJlc2V0IHRoZSBucl96b25lcywgb3JkZXIgYW5kIGhpZ2hlc3Rfem9uZWlkeCBiZWZvcmUgcmV1c2UuXG5AQCAtMTU3Niw2ICsxNTgyLDggQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbiBcdFx0em9uZS1cdTAwM2VwcmVzZW50X3BhZ2VzID0gMDtcbiBcdFx0em9uZV9pbml0X2ludGVybmFscyh6b25lLCB6LCBuaWQsIDApO1xuIFx0fVxuK1xuK1x0cmV0dXJuIDA7XG4gfVxuICNlbmRpZlxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MTUuOTY4NTAyNTY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwNDU4MzUwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AuIEludGVyZXN0aW5nLiBUaGV5J3ZlIGNoYW5nZWQgdGhlIHJldHVybiB0eXBlIGZyb20gYHZvaWRgIHRvIGBpbnRgLiBTbWFydCBtb3ZlIOKAkyBub3cgd2UgY2FuIGFjdHVhbGx5IHNpZ25hbCBlcnJvcnMgaW5zdGVhZCBvZiBzaWxlbnRseSBmYWlsaW5nLiBJdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSBjaGVjayBmb3IgdGhlIGBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpYCBjYWxsLiBJZiB0aGF0IGFsbG9jYXRpb24gYm9tYnMgb3V0LCB3aGljaCwgbGV0J3MgYmUgaG9uZXN0LCBjYW4gaGFwcGVuIGluIGEgdGlnaHQgc3BvdCwgaXQgcmV0dXJucyBgLUVOT01FTWAuIFRoYXQgbWFrZXMgc2Vuc2U7IGEgY2xlYXIgaW5kaWNhdG9yIG9mIG1lbW9yeSBleGhhdXN0aW9uLlxuXG5Ob3csIGluIGBob3RhZGRfaW5pdF9wZ2RhdGAsIHRoZSBjb2RlIGNoZWNrcyB0aGUgcmV0dXJuIG9mIGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLiBJZiBpdCBkZXRlY3RzIHRoZSBlcnJvciwgaXQgcmV0dXJucyBgTlVMTGAuIFRoaXMgaXMgYSBjcnVjaWFsIGRlc2lnbiBkZWNpc2lvbjsgYSBgTlVMTGAgcmV0dXJuIHNpZ25hbHMgZmFpbHVyZSB0byB0aGUgY2FsbGluZyBmdW5jdGlvbi4gVGhpcyBpcyBzdGFuZGFyZCBlcnJvciBwcm9wYWdhdGlvbiB0ZWNobmlxdWUgYW5kIG1ha2VzIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZyB1cCBvciB0YWtpbmcgYWx0ZXJuYXRpdmUgYWN0aW9uLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UsIHNvIEknbGwgbmV4dCBjaGVjayB3aGVyZSBgaG90YWRkX2luaXRfcGdkYXRgIGlzIGNhbGxlZC4gVW5kZXJzdGFuZGluZyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYW5kIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCBgTlVMTGAgcmV0dXJucyB3aWxsIGJlIHRoZSBuZXh0IHN0ZXAgaW4gZXZhbHVhdGluZyB0aGUgb3ZlcmFsbCBpbXBhY3Qgb2YgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY4OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA3OjE0OjIwLjI3MzA4Nzk2M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODgzOTQwMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhvdGFkZF9pbml0X3BnZGF0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21lbW9yeV9ob3RwbHVnLmM9MTEzNz1pbnQgb25saW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjUyLS8qIHdlIGFyZSBPSyBjYWxsaW5nIF9fbWVtaW5pdCBzdHVmZiBoZXJlIC0gd2UgaGF2ZSBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyNTM6c3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyNTQte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0xMjg5PXN0YXRpYyBpbnQgX190cnlfb25saW5lX25vZGUoaW50IG5pZCwgYm9vbCBzZXRfbm9kZV9vbmxpbmUpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyOTYtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjk3OlxcdHBnZGF0ID0gaG90YWRkX2luaXRfcGdkYXQobmlkKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyOTgtXFx0aWYgKCFwZ2RhdCkge1xcbi0tXFxubW0vbW1faW5pdC5jPTE4MTc9c3RhdGljIHZvaWQgX19pbml0IGZyZWVfYXJlYV9pbml0KHZvaWQpXFxuLS1cXG5tbS9tbV9pbml0LmMtMTkxMS1cXHRcXHQgKm1lbW9yeS1sZXNzIG5vZGUuIFRoZSBwZ2RhdCB3aWxsIGdldCBmdWxseSBpbml0aWFsaXplZCBieVxcbm1tL21tX2luaXQuYzoxOTEyOlxcdFxcdCAqaG90YWRkX2luaXRfcGdkYXQoKSB3aGVuIG1lbW9yeSBpcyBob3RwbHVnZ2VkIGludG8gdGhpcyBub2RlLlxcbm1tL21tX2luaXQuYy0xOTEzLVxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNzoxNDoyMi4xNTcwMzMxMzNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI4NjkxNzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIE5vZGUgT25saW5lIExvZ2ljIGFuZCBQb3RlbnRpYWwgYHBnZGF0YCBJbml0aWFsaXphdGlvbiBGYWlsdXJlKipcblxuUmlnaHQsIHNvIGBob3RhZGRfaW5pdF9wZ2RhdGAgaXMgaW52b2tlZCBmcm9tIHdpdGhpbiBgX190cnlfb25saW5lX25vZGVgLiBUaGF0J3MgdGhlIHNldHVwLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IGlmIGBob3RhZGRfaW5pdF9wZ2RhdGAgKnJldHVybnMqIGEgYE5VTExgIHZhbHVlLCBzaWduYWxpbmcgYSBmYWlsdXJlIHRvIGluaXRpYWxpemUgdGhlIHBhZ2UgZGF0YSBzdHJ1Y3R1cmUgKGBwZ2RhdGApLCBgX190cnlfb25saW5lX25vZGVgIGlzIGRlc2lnbmVkIHRvIGhhbmRsZSB0aGF0IGNvbmRpdGlvbi4gVGhlIGltcGxpY2F0aW9uIGJlaW5nIHRoYXQgdGhlIG9ubGluZSBhdHRlbXB0IGNhbiByZWNvdmVyIGdyYWNlZnVsbHksIHBlcmhhcHMsIG9yIGF0IGxlYXN0IGRlYWwgd2l0aCB0aGUgZXJyb3IgaW4gc29tZSBkZWZpbmVkIG1hbm5lci5cblxuTXkgcHJpbWFyeSBmb2N1cyBub3cgbmVlZHMgdG8gc2hpZnQgdG8gdW5kZXJzdGFuZGluZyBleGFjdGx5ICpob3cqIGBfX3RyeV9vbmxpbmVfbm9kZWAgcmVzcG9uZHMgdG8gdGhpcyBgTlVMTGAgcmV0dXJuLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgY29udHJvbCBmbG93IHdpdGhpbiBgX190cnlfb25saW5lX25vZGVgIGl0c2VsZiB0byBncmFzcCB0aGUgY29uc2VxdWVuY2VzIGFuZCB3aGF0IGxvZ2ljIG9yIGFjdGlvbiB0YWtlcyBwbGFjZSBpbiBzdWNoIGEgZmFpbHVyZSBzY2VuYXJpby4gV2hhdCBhcmUgdGhlIGZhbGxiYWNrIG1lY2hhbmlzbXMsIGVycm9yIHJlcG9ydGluZywgb3IgcmV0cnkgYXR0ZW1wdHMgZW1wbG95ZWQ/IFRoZSBudWFuY2VzIG9mIHRoYXQgcmVzcG9uc2UgYXJlIGNyaXRpY2FsIHRvIHRoZSBvdmVyYWxsIHJlbGlhYmlsaXR5IG9mIHRoZSBob3QtYWRkIHByb2Nlc3MsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZGlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQ1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MjUuODg1NzI2NzE0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjMyNjQzOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX190cnlfb25saW5lX25vZGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvbW0vbnVtYS5jPTI2ND12b2lkIF9faW5pdCBpbml0X2dpX25vZGVzKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjcxLVxcdCAqICBjcHVfdXBcXG5hcmNoL3g4Ni9tbS9udW1hLmM6MjcyOlxcdCAqICAgX190cnlfb25saW5lX25vZGVcXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjczLVxcdCAqICAgIHJlZ2lzdGVyX25vZGVcXG4tLVxcbmFyY2gveDg2L21tL251bWEuYz0yOTY9dm9pZCBfX2luaXQgaW5pdF9jcHVfdG9fbm9kZSh2b2lkKVxcbi0tXFxuYXJjaC94ODYvbW0vbnVtYS5jLTMxMi1cXHRcXHQgKiAgY3B1X3VwXFxuYXJjaC94ODYvbW0vbnVtYS5jOjMxMzpcXHRcXHQgKiAgIF9fdHJ5X29ubGluZV9ub2RlXFxuYXJjaC94ODYvbW0vbnVtYS5jLTMxNC1cXHRcXHQgKiAgICByZWdpc3Rlcl9ub2RlXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTEyNTM9c3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI3OC0vKlxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI3OTogKiBfX3RyeV9vbmxpbmVfbm9kZSAtIG9ubGluZSBhIG5vZGUgaWYgb2ZmbGluZWRcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyODAtICogQG5pZDogdGhlIG5vZGUgSURcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI4OC0gKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyODk6c3RhdGljIGludCBfX3RyeV9vbmxpbmVfbm9kZShpbnQgbmlkLCBib29sIHNldF9ub2RlX29ubGluZSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyOTAte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0xMzE2PWludCB0cnlfb25saW5lX25vZGUoaW50IG5pZClcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMyMC1cXHRtZW1faG90cGx1Z19iZWdpbigpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTMyMTpcXHRyZXQgPSAgX190cnlfb25saW5lX25vZGUobmlkLCB0cnVlKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEzMjItXFx0bWVtX2hvdHBsdWdfZG9uZSgpO1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0xNDk1PWludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzLCBtaHBfdCBtaHBfZmxhZ3MpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1MzItXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNTMzOlxcdHJldCA9IF9fdHJ5X29ubGluZV9ub2RlKG5pZCwgZmFsc2UpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzNC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MjcuODQ4OTk2NjYzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwMDUyMjkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBFcnJvciBIYW5kbGluZyBvZiBgX190cnlfb25saW5lX25vZGVgKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIGluIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9fdHJ5X29ubGluZV9ub2RlYC4gSSBrbm93IGl0J3MgYW4gaW50ZWdlciwgd2hpY2ggbGlrZWx5IHJlcHJlc2VudHMgc29tZSBzb3J0IG9mIHN0YXR1cyBvciBlcnJvciBjb2RlLiBUaGUgcmVhbCBjcnV4IG9mIHRoaXMgaW52ZXN0aWdhdGlvbiBzZWVtcyB0byBiZSB3aGF0IGhhcHBlbnMgd2hlbiBgaG90YWRkX2luaXRfcGdkYXRgIGtpY2tzIGJhY2sgYSBgTlVMTGAgcG9pbnRlci4gVGhhdCdzIHRoZSBjcml0aWNhbCBicmFuY2hpbmcgY29uZGl0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJJ20gYXNzdW1pbmcgdGhhdCBgTlVMTGAgc2lnbmlmaWVzIGEgZmFpbHVyZSBpbiB0aGUgcGFnZSBkYXRhIGluaXRpYWxpemF0aW9uLiBOb3cgSSB3YW50IHRvIHNlZSBob3cgYF9fdHJ5X29ubGluZV9ub2RlYCBncmFjZWZ1bGx5IChvciBub3Qgc28gZ3JhY2VmdWxseSkgaGFuZGxlcyB0aGF0IHNwZWNpZmljIGZhaWx1cmUgc2NlbmFyaW8uIE15IGZvY3VzIGhlcmUgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aDsgSSBuZWVkIHRvIGtub3cgaWYgd2UncmUgcHJvcGVybHkgZGV0ZWN0aW5nLCByZXBvcnRpbmcsIGFuZCwgbW9zdCBpbXBvcnRhbnRseSwgcmVjb3ZlcmluZyBmcm9tIG9yIG1pdGlnYXRpbmcgdGhhdCBwYXJ0aWN1bGFyIGZhaWx1cmUgcG9pbnQgZHVyaW5nIG5vZGUgb25saW5lIG9wZXJhdGlvbnMuIEEgTlVMTCByZXR1cm4gZnJvbSBob3RhZGRfaW5pdF9wZ2RhdCBpcyBhbiBpbXBvcnRhbnQgZmFpbHVyZSBwb2ludCBJIG5lZWQgdG8gZGVlcGx5IHVuZGVyc3RhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNzcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNzoxNDozMS4yNDk1MjMzMTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vbWVtb3J5X2hvdHBsdWcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjg5LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjg5OlxcdHN0YXRpYyBpbnQgX190cnlfb25saW5lX25vZGUoaW50IG5pZCwgYm9vbCBzZXRfbm9kZV9vbmxpbmUpXFxuMTI5MDpcXHR7XFxuMTI5MTpcXHRcXHRwZ19kYXRhX3QgKnBnZGF0O1xcbjEyOTI6XFx0XFx0aW50IHJldCA9IDE7XFxuMTI5MzpcXHRcXG4xMjk0OlxcdFxcdGlmIChub2RlX29ubGluZShuaWQpKVxcbjEyOTU6XFx0XFx0XFx0cmV0dXJuIDA7XFxuMTI5NjpcXHRcXG4xMjk3OlxcdFxcdHBnZGF0ID0gaG90YWRkX2luaXRfcGdkYXQobmlkKTtcXG4xMjk4OlxcdFxcdGlmICghcGdkYXQpIHtcXG4xMjk5OlxcdFxcdFxcdHByX2VycihcXFwiQ2Fubm90IG9ubGluZSBub2RlICVkIGR1ZSB0byBOVUxMIHBnZGF0XFxcXG5cXFwiLCBuaWQpO1xcbjEzMDA6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4xMzAxOlxcdFxcdFxcdGdvdG8gb3V0O1xcbjEzMDI6XFx0XFx0fVxcbjEzMDM6XFx0XFxuMTMwNDpcXHRcXHRpZiAoc2V0X25vZGVfb25saW5lKSB7XFxuMTMwNTpcXHRcXHRcXHRub2RlX3NldF9vbmxpbmUobmlkKTtcXG4xMzA2OlxcdFxcdFxcdHJldCA9IHJlZ2lzdGVyX25vZGUobmlkKTtcXG4xMzA3OlxcdFxcdFxcdEJVR19PTihyZXQpO1xcbjEzMDg6XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNzoxNDozMS4yNDk2ODE5MTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjYxNjQ4OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQncyBkZWFsaW5nIHdpdGggZXJyb3IgaGFuZGxpbmcgcmVsYXRlZCB0byBgYWxsb2NfcGVyY3B1YCBmYWlsaW5nIHdpdGhpbiB0aGUgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaWYgYGFsbG9jX3BlcmNwdWAgcmV0dXJucyBgLUVOT01FTWAsIHRoaXMgcGF0Y2ggZW5zdXJlcyB0aGF0IGVycm9yIHByb3BhZ2F0ZXMgY29ycmVjdGx5LCBhbGwgdGhlIHdheSB1cCB0aHJvdWdoIGBob3RhZGRfaW5pdF9wZ2RhdGAgcmV0dXJuaW5nIGBOVUxMYCwgdGhlbiBgX190cnlfb25saW5lX25vZGVgIGFsc28gcmV0dXJuaW5nIGAtRU5PTUVNYC4gVWx0aW1hdGVseSwgdGhpcyBwcmV2ZW50cyBhbnkgcG90ZW50aWFsIGlzc3VlcywgbGlrZSBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgaWYgd2UncmUgb3V0IG9mIG1lbW9yeSBkdXJpbmcgYSBtZW1vcnkgaG90cGx1Zy5cblxuVGhlIHJlYWwgcXVlc3Rpb24gSSBuZWVkIHRvIGFzayBteXNlbGYgaXMgd2hldGhlciB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEl0J3MgYSBmYWlybHkgc2ltcGxlIGFkZGl0aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZy4gSG93ZXZlciwgYSBmYWlsdXJlIGluIGBhbGxvY19wZXJjcHVgIGltcGxpZXMgYW4gb3V0LW9mLW1lbW9yeSBjb25kaXRpb24sIGFuZCBtZW1vcnkgaG90cGx1ZyBpcywgYnkgZGVmaW5pdGlvbiwgYSBmdW5jdGlvbmFsIGFyZWEuIEdpdmVuIHRoYXQsIHllcywgSSB0aGluayBpdCdzIHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaG90cGx1ZyBpc3N1ZXMgYXJlIGNyaXRpY2FsLlxuXG5Ob3csIGxldCdzIGtlZXAgaW4gbWluZCB0aGUgY29yZSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLCBgaG90YWRkX2luaXRfcGdkYXRgLCBgX190cnlfb25saW5lX25vZGVgLCBgdHJ5X29ubGluZV9ub2RlYCwgYW5kIGBhZGRfbWVtb3J5X3Jlc291cmNlYC4gVGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMgaGVyZS4gTGV0J3MgbWFrZSBzdXJlIHRoZSBgTUVNT1JZX0hPVFBMVUdgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQg4oCTIHRoYXQncyB0aGUga2V5IHRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgYWN0aXZlIGZvciBhbGwgb2YgdGhpcyB0byB0YWtlIHBsYWNlLiBJJ2xsIGRvdWJsZS1jaGVjayB0aGF0IHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBpcyBldmVuIHJlbGV2YW50IGluIHRoZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTU4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6MzYuNTExMzMzMzQ5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDUzMjE1NzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRU1PUllfSE9UUExVR1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTUxOT1jb25maWcgQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUdcXG4tLVxcbm1tL0tjb25maWctNTIyLSMgZXZlbnR1YWxseSwgd2UgY2FuIGhhdmUgdGhpcyBvcHRpb24ganVzdCAnc2VsZWN0IFNQQVJTRU1FTSdcXG5tbS9LY29uZmlnOjUyMzptZW51Y29uZmlnIE1FTU9SWV9IT1RQTFVHXFxubW0vS2NvbmZpZy01MjQtXFx0Ym9vbCBcXFwiTWVtb3J5IGhvdHBsdWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA3OjE0OjM4LjU2NDU1NTgzNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzU5NTEyNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWVtb3J5IEhvdHBsdWcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYE1FTU9SWV9IT1RQTFVHYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBrZXkgY29uZmlndXJhdGlvbnMgd2Ugc2hvdWxkIGJlIGF3YXJlIG9mLiBUaGUgcGF0Y2ggaXMgZGVmaW5pdGVseSBtb2RpZnlpbmcgYG1tL21tX2luaXQuY2AsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGAjaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHYCBibG9jay5cblxuTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGltcG9ydGFudCBzeW1ib2xzOiBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCwgYGhvdGFkZF9pbml0X3BnZGF0YCwgYW5kIGBfX3RyeV9vbmxpbmVfbm9kZWAuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHJlYWNoYWJsZSwgYW5kIGl0IHNlZW1zIHRoZSBhbnN3ZXIgaXMgYSBjbGVhciB5ZXMg4oCTIHRoZXkgYXJlIGFsbCBwYXJ0IG9mIHRoZSBtZW1vcnkgaG90cGx1ZyBwYXRoLiBHaXZlbiB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGZ1enppbmcgdGhpcyBhcmVhIGxvb2tzIHByb21pc2luZy5cblxuV2FpdCBhIHNlY29uZOKApiB0aGlua2luZyBhYm91dCBpdCBtb3JlLCBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCBpcyAqb25seSogY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zLiBUaGUgbmV4dCBxdWVzdGlvbiwgYW5kIGEgY3JpdGljYWwgb25lIGZvciBleHBsb2l0YWJpbGl0eSwgaXMgd2hldGhlciBtZW1vcnkgaG90cGx1ZyBpcyBldmVuICpyZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSG1tLCB0aGlua2luZyBhYm91dCBpdCwgdGhhdCdzIHBvc3NpYmxlIC0gQUNQSSBtZW1vcnkgaG90cGx1ZyBvciB2aXJ0aW8tbWVtIGNvbWUgdG8gbWluZC4gU28sIHRoZSBhdHRhY2sgc3VyZmFjZSBpcywgaW4gZmFjdCwgdGhlcmUuIE5vdywgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgY2FsbCBpbiBgbW0vbW1faW5pdC5jYCBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDc6MTQ6NDMuMzI0MDcwNDY2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9tbV9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTUzNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTUzNTpcXHQgKlxcbjE1MzY6XFx0ICogTk9URTogdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBkdXJpbmcgbWVtb3J5IGhvdHBsdWdcXG4xNTM3OlxcdCAqL1xcbjE1Mzg6XFx0I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbjE1Mzk6XFx0aW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxcbjE1NDA6XFx0e1xcbjE1NDE6XFx0XFx0aW50IG5pZCA9IHBnZGF0LVxcdTAwM2Vub2RlX2lkO1xcbjE1NDI6XFx0XFx0ZW51bSB6b25lX3R5cGUgejtcXG4xNTQzOlxcdFxcdGludCBjcHU7XFxuMTU0NDpcXHRcXG4xNTQ1OlxcdFxcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcXG4xNTQ2OlxcdFxcbjE1NDc6XFx0XFx0aWYgKHBnZGF0LVxcdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcXHUwMDI2Ym9vdF9ub2Rlc3RhdHMpIHtcXG4xNTQ4OlxcdFxcdFxcdHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0IF9fcGVyY3B1ICpuZXc7XFxuMTU0OTpcXHRcXG4xNTUwOlxcdFxcdFxcdG5ldyA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7XFxuMTU1MTpcXHRcXHRcXHRpZiAoIW5ldylcXG4xNTUyOlxcdFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjE1NTM6XFx0XFx0XFx0cGdkYXQtXFx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID0gbmV3O1xcbjE1NTQ6XFx0XFx0fVxcbjE1NTU6XFx0XFxuMTU1NjpcXHRcXHQvKlxcbjE1NTc6XFx0XFx0ICogUmVzZXQgdGhlIG5yX3pvbmVzLCBvcmRlciBhbmQgaGlnaGVzdF96b25laWR4IGJlZm9yZSByZXVzZS5cXG4xNTU4OlxcdFxcdCAqIE5vdGUgdGhhdCBrc3dhcGQgd2lsbCBpbml0IGtzd2FwZF9oaWdoZXN0X3pvbmVpZHggcHJvcGVybHlcXG4xNTU5OlxcdFxcdCAqIHdoZW4gaXQgc3RhcnRzIGluIHRoZSBuZWFyIGZ1dHVyZS5cXG4xNTYwOlxcdFxcdCAqL1xcbjE1NjE6XFx0XFx0cGdkYXQtXFx1MDAzZW5yX3pvbmVzID0gMDtcXG4xNTYyOlxcdFxcdHBnZGF0LVxcdTAwM2Vrc3dhcGRfb3JkZXIgPSAwO1xcbjE1NjM6XFx0XFx0cGdkYXQtXFx1MDAzZWtzd2FwZF9oaWdoZXN0X3pvbmVpZHggPSAwO1xcbjE1NjQ6XFx0XFx0cGdkYXQtXFx1MDAzZW5vZGVfc3RhcnRfcGZuID0gMDtcXG4xNTY1OlxcdFxcdHBnZGF0LVxcdTAwM2Vub2RlX3ByZXNlbnRfcGFnZXMgPSAwO1xcbjE1NjY6XFx0XFxuMTU2NzpcXHRcXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xcbjE1Njg6XFx0XFx0XFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgKnA7XFxuMTU2OTpcXHRcXG4xNTcwOlxcdFxcdFxcdHAgPSBwZXJfY3B1X3B0cihwZ2RhdC1cXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMsIGNwdSk7XFxuMTU3MTpcXHRcXHRcXHRtZW1zZXQocCwgMCwgc2l6ZW9mKCpwKSk7XFxuMTU3MjpcXHRcXHR9XFxuMTU3MzpcXHRcXG4xNTc0OlxcdFxcdC8qXFxuMTU3NTpcXHRcXHQgKiBXaGVuIG1lbW9yeSBpcyBob3QtYWRkZWQsIGFsbCB0aGUgbWVtb3J5IGlzIGluIG9mZmxpbmUgc3RhdGUuIFNvXFxuMTU3NjpcXHRcXHQgKiBjbGVhciBhbGwgem9uZXMnIHByZXNlbnRfcGFnZXMgYW5kIG1hbmFnZWRfcGFnZXMgYmVjYXVzZSB0aGV5IHdpbGxcXG4xNTc3OlxcdFxcdCAqIGJlIHVwZGF0ZWQgaW4gb25saW5lX3BhZ2VzKCkgYW5kIG9mZmxpbmVfcGFnZXMoKS5cXG4xNTc4OlxcdFxcdCAqL1xcbjE1Nzk6XFx0XFx0Zm9yICh6ID0gMDsgeiBcXHUwMDNjIE1BWF9OUl9aT05FUzsgeisrKSB7XFxuMTU4MDpcXHRcXHRcXHRzdHJ1Y3Qgem9uZSAqem9uZSA9IHBnZGF0LVxcdTAwM2Vub2RlX3pvbmVzICsgejtcXG4xNTgxOlxcdFxcbjE1ODI6XFx0XFx0XFx0em9uZS1cXHUwMDNlcHJlc2VudF9wYWdlcyA9IDA7XFxuMTU4MzpcXHRcXHRcXHR6b25lX2luaXRfaW50ZXJuYWxzKHpvbmUsIHosIG5pZCwgMCk7XFxuMTU4NDpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA3OjE0OjQzLjMyNDIwMjE2NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEzMTA4MjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkVycm9yIEhhbmRsaW5nIGluIEhvdHBsdWcgTWVtb3J5IEluaXRpYWxpemF0aW9uKipcblxuUmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHByZXR0eSBjcml0aWNhbCBhc3BlY3Qgb2YgaG90cGx1ZyBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIHNwZWNpZmljYWxseSB0aGUgZXJyb3IgaGFuZGxpbmcgYXJvdW5kIGBhbGxvY19wZXJjcHVgIHdpdGhpbiBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYC4gVGhpcyBpcyBnb29kLCBiZWNhdXNlIGEgZmFpbHVyZSBpbiBgYWxsb2NfcGVyY3B1YCBpbiB0aGF0IGNvbnRleHQgaXMgYSByZWNpcGUgZm9yIGEgYmFkIGRheS4gV2UncmUgdGFsa2luZyBhYm91dCBwcmV2ZW50aW5nIGEgbmFzdHkgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBvciB3b3JzZSwgc29tZSBvdGhlciBpbnNpZGlvdXMgaXNzdWUgdGhhdCBtaWdodCBjcm9wIHVwIGxhdGVyLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBkZWZpbml0ZSBpbXByb3ZlbWVudC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgYWJzb2x1dGVseSAqZGVtYW5kcyogdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byBiZSBoYW1tZXJpbmcgdGhlIGVycm9yIHBhdGguIE1ha2Ugc3VyZSB0aGF0IGlmIGBhbGxvY19wZXJjcHVgIGJhaWxzLCB3ZSBkb24ndCBsZWFrIG1lbW9yeSwgd2UgZG9uJ3QgZW5kIHVwIHdpdGggc29tZSBjb3JydXB0IGRhdGEgc3RydWN0dXJlLCBhbmQgdGhlIHdob2xlIGhvdHBsdWcgcHJvY2VzcyBkb2Vzbid0IGp1c3QgZ28gc2lkZXdheXMuIEdvdHRhIGNoZWNrIGZvciBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgYW5kIGVuc3VyZSBhIGNsZWFuIHJlY292ZXJ5LlxuXG5UaGUga2V5IHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24sIG9mIGNvdXJzZSwgYXJlIGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgICh3aGVyZSB0aGUgY2hhbmdlIGlzKSwgYGhvdGFkZF9pbml0X3BnZGF0YCwgYW5kIGBfX3RyeV9vbmxpbmVfbm9kZWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBzdGVwcy4gVGhlIG9idmlvdXMgYXNzb2NpYXRlZCBjb25maWcgaXMgYE1FTU9SWV9IT1RQTFVHYCwgc2luY2UgdGhhdCdzIHRoZSB0cmlnZ2VyLlxuXG5JIHRoaW5rIHdlIG5lZWQgdG8gY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk4MiwiT3V0cHV0VG9rZW5zIjoxMzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNzoxNDo0OC42MzczMTI1NTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc3ODI1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdcIixcbiAgICBcImhvdGFkZF9pbml0X3BnZGF0XCIsXG4gICAgXCJfX3RyeV9vbmxpbmVfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbG9jX3BlcmNwdSBmYWlsdXJlIGluIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlIGVycm9yIHBhdGggaXMgaGFuZGxlZCBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRU1PUllfSE9UUExVR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z1wiLFxuICAgIFwiaG90YWRkX2luaXRfcGdkYXRcIixcbiAgICBcIl9fdHJ5X29ubGluZV9ub2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBlcnJvciBoYW5kbGluZyBmb3IgYWxsb2NfcGVyY3B1IGZhaWx1cmUgaW4gZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnIGR1cmluZyBtZW1vcnkgaG90cGx1Zy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGlzc3VlcyB3aGVuIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLiBGdXp6aW5nIGNhbiBoZWxwIGVuc3VyZSB0aGUgZXJyb3IgcGF0aCBpcyBoYW5kbGVkIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow6729w[1] Phase: Succeeded StartedAt: 2026-07-17 07:14:59 +0000 UTC FinishedAt: 2026-07-17 07:14:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 07:14:59 +0000 UTC FinishedAt: 2026-07-17 07:14:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2] Phase: Succeeded StartedAt: 2026-07-17 07:14:59 +0000 UTC FinishedAt: 2026-07-17 11:58:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-17 07:14:59 +0000 UTC FinishedAt: 2026-07-17 11:58:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-17 07:14:59 +0000 UTC FinishedAt: 2026-07-17 07:15:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-17 07:14:59 +0000 UTC FinishedAt: 2026-07-17 07:15:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow6729w/series-workflow6729w-convert-artifact-392581156/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-17 07:15:09 +0000 UTC FinishedAt: 2026-07-17 08:07:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-17 07:15:09 +0000 UTC FinishedAt: 2026-07-17 08:07:27 +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:*473d517f-6c5a-4e99-a4b5-4257dcbb1ef6,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-workflow6729w/series-workflow6729w-convert-artifact-392581156/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": "99a7dd1f-11a4-404b-a17c-5ec15efb8dba", "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-workflow6729w/series-workflow6729w-build-action-2414207586/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-17 07:15:09 +0000 UTC FinishedAt: 2026-07-17 08:07:17 +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:*473d517f-6c5a-4e99-a4b5-4257dcbb1ef6,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-workflow6729w/series-workflow6729w-convert-artifact-392581156/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": "99a7dd1f-11a4-404b-a17c-5ec15efb8dba", "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-workflow6729w/series-workflow6729w-build-action-2414207586/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-17 08:07:27 +0000 UTC FinishedAt: 2026-07-17 08:07:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-17 08:07:27 +0000 UTC FinishedAt: 2026-07-17 08:07:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-17 08:07:27 +0000 UTC FinishedAt: 2026-07-17 08:07:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-17 08:07:27 +0000 UTC FinishedAt: 2026-07-17 08:07:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow6729w/series-workflow6729w-convert-artifact-3474238243/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-17 08:07:37 +0000 UTC FinishedAt: 2026-07-17 08:09:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-17 08:07:37 +0000 UTC FinishedAt: 2026-07-17 08:09:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*99a7dd1f-11a4-404b-a17c-5ec15efb8dba,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-workflow6729w/series-workflow6729w-build-action-2414207586/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-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-17 08:09:37 +0000 UTC FinishedAt: 2026-07-17 08:09:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-17 08:09:37 +0000 UTC FinishedAt: 2026-07-17 08:09:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-17 08:09:37 +0000 UTC FinishedAt: 2026-07-17 08:53:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-17 08:09:37 +0000 UTC FinishedAt: 2026-07-17 08:53: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:*473d517f-6c5a-4e99-a4b5-4257dcbb1ef6,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-workflow6729w/series-workflow6729w-convert-artifact-3474238243/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": "89f6d6d3-630b-469a-9414-ca40dcbe4f76", "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-workflow6729w/series-workflow6729w-build-action-454174490/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Failed StartedAt: 2026-07-17 08:09:37 +0000 UTC FinishedAt: 2026-07-17 08:12:35 +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:*473d517f-6c5a-4e99-a4b5-4257dcbb1ef6,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-workflow6729w/series-workflow6729w-convert-artifact-3474238243/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(1) Phase: Succeeded StartedAt: 2026-07-17 08:17:47 +0000 UTC FinishedAt: 2026-07-17 08:52:59 +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:*473d517f-6c5a-4e99-a4b5-4257dcbb1ef6,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-workflow6729w/series-workflow6729w-convert-artifact-3474238243/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": "89f6d6d3-630b-469a-9414-ca40dcbe4f76", "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-workflow6729w/series-workflow6729w-build-action-454174490/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-17 08:53:09 +0000 UTC FinishedAt: 2026-07-17 08:53:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-17 08:53:09 +0000 UTC FinishedAt: 2026-07-17 08:53:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-17 08:53:09 +0000 UTC FinishedAt: 2026-07-17 08:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-17 08:53:09 +0000 UTC FinishedAt: 2026-07-17 08:55:22 +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:*89f6d6d3-630b-469a-9414-ca40dcbe4f76,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-workflow6729w/series-workflow6729w-build-action-454174490/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-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-17 08:55:31 +0000 UTC FinishedAt: 2026-07-17 11:58:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-17 08:55:31 +0000 UTC FinishedAt: 2026-07-17 11:58:15 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},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:*99a7dd1f-11a4-404b-a17c-5ec15efb8dba,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*89f6d6d3-630b-469a-9414-ca40dcbe4f76,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-workflow6729w/series-workflow6729w-build-action-2414207586/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-workflow6729w/series-workflow6729w-build-action-454174490/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-17 08:55:31 +0000 UTC FinishedAt: 2026-07-17 08:55:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-17 08:55:31 +0000 UTC FinishedAt: 2026-07-17 08:55:38 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},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-workflow6729w/series-workflow6729w-convert-artifact-1288113724/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-17 08:55:31 +0000 UTC FinishedAt: 2026-07-17 08:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-17 08:55:31 +0000 UTC FinishedAt: 2026-07-17 08:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-17 08:55:31 +0000 UTC FinishedAt: 2026-07-17 08:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-17 08:55:41 +0000 UTC FinishedAt: 2026-07-17 11:58:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6729w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e57d6e9e20b551e4910d7a6331a81775c3ad6693","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG"],"series_id":"592f505e-6e6c-48a1-9ea8-4e87ff340b6d","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-17 08:55:41 +0000 UTC FinishedAt: 2026-07-17 11:58:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*99a7dd1f-11a4-404b-a17c-5ec15efb8dba,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*89f6d6d3-630b-469a-9414-ca40dcbe4f76,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-workflow6729w/series-workflow6729w-build-action-2414207586/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-workflow6729w/series-workflow6729w-build-action-454174490/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-workflow6729w/series-workflow6729w-convert-artifact-1288113724/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,}