Name: series-workflowcchb9 Phase: Succeeded StartedAt: 2026-08-03 03:56:05 +0000 UTC FinishedAt: 2026-08-03 08:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[0] Phase: Succeeded StartedAt: 2026-08-03 03:56:05 +0000 UTC FinishedAt: 2026-08-03 04:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 03:56:05 +0000 UTC FinishedAt: 2026-08-03 04:13:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "86c3125c75d79ee7fb4d045bb9ada4c5b067eacc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "86c3125c75d79ee7fb4d045bb9ada4c5b067eacc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "99c6ebda-8676-4d28-88ae-7ba4a48762a3" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_link_use_reserved_context", "__ieee80211_link_release_channel" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQmIzM0OywKICAgICYjMzQ7X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGluIGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gIHdpdGhpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIHRvIHByb3Blcmx5IGNoZWNrIGlmIHRoZSBuZXcgY29udGV4dCBtYXRjaGVzIHRoZSBwcm92aWRlZCBjb250ZXh0IGFuZCBpZiB0aGUgcmVwbGFjZSBjb250ZXh0cyBtYXRjaCBlYWNoIG90aGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQgYW5kIGNhbiBiZSByZWFjaGVkIHZpYSBvcGVyYXRpb25zIGxpa2UgY2hhbm5lbCBzd2l0Y2hpbmcgb3IgcmVsZWFzaW5nLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBjcmFzaGVzIG9jY3VyIGR1cmluZyBjaGFubmVsIGNvbnRleHQgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjYmY5ZTVmNGExYjUzMWE0MmI1NjI4Y2U2ZTNjZTJhZjU3ODE0Y2I5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNDoxMzowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2hhbi5jIGIvbmV0L21hYzgwMjExL2NoYW4uY1xuaW5kZXggNTE1MmI4NGEzMzU3Ny4uNzkwNTdlMWFkMTA1YyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9jaGFuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jaGFuLmNcbkBAIC0xNzcwLDcgJiM0MzsxNzcwLDggQEAgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2Fzc2lnbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbiB9XG4gXG4gc3RhdGljIGJvb2xcbi1pZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4mIzQzO2llZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay1cdTAwM2VzZGF0YTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqb2xkX2N0eCwgKm5ld19jdHg7XG5AQCAtMTc4MCw2ICYjNDM7MTc4MSw5IEBAIGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbiBcdG5ld19jdHggPSBsaW5rLVx1MDAzZXJlc2VydmVkX2NoYW5jdHg7XG4gXHRvbGRfY3R4ID0gaWVlZTgwMjExX2xpbmtfZ2V0X2NoYW5jdHgobGluayk7XG4gXG4mIzQzO1x0aWYgKG5ld19jdHggIT0gY3R4KVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiBcdGlmICghb2xkX2N0eClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuQEAgLTE3OTIsNiAmIzQzOzE3OTYsMTIgQEAgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuIFx0aWYgKG5ld19jdHgtXHUwMDNlcmVwbGFjZV9zdGF0ZSAhPSBJRUVFODAyMTFfQ0hBTkNUWF9SRVBMQUNFU19PVEhFUilcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuJiM0MztcdGlmIChuZXdfY3R4LVx1MDAzZXJlcGxhY2VfY3R4ICE9IG9sZF9jdHgpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmIChvbGRfY3R4LVx1MDAzZXJlcGxhY2VfY3R4ICE9IG5ld19jdHgpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuQEAgLTE4MjEsNyAmIzQzOzE4MzEsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFx0XHR9XG4gXG4gXHRcdGZvcl9lYWNoX2NoYW5jdHhfdXNlcl9yZXNlcnZlZChsb2NhbCwgY3R4LCBcdTAwMjZpdGVyKSB7XG4tXHRcdFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSlcbiYjNDM7XHRcdFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0ICAgICBjdHgpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0b2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGl0ZXIubGluayk7XG5AQCAtMTkyMyw3ICYjNDM7MTkzNCw5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuIFxuIFx0XHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfYXNzaWduZWQobG9jYWwsIGN0eC1cdTAwM2VyZXBsYWNlX2N0eCwgXHUwMDI2aXRlcikge1xuIFx0XHRcdG5fYXNzaWduZWQmIzQzOyYjNDM7O1xuLVx0XHRcdGlmIChpdGVyLmxpbmsgXHUwMDI2XHUwMDI2IGl0ZXIubGluay1cdTAwM2VyZXNlcnZlZF9jaGFuY3R4KSB7XG4mIzQzO1x0XHRcdGlmIChpdGVyLmxpbmsgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0ICAgIGN0eCkpIHtcbiBcdFx0XHRcdG5fcmVzZXJ2ZWQmIzQzOyYjNDM7O1xuIFx0XHRcdFx0aWYgKGl0ZXIubGluay1cdTAwM2VyZXNlcnZlZF9yZWFkeSlcbiBcdFx0XHRcdFx0bl9yZWFkeSYjNDM7JiM0Mzs7XG5AQCAtMTk0OCw3ICYjNDM7MTk2MSw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuIHVzZV9yZXNlcnZlZDpcbiBcdFx0Y3R4LVx1MDAzZWNvbmYucmFkYXJfZW5hYmxlZCA9IGZhbHNlO1xuIFx0XHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXHUwMDI2aXRlcikge1xuLVx0XHRcdGlmIChpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0aWYgKGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmssXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHQgICAgY3R4KSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgIWl0ZXIubGluay1cdTAwM2VyZXNlcnZlZF9yZWFkeSlcbiBcdFx0XHRcdHJldHVybiAtRUFHQUlOO1xuIFxuQEAgLTE5ODksNyAmIzQzOzIwMDMsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbiBcdFx0fVxuIFxuIFx0XHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXHUwMDI2aXRlcikge1xuLVx0XHRcdGlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluaykpXG4mIzQzO1x0XHRcdGlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluayxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgICAgY3R4KSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdGllZWU4MDIxMV9jaGFuX2J3X2NoYW5nZShsb2NhbCxcbkBAIC0yMDM4LDcgJiM0MzsyMDUzLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4gXHRcdFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mID0gbGluay1cdTAwM2Vjb25mO1xuIFx0XHRcdHU2NCBjaGFuZ2VkID0gMDtcbiBcbi1cdFx0XHRpZiAoIWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihsaW5rKSlcbiYjNDM7XHRcdFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaywgY3R4KSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihsaW5rX2NvbmYtXHUwMDNlY2hhbmN0eF9jb25mLFxuQEAgLTIwODksNyAmIzQzOzIxMDQsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbiBcdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbiBcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayA9IGl0ZXIubGluaztcbiBcbi1cdFx0XHRpZiAoV0FSTl9PTihpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaykpKVxuJiM0MztcdFx0XHRpZiAoV0FSTl9PTihpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluayxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGN0eCkpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0aWYgKCFsaW5rLVx1MDAzZXJlc2VydmVkX3JlYWR5KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0JiMzNDssCiAgICAmIzM0O19faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCB3aXRoaW4gdGhlIG1hYzgwMjExIHdpcmVsZXNzIHN1YnN5c3RlbSB0byBwcm9wZXJseSBjaGVjayBpZiB0aGUgbmV3IGNvbnRleHQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgY29udGV4dCBhbmQgaWYgdGhlIHJlcGxhY2UgY29udGV4dHMgbWF0Y2ggZWFjaCBvdGhlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50IGFuZCBjYW4gYmUgcmVhY2hlZCB2aWEgb3BlcmF0aW9ucyBsaWtlIGNoYW5uZWwgc3dpdGNoaW5nIG9yIHJlbGVhc2luZy4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgY3Jhc2hlcyBvY2N1ciBkdXJpbmcgY2hhbm5lbCBjb250ZXh0IHRyYW5zaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2JmOWU1ZjRhMWI1MzFhNDJiNTYyOGNlNmUzY2UyYWY1NzgxNGNiOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDQ6MTM6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2hhbi5jIGIvbmV0L21hYzgwMjExL2NoYW4uYwppbmRleCA1MTUyYjg0YTMzNTc3Li43OTA1N2UxYWQxMDVjIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvY2hhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jaGFuLmMKQEAgLTE3NzAsNyAmIzQzOzE3NzAsOCBAQCBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfYXNzaWduKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKQogfQogCiBzdGF0aWMgYm9vbAotaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKQomIzQzO2llZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaywKJiM0MzsJCQkJCXN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KQogewogCXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay0mZ3Q7c2RhdGE7CiAJc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpvbGRfY3R4LCAqbmV3X2N0eDsKQEAgLTE3ODAsNiAmIzQzOzE3ODEsOSBAQCBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspCiAJbmV3X2N0eCA9IGxpbmstJmd0O3Jlc2VydmVkX2NoYW5jdHg7CiAJb2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGxpbmspOwogCiYjNDM7CWlmIChuZXdfY3R4ICE9IGN0eCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKIAlpZiAoIW9sZF9jdHgpCiAJCXJldHVybiBmYWxzZTsKIApAQCAtMTc5Miw2ICYjNDM7MTc5NiwxMiBAQCBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspCiAJaWYgKG5ld19jdHgtJmd0O3JlcGxhY2Vfc3RhdGUgIT0gSUVFRTgwMjExX0NIQU5DVFhfUkVQTEFDRVNfT1RIRVIpCiAJCXJldHVybiBmYWxzZTsKIAomIzQzOwlpZiAobmV3X2N0eC0mZ3Q7cmVwbGFjZV9jdHggIT0gb2xkX2N0eCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaWYgKG9sZF9jdHgtJmd0O3JlcGxhY2VfY3R4ICE9IG5ld19jdHgpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE4MjEsNyAmIzQzOzE4MzEsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCQl9CiAKIAkJZm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsICZhbXA7aXRlcikgewotCQkJaWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSkKJiM0MzsJCQlpZiAoIWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmssCiYjNDM7CQkJCQkJCQkgICAgIGN0eCkpCiAJCQkJY29udGludWU7CiAKIAkJCW9sZF9jdHggPSBpZWVlODAyMTFfbGlua19nZXRfY2hhbmN0eChpdGVyLmxpbmspOwpAQCAtMTkyMyw3ICYjNDM7MTkzNCw5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKQogCiAJCWZvcl9lYWNoX2NoYW5jdHhfdXNlcl9hc3NpZ25lZChsb2NhbCwgY3R4LSZndDtyZXBsYWNlX2N0eCwgJmFtcDtpdGVyKSB7CiAJCQluX2Fzc2lnbmVkJiM0MzsmIzQzOzsKLQkJCWlmIChpdGVyLmxpbmsgJmFtcDsmYW1wOyBpdGVyLmxpbmstJmd0O3Jlc2VydmVkX2NoYW5jdHgpIHsKJiM0MzsJCQlpZiAoaXRlci5saW5rICZhbXA7JmFtcDsKJiM0MzsJCQkgICAgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluaywKJiM0MzsJCQkJCQkJCSAgICBjdHgpKSB7CiAJCQkJbl9yZXNlcnZlZCYjNDM7JiM0Mzs7CiAJCQkJaWYgKGl0ZXIubGluay0mZ3Q7cmVzZXJ2ZWRfcmVhZHkpCiAJCQkJCW5fcmVhZHkmIzQzOyYjNDM7OwpAQCAtMTk0OCw3ICYjNDM7MTk2MSw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKQogdXNlX3Jlc2VydmVkOgogCQljdHgtJmd0O2NvbmYucmFkYXJfZW5hYmxlZCA9IGZhbHNlOwogCQlmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgJmFtcDtpdGVyKSB7Ci0JCQlpZiAoaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluaykgJmFtcDsmYW1wOwomIzQzOwkJCWlmIChpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rLAomIzQzOwkJCQkJCQkJICAgIGN0eCkgJmFtcDsmYW1wOwogCQkJICAgICFpdGVyLmxpbmstJmd0O3Jlc2VydmVkX3JlYWR5KQogCQkJCXJldHVybiAtRUFHQUlOOwogCkBAIC0xOTg5LDcgJiM0MzsyMDAzLDggQEAgc3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpCiAJCX0KIAogCQlmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgJmFtcDtpdGVyKSB7Ci0JCQlpZiAoIWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmspKQomIzQzOwkJCWlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluaywKJiM0MzsJCQkJCQkJCSAgICAgY3R4KSkKIAkJCQljb250aW51ZTsKIAogCQkJaWVlZTgwMjExX2NoYW5fYndfY2hhbmdlKGxvY2FsLApAQCAtMjAzOCw3ICYjNDM7MjA1Myw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKQogCQkJc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mID0gbGluay0mZ3Q7Y29uZjsKIAkJCXU2NCBjaGFuZ2VkID0gMDsKIAotCQkJaWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaykpCiYjNDM7CQkJaWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaywgY3R4KSkKIAkJCQljb250aW51ZTsKIAogCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGxpbmtfY29uZi0mZ3Q7Y2hhbmN0eF9jb25mLApAQCAtMjA4OSw3ICYjNDM7MjEwNCw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKQogCQlmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgJmFtcDtpdGVyKSB7CiAJCQlzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayA9IGl0ZXIubGluazsKIAotCQkJaWYgKFdBUk5fT04oaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGxpbmspKSkKJiM0MzsJCQlpZiAoV0FSTl9PTihpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaywKJiM0MzsJCQkJCQkJCQkgICAgY3R4KSkpCiAJCQkJY29udGludWU7CiAKIAkJCWlmICghbGluay0mZ3Q7cmVzZXJ2ZWRfcmVhZHkpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgbWFjODAyMTEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvbWFjODAyMTEvY2hhbi5jYC4gSXQgc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIHRoZSBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGEgYHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4YCBhcmd1bWVudCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBjaGVja3MgY29tcGFyaW5nIGBuZXdfY3R4YCBhbmQgYG9sZF9jdHhgIHdpdGggdGhlIHBhc3NlZCBgY3R4YCBhbmQgdGhlaXIgYHJlcGxhY2VfY3R4YCBtZW1iZXJzLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIG1hYzgwMjExLCBhbmQga25vd2luZyB0aGF0IGl0IGNhbiBiZSBmdXp6ZWQgZWZmZWN0aXZlbHkgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZHJpdmluZyB0aGlzIGNoYW5nZS4gVGhlIGFkZGVkIGNoZWNrcyBzdWdnZXN0IGEgZmluZXItZ3JhaW5lZCBjb250cm9sLCBwZXJoYXBzIHJlbGF0ZWQgdG8gY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQgb3IgcmVzZXJ2YXRpb24gY29uc2lzdGVuY3kuCgpUbyB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBtYWM4MDIxMSwgSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgb2J2aW91czogYENPTkZJR19NQUM4MDIxMWAuIFRoYXQgc2hvdWxkIGJlIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGVuLCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBpbiBgbmV0L21hYzgwMjExL0tjb25maWdgIHRvIGdldCBhIGZ1bGwgb3ZlcnZpZXcgb2YgcG9zc2libGUgY29uZmlndXJhdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjpjb21tZW50IFwmIzM0O0NGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNy1cdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxubmV0L21hYzgwMjExL0tjb25maWctMTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTppZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI2Olx0c2VsZWN0IE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMjctXHRkZWZhdWx0IHlcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMyLVx0cHJvbXB0IFwmIzM0O0RlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MzM6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWc6MzQ6XHRkZWZhdWx0IE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTM1LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00NC1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MjpcdGRlZmF1bHQgXCYjMzQ7bWluc3RyZWxfaHRcJiMzNDsgaWYgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNTMtXHRkZWZhdWx0IFwmIzM0O1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1ODpcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0hBU19SQz1uXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02Mi1cdGRlcGVuZHMgb24gS1VOSVRcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYzOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctNjQtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctNzMtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNzgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xubmV0L21hYzgwMjExL0tjb25maWctODAtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjgxOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWc6ODI6XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04My1cdHNlbGVjdCBMRURTX1RSSUdHRVJTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6OTA6XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05MS1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk5Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctMTAwLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTEyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMTEzLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTE4Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTktXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFwmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTM0Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzUtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTQ1Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDYtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTU2Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTctXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIEhUIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTY1Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjYtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzc6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3OC1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTg4Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODktXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTk4LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTk5Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDAtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxMTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjEyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTMtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyNDpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjI1Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjYtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MjM3Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzg6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzOS1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MjUwOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTE6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1Mi1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI2MTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjYyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjMtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzI6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MzpcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctMjc0LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODM6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4NC1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6Mjk1Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTY6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Ny1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDk6XHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMTAtXHRkZWZhdWx0IDBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTAwCgkJCQkJCQlvdXRwdXQ6IDY0CgkJCQkJCQl0aG91Z2h0czogOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCBmdW5jdGlvbi4gSW50ZXJlc3RpbmcsIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCwgd2hpY2ggaXMgZ29vZCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgZGlyZWN0IGltcGFjdC4gVGhlIGltcG9ydGFudCB0aGluZyB0byBjb25zaWRlciBoZXJlIGlzIHRoYXQgaXQmIzM5O3MgYmVpbmcgKnVzZWQqIGJ5IGEgY291cGxlIG9mIG90aGVyIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGBpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmc2AgYW5kIGBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2hgLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2UgY2FsbGluZyBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIGxhcmdlciBtYWM4MDIxMSBmcmFtZXdvcmsuIFRvIGRvIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgaW4gYG5ldC9tYWM4MDIxMS9jaGFuLmNgLiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIHRoZSByZWFjaCBvZiB0aGlzIGNoYW5nZS4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb2YgbW9kaWZ5aW5nIGEgZnVuY3Rpb24gdGhhdCBpcyBsaWtlbHkgY2FsbGVkIGJ5IHNvbWV0aGluZyBmdXJ0aGVyIHVwIHRoZSBjaGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmc3xpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jaGFuLmM9MTc3Mz1pZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0xODA3LVxubmV0L21hYzgwMjExL2NoYW4uYzoxODA4OnN0YXRpYyBpbnQgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE4MDktXHRcdFx0XHQgICAgICBpbnQgbl92aWZzKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTg1Nj1zdGF0aWMgaW50IGllZWU4MDIxMV9jaHN3X3N3aXRjaF9jdHhzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTg5My1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTg5NDpzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTg5NS17XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMDIzLVx0aWYgKG5fdmlmc19zd2l0Y2ggXHUwMDNlIDApIHtcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjAyNDpcdFx0ZXJyID0gaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMobG9jYWwsIG5fdmlmc19zd2l0Y2gpO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMDI1LVx0XHRpZiAoZXJyKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjE2NT12b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE5OS1cdGlmICh1c2VfcmVzZXJ2ZWRfc3dpdGNoKVxubmV0L21hYzgwMjExL2NoYW4uYzoyMjAwOlx0XHRpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2gobG9jYWwpO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMjAxLX1cbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTIzNzE9aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjQxMC1cdCAqIHNkYXRhIGFscmVhZHkgc3dpdGNoZWQgc3VjY2Vzc2Z1bGx5LiBKdXN0IHNwaWxsIGFuIGV4dHJhIHdhcm5pbmcuXG5uZXQvbWFjODAyMTEvY2hhbi5jOjI0MTE6XHQgKiBUaGUgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKCkgYWxyZWFkeSBzdG9wcyBhbGwgbmVjZXNzYXJ5XG5uZXQvbWFjODAyMTEvY2hhbi5jLTI0MTItXHQgKiBpbnRlcmZhY2VzIHVwb24gZmFpbHVyZS5cbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI0MTYtXHQgICAgbmV3X2N0eC1cdTAwM2VyZXBsYWNlX3N0YXRlID09IElFRUU4MDIxMV9DSEFOQ1RYX1JFUExBQ0VTX09USEVSKSB7XG5uZXQvbWFjODAyMTEvY2hhbi5jOjI0MTc6XHRcdGVyciA9IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChsb2NhbCk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTI0MTgtXHRcdGlmIChlcnIgXHUwMDI2XHUwMDI2IGVyciAhPSAtRUFHQUlOKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTExMgoJCQkJCQkJb3V0cHV0OiA1OQoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ2hhbm5lbCBTd2l0Y2ggRnVuY3Rpb24gQ2FsbHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucywgYGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzYCBhbmQgYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAuIFRoZSBmaXJzdCB0aGluZyBJIG5vdGljZWQgaXMgdGhhdCB0aGV5IGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggbWVhbnMgdGhlaXIgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LiBUaGF0IG1lYW5zIEkgaGF2ZSB0byBkaWcgYSBiaXQgZGVlcGVyIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgYXJlIGJlaW5nIHVzZWQgd2l0aGluIHRoaXMgbW9kdWxlLgoKTGV0JiMzOTtzIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHRoZSBjYWxsIHNpdGVzLiBJIGNhbiBzZWUgdGhhdCBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYCBpcyBjYWxsZWQgYnkgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBhbmQgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YC4gVGhvc2UgbmFtZXMgc3VnZ2VzdCBzb21lIGtpbmQgb2YgY2hhbm5lbCByZXNlcnZhdGlvbiBvciBjb250ZXh0IG1hbmFnZW1lbnQsIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgdmlzaWJpbGl0eSBvZiB0aGVzZSBjYWxsZXJzLiBBcmUgdGhleSBleHBvcnRlZCBzeW1ib2xzIHRoYXQgY291bGQgYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBvciBhcmUgdGhleSBhbHNvIGxpbWl0ZWQgaW4gc2NvcGUsIHBlcmhhcHMgYWxzbyBgc3RhdGljYCBvciBvdGhlcndpc2UgY29uZmluZWQgdG8gdGhpcyBzdWJzeXN0ZW0/IElmIHRoZXkmIzM5O3JlIGV4cG9ydGVkLCBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgY2hhaW4gb2YgY2FsbHMgZnVydGhlciB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gSWYgdGhleSYjMzk7cmUgaW50ZXJuYWwsIHRoZW4gSSBoYXZlIGEgbW9yZSBsaW1pdGVkIHZpZXcsIGJ1dCB0aGUgY29udGV4dCBpcyBzdGlsbCBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLiBJJiMzOTtsbCBjaGVjayB0aGUgc3ltYm9sIHRhYmxlcyBhbmQgY3Jvc3MtcmVmZXJlbmNlcyB0byBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsfGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NDQ2Mz1zdGF0aWMgaW50IF9faWVlZTgwMjExX2NzYV9maW5hbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGlua19kYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00NDg4LVxubmV0L21hYzgwMjExL2NmZy5jOjQ0ODk6XHRcdHJldHVybiBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dChsaW5rX2RhdGEpO1xubmV0L21hYzgwMjExL2NmZy5jLTQ0OTAtXHR9XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0xODk0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE2NC1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjE2NTp2b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxubmV0L21hYzgwMjExL2NoYW4uYy0yMTY2LVx0XHRcdFx0ICAgICAgYm9vbCBza2lwX2lkbGVfcmVjYWxjKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjI5MT1pbnQgX2llZWU4MDIxMV9saW5rX3VzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjMzMi1cdGlmICghbG9jYWwtXHUwMDNlaW5fcmVjb25maWcpXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzMzM6XHRcdF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKGxpbmssIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjMzNC1cbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNzAtXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzNzE6aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxubmV0L21hYzgwMjExL2NoYW4uYy0yMzcyLXtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTI0OTg9dm9pZCBpZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA3LVx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihsaW5rLVx1MDAzZWNvbmYtXHUwMDNlY2hhbmN0eF9jb25mKSlcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjUwODpcdFx0X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwobGluaywgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0yNTA5LX1cbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yODMxPWludCBfX211c3RfY2hlY2tcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4MzI6aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjgzMy12b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKTtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yODM2PWllZWU4MDIxMV9saW5rX2NoYW5nZV9jaGFucmVxKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4MzgtXHRcdFx0ICAgICAgdTY0ICpjaGFuZ2VkKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4Mzk6dm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4NDAtXHRcdFx0XHQgICAgICBib29sIHNraXBfaWRsZV9yZWNhbGMpO1xuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmM9NDY1PXN0YXRpYyBpbnQgX2llZWU4MDIxMV9zZXRfYWN0aXZlX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmMtNTEyLVxubmV0L21hYzgwMjExL2xpbmsuYzo1MTM6XHRcdF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKGxpbmssIHRydWUpO1xubmV0L21hYzgwMjExL2xpbmsuYy01MTQtXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0yODc2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9jc2Ffc3dpdGNoX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI5NTAtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI5NTE6XHRcdHJldCA9IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KGxpbmspO1xubmV0L21hYzgwMjExL21sbWUuYy0yOTUyLVx0XHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4ODEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTUFDODAyMTEgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgYmFzZWQgb24gaXRzIGludGVyYWN0aW9uIHdpdGggYGNmZy5jYCwgYGxpbmsuY2AsIGFuZCBgbWxtZS5jYCwgaXQgZGVmaW5pdGVseSB0b3VjaGVzIGNvcmUgTUFDODAyMTEgZnVuY3Rpb25hbGl0eSDigJMgbmFtZWx5LCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgIGFuZCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgLiBJIGNhbiBzZWUgdGhlc2UgYXJlIHJlYWNoYWJsZSwgZm91bmRhdGlvbmFsIGZ1bmN0aW9ucy4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgYnVnIGluIGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gIGJ5IHRpZ2h0ZW5pbmcgdXAgYSBjb250ZXh0IGNoZWNrLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdGhhdCB3YXJyYW50cyBmdXp6aW5nLgoKTXkgcHJpbWFyeSBnb2FsIG5vdyBpcyB0byBpZGVudGlmeSB0aGUgY3J1Y2lhbCBzeW1ib2xzLiBJIHNlZSB0aGF0IGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gLCB0aGUgZnVuY3Rpb24gYmVpbmcgcGF0Y2hlZCwgaXMgKnN0YXRpYyouIEl0cyBkaXJlY3QgY2FsbGVycywgYGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzYCBhbmQgYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAsIGFyZSBhbHNvICpzdGF0aWMqLiAgVGhlIGNhbGwgY2hhaW4gY29udGludWVzIHdpdGggYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAgY2FsbGluZyBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgIGFuZCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgLiBDcml0aWNhbGx5LCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgIGFuZCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgIGFyZSAqbm9uLXN0YXRpYyosIHdoaWNoIG1ha2VzIHRoZW0gaWRlYWwgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gVGhlaXIgbm9uLXN0YXRpYyBuYXR1cmUgbWVhbnMgdGhleSYjMzk7cmUgZXhwb3J0ZWQgYW5kIG1vcmUgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgdGhlIGltbWVkaWF0ZSBzY29wZS4gIEJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnNgIGRvZXNuJiMzOTt0IGhhdmUgYW55IG90aGVyIGltcG9ydGFudCBjYWxsZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NoYW4uYz0xNzczPWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE4MDctXG5uZXQvbWFjODAyMTEvY2hhbi5jOjE4MDg6c3RhdGljIGludCBpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTgwOS1cdFx0XHRcdCAgICAgIGludCBuX3ZpZnMpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0xODk0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjAyMy1cdGlmIChuX3ZpZnNfc3dpdGNoIFx1MDAzZSAwKSB7XG5uZXQvbWFjODAyMTEvY2hhbi5jOjIwMjQ6XHRcdGVyciA9IGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzKGxvY2FsLCBuX3ZpZnNfc3dpdGNoKTtcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjAyNS1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwMzEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSA4MDIuMTEgQ2hhbm5lbCBTd2l0Y2hpbmcgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGNoYW5uZWwgc3dpdGNoaW5nIGlzIGhhbmRsZWQgaW4gdGhpcyA4MDIuMTEgaW1wbGVtZW50YXRpb24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnNgIHNlZW1zIHRvIGJlIGV4Y2x1c2l2ZWx5IGNhbGxlZCBieSBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEl0IG5hcnJvd3MgZG93biB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBzaWduaWZpY2FudGx5LiAgVGhlcmVmb3JlLCBJIHNob3VsZCBiZSBwcmltYXJpbHkgY29uY2VybmVkIHdpdGggYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBhbmQgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YC4KCkdpdmVuIHRoYXQsIEkgdGhpbmsgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YCBzZWVtcyBsaWtlIGEgcHJvbWlzaW5nIHBvaW50IHRvIGZvY3VzIG9uLCBhcyBpdCBzb3VuZHMgbGlrZSB0aGUgZnVuY3Rpb24gd2hlcmUgdGhlIHJlc2VydmVkIGNvbnRleHQgY29tZXMgaW50byBwbGF5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGl0cyBzaWduYXR1cmUgYWxpZ25zIHdpdGggbXkgZXhwZWN0YXRpb25zIGFuZCB0aGF0IHRoZSBmdW5jdGlvbiBpcyBleHBvcnRlZCwgbWFraW5nIGl0IGFjY2Vzc2libGUgZm9yIGFuYWx5c2lzIGFuZCBwb3RlbnRpYWwgaW5zdHJ1bWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIGluIGBuZXQvbWFjODAyMTEvY2hhbi5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jPTIyOTE9aW50IF9pZWVlODAyMTFfbGlua191c2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNzAtXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzNzE6aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxubmV0L21hYzgwMjExL2NoYW4uYy0yMzcyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2MTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTdGF0aWMgTmF0dXJlIG9mIGEgRnVuY3Rpb24gYW5kIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCwgeWVzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IG5vbi1zdGF0aWMuIEFuZCBJIHNlZSB0aGF0IGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAgaXMgYWxzbyBtYXJrZWQgYXMgbm9uLXN0YXRpYy4gR29vZC4gTm93LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGVwZW5kZW5jaWVzIHRoaXMgY29kZSwgd2hpY2ggSSB0aGluayBpcyBhIGBNQUM4MDIxMWAgY29tcG9uZW50LCBoYXMuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgYENPTkZJR19NQUM4MDIxMWAgZGVwZW5kZW5jaWVzLiBBaCwgcmlnaHQuIEl0IGRlcGVuZHMgb24gYENGRzgwMjExYC4gT2theSwgc28gYE1BQzgwMjExYCBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUsIHRoYXQgbWFrZXMgc2Vuc2UuCgpXYWl0LCBJIHNob3VsZCBjb25maXJtIHRoYXQgbm90aGluZyBlbHNlIGlzIHJlcXVpcmVkLiBTaW5jZSB0aGUgY29kZSBpcyBpbiBgbmV0L21hYzgwMjExL2NoYW4uY2AsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvbWFjODAyMTEvTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoYW5cXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9NYWtlZmlsZT01PW1hYzgwMjExLXkgOj0gXFxcbi0tXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtMzItXHR3bWUubyBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjMzOlx0Y2hhbi5vIGFwLm8gXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0zNC1cdHRyYWNlLm8gbWxtZS5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTAzCgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgbWFjODAyMTFgIENoYW5uZWwgQ29udGV4dCBNYW5hZ2VtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBmb2N1c2luZyBvbiB0aGUgYG1hYzgwMjExYCB3aXJlbGVzcyBzdWJzeXN0ZW0sIHdoaWNoIG1ha2VzIHNlbnNlLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCB0b3VjaGVzIGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gLCBhIGZ1bmN0aW9uIHdpdGhpbiB0aGF0IHN1YnN5c3RlbS4gSSBrbm93IGBjaGFuLm9gIGlzIHBhcnQgb2YgYG1hYzgwMjExLXlgLCBhbmQgdGhhdCBnZXRzIGJ1aWx0IHdoZW4gYENPTkZJR19NQUM4MDIxMWAgaXMgZW5hYmxlZC4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgTUFDODAyMTFgLCB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSBzdWZmaWNpZW50LgoKTm93LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IGVudHJ5IHBvaW50cyBhcmUgd2UgZGVhbGluZyB3aXRoPyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgY29kZSBwYXRocyBoZXJlLCByaWdodD8gT2theSwgSSBzZWUgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YCwgYW5kIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGFuZCBmaW5hbGx5IGBpZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgLCB3aGljaCBJIHNlZSBjYWxscyB0aGUgcHJldmlvdXMgb25lLiBHb3QgaXQuIENoYW5uZWwgc3dpdGNoaW5nIG9yIHJlbGVhc2luZyBpcyBob3cgd2UgZ2V0IGhlcmUuCgpTbyB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBsb2dpYyByZWxhdGVkIHRvIGNoYW5uZWwgY29udGV4dCBtYXRjaGluZywgcGFydGljdWxhcmx5IHdpdGhpbiBhIGNvbnRleHQgcmVzZXJ2YXRpb24gc2NlbmFyaW8uIE1lYW5pbmcgd2UgbmVlZCB0byBmdXp6IHRvIG1ha2Ugc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QsIGFuZCB3ZSBhcmUgbm90IGdvaW5nIHRvIHNlZSBhbnkgY3Jhc2hlcyBvciByZWdyZXNzaW9ucyBkdXJpbmcgdGhlIHRyYW5zaXRpb25zLgoKUmlnaHQsIHNvIGZvciBmdXp6aW5nLCBJJiMzOTtsbCBkZWZpbml0ZWx5IHdhbnQgdG8gZm9jdXMgb24gYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YCBhbmQgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBhcyB0aGUga2V5IGZvY3VzIHN5bWJvbHMuIFRob3NlIHNlZW0gdG8gYmUgdGhlIGNvcmUgZW50cnkgcG9pbnRzIGZvciB0aGlzIGNoYW5nZS4gV2UmIzM5O2xsIG5lZWQgdG8gZ2VuZXJhdGUgdGVzdCBjYXNlcyB0aGF0IHRyaWdnZXIgY2hhbm5lbCBjb250ZXh0IHRyYW5zaXRpb25zIGFuZCB2ZXJpZnkgdGhhdCB0aGUgY29udGV4dCBjb21wYXJpc29ucyBhcmUgY29ycmVjdCBhbmQgdGhhdCB0aGUgcmVwbGFjZW1lbnQgY29udGV4dHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LCBhbmQgdGhlbiBtYWtlIHN1cmUgdG8gdHJhY2sgY292ZXJhZ2Ugb2YgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIGVuc3VyZSBpdCBpcyByb2J1c3QuIFRpbWUgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCByZWdyZXNzIGFueXRoaW5nISBOb3csIGxldCYjMzk7cyBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dCYjMzQ7LAogICAgJiMzNDtfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgaW4gYGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbmAgd2l0aGluIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0gdG8gcHJvcGVybHkgY2hlY2sgaWYgdGhlIG5ldyBjb250ZXh0IG1hdGNoZXMgdGhlIHByb3ZpZGVkIGNvbnRleHQgYW5kIGlmIHRoZSByZXBsYWNlIGNvbnRleHRzIG1hdGNoIGVhY2ggb3RoZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCBhbmQgY2FuIGJlIHJlYWNoZWQgdmlhIG9wZXJhdGlvbnMgbGlrZSBjaGFubmVsIHN3aXRjaGluZyBvciByZWxlYXNpbmcuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGNyYXNoZXMgb2NjdXIgZHVyaW5nIGNoYW5uZWwgY29udGV4dCB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dCYjMzQ7LAogICAgJiMzNDtfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgaW4gYGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbmAgd2l0aGluIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0gdG8gcHJvcGVybHkgY2hlY2sgaWYgdGhlIG5ldyBjb250ZXh0IG1hdGNoZXMgdGhlIHByb3ZpZGVkIGNvbnRleHQgYW5kIGlmIHRoZSByZXBsYWNlIGNvbnRleHRzIG1hdGNoIGVhY2ggb3RoZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCBhbmQgY2FuIGJlIHJlYWNoZWQgdmlhIG9wZXJhdGlvbnMgbGlrZSBjaGFubmVsIHN3aXRjaGluZyBvciByZWxlYXNpbmcuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGNyYXNoZXMgb2NjdXIgZHVyaW5nIGNoYW5uZWwgY29udGV4dCB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjA4LjYxMjc3NjM0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NTYwNTk2Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRcIixcbiAgICBcIl9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGluIGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gIHdpdGhpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIHRvIHByb3Blcmx5IGNoZWNrIGlmIHRoZSBuZXcgY29udGV4dCBtYXRjaGVzIHRoZSBwcm92aWRlZCBjb250ZXh0IGFuZCBpZiB0aGUgcmVwbGFjZSBjb250ZXh0cyBtYXRjaCBlYWNoIG90aGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQgYW5kIGNhbiBiZSByZWFjaGVkIHZpYSBvcGVyYXRpb25zIGxpa2UgY2hhbm5lbCBzd2l0Y2hpbmcgb3IgcmVsZWFzaW5nLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBjcmFzaGVzIG9jY3VyIGR1cmluZyBjaGFubmVsIGNvbnRleHQgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjA4LjYxMjc4MTc5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY1OTc3NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2JmOWU1ZjRhMWI1MzFhNDJiNTYyOGNlNmUzY2UyYWY1NzgxNGNiOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDA0OjEzOjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jXFxuaW5kZXggNTE1MmI4NGEzMzU3Ny4uNzkwNTdlMWFkMTA1YyAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvY2hhbi5jXFxuKysrIGIvbmV0L21hYzgwMjExL2NoYW4uY1xcbkBAIC0xNzcwLDcgKzE3NzAsOCBAQCBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfYXNzaWduKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbiB9XFxuIFxcbiBzdGF0aWMgYm9vbFxcbi1pZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuK2llZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBsaW5rLVxcdTAwM2VzZGF0YTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpvbGRfY3R4LCAqbmV3X2N0eDtcXG5AQCAtMTc4MCw2ICsxNzgxLDkgQEAgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbiBcXHRuZXdfY3R4ID0gbGluay1cXHUwMDNlcmVzZXJ2ZWRfY2hhbmN0eDtcXG4gXFx0b2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGxpbmspO1xcbiBcXG4rXFx0aWYgKG5ld19jdHggIT0gY3R4KVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbiBcXHRpZiAoIW9sZF9jdHgpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuQEAgLTE3OTIsNiArMTc5NiwxMiBAQCBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuIFxcdGlmIChuZXdfY3R4LVxcdTAwM2VyZXBsYWNlX3N0YXRlICE9IElFRUU4MDIxMV9DSEFOQ1RYX1JFUExBQ0VTX09USEVSKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbitcXHRpZiAobmV3X2N0eC1cXHUwMDNlcmVwbGFjZV9jdHggIT0gb2xkX2N0eClcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aWYgKG9sZF9jdHgtXFx1MDAzZXJlcGxhY2VfY3R4ICE9IG5ld19jdHgpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbkBAIC0xODIxLDcgKzE4MzEsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXFx1MDAyNml0ZXIpIHtcXG4tXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSlcXG4rXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGN0eCkpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0b2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGl0ZXIubGluayk7XFxuQEAgLTE5MjMsNyArMTkzNCw5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbiBcXG4gXFx0XFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX2Fzc2lnbmVkKGxvY2FsLCBjdHgtXFx1MDAzZXJlcGxhY2VfY3R4LCBcXHUwMDI2aXRlcikge1xcbiBcXHRcXHRcXHRuX2Fzc2lnbmVkKys7XFxuLVxcdFxcdFxcdGlmIChpdGVyLmxpbmsgXFx1MDAyNlxcdTAwMjYgaXRlci5saW5rLVxcdTAwM2VyZXNlcnZlZF9jaGFuY3R4KSB7XFxuK1xcdFxcdFxcdGlmIChpdGVyLmxpbmsgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0ICAgIGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBjdHgpKSB7XFxuIFxcdFxcdFxcdFxcdG5fcmVzZXJ2ZWQrKztcXG4gXFx0XFx0XFx0XFx0aWYgKGl0ZXIubGluay1cXHUwMDNlcmVzZXJ2ZWRfcmVhZHkpXFxuIFxcdFxcdFxcdFxcdFxcdG5fcmVhZHkrKztcXG5AQCAtMTk0OCw3ICsxOTYxLDggQEAgc3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuIHVzZV9yZXNlcnZlZDpcXG4gXFx0XFx0Y3R4LVxcdTAwM2Vjb25mLnJhZGFyX2VuYWJsZWQgPSBmYWxzZTtcXG4gXFx0XFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFxcdTAwMjZpdGVyKSB7XFxuLVxcdFxcdFxcdGlmIChpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRpZiAoaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluayxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGN0eCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgICFpdGVyLmxpbmstXFx1MDAzZXJlc2VydmVkX3JlYWR5KVxcbiBcXHRcXHRcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG4gXFxuQEAgLTE5ODksNyArMjAwMyw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXFx1MDAyNml0ZXIpIHtcXG4tXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSlcXG4rXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGN0eCkpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0aWVlZTgwMjExX2NoYW5fYndfY2hhbmdlKGxvY2FsLFxcbkBAIC0yMDM4LDcgKzIwNTMsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4gXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mID0gbGluay1cXHUwMDNlY29uZjtcXG4gXFx0XFx0XFx0dTY0IGNoYW5nZWQgPSAwO1xcbiBcXG4tXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaykpXFxuK1xcdFxcdFxcdGlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGxpbmssIGN0eCkpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGxpbmtfY29uZi1cXHUwMDNlY2hhbmN0eF9jb25mLFxcbkBAIC0yMDg5LDcgKzIxMDQsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4gXFx0XFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFxcdTAwMjZpdGVyKSB7XFxuIFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rID0gaXRlci5saW5rO1xcbiBcXG4tXFx0XFx0XFx0aWYgKFdBUk5fT04oaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGxpbmspKSlcXG4rXFx0XFx0XFx0aWYgKFdBUk5fT04oaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGxpbmssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBjdHgpKSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRcXHRpZiAoIWxpbmstXFx1MDAzZXJlc2VydmVkX3JlYWR5KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxMzowOC45Nzk0MTUwMzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNTE5Mzk0Nzg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0XCIsXG4gICAgXCJfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCB3aXRoaW4gdGhlIG1hYzgwMjExIHdpcmVsZXNzIHN1YnN5c3RlbSB0byBwcm9wZXJseSBjaGVjayBpZiB0aGUgbmV3IGNvbnRleHQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgY29udGV4dCBhbmQgaWYgdGhlIHJlcGxhY2UgY29udGV4dHMgbWF0Y2ggZWFjaCBvdGhlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50IGFuZCBjYW4gYmUgcmVhY2hlZCB2aWEgb3BlcmF0aW9ucyBsaWtlIGNoYW5uZWwgc3dpdGNoaW5nIG9yIHJlbGVhc2luZy4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgY3Jhc2hlcyBvY2N1ciBkdXJpbmcgY2hhbm5lbCBjb250ZXh0IHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjYmY5ZTVmNGExYjUzMWE0MmI1NjI4Y2U2ZTNjZTJhZjU3ODE0Y2I5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNDoxMzowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5pbmRleCA1MTUyYjg0YTMzNTc3Li43OTA1N2UxYWQxMDVjIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NoYW4uY1xuKysrIGIvbmV0L21hYzgwMjExL2NoYW4uY1xuQEAgLTE3NzAsNyArMTc3MCw4IEBAIGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9hc3NpZ24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4gfVxuIFxuIHN0YXRpYyBib29sXG4taWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuK2llZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbitcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBsaW5rLVx1MDAzZXNkYXRhO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpvbGRfY3R4LCAqbmV3X2N0eDtcbkBAIC0xNzgwLDYgKzE3ODEsOSBAQCBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4gXHRuZXdfY3R4ID0gbGluay1cdTAwM2VyZXNlcnZlZF9jaGFuY3R4O1xuIFx0b2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGxpbmspO1xuIFxuK1x0aWYgKG5ld19jdHggIT0gY3R4KVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4gXHRpZiAoIW9sZF9jdHgpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC0xNzkyLDYgKzE3OTYsMTIgQEAgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuIFx0aWYgKG5ld19jdHgtXHUwMDNlcmVwbGFjZV9zdGF0ZSAhPSBJRUVFODAyMTFfQ0hBTkNUWF9SRVBMQUNFU19PVEhFUilcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuK1x0aWYgKG5ld19jdHgtXHUwMDNlcmVwbGFjZV9jdHggIT0gb2xkX2N0eClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKG9sZF9jdHgtXHUwMDNlcmVwbGFjZV9jdHggIT0gbmV3X2N0eClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuQEAgLTE4MjEsNyArMTgzMSw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXHRcdH1cbiBcbiBcdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbi1cdFx0XHRpZiAoIWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmspKVxuK1x0XHRcdGlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluayxcbitcdFx0XHRcdFx0XHRcdFx0ICAgICBjdHgpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0b2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGl0ZXIubGluayk7XG5AQCAtMTkyMyw3ICsxOTM0LDkgQEAgc3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4gXG4gXHRcdGZvcl9lYWNoX2NoYW5jdHhfdXNlcl9hc3NpZ25lZChsb2NhbCwgY3R4LVx1MDAzZXJlcGxhY2VfY3R4LCBcdTAwMjZpdGVyKSB7XG4gXHRcdFx0bl9hc3NpZ25lZCsrO1xuLVx0XHRcdGlmIChpdGVyLmxpbmsgXHUwMDI2XHUwMDI2IGl0ZXIubGluay1cdTAwM2VyZXNlcnZlZF9jaGFuY3R4KSB7XG4rXHRcdFx0aWYgKGl0ZXIubGluayBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluayxcbitcdFx0XHRcdFx0XHRcdFx0ICAgIGN0eCkpIHtcbiBcdFx0XHRcdG5fcmVzZXJ2ZWQrKztcbiBcdFx0XHRcdGlmIChpdGVyLmxpbmstXHUwMDNlcmVzZXJ2ZWRfcmVhZHkpXG4gXHRcdFx0XHRcdG5fcmVhZHkrKztcbkBAIC0xOTQ4LDcgKzE5NjEsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbiB1c2VfcmVzZXJ2ZWQ6XG4gXHRcdGN0eC1cdTAwM2Vjb25mLnJhZGFyX2VuYWJsZWQgPSBmYWxzZTtcbiBcdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbi1cdFx0XHRpZiAoaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluaykgXHUwMDI2XHUwMDI2XG4rXHRcdFx0aWYgKGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmssXG4rXHRcdFx0XHRcdFx0XHRcdCAgICBjdHgpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAhaXRlci5saW5rLVx1MDAzZXJlc2VydmVkX3JlYWR5KVxuIFx0XHRcdFx0cmV0dXJuIC1FQUdBSU47XG4gXG5AQCAtMTk4OSw3ICsyMDAzLDggQEAgc3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4gXHRcdH1cbiBcbiBcdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbi1cdFx0XHRpZiAoIWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmspKVxuK1x0XHRcdGlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluayxcbitcdFx0XHRcdFx0XHRcdFx0ICAgICBjdHgpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0aWVlZTgwMjExX2NoYW5fYndfY2hhbmdlKGxvY2FsLFxuQEAgLTIwMzgsNyArMjA1Myw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuIFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZiA9IGxpbmstXHUwMDNlY29uZjtcbiBcdFx0XHR1NjQgY2hhbmdlZCA9IDA7XG4gXG4tXHRcdFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaykpXG4rXHRcdFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaywgY3R4KSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihsaW5rX2NvbmYtXHUwMDNlY2hhbmN0eF9jb25mLFxuQEAgLTIwODksNyArMjEwNCw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuIFx0XHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXHUwMDI2aXRlcikge1xuIFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rID0gaXRlci5saW5rO1xuIFxuLVx0XHRcdGlmIChXQVJOX09OKGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihsaW5rKSkpXG4rXHRcdFx0aWYgKFdBUk5fT04oaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGxpbmssXG4rXHRcdFx0XHRcdFx0XHRcdFx0ICAgIGN0eCkpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0aWYgKCFsaW5rLVx1MDAzZXJlc2VydmVkX3JlYWR5KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MDguOTc5NDE2Mjc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2MDg2ODQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBtYWM4MDIxMSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvbWFjODAyMTEvY2hhbi5jYC4gSXQgc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIHRoZSBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGEgYHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4YCBhcmd1bWVudCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBjaGVja3MgY29tcGFyaW5nIGBuZXdfY3R4YCBhbmQgYG9sZF9jdHhgIHdpdGggdGhlIHBhc3NlZCBgY3R4YCBhbmQgdGhlaXIgYHJlcGxhY2VfY3R4YCBtZW1iZXJzLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtLlxuXG5HaXZlbiB0aGF0IHRoaXMgaXMgbWFjODAyMTEsIGFuZCBrbm93aW5nIHRoYXQgaXQgY2FuIGJlIGZ1enplZCBlZmZlY3RpdmVseSB3aXRoIGBtYWM4MDIxMV9od3NpbWAsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGRyaXZpbmcgdGhpcyBjaGFuZ2UuIFRoZSBhZGRlZCBjaGVja3Mgc3VnZ2VzdCBhIGZpbmVyLWdyYWluZWQgY29udHJvbCwgcGVyaGFwcyByZWxhdGVkIHRvIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50IG9yIHJlc2VydmF0aW9uIGNvbnNpc3RlbmN5LlxuXG5UbyB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBtYWM4MDIxMSwgSSdsbCBzdGFydCB3aXRoIHRoZSBvYnZpb3VzOiBgQ09ORklHX01BQzgwMjExYC4gVGhhdCBzaG91bGQgYmUgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgdG8gZ2V0IGEgZnVsbCBvdmVydmlldyBvZiBwb3NzaWJsZSBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MTYuNzQwMjg5MzgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzkxMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2OmNvbW1lbnQgXFxcIkNGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3LVxcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5OmlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNjpcXHRzZWxlY3QgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjctXFx0ZGVmYXVsdCB5XFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMi1cXHRwcm9tcHQgXFxcIkRlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjM0OlxcdGRlZmF1bHQgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTM1LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ0LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxubmV0L21hYzgwMjExL0tjb25maWc6NTI6XFx0ZGVmYXVsdCBcXFwibWluc3RyZWxfaHRcXFwiIGlmIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01My1cXHRkZWZhdWx0IFxcXCJcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6NTg6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9IQVNfUkM9blxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYyLVxcdGRlcGVuZHMgb24gS1VOSVRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctNjQtXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcyOlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03My1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6ODE6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjgyOlxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04My1cXHRzZWxlY3QgTEVEU19UUklHR0VSU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6OTA6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctOTEtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5OTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IFRSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDAtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMy1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTktXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MTM0OlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzNS1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDU6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ2LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NjpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTctXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MTY1OlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Ni1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzgtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4ODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODktXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk5OlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwMC1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MjExOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxMjpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTMtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyNDpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjU6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjI2LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzg6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjM5LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTA6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWc6MjUxOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1Mi1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI2MTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNjI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjYzLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcyOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzQtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODQtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5NTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTY6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk3LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA5OlxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMxMC1cXHRkZWZhdWx0IDBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MTYuNzg2MDg3MzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjcwMjAyMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wbGljYXRpb25zIG9mIGEgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCBmdW5jdGlvbi4gSW50ZXJlc3RpbmcsIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0cyBzY29wZSBpcyBsaW1pdGVkLCB3aGljaCBpcyBnb29kIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBkaXJlY3QgaW1wYWN0LiBUaGUgaW1wb3J0YW50IHRoaW5nIHRvIGNvbnNpZGVyIGhlcmUgaXMgdGhhdCBpdCdzIGJlaW5nICp1c2VkKiBieSBhIGNvdXBsZSBvZiBvdGhlciBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnNgIGFuZCBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYC5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2UgY2FsbGluZyBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIGxhcmdlciBtYWM4MDIxMSBmcmFtZXdvcmsuIFRvIGRvIHRoYXQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBpbiBgbmV0L21hYzgwMjExL2NoYW4uY2AuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIHJlYWNoIG9mIHRoaXMgY2hhbmdlLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiBtb2RpZnlpbmcgYSBmdW5jdGlvbiB0aGF0IGlzIGxpa2VseSBjYWxsZWQgYnkgc29tZXRoaW5nIGZ1cnRoZXIgdXAgdGhlIGNoYWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTAwLCJPdXRwdXRUb2tlbnMiOjY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MjAuNDU2MjkyOTc3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Mjc3NTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzfGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvY2hhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9MTc3Mz1pZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE4MDctXFxubmV0L21hYzgwMjExL2NoYW4uYzoxODA4OnN0YXRpYyBpbnQgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy0xODA5LVxcdFxcdFxcdFxcdCAgICAgIGludCBuX3ZpZnMpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTE4NTY9c3RhdGljIGludCBpZWVlODAyMTFfY2hzd19zd2l0Y2hfY3R4cyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTg5My1cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjE4OTQ6c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxubmV0L21hYzgwMjExL2NoYW4uYy0xODk1LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjAyMy1cXHRpZiAobl92aWZzX3N3aXRjaCBcXHUwMDNlIDApIHtcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIwMjQ6XFx0XFx0ZXJyID0gaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMobG9jYWwsIG5fdmlmc19zd2l0Y2gpO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjAyNS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0yMTY1PXZvaWQgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxOTktXFx0aWYgKHVzZV9yZXNlcnZlZF9zd2l0Y2gpXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMjAwOlxcdFxcdGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChsb2NhbCk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0yMjAxLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjM3MT1pbnQgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI0MTAtXFx0ICogc2RhdGEgYWxyZWFkeSBzd2l0Y2hlZCBzdWNjZXNzZnVsbHkuIEp1c3Qgc3BpbGwgYW4gZXh0cmEgd2FybmluZy5cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjI0MTE6XFx0ICogVGhlIGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaCgpIGFscmVhZHkgc3RvcHMgYWxsIG5lY2Vzc2FyeVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjQxMi1cXHQgKiBpbnRlcmZhY2VzIHVwb24gZmFpbHVyZS5cXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjQxNi1cXHQgICAgbmV3X2N0eC1cXHUwMDNlcmVwbGFjZV9zdGF0ZSA9PSBJRUVFODAyMTFfQ0hBTkNUWF9SRVBMQUNFU19PVEhFUikge1xcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjQxNzpcXHRcXHRlcnIgPSBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2gobG9jYWwpO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjQxOC1cXHRcXHRpZiAoZXJyIFxcdTAwMjZcXHUwMDI2IGVyciAhPSAtRUFHQUlOKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjIwLjUwMDU3NTA2NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjU4NzY5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIENoYW5uZWwgU3dpdGNoIEZ1bmN0aW9uIENhbGxzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnNgIGFuZCBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYC4gVGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlZCBpcyB0aGF0IHRoZXkgYXJlIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBtZWFucyB0aGVpciBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQuIFRoYXQgbWVhbnMgSSBoYXZlIHRvIGRpZyBhIGJpdCBkZWVwZXIgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBhcmUgYmVpbmcgdXNlZCB3aXRoaW4gdGhpcyBtb2R1bGUuXG5cbkxldCdzIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHRoZSBjYWxsIHNpdGVzLiBJIGNhbiBzZWUgdGhhdCBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYCBpcyBjYWxsZWQgYnkgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBhbmQgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YC4gVGhvc2UgbmFtZXMgc3VnZ2VzdCBzb21lIGtpbmQgb2YgY2hhbm5lbCByZXNlcnZhdGlvbiBvciBjb250ZXh0IG1hbmFnZW1lbnQsIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5Ob3csIEkgbmVlZCB0byBjb25maXJtIHRoZSB2aXNpYmlsaXR5IG9mIHRoZXNlIGNhbGxlcnMuIEFyZSB0aGV5IGV4cG9ydGVkIHN5bWJvbHMgdGhhdCBjb3VsZCBiZSB1c2VkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwsIG9yIGFyZSB0aGV5IGFsc28gbGltaXRlZCBpbiBzY29wZSwgcGVyaGFwcyBhbHNvIGBzdGF0aWNgIG9yIG90aGVyd2lzZSBjb25maW5lZCB0byB0aGlzIHN1YnN5c3RlbT8gSWYgdGhleSdyZSBleHBvcnRlZCwgSSdsbCBuZWVkIHRvIGZvbGxvdyB0aGUgY2hhaW4gb2YgY2FsbHMgZnVydGhlciB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gSWYgdGhleSdyZSBpbnRlcm5hbCwgdGhlbiBJIGhhdmUgYSBtb3JlIGxpbWl0ZWQgdmlldywgYnV0IHRoZSBjb250ZXh0IGlzIHN0aWxsIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsuIEknbGwgY2hlY2sgdGhlIHN5bWJvbCB0YWJsZXMgYW5kIGNyb3NzLXJlZmVyZW5jZXMgdG8gc2VlIHdoYXQgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTExMiwiT3V0cHV0VG9rZW5zIjo1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxMzoyNC42MjY0NTQxMjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2OTY2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWx8aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9NDQ2Mz1zdGF0aWMgaW50IF9faWVlZTgwMjExX2NzYV9maW5hbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGlua19kYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ0ODgtXFxubmV0L21hYzgwMjExL2NmZy5jOjQ0ODk6XFx0XFx0cmV0dXJuIGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KGxpbmtfZGF0YSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ0OTAtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0xODk0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMTY0LVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjE2NTp2b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE2Ni1cXHRcXHRcXHRcXHQgICAgICBib29sIHNraXBfaWRsZV9yZWNhbGMpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTIyOTE9aW50IF9pZWVlODAyMTFfbGlua191c2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjMzMi1cXHRpZiAoIWxvY2FsLVxcdTAwM2Vpbl9yZWNvbmZpZylcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzMzM6XFx0XFx0X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwobGluaywgZmFsc2UpO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjMzNC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjM3MC1cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzNzE6aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjM3Mi17XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTI0OTg9dm9pZCBpZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI1MDctXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihsaW5rLVxcdTAwM2Vjb25mLVxcdTAwM2VjaGFuY3R4X2NvbmYpKVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjUwODpcXHRcXHRfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChsaW5rLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA5LX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI4MzE9aW50IF9fbXVzdF9jaGVja1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4MzI6aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4MzMtdm9pZCBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yODM2PWllZWU4MDIxMV9saW5rX2NoYW5nZV9jaGFucmVxKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjgzOC1cXHRcXHRcXHQgICAgICB1NjQgKmNoYW5nZWQpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4Mzk6dm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yODQwLVxcdFxcdFxcdFxcdCAgICAgIGJvb2wgc2tpcF9pZGxlX3JlY2FsYyk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jPTQ2NT1zdGF0aWMgaW50IF9pZWVlODAyMTFfc2V0X2FjdGl2ZV9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9saW5rLmMtNTEyLVxcbm5ldC9tYWM4MDIxMS9saW5rLmM6NTEzOlxcdFxcdF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKGxpbmssIHRydWUpO1xcbm5ldC9tYWM4MDIxMS9saW5rLmMtNTE0LVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0yODc2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9jc2Ffc3dpdGNoX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjk1MC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI5NTE6XFx0XFx0cmV0ID0gaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQobGluayk7XFxubmV0L21hYzgwMjExL21sbWUuYy0yOTUyLVxcdFxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MjQuNjc3MTU1MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MTcyODE4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTUFDODAyMTEgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGJhc2VkIG9uIGl0cyBpbnRlcmFjdGlvbiB3aXRoIGBjZmcuY2AsIGBsaW5rLmNgLCBhbmQgYG1sbWUuY2AsIGl0IGRlZmluaXRlbHkgdG91Y2hlcyBjb3JlIE1BQzgwMjExIGZ1bmN0aW9uYWxpdHkg4oCTIG5hbWVseSwgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YCBhbmQgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYC4gSSBjYW4gc2VlIHRoZXNlIGFyZSByZWFjaGFibGUsIGZvdW5kYXRpb25hbCBmdW5jdGlvbnMuIFRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIGJ1ZyBpbiBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCBieSB0aWdodGVuaW5nIHVwIGEgY29udGV4dCBjaGVjay4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRoYXQgd2FycmFudHMgZnV6emluZy5cblxuTXkgcHJpbWFyeSBnb2FsIG5vdyBpcyB0byBpZGVudGlmeSB0aGUgY3J1Y2lhbCBzeW1ib2xzLiBJIHNlZSB0aGF0IGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gLCB0aGUgZnVuY3Rpb24gYmVpbmcgcGF0Y2hlZCwgaXMgKnN0YXRpYyouIEl0cyBkaXJlY3QgY2FsbGVycywgYGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzYCBhbmQgYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAsIGFyZSBhbHNvICpzdGF0aWMqLiAgVGhlIGNhbGwgY2hhaW4gY29udGludWVzIHdpdGggYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAgY2FsbGluZyBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgIGFuZCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgLiBDcml0aWNhbGx5LCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgIGFuZCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgIGFyZSAqbm9uLXN0YXRpYyosIHdoaWNoIG1ha2VzIHRoZW0gaWRlYWwgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gVGhlaXIgbm9uLXN0YXRpYyBuYXR1cmUgbWVhbnMgdGhleSdyZSBleHBvcnRlZCBhbmQgbW9yZSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSB0aGUgaW1tZWRpYXRlIHNjb3BlLiAgQmVmb3JlIEkgcHJvY2VlZCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmc2AgZG9lc24ndCBoYXZlIGFueSBvdGhlciBpbXBvcnRhbnQgY2FsbGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4ODEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MzAuMzk0NDQxMjc4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjcxMjQxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9MTc3Mz1pZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE4MDctXFxubmV0L21hYzgwMjExL2NoYW4uYzoxODA4OnN0YXRpYyBpbnQgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy0xODA5LVxcdFxcdFxcdFxcdCAgICAgIGludCBuX3ZpZnMpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTE4OTQ9c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIwMjMtXFx0aWYgKG5fdmlmc19zd2l0Y2ggXFx1MDAzZSAwKSB7XFxubmV0L21hYzgwMjExL2NoYW4uYzoyMDI0OlxcdFxcdGVyciA9IGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzKGxvY2FsLCBuX3ZpZnNfc3dpdGNoKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIwMjUtXFx0XFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MzAuNDQ3MTYyOTE1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzY3Nzc0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSA4MDIuMTEgQ2hhbm5lbCBTd2l0Y2hpbmcgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBjaGFubmVsIHN3aXRjaGluZyBpcyBoYW5kbGVkIGluIHRoaXMgODAyLjExIGltcGxlbWVudGF0aW9uLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzYCBzZWVtcyB0byBiZSBleGNsdXNpdmVseSBjYWxsZWQgYnkgYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAuIFRoYXQncyBpbXBvcnRhbnQuIEl0IG5hcnJvd3MgZG93biB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBzaWduaWZpY2FudGx5LiAgVGhlcmVmb3JlLCBJIHNob3VsZCBiZSBwcmltYXJpbHkgY29uY2VybmVkIHdpdGggYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBhbmQgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YC5cblxuR2l2ZW4gdGhhdCwgSSB0aGluayBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgcG9pbnQgdG8gZm9jdXMgb24sIGFzIGl0IHNvdW5kcyBsaWtlIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgcmVzZXJ2ZWQgY29udGV4dCBjb21lcyBpbnRvIHBsYXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIHNpZ25hdHVyZSBhbGlnbnMgd2l0aCBteSBleHBlY3RhdGlvbnMgYW5kIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIGV4cG9ydGVkLCBtYWtpbmcgaXQgYWNjZXNzaWJsZSBmb3IgYW5hbHlzaXMgYW5kIHBvdGVudGlhbCBpbnN0cnVtZW50YXRpb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBpbiBgbmV0L21hYzgwMjExL2NoYW4uY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDMxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjM0LjI4Mzk0MzkxMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NjM2NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NoYW4uYz0yMjkxPWludCBfaWVlZTgwMjExX2xpbmtfdXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNzAtXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMzcxOmludCBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNzIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxMzozNC4zMzg4MTU1NjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyMzMyMzA3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN0YXRpYyBOYXR1cmUgb2YgYSBGdW5jdGlvbiBhbmQgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCwgeWVzLCBpdCdzIGRlZmluaXRlbHkgbm9uLXN0YXRpYy4gQW5kIEkgc2VlIHRoYXQgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBpcyBhbHNvIG1hcmtlZCBhcyBub24tc3RhdGljLiBHb29kLiBOb3csIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkZXBlbmRlbmNpZXMgdGhpcyBjb2RlLCB3aGljaCBJIHRoaW5rIGlzIGEgYE1BQzgwMjExYCBjb21wb25lbnQsIGhhcy5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgYENPTkZJR19NQUM4MDIxMWAgZGVwZW5kZW5jaWVzLiBBaCwgcmlnaHQuIEl0IGRlcGVuZHMgb24gYENGRzgwMjExYC4gT2theSwgc28gYE1BQzgwMjExYCBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUsIHRoYXQgbWFrZXMgc2Vuc2UuXG5cbldhaXQsIEkgc2hvdWxkIGNvbmZpcm0gdGhhdCBub3RoaW5nIGVsc2UgaXMgcmVxdWlyZWQuIFNpbmNlIHRoZSBjb2RlIGlzIGluIGBuZXQvbWFjODAyMTEvY2hhbi5jYCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9tYWM4MDIxMS9NYWtlZmlsZWAgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjYxNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxMzozNy44NjIxNDE2NDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODIxNDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoYW5cXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9NYWtlZmlsZT01PW1hYzgwMjExLXkgOj0gXFxcXFxcbi0tXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTMyLVxcdHdtZS5vIFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGU6MzM6XFx0Y2hhbi5vIGFwLm8gXFxcXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0zNC1cXHR0cmFjZS5vIG1sbWUubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjM3LjkxMTk3MDUwMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTcxODYzNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIGBtYWM4MDIxMWAgQ2hhbm5lbCBDb250ZXh0IE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIGZvY3VzaW5nIG9uIHRoZSBgbWFjODAyMTFgIHdpcmVsZXNzIHN1YnN5c3RlbSwgd2hpY2ggbWFrZXMgc2Vuc2UuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIHRvdWNoZXMgYGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbmAsIGEgZnVuY3Rpb24gd2l0aGluIHRoYXQgc3Vic3lzdGVtLiBJIGtub3cgYGNoYW4ub2AgaXMgcGFydCBvZiBgbWFjODAyMTEteWAsIGFuZCB0aGF0IGdldHMgYnVpbHQgd2hlbiBgQ09ORklHX01BQzgwMjExYCBpcyBlbmFibGVkLiBTaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggYE1BQzgwMjExYCwgdGhhdCBjb25maWd1cmF0aW9uIGlzIGNsZWFybHkgc3VmZmljaWVudC5cblxuTm93LCBsZXQncyBzZWUsIHdoYXQgZW50cnkgcG9pbnRzIGFyZSB3ZSBkZWFsaW5nIHdpdGg/IEknbSB0aGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIGNvZGUgcGF0aHMgaGVyZSwgcmlnaHQ/IE9rYXksIEkgc2VlIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dGAsIGFuZCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgLCBhbmQgZmluYWxseSBgaWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCwgd2hpY2ggSSBzZWUgY2FsbHMgdGhlIHByZXZpb3VzIG9uZS4gR290IGl0LiBDaGFubmVsIHN3aXRjaGluZyBvciByZWxlYXNpbmcgaXMgaG93IHdlIGdldCBoZXJlLlxuXG5TbyB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBsb2dpYyByZWxhdGVkIHRvIGNoYW5uZWwgY29udGV4dCBtYXRjaGluZywgcGFydGljdWxhcmx5IHdpdGhpbiBhIGNvbnRleHQgcmVzZXJ2YXRpb24gc2NlbmFyaW8uIE1lYW5pbmcgd2UgbmVlZCB0byBmdXp6IHRvIG1ha2Ugc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QsIGFuZCB3ZSBhcmUgbm90IGdvaW5nIHRvIHNlZSBhbnkgY3Jhc2hlcyBvciByZWdyZXNzaW9ucyBkdXJpbmcgdGhlIHRyYW5zaXRpb25zLlxuXG5SaWdodCwgc28gZm9yIGZ1enppbmcsIEknbGwgZGVmaW5pdGVseSB3YW50IHRvIGZvY3VzIG9uIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dGAgYW5kIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAgYXMgdGhlIGtleSBmb2N1cyBzeW1ib2xzLiBUaG9zZSBzZWVtIHRvIGJlIHRoZSBjb3JlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBjaGFuZ2UuIFdlJ2xsIG5lZWQgdG8gZ2VuZXJhdGUgdGVzdCBjYXNlcyB0aGF0IHRyaWdnZXIgY2hhbm5lbCBjb250ZXh0IHRyYW5zaXRpb25zIGFuZCB2ZXJpZnkgdGhhdCB0aGUgY29udGV4dCBjb21wYXJpc29ucyBhcmUgY29ycmVjdCBhbmQgdGhhdCB0aGUgcmVwbGFjZW1lbnQgY29udGV4dHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LCBhbmQgdGhlbiBtYWtlIHN1cmUgdG8gdHJhY2sgY292ZXJhZ2Ugb2YgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIGVuc3VyZSBpdCBpcyByb2J1c3QuIFRpbWUgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHJlZ3Jlc3MgYW55dGhpbmchIE5vdywgbGV0J3MgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMDMsIk91dHB1dFRva2VucyI6MTY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjQ0LjA4MzgzNjk0MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NTIyNTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0XCIsXG4gICAgXCJfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCB3aXRoaW4gdGhlIG1hYzgwMjExIHdpcmVsZXNzIHN1YnN5c3RlbSB0byBwcm9wZXJseSBjaGVjayBpZiB0aGUgbmV3IGNvbnRleHQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgY29udGV4dCBhbmQgaWYgdGhlIHJlcGxhY2UgY29udGV4dHMgbWF0Y2ggZWFjaCBvdGhlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50IGFuZCBjYW4gYmUgcmVhY2hlZCB2aWEgb3BlcmF0aW9ucyBsaWtlIGNoYW5uZWwgc3dpdGNoaW5nIG9yIHJlbGVhc2luZy4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgY3Jhc2hlcyBvY2N1ciBkdXJpbmcgY2hhbm5lbCBjb250ZXh0IHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRcIixcbiAgICBcIl9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGluIGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gIHdpdGhpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIHRvIHByb3Blcmx5IGNoZWNrIGlmIHRoZSBuZXcgY29udGV4dCBtYXRjaGVzIHRoZSBwcm92aWRlZCBjb250ZXh0IGFuZCBpZiB0aGUgcmVwbGFjZSBjb250ZXh0cyBtYXRjaCBlYWNoIG90aGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQgYW5kIGNhbiBiZSByZWFjaGVkIHZpYSBvcGVyYXRpb25zIGxpa2UgY2hhbm5lbCBzd2l0Y2hpbmcgb3IgcmVsZWFzaW5nLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBjcmFzaGVzIG9jY3VyIGR1cmluZyBjaGFubmVsIGNvbnRleHQgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcchb9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 03:56:05 +0000 UTC FinishedAt: 2026-08-03 04:13:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "86c3125c75d79ee7fb4d045bb9ada4c5b067eacc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "86c3125c75d79ee7fb4d045bb9ada4c5b067eacc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "99c6ebda-8676-4d28-88ae-7ba4a48762a3" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_link_use_reserved_context", "__ieee80211_link_release_channel" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQmIzM0OywKICAgICYjMzQ7X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGluIGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gIHdpdGhpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIHRvIHByb3Blcmx5IGNoZWNrIGlmIHRoZSBuZXcgY29udGV4dCBtYXRjaGVzIHRoZSBwcm92aWRlZCBjb250ZXh0IGFuZCBpZiB0aGUgcmVwbGFjZSBjb250ZXh0cyBtYXRjaCBlYWNoIG90aGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQgYW5kIGNhbiBiZSByZWFjaGVkIHZpYSBvcGVyYXRpb25zIGxpa2UgY2hhbm5lbCBzd2l0Y2hpbmcgb3IgcmVsZWFzaW5nLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBjcmFzaGVzIG9jY3VyIGR1cmluZyBjaGFubmVsIGNvbnRleHQgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjYmY5ZTVmNGExYjUzMWE0MmI1NjI4Y2U2ZTNjZTJhZjU3ODE0Y2I5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNDoxMzowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2hhbi5jIGIvbmV0L21hYzgwMjExL2NoYW4uY1xuaW5kZXggNTE1MmI4NGEzMzU3Ny4uNzkwNTdlMWFkMTA1YyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9jaGFuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jaGFuLmNcbkBAIC0xNzcwLDcgJiM0MzsxNzcwLDggQEAgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2Fzc2lnbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbiB9XG4gXG4gc3RhdGljIGJvb2xcbi1pZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4mIzQzO2llZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay1cdTAwM2VzZGF0YTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqb2xkX2N0eCwgKm5ld19jdHg7XG5AQCAtMTc4MCw2ICYjNDM7MTc4MSw5IEBAIGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbiBcdG5ld19jdHggPSBsaW5rLVx1MDAzZXJlc2VydmVkX2NoYW5jdHg7XG4gXHRvbGRfY3R4ID0gaWVlZTgwMjExX2xpbmtfZ2V0X2NoYW5jdHgobGluayk7XG4gXG4mIzQzO1x0aWYgKG5ld19jdHggIT0gY3R4KVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiBcdGlmICghb2xkX2N0eClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuQEAgLTE3OTIsNiAmIzQzOzE3OTYsMTIgQEAgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuIFx0aWYgKG5ld19jdHgtXHUwMDNlcmVwbGFjZV9zdGF0ZSAhPSBJRUVFODAyMTFfQ0hBTkNUWF9SRVBMQUNFU19PVEhFUilcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuJiM0MztcdGlmIChuZXdfY3R4LVx1MDAzZXJlcGxhY2VfY3R4ICE9IG9sZF9jdHgpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmIChvbGRfY3R4LVx1MDAzZXJlcGxhY2VfY3R4ICE9IG5ld19jdHgpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuQEAgLTE4MjEsNyAmIzQzOzE4MzEsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFx0XHR9XG4gXG4gXHRcdGZvcl9lYWNoX2NoYW5jdHhfdXNlcl9yZXNlcnZlZChsb2NhbCwgY3R4LCBcdTAwMjZpdGVyKSB7XG4tXHRcdFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSlcbiYjNDM7XHRcdFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0ICAgICBjdHgpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0b2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGl0ZXIubGluayk7XG5AQCAtMTkyMyw3ICYjNDM7MTkzNCw5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuIFxuIFx0XHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfYXNzaWduZWQobG9jYWwsIGN0eC1cdTAwM2VyZXBsYWNlX2N0eCwgXHUwMDI2aXRlcikge1xuIFx0XHRcdG5fYXNzaWduZWQmIzQzOyYjNDM7O1xuLVx0XHRcdGlmIChpdGVyLmxpbmsgXHUwMDI2XHUwMDI2IGl0ZXIubGluay1cdTAwM2VyZXNlcnZlZF9jaGFuY3R4KSB7XG4mIzQzO1x0XHRcdGlmIChpdGVyLmxpbmsgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0ICAgIGN0eCkpIHtcbiBcdFx0XHRcdG5fcmVzZXJ2ZWQmIzQzOyYjNDM7O1xuIFx0XHRcdFx0aWYgKGl0ZXIubGluay1cdTAwM2VyZXNlcnZlZF9yZWFkeSlcbiBcdFx0XHRcdFx0bl9yZWFkeSYjNDM7JiM0Mzs7XG5AQCAtMTk0OCw3ICYjNDM7MTk2MSw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuIHVzZV9yZXNlcnZlZDpcbiBcdFx0Y3R4LVx1MDAzZWNvbmYucmFkYXJfZW5hYmxlZCA9IGZhbHNlO1xuIFx0XHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXHUwMDI2aXRlcikge1xuLVx0XHRcdGlmIChpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0aWYgKGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmssXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHQgICAgY3R4KSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgIWl0ZXIubGluay1cdTAwM2VyZXNlcnZlZF9yZWFkeSlcbiBcdFx0XHRcdHJldHVybiAtRUFHQUlOO1xuIFxuQEAgLTE5ODksNyAmIzQzOzIwMDMsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbiBcdFx0fVxuIFxuIFx0XHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXHUwMDI2aXRlcikge1xuLVx0XHRcdGlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluaykpXG4mIzQzO1x0XHRcdGlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluayxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgICAgY3R4KSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdGllZWU4MDIxMV9jaGFuX2J3X2NoYW5nZShsb2NhbCxcbkBAIC0yMDM4LDcgJiM0MzsyMDUzLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4gXHRcdFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mID0gbGluay1cdTAwM2Vjb25mO1xuIFx0XHRcdHU2NCBjaGFuZ2VkID0gMDtcbiBcbi1cdFx0XHRpZiAoIWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihsaW5rKSlcbiYjNDM7XHRcdFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaywgY3R4KSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihsaW5rX2NvbmYtXHUwMDNlY2hhbmN0eF9jb25mLFxuQEAgLTIwODksNyAmIzQzOzIxMDQsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbiBcdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbiBcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayA9IGl0ZXIubGluaztcbiBcbi1cdFx0XHRpZiAoV0FSTl9PTihpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaykpKVxuJiM0MztcdFx0XHRpZiAoV0FSTl9PTihpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluayxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGN0eCkpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0aWYgKCFsaW5rLVx1MDAzZXJlc2VydmVkX3JlYWR5KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0JiMzNDssCiAgICAmIzM0O19faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCB3aXRoaW4gdGhlIG1hYzgwMjExIHdpcmVsZXNzIHN1YnN5c3RlbSB0byBwcm9wZXJseSBjaGVjayBpZiB0aGUgbmV3IGNvbnRleHQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgY29udGV4dCBhbmQgaWYgdGhlIHJlcGxhY2UgY29udGV4dHMgbWF0Y2ggZWFjaCBvdGhlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50IGFuZCBjYW4gYmUgcmVhY2hlZCB2aWEgb3BlcmF0aW9ucyBsaWtlIGNoYW5uZWwgc3dpdGNoaW5nIG9yIHJlbGVhc2luZy4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgY3Jhc2hlcyBvY2N1ciBkdXJpbmcgY2hhbm5lbCBjb250ZXh0IHRyYW5zaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2JmOWU1ZjRhMWI1MzFhNDJiNTYyOGNlNmUzY2UyYWY1NzgxNGNiOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDQ6MTM6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2hhbi5jIGIvbmV0L21hYzgwMjExL2NoYW4uYwppbmRleCA1MTUyYjg0YTMzNTc3Li43OTA1N2UxYWQxMDVjIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvY2hhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jaGFuLmMKQEAgLTE3NzAsNyAmIzQzOzE3NzAsOCBAQCBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfYXNzaWduKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKQogfQogCiBzdGF0aWMgYm9vbAotaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKQomIzQzO2llZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaywKJiM0MzsJCQkJCXN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KQogewogCXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay0mZ3Q7c2RhdGE7CiAJc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpvbGRfY3R4LCAqbmV3X2N0eDsKQEAgLTE3ODAsNiAmIzQzOzE3ODEsOSBAQCBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspCiAJbmV3X2N0eCA9IGxpbmstJmd0O3Jlc2VydmVkX2NoYW5jdHg7CiAJb2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGxpbmspOwogCiYjNDM7CWlmIChuZXdfY3R4ICE9IGN0eCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKIAlpZiAoIW9sZF9jdHgpCiAJCXJldHVybiBmYWxzZTsKIApAQCAtMTc5Miw2ICYjNDM7MTc5NiwxMiBAQCBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspCiAJaWYgKG5ld19jdHgtJmd0O3JlcGxhY2Vfc3RhdGUgIT0gSUVFRTgwMjExX0NIQU5DVFhfUkVQTEFDRVNfT1RIRVIpCiAJCXJldHVybiBmYWxzZTsKIAomIzQzOwlpZiAobmV3X2N0eC0mZ3Q7cmVwbGFjZV9jdHggIT0gb2xkX2N0eCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaWYgKG9sZF9jdHgtJmd0O3JlcGxhY2VfY3R4ICE9IG5ld19jdHgpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE4MjEsNyAmIzQzOzE4MzEsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCQl9CiAKIAkJZm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsICZhbXA7aXRlcikgewotCQkJaWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSkKJiM0MzsJCQlpZiAoIWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmssCiYjNDM7CQkJCQkJCQkgICAgIGN0eCkpCiAJCQkJY29udGludWU7CiAKIAkJCW9sZF9jdHggPSBpZWVlODAyMTFfbGlua19nZXRfY2hhbmN0eChpdGVyLmxpbmspOwpAQCAtMTkyMyw3ICYjNDM7MTkzNCw5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKQogCiAJCWZvcl9lYWNoX2NoYW5jdHhfdXNlcl9hc3NpZ25lZChsb2NhbCwgY3R4LSZndDtyZXBsYWNlX2N0eCwgJmFtcDtpdGVyKSB7CiAJCQluX2Fzc2lnbmVkJiM0MzsmIzQzOzsKLQkJCWlmIChpdGVyLmxpbmsgJmFtcDsmYW1wOyBpdGVyLmxpbmstJmd0O3Jlc2VydmVkX2NoYW5jdHgpIHsKJiM0MzsJCQlpZiAoaXRlci5saW5rICZhbXA7JmFtcDsKJiM0MzsJCQkgICAgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluaywKJiM0MzsJCQkJCQkJCSAgICBjdHgpKSB7CiAJCQkJbl9yZXNlcnZlZCYjNDM7JiM0Mzs7CiAJCQkJaWYgKGl0ZXIubGluay0mZ3Q7cmVzZXJ2ZWRfcmVhZHkpCiAJCQkJCW5fcmVhZHkmIzQzOyYjNDM7OwpAQCAtMTk0OCw3ICYjNDM7MTk2MSw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKQogdXNlX3Jlc2VydmVkOgogCQljdHgtJmd0O2NvbmYucmFkYXJfZW5hYmxlZCA9IGZhbHNlOwogCQlmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgJmFtcDtpdGVyKSB7Ci0JCQlpZiAoaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluaykgJmFtcDsmYW1wOwomIzQzOwkJCWlmIChpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rLAomIzQzOwkJCQkJCQkJICAgIGN0eCkgJmFtcDsmYW1wOwogCQkJICAgICFpdGVyLmxpbmstJmd0O3Jlc2VydmVkX3JlYWR5KQogCQkJCXJldHVybiAtRUFHQUlOOwogCkBAIC0xOTg5LDcgJiM0MzsyMDAzLDggQEAgc3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpCiAJCX0KIAogCQlmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgJmFtcDtpdGVyKSB7Ci0JCQlpZiAoIWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmspKQomIzQzOwkJCWlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluaywKJiM0MzsJCQkJCQkJCSAgICAgY3R4KSkKIAkJCQljb250aW51ZTsKIAogCQkJaWVlZTgwMjExX2NoYW5fYndfY2hhbmdlKGxvY2FsLApAQCAtMjAzOCw3ICYjNDM7MjA1Myw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKQogCQkJc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mID0gbGluay0mZ3Q7Y29uZjsKIAkJCXU2NCBjaGFuZ2VkID0gMDsKIAotCQkJaWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaykpCiYjNDM7CQkJaWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaywgY3R4KSkKIAkJCQljb250aW51ZTsKIAogCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGxpbmtfY29uZi0mZ3Q7Y2hhbmN0eF9jb25mLApAQCAtMjA4OSw3ICYjNDM7MjEwNCw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKQogCQlmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgJmFtcDtpdGVyKSB7CiAJCQlzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayA9IGl0ZXIubGluazsKIAotCQkJaWYgKFdBUk5fT04oaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGxpbmspKSkKJiM0MzsJCQlpZiAoV0FSTl9PTihpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaywKJiM0MzsJCQkJCQkJCQkgICAgY3R4KSkpCiAJCQkJY29udGludWU7CiAKIAkJCWlmICghbGluay0mZ3Q7cmVzZXJ2ZWRfcmVhZHkpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgbWFjODAyMTEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvbWFjODAyMTEvY2hhbi5jYC4gSXQgc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIHRoZSBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGEgYHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4YCBhcmd1bWVudCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBjaGVja3MgY29tcGFyaW5nIGBuZXdfY3R4YCBhbmQgYG9sZF9jdHhgIHdpdGggdGhlIHBhc3NlZCBgY3R4YCBhbmQgdGhlaXIgYHJlcGxhY2VfY3R4YCBtZW1iZXJzLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIG1hYzgwMjExLCBhbmQga25vd2luZyB0aGF0IGl0IGNhbiBiZSBmdXp6ZWQgZWZmZWN0aXZlbHkgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZHJpdmluZyB0aGlzIGNoYW5nZS4gVGhlIGFkZGVkIGNoZWNrcyBzdWdnZXN0IGEgZmluZXItZ3JhaW5lZCBjb250cm9sLCBwZXJoYXBzIHJlbGF0ZWQgdG8gY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQgb3IgcmVzZXJ2YXRpb24gY29uc2lzdGVuY3kuCgpUbyB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBtYWM4MDIxMSwgSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgb2J2aW91czogYENPTkZJR19NQUM4MDIxMWAuIFRoYXQgc2hvdWxkIGJlIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGVuLCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBpbiBgbmV0L21hYzgwMjExL0tjb25maWdgIHRvIGdldCBhIGZ1bGwgb3ZlcnZpZXcgb2YgcG9zc2libGUgY29uZmlndXJhdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjpjb21tZW50IFwmIzM0O0NGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNy1cdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxubmV0L21hYzgwMjExL0tjb25maWctMTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTppZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI2Olx0c2VsZWN0IE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMjctXHRkZWZhdWx0IHlcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMyLVx0cHJvbXB0IFwmIzM0O0RlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MzM6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWc6MzQ6XHRkZWZhdWx0IE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTM1LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00NC1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MjpcdGRlZmF1bHQgXCYjMzQ7bWluc3RyZWxfaHRcJiMzNDsgaWYgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNTMtXHRkZWZhdWx0IFwmIzM0O1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1ODpcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0hBU19SQz1uXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02Mi1cdGRlcGVuZHMgb24gS1VOSVRcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYzOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctNjQtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctNzMtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNzgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xubmV0L21hYzgwMjExL0tjb25maWctODAtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjgxOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWc6ODI6XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04My1cdHNlbGVjdCBMRURTX1RSSUdHRVJTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6OTA6XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05MS1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk5Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctMTAwLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTEyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMTEzLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTE4Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTktXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFwmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTM0Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzUtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTQ1Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDYtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTU2Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTctXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIEhUIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTY1Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjYtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzc6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3OC1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTg4Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODktXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTk4LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTk5Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDAtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxMTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjEyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTMtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyNDpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjI1Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjYtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MjM3Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzg6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzOS1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MjUwOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTE6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1Mi1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI2MTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjYyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjMtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzI6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MzpcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctMjc0LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODM6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4NC1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6Mjk1Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTY6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Ny1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDk6XHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMTAtXHRkZWZhdWx0IDBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTAwCgkJCQkJCQlvdXRwdXQ6IDY0CgkJCQkJCQl0aG91Z2h0czogOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCBmdW5jdGlvbi4gSW50ZXJlc3RpbmcsIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCwgd2hpY2ggaXMgZ29vZCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgZGlyZWN0IGltcGFjdC4gVGhlIGltcG9ydGFudCB0aGluZyB0byBjb25zaWRlciBoZXJlIGlzIHRoYXQgaXQmIzM5O3MgYmVpbmcgKnVzZWQqIGJ5IGEgY291cGxlIG9mIG90aGVyIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGBpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmc2AgYW5kIGBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2hgLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2UgY2FsbGluZyBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIGxhcmdlciBtYWM4MDIxMSBmcmFtZXdvcmsuIFRvIGRvIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgaW4gYG5ldC9tYWM4MDIxMS9jaGFuLmNgLiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIHRoZSByZWFjaCBvZiB0aGlzIGNoYW5nZS4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb2YgbW9kaWZ5aW5nIGEgZnVuY3Rpb24gdGhhdCBpcyBsaWtlbHkgY2FsbGVkIGJ5IHNvbWV0aGluZyBmdXJ0aGVyIHVwIHRoZSBjaGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmc3xpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jaGFuLmM9MTc3Mz1pZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0xODA3LVxubmV0L21hYzgwMjExL2NoYW4uYzoxODA4OnN0YXRpYyBpbnQgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE4MDktXHRcdFx0XHQgICAgICBpbnQgbl92aWZzKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTg1Nj1zdGF0aWMgaW50IGllZWU4MDIxMV9jaHN3X3N3aXRjaF9jdHhzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTg5My1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTg5NDpzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTg5NS17XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMDIzLVx0aWYgKG5fdmlmc19zd2l0Y2ggXHUwMDNlIDApIHtcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjAyNDpcdFx0ZXJyID0gaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMobG9jYWwsIG5fdmlmc19zd2l0Y2gpO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMDI1LVx0XHRpZiAoZXJyKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjE2NT12b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE5OS1cdGlmICh1c2VfcmVzZXJ2ZWRfc3dpdGNoKVxubmV0L21hYzgwMjExL2NoYW4uYzoyMjAwOlx0XHRpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2gobG9jYWwpO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMjAxLX1cbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTIzNzE9aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjQxMC1cdCAqIHNkYXRhIGFscmVhZHkgc3dpdGNoZWQgc3VjY2Vzc2Z1bGx5LiBKdXN0IHNwaWxsIGFuIGV4dHJhIHdhcm5pbmcuXG5uZXQvbWFjODAyMTEvY2hhbi5jOjI0MTE6XHQgKiBUaGUgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKCkgYWxyZWFkeSBzdG9wcyBhbGwgbmVjZXNzYXJ5XG5uZXQvbWFjODAyMTEvY2hhbi5jLTI0MTItXHQgKiBpbnRlcmZhY2VzIHVwb24gZmFpbHVyZS5cbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI0MTYtXHQgICAgbmV3X2N0eC1cdTAwM2VyZXBsYWNlX3N0YXRlID09IElFRUU4MDIxMV9DSEFOQ1RYX1JFUExBQ0VTX09USEVSKSB7XG5uZXQvbWFjODAyMTEvY2hhbi5jOjI0MTc6XHRcdGVyciA9IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChsb2NhbCk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTI0MTgtXHRcdGlmIChlcnIgXHUwMDI2XHUwMDI2IGVyciAhPSAtRUFHQUlOKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTExMgoJCQkJCQkJb3V0cHV0OiA1OQoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ2hhbm5lbCBTd2l0Y2ggRnVuY3Rpb24gQ2FsbHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucywgYGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzYCBhbmQgYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAuIFRoZSBmaXJzdCB0aGluZyBJIG5vdGljZWQgaXMgdGhhdCB0aGV5IGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggbWVhbnMgdGhlaXIgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LiBUaGF0IG1lYW5zIEkgaGF2ZSB0byBkaWcgYSBiaXQgZGVlcGVyIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgYXJlIGJlaW5nIHVzZWQgd2l0aGluIHRoaXMgbW9kdWxlLgoKTGV0JiMzOTtzIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHRoZSBjYWxsIHNpdGVzLiBJIGNhbiBzZWUgdGhhdCBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYCBpcyBjYWxsZWQgYnkgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBhbmQgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YC4gVGhvc2UgbmFtZXMgc3VnZ2VzdCBzb21lIGtpbmQgb2YgY2hhbm5lbCByZXNlcnZhdGlvbiBvciBjb250ZXh0IG1hbmFnZW1lbnQsIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgdmlzaWJpbGl0eSBvZiB0aGVzZSBjYWxsZXJzLiBBcmUgdGhleSBleHBvcnRlZCBzeW1ib2xzIHRoYXQgY291bGQgYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBvciBhcmUgdGhleSBhbHNvIGxpbWl0ZWQgaW4gc2NvcGUsIHBlcmhhcHMgYWxzbyBgc3RhdGljYCBvciBvdGhlcndpc2UgY29uZmluZWQgdG8gdGhpcyBzdWJzeXN0ZW0/IElmIHRoZXkmIzM5O3JlIGV4cG9ydGVkLCBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgY2hhaW4gb2YgY2FsbHMgZnVydGhlciB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gSWYgdGhleSYjMzk7cmUgaW50ZXJuYWwsIHRoZW4gSSBoYXZlIGEgbW9yZSBsaW1pdGVkIHZpZXcsIGJ1dCB0aGUgY29udGV4dCBpcyBzdGlsbCBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLiBJJiMzOTtsbCBjaGVjayB0aGUgc3ltYm9sIHRhYmxlcyBhbmQgY3Jvc3MtcmVmZXJlbmNlcyB0byBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsfGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NDQ2Mz1zdGF0aWMgaW50IF9faWVlZTgwMjExX2NzYV9maW5hbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGlua19kYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00NDg4LVxubmV0L21hYzgwMjExL2NmZy5jOjQ0ODk6XHRcdHJldHVybiBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dChsaW5rX2RhdGEpO1xubmV0L21hYzgwMjExL2NmZy5jLTQ0OTAtXHR9XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0xODk0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE2NC1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjE2NTp2b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxubmV0L21hYzgwMjExL2NoYW4uYy0yMTY2LVx0XHRcdFx0ICAgICAgYm9vbCBza2lwX2lkbGVfcmVjYWxjKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjI5MT1pbnQgX2llZWU4MDIxMV9saW5rX3VzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjMzMi1cdGlmICghbG9jYWwtXHUwMDNlaW5fcmVjb25maWcpXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzMzM6XHRcdF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKGxpbmssIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjMzNC1cbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNzAtXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzNzE6aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxubmV0L21hYzgwMjExL2NoYW4uYy0yMzcyLXtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTI0OTg9dm9pZCBpZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA3LVx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihsaW5rLVx1MDAzZWNvbmYtXHUwMDNlY2hhbmN0eF9jb25mKSlcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjUwODpcdFx0X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwobGluaywgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0yNTA5LX1cbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yODMxPWludCBfX211c3RfY2hlY2tcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4MzI6aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjgzMy12b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKTtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yODM2PWllZWU4MDIxMV9saW5rX2NoYW5nZV9jaGFucmVxKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4MzgtXHRcdFx0ICAgICAgdTY0ICpjaGFuZ2VkKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4Mzk6dm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4NDAtXHRcdFx0XHQgICAgICBib29sIHNraXBfaWRsZV9yZWNhbGMpO1xuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmM9NDY1PXN0YXRpYyBpbnQgX2llZWU4MDIxMV9zZXRfYWN0aXZlX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmMtNTEyLVxubmV0L21hYzgwMjExL2xpbmsuYzo1MTM6XHRcdF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKGxpbmssIHRydWUpO1xubmV0L21hYzgwMjExL2xpbmsuYy01MTQtXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0yODc2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9jc2Ffc3dpdGNoX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI5NTAtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI5NTE6XHRcdHJldCA9IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KGxpbmspO1xubmV0L21hYzgwMjExL21sbWUuYy0yOTUyLVx0XHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4ODEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTUFDODAyMTEgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgYmFzZWQgb24gaXRzIGludGVyYWN0aW9uIHdpdGggYGNmZy5jYCwgYGxpbmsuY2AsIGFuZCBgbWxtZS5jYCwgaXQgZGVmaW5pdGVseSB0b3VjaGVzIGNvcmUgTUFDODAyMTEgZnVuY3Rpb25hbGl0eSDigJMgbmFtZWx5LCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgIGFuZCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgLiBJIGNhbiBzZWUgdGhlc2UgYXJlIHJlYWNoYWJsZSwgZm91bmRhdGlvbmFsIGZ1bmN0aW9ucy4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgYnVnIGluIGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gIGJ5IHRpZ2h0ZW5pbmcgdXAgYSBjb250ZXh0IGNoZWNrLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdGhhdCB3YXJyYW50cyBmdXp6aW5nLgoKTXkgcHJpbWFyeSBnb2FsIG5vdyBpcyB0byBpZGVudGlmeSB0aGUgY3J1Y2lhbCBzeW1ib2xzLiBJIHNlZSB0aGF0IGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gLCB0aGUgZnVuY3Rpb24gYmVpbmcgcGF0Y2hlZCwgaXMgKnN0YXRpYyouIEl0cyBkaXJlY3QgY2FsbGVycywgYGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzYCBhbmQgYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAsIGFyZSBhbHNvICpzdGF0aWMqLiAgVGhlIGNhbGwgY2hhaW4gY29udGludWVzIHdpdGggYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAgY2FsbGluZyBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgIGFuZCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgLiBDcml0aWNhbGx5LCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgIGFuZCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgIGFyZSAqbm9uLXN0YXRpYyosIHdoaWNoIG1ha2VzIHRoZW0gaWRlYWwgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gVGhlaXIgbm9uLXN0YXRpYyBuYXR1cmUgbWVhbnMgdGhleSYjMzk7cmUgZXhwb3J0ZWQgYW5kIG1vcmUgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgdGhlIGltbWVkaWF0ZSBzY29wZS4gIEJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnNgIGRvZXNuJiMzOTt0IGhhdmUgYW55IG90aGVyIGltcG9ydGFudCBjYWxsZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NoYW4uYz0xNzczPWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE4MDctXG5uZXQvbWFjODAyMTEvY2hhbi5jOjE4MDg6c3RhdGljIGludCBpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTgwOS1cdFx0XHRcdCAgICAgIGludCBuX3ZpZnMpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0xODk0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjAyMy1cdGlmIChuX3ZpZnNfc3dpdGNoIFx1MDAzZSAwKSB7XG5uZXQvbWFjODAyMTEvY2hhbi5jOjIwMjQ6XHRcdGVyciA9IGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzKGxvY2FsLCBuX3ZpZnNfc3dpdGNoKTtcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjAyNS1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwMzEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSA4MDIuMTEgQ2hhbm5lbCBTd2l0Y2hpbmcgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGNoYW5uZWwgc3dpdGNoaW5nIGlzIGhhbmRsZWQgaW4gdGhpcyA4MDIuMTEgaW1wbGVtZW50YXRpb24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnNgIHNlZW1zIHRvIGJlIGV4Y2x1c2l2ZWx5IGNhbGxlZCBieSBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEl0IG5hcnJvd3MgZG93biB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBzaWduaWZpY2FudGx5LiAgVGhlcmVmb3JlLCBJIHNob3VsZCBiZSBwcmltYXJpbHkgY29uY2VybmVkIHdpdGggYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBhbmQgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YC4KCkdpdmVuIHRoYXQsIEkgdGhpbmsgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YCBzZWVtcyBsaWtlIGEgcHJvbWlzaW5nIHBvaW50IHRvIGZvY3VzIG9uLCBhcyBpdCBzb3VuZHMgbGlrZSB0aGUgZnVuY3Rpb24gd2hlcmUgdGhlIHJlc2VydmVkIGNvbnRleHQgY29tZXMgaW50byBwbGF5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGl0cyBzaWduYXR1cmUgYWxpZ25zIHdpdGggbXkgZXhwZWN0YXRpb25zIGFuZCB0aGF0IHRoZSBmdW5jdGlvbiBpcyBleHBvcnRlZCwgbWFraW5nIGl0IGFjY2Vzc2libGUgZm9yIGFuYWx5c2lzIGFuZCBwb3RlbnRpYWwgaW5zdHJ1bWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIGluIGBuZXQvbWFjODAyMTEvY2hhbi5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jPTIyOTE9aW50IF9pZWVlODAyMTFfbGlua191c2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNzAtXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzNzE6aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxubmV0L21hYzgwMjExL2NoYW4uYy0yMzcyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2MTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTdGF0aWMgTmF0dXJlIG9mIGEgRnVuY3Rpb24gYW5kIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCwgeWVzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IG5vbi1zdGF0aWMuIEFuZCBJIHNlZSB0aGF0IGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAgaXMgYWxzbyBtYXJrZWQgYXMgbm9uLXN0YXRpYy4gR29vZC4gTm93LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGVwZW5kZW5jaWVzIHRoaXMgY29kZSwgd2hpY2ggSSB0aGluayBpcyBhIGBNQUM4MDIxMWAgY29tcG9uZW50LCBoYXMuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgYENPTkZJR19NQUM4MDIxMWAgZGVwZW5kZW5jaWVzLiBBaCwgcmlnaHQuIEl0IGRlcGVuZHMgb24gYENGRzgwMjExYC4gT2theSwgc28gYE1BQzgwMjExYCBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUsIHRoYXQgbWFrZXMgc2Vuc2UuCgpXYWl0LCBJIHNob3VsZCBjb25maXJtIHRoYXQgbm90aGluZyBlbHNlIGlzIHJlcXVpcmVkLiBTaW5jZSB0aGUgY29kZSBpcyBpbiBgbmV0L21hYzgwMjExL2NoYW4uY2AsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvbWFjODAyMTEvTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoYW5cXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9NYWtlZmlsZT01PW1hYzgwMjExLXkgOj0gXFxcbi0tXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtMzItXHR3bWUubyBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjMzOlx0Y2hhbi5vIGFwLm8gXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0zNC1cdHRyYWNlLm8gbWxtZS5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTAzCgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgbWFjODAyMTFgIENoYW5uZWwgQ29udGV4dCBNYW5hZ2VtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBmb2N1c2luZyBvbiB0aGUgYG1hYzgwMjExYCB3aXJlbGVzcyBzdWJzeXN0ZW0sIHdoaWNoIG1ha2VzIHNlbnNlLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCB0b3VjaGVzIGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gLCBhIGZ1bmN0aW9uIHdpdGhpbiB0aGF0IHN1YnN5c3RlbS4gSSBrbm93IGBjaGFuLm9gIGlzIHBhcnQgb2YgYG1hYzgwMjExLXlgLCBhbmQgdGhhdCBnZXRzIGJ1aWx0IHdoZW4gYENPTkZJR19NQUM4MDIxMWAgaXMgZW5hYmxlZC4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgTUFDODAyMTFgLCB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSBzdWZmaWNpZW50LgoKTm93LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IGVudHJ5IHBvaW50cyBhcmUgd2UgZGVhbGluZyB3aXRoPyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgY29kZSBwYXRocyBoZXJlLCByaWdodD8gT2theSwgSSBzZWUgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YCwgYW5kIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGFuZCBmaW5hbGx5IGBpZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgLCB3aGljaCBJIHNlZSBjYWxscyB0aGUgcHJldmlvdXMgb25lLiBHb3QgaXQuIENoYW5uZWwgc3dpdGNoaW5nIG9yIHJlbGVhc2luZyBpcyBob3cgd2UgZ2V0IGhlcmUuCgpTbyB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBsb2dpYyByZWxhdGVkIHRvIGNoYW5uZWwgY29udGV4dCBtYXRjaGluZywgcGFydGljdWxhcmx5IHdpdGhpbiBhIGNvbnRleHQgcmVzZXJ2YXRpb24gc2NlbmFyaW8uIE1lYW5pbmcgd2UgbmVlZCB0byBmdXp6IHRvIG1ha2Ugc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QsIGFuZCB3ZSBhcmUgbm90IGdvaW5nIHRvIHNlZSBhbnkgY3Jhc2hlcyBvciByZWdyZXNzaW9ucyBkdXJpbmcgdGhlIHRyYW5zaXRpb25zLgoKUmlnaHQsIHNvIGZvciBmdXp6aW5nLCBJJiMzOTtsbCBkZWZpbml0ZWx5IHdhbnQgdG8gZm9jdXMgb24gYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YCBhbmQgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBhcyB0aGUga2V5IGZvY3VzIHN5bWJvbHMuIFRob3NlIHNlZW0gdG8gYmUgdGhlIGNvcmUgZW50cnkgcG9pbnRzIGZvciB0aGlzIGNoYW5nZS4gV2UmIzM5O2xsIG5lZWQgdG8gZ2VuZXJhdGUgdGVzdCBjYXNlcyB0aGF0IHRyaWdnZXIgY2hhbm5lbCBjb250ZXh0IHRyYW5zaXRpb25zIGFuZCB2ZXJpZnkgdGhhdCB0aGUgY29udGV4dCBjb21wYXJpc29ucyBhcmUgY29ycmVjdCBhbmQgdGhhdCB0aGUgcmVwbGFjZW1lbnQgY29udGV4dHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LCBhbmQgdGhlbiBtYWtlIHN1cmUgdG8gdHJhY2sgY292ZXJhZ2Ugb2YgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIGVuc3VyZSBpdCBpcyByb2J1c3QuIFRpbWUgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCByZWdyZXNzIGFueXRoaW5nISBOb3csIGxldCYjMzk7cyBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dCYjMzQ7LAogICAgJiMzNDtfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgaW4gYGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbmAgd2l0aGluIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0gdG8gcHJvcGVybHkgY2hlY2sgaWYgdGhlIG5ldyBjb250ZXh0IG1hdGNoZXMgdGhlIHByb3ZpZGVkIGNvbnRleHQgYW5kIGlmIHRoZSByZXBsYWNlIGNvbnRleHRzIG1hdGNoIGVhY2ggb3RoZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCBhbmQgY2FuIGJlIHJlYWNoZWQgdmlhIG9wZXJhdGlvbnMgbGlrZSBjaGFubmVsIHN3aXRjaGluZyBvciByZWxlYXNpbmcuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGNyYXNoZXMgb2NjdXIgZHVyaW5nIGNoYW5uZWwgY29udGV4dCB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dCYjMzQ7LAogICAgJiMzNDtfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgaW4gYGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbmAgd2l0aGluIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0gdG8gcHJvcGVybHkgY2hlY2sgaWYgdGhlIG5ldyBjb250ZXh0IG1hdGNoZXMgdGhlIHByb3ZpZGVkIGNvbnRleHQgYW5kIGlmIHRoZSByZXBsYWNlIGNvbnRleHRzIG1hdGNoIGVhY2ggb3RoZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCBhbmQgY2FuIGJlIHJlYWNoZWQgdmlhIG9wZXJhdGlvbnMgbGlrZSBjaGFubmVsIHN3aXRjaGluZyBvciByZWxlYXNpbmcuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGNyYXNoZXMgb2NjdXIgZHVyaW5nIGNoYW5uZWwgY29udGV4dCB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjA4LjYxMjc3NjM0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NTYwNTk2Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRcIixcbiAgICBcIl9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGluIGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gIHdpdGhpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIHRvIHByb3Blcmx5IGNoZWNrIGlmIHRoZSBuZXcgY29udGV4dCBtYXRjaGVzIHRoZSBwcm92aWRlZCBjb250ZXh0IGFuZCBpZiB0aGUgcmVwbGFjZSBjb250ZXh0cyBtYXRjaCBlYWNoIG90aGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQgYW5kIGNhbiBiZSByZWFjaGVkIHZpYSBvcGVyYXRpb25zIGxpa2UgY2hhbm5lbCBzd2l0Y2hpbmcgb3IgcmVsZWFzaW5nLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBjcmFzaGVzIG9jY3VyIGR1cmluZyBjaGFubmVsIGNvbnRleHQgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjA4LjYxMjc4MTc5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY1OTc3NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2JmOWU1ZjRhMWI1MzFhNDJiNTYyOGNlNmUzY2UyYWY1NzgxNGNiOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDA0OjEzOjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jXFxuaW5kZXggNTE1MmI4NGEzMzU3Ny4uNzkwNTdlMWFkMTA1YyAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvY2hhbi5jXFxuKysrIGIvbmV0L21hYzgwMjExL2NoYW4uY1xcbkBAIC0xNzcwLDcgKzE3NzAsOCBAQCBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfYXNzaWduKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbiB9XFxuIFxcbiBzdGF0aWMgYm9vbFxcbi1pZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuK2llZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBsaW5rLVxcdTAwM2VzZGF0YTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpvbGRfY3R4LCAqbmV3X2N0eDtcXG5AQCAtMTc4MCw2ICsxNzgxLDkgQEAgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbiBcXHRuZXdfY3R4ID0gbGluay1cXHUwMDNlcmVzZXJ2ZWRfY2hhbmN0eDtcXG4gXFx0b2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGxpbmspO1xcbiBcXG4rXFx0aWYgKG5ld19jdHggIT0gY3R4KVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbiBcXHRpZiAoIW9sZF9jdHgpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuQEAgLTE3OTIsNiArMTc5NiwxMiBAQCBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuIFxcdGlmIChuZXdfY3R4LVxcdTAwM2VyZXBsYWNlX3N0YXRlICE9IElFRUU4MDIxMV9DSEFOQ1RYX1JFUExBQ0VTX09USEVSKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbitcXHRpZiAobmV3X2N0eC1cXHUwMDNlcmVwbGFjZV9jdHggIT0gb2xkX2N0eClcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aWYgKG9sZF9jdHgtXFx1MDAzZXJlcGxhY2VfY3R4ICE9IG5ld19jdHgpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbkBAIC0xODIxLDcgKzE4MzEsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXFx1MDAyNml0ZXIpIHtcXG4tXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSlcXG4rXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGN0eCkpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0b2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGl0ZXIubGluayk7XFxuQEAgLTE5MjMsNyArMTkzNCw5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbiBcXG4gXFx0XFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX2Fzc2lnbmVkKGxvY2FsLCBjdHgtXFx1MDAzZXJlcGxhY2VfY3R4LCBcXHUwMDI2aXRlcikge1xcbiBcXHRcXHRcXHRuX2Fzc2lnbmVkKys7XFxuLVxcdFxcdFxcdGlmIChpdGVyLmxpbmsgXFx1MDAyNlxcdTAwMjYgaXRlci5saW5rLVxcdTAwM2VyZXNlcnZlZF9jaGFuY3R4KSB7XFxuK1xcdFxcdFxcdGlmIChpdGVyLmxpbmsgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0ICAgIGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBjdHgpKSB7XFxuIFxcdFxcdFxcdFxcdG5fcmVzZXJ2ZWQrKztcXG4gXFx0XFx0XFx0XFx0aWYgKGl0ZXIubGluay1cXHUwMDNlcmVzZXJ2ZWRfcmVhZHkpXFxuIFxcdFxcdFxcdFxcdFxcdG5fcmVhZHkrKztcXG5AQCAtMTk0OCw3ICsxOTYxLDggQEAgc3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuIHVzZV9yZXNlcnZlZDpcXG4gXFx0XFx0Y3R4LVxcdTAwM2Vjb25mLnJhZGFyX2VuYWJsZWQgPSBmYWxzZTtcXG4gXFx0XFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFxcdTAwMjZpdGVyKSB7XFxuLVxcdFxcdFxcdGlmIChpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRpZiAoaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluayxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGN0eCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgICFpdGVyLmxpbmstXFx1MDAzZXJlc2VydmVkX3JlYWR5KVxcbiBcXHRcXHRcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG4gXFxuQEAgLTE5ODksNyArMjAwMyw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXFx1MDAyNml0ZXIpIHtcXG4tXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rKSlcXG4rXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oaXRlci5saW5rLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGN0eCkpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0aWVlZTgwMjExX2NoYW5fYndfY2hhbmdlKGxvY2FsLFxcbkBAIC0yMDM4LDcgKzIwNTMsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4gXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mID0gbGluay1cXHUwMDNlY29uZjtcXG4gXFx0XFx0XFx0dTY0IGNoYW5nZWQgPSAwO1xcbiBcXG4tXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaykpXFxuK1xcdFxcdFxcdGlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGxpbmssIGN0eCkpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGxpbmtfY29uZi1cXHUwMDNlY2hhbmN0eF9jb25mLFxcbkBAIC0yMDg5LDcgKzIxMDQsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4gXFx0XFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFxcdTAwMjZpdGVyKSB7XFxuIFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rID0gaXRlci5saW5rO1xcbiBcXG4tXFx0XFx0XFx0aWYgKFdBUk5fT04oaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGxpbmspKSlcXG4rXFx0XFx0XFx0aWYgKFdBUk5fT04oaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGxpbmssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBjdHgpKSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRcXHRpZiAoIWxpbmstXFx1MDAzZXJlc2VydmVkX3JlYWR5KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxMzowOC45Nzk0MTUwMzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNTE5Mzk0Nzg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0XCIsXG4gICAgXCJfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCB3aXRoaW4gdGhlIG1hYzgwMjExIHdpcmVsZXNzIHN1YnN5c3RlbSB0byBwcm9wZXJseSBjaGVjayBpZiB0aGUgbmV3IGNvbnRleHQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgY29udGV4dCBhbmQgaWYgdGhlIHJlcGxhY2UgY29udGV4dHMgbWF0Y2ggZWFjaCBvdGhlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50IGFuZCBjYW4gYmUgcmVhY2hlZCB2aWEgb3BlcmF0aW9ucyBsaWtlIGNoYW5uZWwgc3dpdGNoaW5nIG9yIHJlbGVhc2luZy4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgY3Jhc2hlcyBvY2N1ciBkdXJpbmcgY2hhbm5lbCBjb250ZXh0IHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjYmY5ZTVmNGExYjUzMWE0MmI1NjI4Y2U2ZTNjZTJhZjU3ODE0Y2I5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNDoxMzowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5pbmRleCA1MTUyYjg0YTMzNTc3Li43OTA1N2UxYWQxMDVjIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NoYW4uY1xuKysrIGIvbmV0L21hYzgwMjExL2NoYW4uY1xuQEAgLTE3NzAsNyArMTc3MCw4IEBAIGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9hc3NpZ24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4gfVxuIFxuIHN0YXRpYyBib29sXG4taWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuK2llZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbitcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBsaW5rLVx1MDAzZXNkYXRhO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpvbGRfY3R4LCAqbmV3X2N0eDtcbkBAIC0xNzgwLDYgKzE3ODEsOSBAQCBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4gXHRuZXdfY3R4ID0gbGluay1cdTAwM2VyZXNlcnZlZF9jaGFuY3R4O1xuIFx0b2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGxpbmspO1xuIFxuK1x0aWYgKG5ld19jdHggIT0gY3R4KVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4gXHRpZiAoIW9sZF9jdHgpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC0xNzkyLDYgKzE3OTYsMTIgQEAgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuIFx0aWYgKG5ld19jdHgtXHUwMDNlcmVwbGFjZV9zdGF0ZSAhPSBJRUVFODAyMTFfQ0hBTkNUWF9SRVBMQUNFU19PVEhFUilcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuK1x0aWYgKG5ld19jdHgtXHUwMDNlcmVwbGFjZV9jdHggIT0gb2xkX2N0eClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKG9sZF9jdHgtXHUwMDNlcmVwbGFjZV9jdHggIT0gbmV3X2N0eClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuQEAgLTE4MjEsNyArMTgzMSw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXHRcdH1cbiBcbiBcdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbi1cdFx0XHRpZiAoIWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmspKVxuK1x0XHRcdGlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluayxcbitcdFx0XHRcdFx0XHRcdFx0ICAgICBjdHgpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0b2xkX2N0eCA9IGllZWU4MDIxMV9saW5rX2dldF9jaGFuY3R4KGl0ZXIubGluayk7XG5AQCAtMTkyMyw3ICsxOTM0LDkgQEAgc3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4gXG4gXHRcdGZvcl9lYWNoX2NoYW5jdHhfdXNlcl9hc3NpZ25lZChsb2NhbCwgY3R4LVx1MDAzZXJlcGxhY2VfY3R4LCBcdTAwMjZpdGVyKSB7XG4gXHRcdFx0bl9hc3NpZ25lZCsrO1xuLVx0XHRcdGlmIChpdGVyLmxpbmsgXHUwMDI2XHUwMDI2IGl0ZXIubGluay1cdTAwM2VyZXNlcnZlZF9jaGFuY3R4KSB7XG4rXHRcdFx0aWYgKGl0ZXIubGluayBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluayxcbitcdFx0XHRcdFx0XHRcdFx0ICAgIGN0eCkpIHtcbiBcdFx0XHRcdG5fcmVzZXJ2ZWQrKztcbiBcdFx0XHRcdGlmIChpdGVyLmxpbmstXHUwMDNlcmVzZXJ2ZWRfcmVhZHkpXG4gXHRcdFx0XHRcdG5fcmVhZHkrKztcbkBAIC0xOTQ4LDcgKzE5NjEsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbiB1c2VfcmVzZXJ2ZWQ6XG4gXHRcdGN0eC1cdTAwM2Vjb25mLnJhZGFyX2VuYWJsZWQgPSBmYWxzZTtcbiBcdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbi1cdFx0XHRpZiAoaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluaykgXHUwMDI2XHUwMDI2XG4rXHRcdFx0aWYgKGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmssXG4rXHRcdFx0XHRcdFx0XHRcdCAgICBjdHgpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAhaXRlci5saW5rLVx1MDAzZXJlc2VydmVkX3JlYWR5KVxuIFx0XHRcdFx0cmV0dXJuIC1FQUdBSU47XG4gXG5AQCAtMTk4OSw3ICsyMDAzLDggQEAgc3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4gXHRcdH1cbiBcbiBcdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbi1cdFx0XHRpZiAoIWllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihpdGVyLmxpbmspKVxuK1x0XHRcdGlmICghaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGl0ZXIubGluayxcbitcdFx0XHRcdFx0XHRcdFx0ICAgICBjdHgpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0aWVlZTgwMjExX2NoYW5fYndfY2hhbmdlKGxvY2FsLFxuQEAgLTIwMzgsNyArMjA1Myw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuIFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZiA9IGxpbmstXHUwMDNlY29uZjtcbiBcdFx0XHR1NjQgY2hhbmdlZCA9IDA7XG4gXG4tXHRcdFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaykpXG4rXHRcdFx0aWYgKCFpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24obGluaywgY3R4KSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihsaW5rX2NvbmYtXHUwMDNlY2hhbmN0eF9jb25mLFxuQEAgLTIwODksNyArMjEwNCw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuIFx0XHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXHUwMDI2aXRlcikge1xuIFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rID0gaXRlci5saW5rO1xuIFxuLVx0XHRcdGlmIChXQVJOX09OKGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbihsaW5rKSkpXG4rXHRcdFx0aWYgKFdBUk5fT04oaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uKGxpbmssXG4rXHRcdFx0XHRcdFx0XHRcdFx0ICAgIGN0eCkpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0aWYgKCFsaW5rLVx1MDAzZXJlc2VydmVkX3JlYWR5KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MDguOTc5NDE2Mjc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2MDg2ODQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBtYWM4MDIxMSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvbWFjODAyMTEvY2hhbi5jYC4gSXQgc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIHRoZSBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGEgYHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4YCBhcmd1bWVudCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBjaGVja3MgY29tcGFyaW5nIGBuZXdfY3R4YCBhbmQgYG9sZF9jdHhgIHdpdGggdGhlIHBhc3NlZCBgY3R4YCBhbmQgdGhlaXIgYHJlcGxhY2VfY3R4YCBtZW1iZXJzLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtLlxuXG5HaXZlbiB0aGF0IHRoaXMgaXMgbWFjODAyMTEsIGFuZCBrbm93aW5nIHRoYXQgaXQgY2FuIGJlIGZ1enplZCBlZmZlY3RpdmVseSB3aXRoIGBtYWM4MDIxMV9od3NpbWAsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGRyaXZpbmcgdGhpcyBjaGFuZ2UuIFRoZSBhZGRlZCBjaGVja3Mgc3VnZ2VzdCBhIGZpbmVyLWdyYWluZWQgY29udHJvbCwgcGVyaGFwcyByZWxhdGVkIHRvIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50IG9yIHJlc2VydmF0aW9uIGNvbnNpc3RlbmN5LlxuXG5UbyB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBtYWM4MDIxMSwgSSdsbCBzdGFydCB3aXRoIHRoZSBvYnZpb3VzOiBgQ09ORklHX01BQzgwMjExYC4gVGhhdCBzaG91bGQgYmUgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgdG8gZ2V0IGEgZnVsbCBvdmVydmlldyBvZiBwb3NzaWJsZSBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MTYuNzQwMjg5MzgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzkxMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2OmNvbW1lbnQgXFxcIkNGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3LVxcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5OmlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNjpcXHRzZWxlY3QgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjctXFx0ZGVmYXVsdCB5XFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMi1cXHRwcm9tcHQgXFxcIkRlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjM0OlxcdGRlZmF1bHQgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTM1LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ0LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxubmV0L21hYzgwMjExL0tjb25maWc6NTI6XFx0ZGVmYXVsdCBcXFwibWluc3RyZWxfaHRcXFwiIGlmIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01My1cXHRkZWZhdWx0IFxcXCJcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6NTg6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9IQVNfUkM9blxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYyLVxcdGRlcGVuZHMgb24gS1VOSVRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctNjQtXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcyOlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03My1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6ODE6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjgyOlxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04My1cXHRzZWxlY3QgTEVEU19UUklHR0VSU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6OTA6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctOTEtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5OTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IFRSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDAtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMy1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTktXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MTM0OlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzNS1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDU6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ2LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NjpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTctXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MTY1OlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Ni1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzgtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4ODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODktXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk5OlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwMC1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MjExOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxMjpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTMtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyNDpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjU6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjI2LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzg6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjM5LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTA6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWc6MjUxOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1Mi1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI2MTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNjI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjYzLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcyOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzQtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODQtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5NTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTY6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk3LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA5OlxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMxMC1cXHRkZWZhdWx0IDBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MTYuNzg2MDg3MzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjcwMjAyMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wbGljYXRpb25zIG9mIGEgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCBmdW5jdGlvbi4gSW50ZXJlc3RpbmcsIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0cyBzY29wZSBpcyBsaW1pdGVkLCB3aGljaCBpcyBnb29kIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBkaXJlY3QgaW1wYWN0LiBUaGUgaW1wb3J0YW50IHRoaW5nIHRvIGNvbnNpZGVyIGhlcmUgaXMgdGhhdCBpdCdzIGJlaW5nICp1c2VkKiBieSBhIGNvdXBsZSBvZiBvdGhlciBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnNgIGFuZCBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYC5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2UgY2FsbGluZyBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIGxhcmdlciBtYWM4MDIxMSBmcmFtZXdvcmsuIFRvIGRvIHRoYXQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBpbiBgbmV0L21hYzgwMjExL2NoYW4uY2AuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIHJlYWNoIG9mIHRoaXMgY2hhbmdlLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiBtb2RpZnlpbmcgYSBmdW5jdGlvbiB0aGF0IGlzIGxpa2VseSBjYWxsZWQgYnkgc29tZXRoaW5nIGZ1cnRoZXIgdXAgdGhlIGNoYWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTAwLCJPdXRwdXRUb2tlbnMiOjY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MjAuNDU2MjkyOTc3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Mjc3NTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzfGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvY2hhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9MTc3Mz1pZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE4MDctXFxubmV0L21hYzgwMjExL2NoYW4uYzoxODA4OnN0YXRpYyBpbnQgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy0xODA5LVxcdFxcdFxcdFxcdCAgICAgIGludCBuX3ZpZnMpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTE4NTY9c3RhdGljIGludCBpZWVlODAyMTFfY2hzd19zd2l0Y2hfY3R4cyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTg5My1cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjE4OTQ6c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxubmV0L21hYzgwMjExL2NoYW4uYy0xODk1LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjAyMy1cXHRpZiAobl92aWZzX3N3aXRjaCBcXHUwMDNlIDApIHtcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIwMjQ6XFx0XFx0ZXJyID0gaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMobG9jYWwsIG5fdmlmc19zd2l0Y2gpO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjAyNS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0yMTY1PXZvaWQgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxOTktXFx0aWYgKHVzZV9yZXNlcnZlZF9zd2l0Y2gpXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMjAwOlxcdFxcdGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChsb2NhbCk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0yMjAxLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjM3MT1pbnQgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI0MTAtXFx0ICogc2RhdGEgYWxyZWFkeSBzd2l0Y2hlZCBzdWNjZXNzZnVsbHkuIEp1c3Qgc3BpbGwgYW4gZXh0cmEgd2FybmluZy5cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjI0MTE6XFx0ICogVGhlIGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaCgpIGFscmVhZHkgc3RvcHMgYWxsIG5lY2Vzc2FyeVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjQxMi1cXHQgKiBpbnRlcmZhY2VzIHVwb24gZmFpbHVyZS5cXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjQxNi1cXHQgICAgbmV3X2N0eC1cXHUwMDNlcmVwbGFjZV9zdGF0ZSA9PSBJRUVFODAyMTFfQ0hBTkNUWF9SRVBMQUNFU19PVEhFUikge1xcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjQxNzpcXHRcXHRlcnIgPSBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2gobG9jYWwpO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjQxOC1cXHRcXHRpZiAoZXJyIFxcdTAwMjZcXHUwMDI2IGVyciAhPSAtRUFHQUlOKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjIwLjUwMDU3NTA2NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjU4NzY5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIENoYW5uZWwgU3dpdGNoIEZ1bmN0aW9uIENhbGxzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnNgIGFuZCBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYC4gVGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlZCBpcyB0aGF0IHRoZXkgYXJlIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBtZWFucyB0aGVpciBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQuIFRoYXQgbWVhbnMgSSBoYXZlIHRvIGRpZyBhIGJpdCBkZWVwZXIgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBhcmUgYmVpbmcgdXNlZCB3aXRoaW4gdGhpcyBtb2R1bGUuXG5cbkxldCdzIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHRoZSBjYWxsIHNpdGVzLiBJIGNhbiBzZWUgdGhhdCBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYCBpcyBjYWxsZWQgYnkgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBhbmQgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YC4gVGhvc2UgbmFtZXMgc3VnZ2VzdCBzb21lIGtpbmQgb2YgY2hhbm5lbCByZXNlcnZhdGlvbiBvciBjb250ZXh0IG1hbmFnZW1lbnQsIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5Ob3csIEkgbmVlZCB0byBjb25maXJtIHRoZSB2aXNpYmlsaXR5IG9mIHRoZXNlIGNhbGxlcnMuIEFyZSB0aGV5IGV4cG9ydGVkIHN5bWJvbHMgdGhhdCBjb3VsZCBiZSB1c2VkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwsIG9yIGFyZSB0aGV5IGFsc28gbGltaXRlZCBpbiBzY29wZSwgcGVyaGFwcyBhbHNvIGBzdGF0aWNgIG9yIG90aGVyd2lzZSBjb25maW5lZCB0byB0aGlzIHN1YnN5c3RlbT8gSWYgdGhleSdyZSBleHBvcnRlZCwgSSdsbCBuZWVkIHRvIGZvbGxvdyB0aGUgY2hhaW4gb2YgY2FsbHMgZnVydGhlciB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gSWYgdGhleSdyZSBpbnRlcm5hbCwgdGhlbiBJIGhhdmUgYSBtb3JlIGxpbWl0ZWQgdmlldywgYnV0IHRoZSBjb250ZXh0IGlzIHN0aWxsIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsuIEknbGwgY2hlY2sgdGhlIHN5bWJvbCB0YWJsZXMgYW5kIGNyb3NzLXJlZmVyZW5jZXMgdG8gc2VlIHdoYXQgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTExMiwiT3V0cHV0VG9rZW5zIjo1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxMzoyNC42MjY0NTQxMjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2OTY2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWx8aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9NDQ2Mz1zdGF0aWMgaW50IF9faWVlZTgwMjExX2NzYV9maW5hbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGlua19kYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ0ODgtXFxubmV0L21hYzgwMjExL2NmZy5jOjQ0ODk6XFx0XFx0cmV0dXJuIGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KGxpbmtfZGF0YSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ0OTAtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0xODk0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMTY0LVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjE2NTp2b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE2Ni1cXHRcXHRcXHRcXHQgICAgICBib29sIHNraXBfaWRsZV9yZWNhbGMpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTIyOTE9aW50IF9pZWVlODAyMTFfbGlua191c2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjMzMi1cXHRpZiAoIWxvY2FsLVxcdTAwM2Vpbl9yZWNvbmZpZylcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzMzM6XFx0XFx0X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwobGluaywgZmFsc2UpO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjMzNC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjM3MC1cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzNzE6aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjM3Mi17XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTI0OTg9dm9pZCBpZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI1MDctXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihsaW5rLVxcdTAwM2Vjb25mLVxcdTAwM2VjaGFuY3R4X2NvbmYpKVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjUwODpcXHRcXHRfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChsaW5rLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA5LX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI4MzE9aW50IF9fbXVzdF9jaGVja1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4MzI6aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4MzMtdm9pZCBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yODM2PWllZWU4MDIxMV9saW5rX2NoYW5nZV9jaGFucmVxKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjgzOC1cXHRcXHRcXHQgICAgICB1NjQgKmNoYW5nZWQpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4Mzk6dm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yODQwLVxcdFxcdFxcdFxcdCAgICAgIGJvb2wgc2tpcF9pZGxlX3JlY2FsYyk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jPTQ2NT1zdGF0aWMgaW50IF9pZWVlODAyMTFfc2V0X2FjdGl2ZV9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9saW5rLmMtNTEyLVxcbm5ldC9tYWM4MDIxMS9saW5rLmM6NTEzOlxcdFxcdF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKGxpbmssIHRydWUpO1xcbm5ldC9tYWM4MDIxMS9saW5rLmMtNTE0LVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0yODc2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9jc2Ffc3dpdGNoX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjk1MC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI5NTE6XFx0XFx0cmV0ID0gaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQobGluayk7XFxubmV0L21hYzgwMjExL21sbWUuYy0yOTUyLVxcdFxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MjQuNjc3MTU1MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MTcyODE4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTUFDODAyMTEgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGJhc2VkIG9uIGl0cyBpbnRlcmFjdGlvbiB3aXRoIGBjZmcuY2AsIGBsaW5rLmNgLCBhbmQgYG1sbWUuY2AsIGl0IGRlZmluaXRlbHkgdG91Y2hlcyBjb3JlIE1BQzgwMjExIGZ1bmN0aW9uYWxpdHkg4oCTIG5hbWVseSwgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YCBhbmQgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYC4gSSBjYW4gc2VlIHRoZXNlIGFyZSByZWFjaGFibGUsIGZvdW5kYXRpb25hbCBmdW5jdGlvbnMuIFRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIGJ1ZyBpbiBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCBieSB0aWdodGVuaW5nIHVwIGEgY29udGV4dCBjaGVjay4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRoYXQgd2FycmFudHMgZnV6emluZy5cblxuTXkgcHJpbWFyeSBnb2FsIG5vdyBpcyB0byBpZGVudGlmeSB0aGUgY3J1Y2lhbCBzeW1ib2xzLiBJIHNlZSB0aGF0IGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gLCB0aGUgZnVuY3Rpb24gYmVpbmcgcGF0Y2hlZCwgaXMgKnN0YXRpYyouIEl0cyBkaXJlY3QgY2FsbGVycywgYGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzYCBhbmQgYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAsIGFyZSBhbHNvICpzdGF0aWMqLiAgVGhlIGNhbGwgY2hhaW4gY29udGludWVzIHdpdGggYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAgY2FsbGluZyBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgIGFuZCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgLiBDcml0aWNhbGx5LCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgIGFuZCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgIGFyZSAqbm9uLXN0YXRpYyosIHdoaWNoIG1ha2VzIHRoZW0gaWRlYWwgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gVGhlaXIgbm9uLXN0YXRpYyBuYXR1cmUgbWVhbnMgdGhleSdyZSBleHBvcnRlZCBhbmQgbW9yZSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSB0aGUgaW1tZWRpYXRlIHNjb3BlLiAgQmVmb3JlIEkgcHJvY2VlZCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmc2AgZG9lc24ndCBoYXZlIGFueSBvdGhlciBpbXBvcnRhbnQgY2FsbGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4ODEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MzAuMzk0NDQxMjc4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjcxMjQxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfY2hzd19zd2l0Y2hfdmlmc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9MTc3Mz1pZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE4MDctXFxubmV0L21hYzgwMjExL2NoYW4uYzoxODA4OnN0YXRpYyBpbnQgaWVlZTgwMjExX2Noc3dfc3dpdGNoX3ZpZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy0xODA5LVxcdFxcdFxcdFxcdCAgICAgIGludCBuX3ZpZnMpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTE4OTQ9c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIwMjMtXFx0aWYgKG5fdmlmc19zd2l0Y2ggXFx1MDAzZSAwKSB7XFxubmV0L21hYzgwMjExL2NoYW4uYzoyMDI0OlxcdFxcdGVyciA9IGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzKGxvY2FsLCBuX3ZpZnNfc3dpdGNoKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIwMjUtXFx0XFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTM6MzAuNDQ3MTYyOTE1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzY3Nzc0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSA4MDIuMTEgQ2hhbm5lbCBTd2l0Y2hpbmcgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBjaGFubmVsIHN3aXRjaGluZyBpcyBoYW5kbGVkIGluIHRoaXMgODAyLjExIGltcGxlbWVudGF0aW9uLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYGllZWU4MDIxMV9jaHN3X3N3aXRjaF92aWZzYCBzZWVtcyB0byBiZSBleGNsdXNpdmVseSBjYWxsZWQgYnkgYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAuIFRoYXQncyBpbXBvcnRhbnQuIEl0IG5hcnJvd3MgZG93biB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBzaWduaWZpY2FudGx5LiAgVGhlcmVmb3JlLCBJIHNob3VsZCBiZSBwcmltYXJpbHkgY29uY2VybmVkIHdpdGggYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBhbmQgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YC5cblxuR2l2ZW4gdGhhdCwgSSB0aGluayBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgcG9pbnQgdG8gZm9jdXMgb24sIGFzIGl0IHNvdW5kcyBsaWtlIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgcmVzZXJ2ZWQgY29udGV4dCBjb21lcyBpbnRvIHBsYXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIHNpZ25hdHVyZSBhbGlnbnMgd2l0aCBteSBleHBlY3RhdGlvbnMgYW5kIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIGV4cG9ydGVkLCBtYWtpbmcgaXQgYWNjZXNzaWJsZSBmb3IgYW5hbHlzaXMgYW5kIHBvdGVudGlhbCBpbnN0cnVtZW50YXRpb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBpbiBgbmV0L21hYzgwMjExL2NoYW4uY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDMxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjM0LjI4Mzk0MzkxMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NjM2NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NoYW4uYz0yMjkxPWludCBfaWVlZTgwMjExX2xpbmtfdXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNzAtXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMzcxOmludCBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNzIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxMzozNC4zMzg4MTU1NjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyMzMyMzA3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN0YXRpYyBOYXR1cmUgb2YgYSBGdW5jdGlvbiBhbmQgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCwgeWVzLCBpdCdzIGRlZmluaXRlbHkgbm9uLXN0YXRpYy4gQW5kIEkgc2VlIHRoYXQgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCBpcyBhbHNvIG1hcmtlZCBhcyBub24tc3RhdGljLiBHb29kLiBOb3csIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkZXBlbmRlbmNpZXMgdGhpcyBjb2RlLCB3aGljaCBJIHRoaW5rIGlzIGEgYE1BQzgwMjExYCBjb21wb25lbnQsIGhhcy5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgYENPTkZJR19NQUM4MDIxMWAgZGVwZW5kZW5jaWVzLiBBaCwgcmlnaHQuIEl0IGRlcGVuZHMgb24gYENGRzgwMjExYC4gT2theSwgc28gYE1BQzgwMjExYCBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUsIHRoYXQgbWFrZXMgc2Vuc2UuXG5cbldhaXQsIEkgc2hvdWxkIGNvbmZpcm0gdGhhdCBub3RoaW5nIGVsc2UgaXMgcmVxdWlyZWQuIFNpbmNlIHRoZSBjb2RlIGlzIGluIGBuZXQvbWFjODAyMTEvY2hhbi5jYCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9tYWM4MDIxMS9NYWtlZmlsZWAgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjYxNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxMzozNy44NjIxNDE2NDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODIxNDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoYW5cXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9NYWtlZmlsZT01PW1hYzgwMjExLXkgOj0gXFxcXFxcbi0tXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTMyLVxcdHdtZS5vIFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGU6MzM6XFx0Y2hhbi5vIGFwLm8gXFxcXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0zNC1cXHR0cmFjZS5vIG1sbWUubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjM3LjkxMTk3MDUwMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTcxODYzNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIGBtYWM4MDIxMWAgQ2hhbm5lbCBDb250ZXh0IE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIGZvY3VzaW5nIG9uIHRoZSBgbWFjODAyMTFgIHdpcmVsZXNzIHN1YnN5c3RlbSwgd2hpY2ggbWFrZXMgc2Vuc2UuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIHRvdWNoZXMgYGllZWU4MDIxMV9saW5rX2hhc19pbl9wbGFjZV9yZXNlcnZhdGlvbmAsIGEgZnVuY3Rpb24gd2l0aGluIHRoYXQgc3Vic3lzdGVtLiBJIGtub3cgYGNoYW4ub2AgaXMgcGFydCBvZiBgbWFjODAyMTEteWAsIGFuZCB0aGF0IGdldHMgYnVpbHQgd2hlbiBgQ09ORklHX01BQzgwMjExYCBpcyBlbmFibGVkLiBTaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggYE1BQzgwMjExYCwgdGhhdCBjb25maWd1cmF0aW9uIGlzIGNsZWFybHkgc3VmZmljaWVudC5cblxuTm93LCBsZXQncyBzZWUsIHdoYXQgZW50cnkgcG9pbnRzIGFyZSB3ZSBkZWFsaW5nIHdpdGg/IEknbSB0aGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIGNvZGUgcGF0aHMgaGVyZSwgcmlnaHQ/IE9rYXksIEkgc2VlIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dGAsIGFuZCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgLCBhbmQgZmluYWxseSBgaWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCwgd2hpY2ggSSBzZWUgY2FsbHMgdGhlIHByZXZpb3VzIG9uZS4gR290IGl0LiBDaGFubmVsIHN3aXRjaGluZyBvciByZWxlYXNpbmcgaXMgaG93IHdlIGdldCBoZXJlLlxuXG5TbyB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBsb2dpYyByZWxhdGVkIHRvIGNoYW5uZWwgY29udGV4dCBtYXRjaGluZywgcGFydGljdWxhcmx5IHdpdGhpbiBhIGNvbnRleHQgcmVzZXJ2YXRpb24gc2NlbmFyaW8uIE1lYW5pbmcgd2UgbmVlZCB0byBmdXp6IHRvIG1ha2Ugc3VyZSB0aGUgZml4IGlzIGNvcnJlY3QsIGFuZCB3ZSBhcmUgbm90IGdvaW5nIHRvIHNlZSBhbnkgY3Jhc2hlcyBvciByZWdyZXNzaW9ucyBkdXJpbmcgdGhlIHRyYW5zaXRpb25zLlxuXG5SaWdodCwgc28gZm9yIGZ1enppbmcsIEknbGwgZGVmaW5pdGVseSB3YW50IHRvIGZvY3VzIG9uIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dGAgYW5kIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAgYXMgdGhlIGtleSBmb2N1cyBzeW1ib2xzLiBUaG9zZSBzZWVtIHRvIGJlIHRoZSBjb3JlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBjaGFuZ2UuIFdlJ2xsIG5lZWQgdG8gZ2VuZXJhdGUgdGVzdCBjYXNlcyB0aGF0IHRyaWdnZXIgY2hhbm5lbCBjb250ZXh0IHRyYW5zaXRpb25zIGFuZCB2ZXJpZnkgdGhhdCB0aGUgY29udGV4dCBjb21wYXJpc29ucyBhcmUgY29ycmVjdCBhbmQgdGhhdCB0aGUgcmVwbGFjZW1lbnQgY29udGV4dHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LCBhbmQgdGhlbiBtYWtlIHN1cmUgdG8gdHJhY2sgY292ZXJhZ2Ugb2YgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIGVuc3VyZSBpdCBpcyByb2J1c3QuIFRpbWUgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHJlZ3Jlc3MgYW55dGhpbmchIE5vdywgbGV0J3MgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMDMsIk91dHB1dFRva2VucyI6MTY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjEzOjQ0LjA4MzgzNjk0MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NTIyNTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0XCIsXG4gICAgXCJfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX2xpbmtfaGFzX2luX3BsYWNlX3Jlc2VydmF0aW9uYCB3aXRoaW4gdGhlIG1hYzgwMjExIHdpcmVsZXNzIHN1YnN5c3RlbSB0byBwcm9wZXJseSBjaGVjayBpZiB0aGUgbmV3IGNvbnRleHQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgY29udGV4dCBhbmQgaWYgdGhlIHJlcGxhY2UgY29udGV4dHMgbWF0Y2ggZWFjaCBvdGhlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50IGFuZCBjYW4gYmUgcmVhY2hlZCB2aWEgb3BlcmF0aW9ucyBsaWtlIGNoYW5uZWwgc3dpdGNoaW5nIG9yIHJlbGVhc2luZy4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgY3Jhc2hlcyBvY2N1ciBkdXJpbmcgY2hhbm5lbCBjb250ZXh0IHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRcIixcbiAgICBcIl9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGluIGBpZWVlODAyMTFfbGlua19oYXNfaW5fcGxhY2VfcmVzZXJ2YXRpb25gIHdpdGhpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIHRvIHByb3Blcmx5IGNoZWNrIGlmIHRoZSBuZXcgY29udGV4dCBtYXRjaGVzIHRoZSBwcm92aWRlZCBjb250ZXh0IGFuZCBpZiB0aGUgcmVwbGFjZSBjb250ZXh0cyBtYXRjaCBlYWNoIG90aGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQgYW5kIGNhbiBiZSByZWFjaGVkIHZpYSBvcGVyYXRpb25zIGxpa2UgY2hhbm5lbCBzd2l0Y2hpbmcgb3IgcmVsZWFzaW5nLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBjcmFzaGVzIG9jY3VyIGR1cmluZyBjaGFubmVsIGNvbnRleHQgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcchb9[1] Phase: Succeeded StartedAt: 2026-08-03 04:13:55 +0000 UTC FinishedAt: 2026-08-03 04:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 04:13:55 +0000 UTC FinishedAt: 2026-08-03 04:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2] Phase: Succeeded StartedAt: 2026-08-03 04:13:55 +0000 UTC FinishedAt: 2026-08-03 08:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 04:13:55 +0000 UTC FinishedAt: 2026-08-03 08:04:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 04:13:55 +0000 UTC FinishedAt: 2026-08-03 04:14:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 04:13:55 +0000 UTC FinishedAt: 2026-08-03 04:14:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowcchb9/series-workflowcchb9-convert-artifact-3640797231/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 04:14:05 +0000 UTC FinishedAt: 2026-08-03 04:34:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 04:14:05 +0000 UTC FinishedAt: 2026-08-03 04:34:48 +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:*424c47c0-067a-49a5-847d-ebadb6208d29,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-workflowcchb9/series-workflowcchb9-convert-artifact-3640797231/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": "c8561c79-27f9-4112-84ba-75a9dbfc1641", "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-workflowcchb9/series-workflowcchb9-build-action-2066722293/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 04:14:05 +0000 UTC FinishedAt: 2026-08-03 04:34:37 +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:*424c47c0-067a-49a5-847d-ebadb6208d29,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-workflowcchb9/series-workflowcchb9-convert-artifact-3640797231/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": "c8561c79-27f9-4112-84ba-75a9dbfc1641", "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-workflowcchb9/series-workflowcchb9-build-action-2066722293/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 04:34:48 +0000 UTC FinishedAt: 2026-08-03 04:34:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 04:34:48 +0000 UTC FinishedAt: 2026-08-03 04:34:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 04:34:48 +0000 UTC FinishedAt: 2026-08-03 04:35:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 04:34:48 +0000 UTC FinishedAt: 2026-08-03 04:34:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowcchb9/series-workflowcchb9-convert-artifact-3531608446/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 04:35:10 +0000 UTC FinishedAt: 2026-08-03 04:37:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 04:35:10 +0000 UTC FinishedAt: 2026-08-03 04:37:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c8561c79-27f9-4112-84ba-75a9dbfc1641,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-workflowcchb9/series-workflowcchb9-build-action-2066722293/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-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 04:37:27 +0000 UTC FinishedAt: 2026-08-03 04:37:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 04:37:27 +0000 UTC FinishedAt: 2026-08-03 04:37:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 04:37:27 +0000 UTC FinishedAt: 2026-08-03 04:59:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 04:37:27 +0000 UTC FinishedAt: 2026-08-03 04:59:57 +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:*424c47c0-067a-49a5-847d-ebadb6208d29,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-workflowcchb9/series-workflowcchb9-convert-artifact-3531608446/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": "0ab1f0d0-2b3a-4559-acda-04034212a4fb", "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-workflowcchb9/series-workflowcchb9-build-action-2331434450/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 04:37:27 +0000 UTC FinishedAt: 2026-08-03 04:59:46 +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:*424c47c0-067a-49a5-847d-ebadb6208d29,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-workflowcchb9/series-workflowcchb9-convert-artifact-3531608446/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": "0ab1f0d0-2b3a-4559-acda-04034212a4fb", "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-workflowcchb9/series-workflowcchb9-build-action-2331434450/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 04:59:57 +0000 UTC FinishedAt: 2026-08-03 04:59:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 04:59:57 +0000 UTC FinishedAt: 2026-08-03 04:59:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 04:59:57 +0000 UTC FinishedAt: 2026-08-03 05:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 04:59:57 +0000 UTC FinishedAt: 2026-08-03 05:02:01 +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:*0ab1f0d0-2b3a-4559-acda-04034212a4fb,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-workflowcchb9/series-workflowcchb9-build-action-2331434450/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-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 05:02:13 +0000 UTC FinishedAt: 2026-08-03 08:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 05:02:13 +0000 UTC FinishedAt: 2026-08-03 05:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 05:02:13 +0000 UTC FinishedAt: 2026-08-03 05:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 05:02:14 +0000 UTC FinishedAt: 2026-08-03 08:04:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*c8561c79-27f9-4112-84ba-75a9dbfc1641,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0ab1f0d0-2b3a-4559-acda-04034212a4fb,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-workflowcchb9/series-workflowcchb9-build-action-2066722293/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-workflowcchb9/series-workflowcchb9-build-action-2331434450/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 05:02:14 +0000 UTC FinishedAt: 2026-08-03 05:02:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 05:02:14 +0000 UTC FinishedAt: 2026-08-03 05:02:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcchb9/series-workflowcchb9-convert-artifact-1912381827/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 05:02:14 +0000 UTC FinishedAt: 2026-08-03 05:02:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 05:02:44 +0000 UTC FinishedAt: 2026-08-03 08:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcchb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_use_reserved_context","__ieee80211_link_release_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"99c6ebda-8676-4d28-88ae-7ba4a48762a3","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 05:02:44 +0000 UTC FinishedAt: 2026-08-03 08:03:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c8561c79-27f9-4112-84ba-75a9dbfc1641,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0ab1f0d0-2b3a-4559-acda-04034212a4fb,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-workflowcchb9/series-workflowcchb9-build-action-2066722293/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-workflowcchb9/series-workflowcchb9-build-action-2331434450/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-workflowcchb9/series-workflowcchb9-convert-artifact-1912381827/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,}