Name: series-workflowpkgr5 Phase: Failed StartedAt: 2026-09-10 13:33:29 +0000 UTC FinishedAt: 2026-09-10 13:35:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgr5[0] Phase: Succeeded StartedAt: 2026-09-10 13:33:29 +0000 UTC FinishedAt: 2026-09-10 13:35:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgr5[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 13:33:29 +0000 UTC FinishedAt: 2026-09-10 13:35:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBLVk0gdXNlcnNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIGFuZCBkb2VzIG5vdCB0b3VjaCBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTI1YzI5OGRmNGE5NWM1NzQ3Nzg2MzRmN2Y2YmRiMThkMWU3MTU2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDEzOjM0OjU3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuaW5kZXggNmU2ZjcwMDM1NTA4YS4uZGYzNjgyMzJjZjNlMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5AQCAtMjMsNiAmIzQzOzIzLDggQEAgZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfaW50ZWw7XG4gZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfYW1kO1xuIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2h5Z29uO1xuIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlO1xuJiM0MztleHRlcm4gYm9vbCBob3N0X2NwdV9pc196aGFveGluO1xuJiM0MztleHRlcm4gYm9vbCBob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlO1xuIGV4dGVybiB1NjQgZ3Vlc3RfdHNjX2toejtcbiBleHRlcm4gc3RydWN0IGt2bV9tbXUgZ3Vlc3RfbW11O1xuIFxuQEAgLTc4Miw2ICYjNDM7Nzg0LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0aGlzX2NwdV9pc19oeWdvbih2b2lkKVxuIFx0cmV0dXJuIHRoaXNfY3B1X3ZlbmRvcl9zdHJpbmdfaXMoXCYjMzQ7SHlnb25HZW51aW5lXCYjMzQ7KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCB0aGlzX2NwdV9pc196aGFveGluKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcyhcJiMzNDtDZW50YXVySGF1bHNcJiMzNDspIHx8XG4mIzQzO1x0ICAgICAgIHRoaXNfY3B1X3ZlbmRvcl9zdHJpbmdfaXMoXCYjMzQ7ICBTaGFuZ2hhaSAgXCYjMzQ7KTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW5saW5lIHUzMiBfX3RoaXNfY3B1X2hhcyh1MzIgZnVuY3Rpb24sIHUzMiBpbmRleCwgdTggcmVnLCB1OCBsbywgdTggaGkpXG4ge1xuIFx0dTMyIGdwcnNbNF07XG5AQCAtMTQ0Niw3ICYjNDM7MTQ1NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1faXNfcG11X2VuYWJsZWQodm9pZClcbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX21lZGlhdGVkX3BtdV9lbmFibGVkKHZvaWQpXG4ge1xuLVx0aWYgKGhvc3RfY3B1X2lzX2ludGVsKVxuJiM0MztcdGlmIChob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKVxuIFx0XHRyZXR1cm4gZ2V0X2t2bV9pbnRlbF9wYXJhbV9ib29sKFwmIzM0O2VuYWJsZV9tZWRpYXRlZF9wbXVcJiMzNDspO1xuIFxuIFx0cmV0dXJuIGdldF9rdm1fYW1kX3BhcmFtX2Jvb2woXCYjMzQ7ZW5hYmxlX21lZGlhdGVkX3BtdVwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oXG5pbmRleCAwNGY1ZTM0ZGVhM2FlLi5iMTk2NjUxYmRlYTI2IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvdm14LmhcbkBAIC01NTcsNiAmIzQzOzU1Nyw3IEBAIGJvb2wgbG9hZF92bWNzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCk7XG4gYm9vbCBlcHRfMWdfcGFnZXNfc3VwcG9ydGVkKHZvaWQpO1xuIFxuIGJvb2wga3ZtX2NwdV9oYXNfZXB0KHZvaWQpO1xuJiM0Mztib29sIGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KHZvaWQpO1xuIHZvaWQgdm1fZW5hYmxlX2VwdChzdHJ1Y3Qga3ZtX3ZtICp2bSk7XG4gdm9pZCBwcmVwYXJlX3ZpcnR1YWxpemVfYXBpY19hY2Nlc3NlcyhzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgsIHN0cnVjdCBrdm1fdm0gKnZtKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9wcm9jZXNzb3IuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Byb2Nlc3Nvci5jXG5pbmRleCBkMzFmYTgxZWEwNzU2Li5iZDUwYzEyNjVjZWZhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Byb2Nlc3Nvci5jXG5AQCAtMjYsNiAmIzQzOzI2LDggQEAgYm9vbCBob3N0X2NwdV9pc19hbWQ7XG4gYm9vbCBob3N0X2NwdV9pc19pbnRlbDtcbiBib29sIGhvc3RfY3B1X2lzX2h5Z29uO1xuIGJvb2wgaG9zdF9jcHVfaXNfYW1kX2NvbXBhdGlibGU7XG4mIzQzO2Jvb2wgaG9zdF9jcHVfaXNfemhhb3hpbjtcbiYjNDM7Ym9vbCBob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlO1xuIGJvb2wgaXNfZm9yY2VkX2VtdWxhdGlvbl9lbmFibGVkO1xuIHU2NCBndWVzdF90c2Nfa2h6O1xuIHN0cnVjdCBrdm1fbW11IGd1ZXN0X21tdTtcbkBAIC0xNTgsNyAmIzQzOzE2MCw3IEBAIHN0YXRpYyB2b2lkIHNyZWdzX2R1bXAoRklMRSAqc3RyZWFtLCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncywgdTggaW5kZW50KVxuIFxuIGJvb2wga3ZtX2lzX3RkcF9lbmFibGVkKHZvaWQpXG4ge1xuLVx0aWYgKGhvc3RfY3B1X2lzX2ludGVsKVxuJiM0MztcdGlmIChob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKVxuIFx0XHRyZXR1cm4gZ2V0X2t2bV9pbnRlbF9wYXJhbV9ib29sKFwmIzM0O2VwdFwmIzM0Oyk7XG4gXHRlbHNlXG4gXHRcdHJldHVybiBnZXRfa3ZtX2FtZF9wYXJhbV9ib29sKFwmIzM0O25wdFwmIzM0Oyk7XG5AQCAtODE5LDYgJiM0Mzs4MjEsOCBAQCB2b2lkIGt2bV9hcmNoX3ZtX3Bvc3RfY3JlYXRlKHN0cnVjdCBrdm1fdm0gKnZtLCB1bnNpZ25lZCBpbnQgbnJfdmNwdXMpXG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfYW1kKTtcbiBcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc19oeWdvbik7XG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfYW1kX2NvbXBhdGlibGUpO1xuJiM0MztcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc196aGFveGluKTtcbiYjNDM7XHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSk7XG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaXNfZm9yY2VkX2VtdWxhdGlvbl9lbmFibGVkKTtcbiBcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBwbXVfZXJyYXRhX21hc2spO1xuIFxuQEAgLTE0NDQsNiAmIzQzOzE0NDgsOCBAQCB2b2lkIGt2bV9zZWxmdGVzdF9hcmNoX2luaXQodm9pZClcbiBcdGhvc3RfY3B1X2lzX2FtZCA9IHRoaXNfY3B1X2lzX2FtZCgpO1xuIFx0aG9zdF9jcHVfaXNfaHlnb24gPSB0aGlzX2NwdV9pc19oeWdvbigpO1xuIFx0aG9zdF9jcHVfaXNfYW1kX2NvbXBhdGlibGUgPSBob3N0X2NwdV9pc19hbWQgfHwgaG9zdF9jcHVfaXNfaHlnb247XG4mIzQzO1x0aG9zdF9jcHVfaXNfemhhb3hpbiA9IHRoaXNfY3B1X2lzX3poYW94aW4oKTtcbiYjNDM7XHRob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlID0gaG9zdF9jcHVfaXNfaW50ZWwgfHwgaG9zdF9jcHVfaXNfemhhb3hpbjtcbiBcdGlzX2ZvcmNlZF9lbXVsYXRpb25fZW5hYmxlZCA9IGt2bV9pc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQoKTtcbiBcbiBcdGt2bV9pbml0X3BtdV9lcnJhdGEoKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni92bXguYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jXG5pbmRleCAwODllMWE4YWY1M2ZjLi5lNTEyMTkxZjFlZWQ3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvdm14LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jXG5AQCAtMzkwLDYgJiM0MzszOTAsMjEgQEAgYm9vbCBrdm1fY3B1X2hhc19lcHQodm9pZClcbiBcdHJldHVybiBjdHJsIFx1MDAyNiBTRUNPTkRBUllfRVhFQ19FTkFCTEVfRVBUO1xuIH1cbiBcbiYjNDM7Ym9vbCBrdm1fY3B1X2hhc192bXhfYXBpY19hY2Nlc3NfdmlydCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0dTY0IGN0cmw7XG4mIzQzO1xuJiM0MztcdGlmICgha3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfVk1YKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0Y3RybCA9IGt2bV9nZXRfZmVhdHVyZV9tc3IoTVNSX0lBMzJfVk1YX1RSVUVfUFJPQ0JBU0VEX0NUTFMpIFx1MDAzZVx1MDAzZSAzMjtcbiYjNDM7XHRpZiAoIShjdHJsIFx1MDAyNiBDUFVfQkFTRURfQUNUSVZBVEVfU0VDT05EQVJZX0NPTlRST0xTKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0Y3RybCA9IGt2bV9nZXRfZmVhdHVyZV9tc3IoTVNSX0lBMzJfVk1YX1BST0NCQVNFRF9DVExTMikgXHUwMDNlXHUwMDNlIDMyO1xuJiM0MztcdHJldHVybiBjdHJsIFx1MDAyNiBTRUNPTkRBUllfRVhFQ19WSVJUVUFMSVpFX0FQSUNfQUNDRVNTRVM7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBwcmVwYXJlX3ZpcnR1YWxpemVfYXBpY19hY2Nlc3NlcyhzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgsIHN0cnVjdCBrdm1fdm0gKnZtKVxuIHtcbiBcdHZteC1cdTAwM2VhcGljX2FjY2VzcyA9ICh2b2lkICopdm1fYWxsb2NfcGFnZSh2bSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jXG5pbmRleCAxNTg1NTA3MDE3NzE4Li5iYjMzOTcwOWQ2MWQ4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZlYXR1cmVfbXNyc190ZXN0LmNcbkBAIC01NCwxMiAmIzQzOzU0LDI1IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmVhdHVyZV9tc3IodTMyIG1zcilcbiBcdGlmIChpc19rdm1fY29udHJvbGxlZF9tc3IobXNyKSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogS1ZNIGFsbG93cyB1c2Vyc3BhY2UgdG8gcXVlcnkgTVNSX0lBMzJfUEVSRl9DQVBBQklMSVRJRVMgYXMgYVxuJiM0MztcdCAqIGZlYXR1cmUgTVNSIGV2ZW4gaWYgS1ZNIGRvZXNuJiMzOTt0IGV4cG9zZSBQRENNLCBidXQgdkNQVSBhY2Nlc3NlcyB0b1xuJiM0MztcdCAqIHRoZSBNU1Igd2lsbCBmYWlsIGluIHRoYXQgY2FzZS4gU2tpcCB0aGUgdkNQVSBjaGVja3Mgc28gdGhhdCB0aGVcbiYjNDM7XHQgKiByZW1haW5pbmcgZmVhdHVyZSBNU1JzIGNhbiBiZSB0ZXN0ZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKG1zciA9PSBNU1JfSUEzMl9QRVJGX0NBUEFCSUxJVElFUyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIWt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1BEQ00pKSB7XG4mIzQzO1x0XHRwcmludGYoXCYjMzQ7S1ZNIGRvZXMgbm90IGV4cG9zZSBQRENNLCBza2lwcGluZyB2Q1BVIGNoZWNrcyBmb3IgXCYjMzQ7XG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7TVNSX0lBMzJfUEVSRl9DQVBBQklMSVRJRVMgKDB4JXgpLlxcblwmIzM0OywgbXNyKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LypcbiBcdCAqIE1vcmUgZ29vZnkgYmVoYXZpb3IuICBLVk0gcmVwb3J0cyB0aGUgaG9zdCBDUFUmIzM5O3MgYWN0dWFsIHJldmlzaW9uIElELFxuIFx0ICogYnV0IGluaXRpYWxpemVzIHRoZSB2Q1BVJiMzOTtzIHJldmlzaW9uIElEIHRvIGFuIGFyYml0cmFyeSB2YWx1ZS5cbiBcdCAqL1xuIFx0aWYgKG1zciA9PSBNU1JfSUEzMl9VQ09ERV9SRVYpXG4tXHRcdHJlc2V0X3ZhbHVlID0gaG9zdF9jcHVfaXNfaW50ZWwgPyAweDEwMDAwMDAwMFVMTCA6IDB4MDEwMDAwNjU7XG4mIzQzO1x0XHRyZXNldF92YWx1ZSA9IGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUgPyAweDEwMDAwMDAwMFVMTCA6IDB4MDEwMDAwNjU7XG4gXG4gXHQvKlxuIFx0ICogRm9yIHF1aXJrZWQgTVNScywgS1ZNJiMzOTtzIEFCSSBpcyB0byBpbml0aWFsaXplIHRoZSB2Q1BVJiMzOTtzIHZhbHVlIHRvIHRoZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZml4X2h5cGVyY2FsbF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZpeF9oeXBlcmNhbGxfdGVzdC5jXG5pbmRleCA0OTMxZWMyMjc2OGVlLi5mMTFmY2M1MjBmMjQxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuY1xuQEAgLTQ4LDcgJiM0Mzs0OCw3IEBAIHN0YXRpYyB2b2lkIGd1ZXN0X21haW4odm9pZClcbiBcdGNvbnN0IHU4ICpvdGhlcl9oeXBlcmNhbGxfaW5zbjtcbiBcdHU2NCByZXQ7XG4gXG4tXHRpZiAoaG9zdF9jcHVfaXNfaW50ZWwpIHtcbiYjNDM7XHRpZiAoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSkge1xuIFx0XHRuYXRpdmVfaHlwZXJjYWxsX2luc24gPSB2bXhfdm1jYWxsO1xuIFx0XHRvdGhlcl9oeXBlcmNhbGxfaW5zbiAgPSBzdm1fdm1tY2FsbDtcbiBcdH0gZWxzZSBpZiAoaG9zdF9jcHVfaXNfYW1kX2NvbXBhdGlibGUpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jXG5pbmRleCBhZWVjMzEyMWM4ZTgzLi43OGMyN2ZhN2MxYTg3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9uZXN0ZWRfZXhjZXB0aW9uc190ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jXG5AQCAtMzgsNiAmIzQzOzM4LDcgQEBcbiAgKi9cbiAjZGVmaW5lIEdQX0VSUk9SX0NPREVfQU1EICgoU1NfVkVDVE9SICogOCkgfCBFUlJPUl9DT0RFX0lEVF9GTEFHKVxuICNkZWZpbmUgR1BfRVJST1JfQ09ERV9JTlRFTCAoKFNTX1ZFQ1RPUiAqIDgpIHwgRVJST1JfQ09ERV9JRFRfRkxBRyB8IEVSUk9SX0NPREVfRVhUX0ZMQUcpXG4mIzQzOyNkZWZpbmUgR1BfRVJST1JfQ09ERV9aSEFPWElOICgoU1NfVkVDVE9SICogOCkgfCBFUlJPUl9DT0RFX0lEVF9GTEFHKVxuIFxuIC8qXG4gICogSW50ZWwgYW5kIEFNRCBib3RoIHNob3ZlICYjMzk7MCYjMzk7IGludG8gdGhlIGVycm9yIGNvZGUgb24gI0RGLCByZWdhcmRsZXNzIG9mIHdoYXRcbkBAIC0xMzksNyAmIzQzOzE0MCw4IEBAIHN0YXRpYyB2b2lkIGwxX3ZteF9jb2RlKHN0cnVjdCB2bXhfcGFnZXMgKnZteClcbiBcdCAqL1xuIFx0R1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0dQX0RGKSwgMCk7XG4gXHR2bXhfcnVuX2wyKGwyX3NzX3BlbmRpbmdfdGVzdCwgU1NfVkVDVE9SLCAodTE2KVNTX0VSUk9SX0NPREUpO1xuLVx0dm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9ncF90ZXN0LCBHUF9WRUNUT1IsIEdQX0VSUk9SX0NPREVfSU5URUwpO1xuJiM0MztcdHZteF9ydW5fbDIobDJfc3NfaW5qZWN0ZWRfZ3BfdGVzdCwgR1BfVkVDVE9SLFxuJiM0MztcdFx0ICAgaG9zdF9jcHVfaXNfemhhb3hpbiA/IEdQX0VSUk9SX0NPREVfWkhBT1hJTiA6IEdQX0VSUk9SX0NPREVfSU5URUwpO1xuIFxuIFx0R1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0RGKSwgMCk7XG4gXHR2bXhfcnVuX2wyKGwyX3NzX2luamVjdGVkX2RmX3Rlc3QsIERGX1ZFQ1RPUiwgREZfRVJST1JfQ09ERSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jXG5pbmRleCA0NjNmNzNhYTkxNTlhLi5hMWI2ZGE0YzA3NDA4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9hcGljX2FjY2Vzc190ZXN0LmNcbkBAIC03OCw2ICYjNDM7NzgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0c3RydWN0IGt2bV92bSAqdm07XG4gXG4gXHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfVk1YKSk7XG4mIzQzO1x0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KCkpO1xuIFxuIFx0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBsMV9ndWVzdF9jb2RlKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmNcbmluZGV4IDJjYWU4NmQ5ZDVlMmUuLjA4YTBjYWE5YzUyZGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY1xuQEAgLTEwOSw3ICYjNDM7MTA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcdHN0cnVjdCBrdm1fdm0gKnZtO1xuIFxuLVx0VEVTVF9SRVFVSVJFKGhvc3RfY3B1X2lzX2ludGVsKTtcbiYjNDM7XHRURVNUX1JFUVVJUkUoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSk7XG4gXHRURVNUX1JFUVVJUkUoIWt2bV9pc191bnJlc3RyaWN0ZWRfZ3Vlc3RfZW5hYmxlZCgpKTtcbiBcbiBcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXHUwMDI2dmNwdSwgZ3Vlc3RfY29kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTM6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBLVk0gdXNlcnNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIGFuZCBkb2VzIG5vdCB0b3VjaCBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTI1YzI5OGRmNGE5NWM1NzQ3Nzg2MzRmN2Y2YmRiMThkMWU3MTU2NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDEzOjM0OjU3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCmluZGV4IDZlNmY3MDAzNTUwOGEuLmRmMzY4MjMyY2YzZTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmgKQEAgLTIzLDYgJiM0MzsyMyw4IEBAIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2ludGVsOwogZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfYW1kOwogZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfaHlnb247CiBleHRlcm4gYm9vbCBob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZTsKJiM0MztleHRlcm4gYm9vbCBob3N0X2NwdV9pc196aGFveGluOwomIzQzO2V4dGVybiBib29sIGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGU7CiBleHRlcm4gdTY0IGd1ZXN0X3RzY19raHo7CiBleHRlcm4gc3RydWN0IGt2bV9tbXUgZ3Vlc3RfbW11OwogCkBAIC03ODIsNiAmIzQzOzc4NCwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdGhpc19jcHVfaXNfaHlnb24odm9pZCkKIAlyZXR1cm4gdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcygmIzM0O0h5Z29uR2VudWluZSYjMzQ7KTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCB0aGlzX2NwdV9pc196aGFveGluKHZvaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcygmIzM0O0NlbnRhdXJIYXVscyYjMzQ7KSB8fAomIzQzOwkgICAgICAgdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcygmIzM0OyAgU2hhbmdoYWkgICYjMzQ7KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIHUzMiBfX3RoaXNfY3B1X2hhcyh1MzIgZnVuY3Rpb24sIHUzMiBpbmRleCwgdTggcmVnLCB1OCBsbywgdTggaGkpCiB7CiAJdTMyIGdwcnNbNF07CkBAIC0xNDQ2LDcgJiM0MzsxNDU0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGt2bV9pc19wbXVfZW5hYmxlZCh2b2lkKQogCiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX21lZGlhdGVkX3BtdV9lbmFibGVkKHZvaWQpCiB7Ci0JaWYgKGhvc3RfY3B1X2lzX2ludGVsKQomIzQzOwlpZiAoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSkKIAkJcmV0dXJuIGdldF9rdm1faW50ZWxfcGFyYW1fYm9vbCgmIzM0O2VuYWJsZV9tZWRpYXRlZF9wbXUmIzM0Oyk7CiAKIAlyZXR1cm4gZ2V0X2t2bV9hbWRfcGFyYW1fYm9vbCgmIzM0O2VuYWJsZV9tZWRpYXRlZF9wbXUmIzM0Oyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvdm14LmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvdm14LmgKaW5kZXggMDRmNWUzNGRlYTNhZS4uYjE5NjY1MWJkZWEyNiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni92bXguaApAQCAtNTU3LDYgJiM0Mzs1NTcsNyBAQCBib29sIGxvYWRfdm1jcyhzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgpOwogYm9vbCBlcHRfMWdfcGFnZXNfc3VwcG9ydGVkKHZvaWQpOwogCiBib29sIGt2bV9jcHVfaGFzX2VwdCh2b2lkKTsKJiM0Mztib29sIGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KHZvaWQpOwogdm9pZCB2bV9lbmFibGVfZXB0KHN0cnVjdCBrdm1fdm0gKnZtKTsKIHZvaWQgcHJlcGFyZV92aXJ0dWFsaXplX2FwaWNfYWNjZXNzZXMoc3RydWN0IHZteF9wYWdlcyAqdm14LCBzdHJ1Y3Qga3ZtX3ZtICp2bSk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmMKaW5kZXggZDMxZmE4MWVhMDc1Ni4uYmQ1MGMxMjY1Y2VmYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmMKQEAgLTI2LDYgJiM0MzsyNiw4IEBAIGJvb2wgaG9zdF9jcHVfaXNfYW1kOwogYm9vbCBob3N0X2NwdV9pc19pbnRlbDsKIGJvb2wgaG9zdF9jcHVfaXNfaHlnb247CiBib29sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlOwomIzQzO2Jvb2wgaG9zdF9jcHVfaXNfemhhb3hpbjsKJiM0Mztib29sIGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGU7CiBib29sIGlzX2ZvcmNlZF9lbXVsYXRpb25fZW5hYmxlZDsKIHU2NCBndWVzdF90c2Nfa2h6Owogc3RydWN0IGt2bV9tbXUgZ3Vlc3RfbW11OwpAQCAtMTU4LDcgJiM0MzsxNjAsNyBAQCBzdGF0aWMgdm9pZCBzcmVnc19kdW1wKEZJTEUgKnN0cmVhbSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsIHU4IGluZGVudCkKIAogYm9vbCBrdm1faXNfdGRwX2VuYWJsZWQodm9pZCkKIHsKLQlpZiAoaG9zdF9jcHVfaXNfaW50ZWwpCiYjNDM7CWlmIChob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKQogCQlyZXR1cm4gZ2V0X2t2bV9pbnRlbF9wYXJhbV9ib29sKCYjMzQ7ZXB0JiMzNDspOwogCWVsc2UKIAkJcmV0dXJuIGdldF9rdm1fYW1kX3BhcmFtX2Jvb2woJiMzNDtucHQmIzM0Oyk7CkBAIC04MTksNiAmIzQzOzgyMSw4IEBAIHZvaWQga3ZtX2FyY2hfdm1fcG9zdF9jcmVhdGUoc3RydWN0IGt2bV92bSAqdm0sIHVuc2lnbmVkIGludCBucl92Y3B1cykKIAlzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfYW1kKTsKIAlzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfaHlnb24pOwogCXN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZSk7CiYjNDM7CXN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc196aGFveGluKTsKJiM0MzsJc3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUpOwogCXN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQpOwogCXN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBwbXVfZXJyYXRhX21hc2spOwogCkBAIC0xNDQ0LDYgJiM0MzsxNDQ4LDggQEAgdm9pZCBrdm1fc2VsZnRlc3RfYXJjaF9pbml0KHZvaWQpCiAJaG9zdF9jcHVfaXNfYW1kID0gdGhpc19jcHVfaXNfYW1kKCk7CiAJaG9zdF9jcHVfaXNfaHlnb24gPSB0aGlzX2NwdV9pc19oeWdvbigpOwogCWhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlID0gaG9zdF9jcHVfaXNfYW1kIHx8IGhvc3RfY3B1X2lzX2h5Z29uOwomIzQzOwlob3N0X2NwdV9pc196aGFveGluID0gdGhpc19jcHVfaXNfemhhb3hpbigpOwomIzQzOwlob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlID0gaG9zdF9jcHVfaXNfaW50ZWwgfHwgaG9zdF9jcHVfaXNfemhhb3hpbjsKIAlpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQgPSBrdm1faXNfZm9yY2VkX2VtdWxhdGlvbl9lbmFibGVkKCk7CiAKIAlrdm1faW5pdF9wbXVfZXJyYXRhKCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni92bXguYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jCmluZGV4IDA4OWUxYThhZjUzZmMuLmU1MTIxOTFmMWVlZDcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jCkBAIC0zOTAsNiAmIzQzOzM5MCwyMSBAQCBib29sIGt2bV9jcHVfaGFzX2VwdCh2b2lkKQogCXJldHVybiBjdHJsICZhbXA7IFNFQ09OREFSWV9FWEVDX0VOQUJMRV9FUFQ7CiB9CiAKJiM0Mztib29sIGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KHZvaWQpCiYjNDM7ewomIzQzOwl1NjQgY3RybDsKJiM0MzsKJiM0MzsJaWYgKCFrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9WTVgpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwljdHJsID0ga3ZtX2dldF9mZWF0dXJlX21zcihNU1JfSUEzMl9WTVhfVFJVRV9QUk9DQkFTRURfQ1RMUykgJmd0OyZndDsgMzI7CiYjNDM7CWlmICghKGN0cmwgJmFtcDsgQ1BVX0JBU0VEX0FDVElWQVRFX1NFQ09OREFSWV9DT05UUk9MUykpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWN0cmwgPSBrdm1fZ2V0X2ZlYXR1cmVfbXNyKE1TUl9JQTMyX1ZNWF9QUk9DQkFTRURfQ1RMUzIpICZndDsmZ3Q7IDMyOwomIzQzOwlyZXR1cm4gY3RybCAmYW1wOyBTRUNPTkRBUllfRVhFQ19WSVJUVUFMSVpFX0FQSUNfQUNDRVNTRVM7CiYjNDM7fQomIzQzOwogdm9pZCBwcmVwYXJlX3ZpcnR1YWxpemVfYXBpY19hY2Nlc3NlcyhzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgsIHN0cnVjdCBrdm1fdm0gKnZtKQogewogCXZteC0mZ3Q7YXBpY19hY2Nlc3MgPSAodm9pZCAqKXZtX2FsbG9jX3BhZ2Uodm0pOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jCmluZGV4IDE1ODU1MDcwMTc3MTguLmJiMzM5NzA5ZDYxZDggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZlYXR1cmVfbXNyc190ZXN0LmMKQEAgLTU0LDEyICYjNDM7NTQsMjUgQEAgc3RhdGljIHZvaWQgdGVzdF9mZWF0dXJlX21zcih1MzIgbXNyKQogCWlmIChpc19rdm1fY29udHJvbGxlZF9tc3IobXNyKSkKIAkJcmV0dXJuOwogCiYjNDM7CS8qCiYjNDM7CSAqIEtWTSBhbGxvd3MgdXNlcnNwYWNlIHRvIHF1ZXJ5IE1TUl9JQTMyX1BFUkZfQ0FQQUJJTElUSUVTIGFzIGEKJiM0MzsJICogZmVhdHVyZSBNU1IgZXZlbiBpZiBLVk0gZG9lc24mIzM5O3QgZXhwb3NlIFBEQ00sIGJ1dCB2Q1BVIGFjY2Vzc2VzIHRvCiYjNDM7CSAqIHRoZSBNU1Igd2lsbCBmYWlsIGluIHRoYXQgY2FzZS4gU2tpcCB0aGUgdkNQVSBjaGVja3Mgc28gdGhhdCB0aGUKJiM0MzsJICogcmVtYWluaW5nIGZlYXR1cmUgTVNScyBjYW4gYmUgdGVzdGVkLgomIzQzOwkgKi8KJiM0MzsJaWYgKG1zciA9PSBNU1JfSUEzMl9QRVJGX0NBUEFCSUxJVElFUyAmYW1wOyZhbXA7CiYjNDM7CSAgICAha3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfUERDTSkpIHsKJiM0MzsJCXByaW50ZigmIzM0O0tWTSBkb2VzIG5vdCBleHBvc2UgUERDTSwgc2tpcHBpbmcgdkNQVSBjaGVja3MgZm9yICYjMzQ7CiYjNDM7CQkgICAgICAgJiMzNDtNU1JfSUEzMl9QRVJGX0NBUEFCSUxJVElFUyAoMHgleCkuXG4mIzM0OywgbXNyKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCS8qCiAJICogTW9yZSBnb29meSBiZWhhdmlvci4gIEtWTSByZXBvcnRzIHRoZSBob3N0IENQVSYjMzk7cyBhY3R1YWwgcmV2aXNpb24gSUQsCiAJICogYnV0IGluaXRpYWxpemVzIHRoZSB2Q1BVJiMzOTtzIHJldmlzaW9uIElEIHRvIGFuIGFyYml0cmFyeSB2YWx1ZS4KIAkgKi8KIAlpZiAobXNyID09IE1TUl9JQTMyX1VDT0RFX1JFVikKLQkJcmVzZXRfdmFsdWUgPSBob3N0X2NwdV9pc19pbnRlbCA/IDB4MTAwMDAwMDAwVUxMIDogMHgwMTAwMDA2NTsKJiM0MzsJCXJlc2V0X3ZhbHVlID0gaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSA/IDB4MTAwMDAwMDAwVUxMIDogMHgwMTAwMDA2NTsKIAogCS8qCiAJICogRm9yIHF1aXJrZWQgTVNScywgS1ZNJiMzOTtzIEFCSSBpcyB0byBpbml0aWFsaXplIHRoZSB2Q1BVJiMzOTtzIHZhbHVlIHRvIHRoZQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZml4X2h5cGVyY2FsbF90ZXN0LmMKaW5kZXggNDkzMWVjMjI3NjhlZS4uZjExZmNjNTIwZjI0MSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZpeF9oeXBlcmNhbGxfdGVzdC5jCkBAIC00OCw3ICYjNDM7NDgsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9tYWluKHZvaWQpCiAJY29uc3QgdTggKm90aGVyX2h5cGVyY2FsbF9pbnNuOwogCXU2NCByZXQ7CiAKLQlpZiAoaG9zdF9jcHVfaXNfaW50ZWwpIHsKJiM0MzsJaWYgKGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUpIHsKIAkJbmF0aXZlX2h5cGVyY2FsbF9pbnNuID0gdm14X3ZtY2FsbDsKIAkJb3RoZXJfaHlwZXJjYWxsX2luc24gID0gc3ZtX3ZtbWNhbGw7CiAJfSBlbHNlIGlmIChob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZSkgewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9uZXN0ZWRfZXhjZXB0aW9uc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuYwppbmRleCBhZWVjMzEyMWM4ZTgzLi43OGMyN2ZhN2MxYTg3IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuYwpAQCAtMzgsNiAmIzQzOzM4LDcgQEAKICAqLwogI2RlZmluZSBHUF9FUlJPUl9DT0RFX0FNRCAoKFNTX1ZFQ1RPUiAqIDgpIHwgRVJST1JfQ09ERV9JRFRfRkxBRykKICNkZWZpbmUgR1BfRVJST1JfQ09ERV9JTlRFTCAoKFNTX1ZFQ1RPUiAqIDgpIHwgRVJST1JfQ09ERV9JRFRfRkxBRyB8IEVSUk9SX0NPREVfRVhUX0ZMQUcpCiYjNDM7I2RlZmluZSBHUF9FUlJPUl9DT0RFX1pIQU9YSU4gKChTU19WRUNUT1IgKiA4KSB8IEVSUk9SX0NPREVfSURUX0ZMQUcpCiAKIC8qCiAgKiBJbnRlbCBhbmQgQU1EIGJvdGggc2hvdmUgJiMzOTswJiMzOTsgaW50byB0aGUgZXJyb3IgY29kZSBvbiAjREYsIHJlZ2FyZGxlc3Mgb2Ygd2hhdApAQCAtMTM5LDcgJiM0MzsxNDAsOCBAQCBzdGF0aWMgdm9pZCBsMV92bXhfY29kZShzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgpCiAJICovCiAJR1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0dQX0RGKSwgMCk7CiAJdm14X3J1bl9sMihsMl9zc19wZW5kaW5nX3Rlc3QsIFNTX1ZFQ1RPUiwgKHUxNilTU19FUlJPUl9DT0RFKTsKLQl2bXhfcnVuX2wyKGwyX3NzX2luamVjdGVkX2dwX3Rlc3QsIEdQX1ZFQ1RPUiwgR1BfRVJST1JfQ09ERV9JTlRFTCk7CiYjNDM7CXZteF9ydW5fbDIobDJfc3NfaW5qZWN0ZWRfZ3BfdGVzdCwgR1BfVkVDVE9SLAomIzQzOwkJICAgaG9zdF9jcHVfaXNfemhhb3hpbiA/IEdQX0VSUk9SX0NPREVfWkhBT1hJTiA6IEdQX0VSUk9SX0NPREVfSU5URUwpOwogCiAJR1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0RGKSwgMCk7CiAJdm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9kZl90ZXN0LCBERl9WRUNUT1IsIERGX0VSUk9SX0NPREUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jCmluZGV4IDQ2M2Y3M2FhOTE1OWEuLmExYjZkYTRjMDc0MDggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2FwaWNfYWNjZXNzX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9hcGljX2FjY2Vzc190ZXN0LmMKQEAgLTc4LDYgJiM0Mzs3OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJc3RydWN0IGt2bV92bSAqdm07CiAKIAlURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfVk1YKSk7CiYjNDM7CVRFU1RfUkVRVUlSRShrdm1fY3B1X2hhc192bXhfYXBpY19hY2Nlc3NfdmlydCgpKTsKIAogCXZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoJmFtcDt2Y3B1LCBsMV9ndWVzdF9jb2RlKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfZXhjZXB0aW9uX3dpdGhfaW52YWxpZF9ndWVzdF9zdGF0ZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfZXhjZXB0aW9uX3dpdGhfaW52YWxpZF9ndWVzdF9zdGF0ZS5jCmluZGV4IDJjYWU4NmQ5ZDVlMmUuLjA4YTBjYWE5YzUyZGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmMKQEAgLTEwOSw3ICYjNDM7MTA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7CiAJc3RydWN0IGt2bV92bSAqdm07CiAKLQlURVNUX1JFUVVJUkUoaG9zdF9jcHVfaXNfaW50ZWwpOwomIzQzOwlURVNUX1JFUVVJUkUoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSk7CiAJVEVTVF9SRVFVSVJFKCFrdm1faXNfdW5yZXN0cmljdGVkX2d1ZXN0X2VuYWJsZWQoKSk7CiAKIAl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgZ3Vlc3RfY29kZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1ODcKCQkJCQkJCW91dHB1dDogNjgKCQkJCQkJCXRob3VnaHRzOiA1MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGlzIGNsZWFybHkgbG9jYWxpemVkIHRvIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYC4gSSBzZWUgdGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgYmVpbmcgbW9kaWZpZWQ6IGBpbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaGAsIGBpbmNsdWRlL3g4Ni92bXguaGAsIGBsaWIveDg2L3Byb2Nlc3Nvci5jYCwgYGxpYi94ODYvdm14LmNgLCBhbmQgYSBoYW5kZnVsIG9mIGB4ODYvYCB0ZXN0czogYGZlYXR1cmVfbXNyc190ZXN0LmNgLCBgZml4X2h5cGVyY2FsbF90ZXN0LmNgLCBgbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jYCwgYHZteF9hcGljX2FjY2Vzc190ZXN0LmNgLCBhbmQgYHZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmNgLgoKTm93LCBhY2NvcmRpbmcgdG8gdGhlIGBXb3J0aEZ1enppbmdgIHJ1bGVzIChzcGVjaWZpY2FsbHkgU2VjdGlvbiAyKSwgd2Ugb25seSBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgYWxsIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gc3BlY2lmaWMgY2F0ZWdvcmllcy4gTGV0IG1lIHNlZS4uLiAmIzM0O05vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIHdoaWNoIGluY2x1ZGVzIG1vZGlmaWNhdGlvbnMgdG8gdXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cy4uLiB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuJiMzNDsgQmluZ28hIFRoaXMgaXMgcHJlY2lzZWx5IHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQuIFRoZXNlIGFyZSBhbGwgS1ZNIHVzZXJzcGFjZSBzZWxmdGVzdHMuCgpUaGVyZWZvcmUsIHRoaXMgaXMgYSBjbGVhciBjYXNlIGZvciBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTm8gZnV6emluZyBuZWVkZWQgaGVyZS4KClNvLCBsZXQmIzM5O3MgcHJlcGFyZSB0aGUgdG9vbCBjYWxsOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIGBmYWxzZWAgKFVucXVlc3Rpb25hYmx5KQoqICAgKipGb2N1c1N5bWJvbHM6KiogKEVtcHR5IC0gbm90IHJlbGV2YW50IGhlcmUpCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogKEVtcHR5IC0gYWxzbyBub3QgcmVsZXZhbnQgaGVyZSkKKiAgICoqUmVhc29uaW5nOioqIEFsbCBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byBLVk0gdXNlcnNwYWNlIHNlbGZ0ZXN0cyB1bmRlciBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2AgYW5kICpkbyBub3QqIGFmZmVjdCB0aGUgY29yZSBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcy4gVGhpcyBhbGlnbnMgcGVyZmVjdGx5IHdpdGggdGhlIGNyaXRlcmlhIGZvciBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBLVk0gdXNlcnNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIGFuZCBkb2VzIG5vdCB0b3VjaCBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBvbmx5IEtWTSB1c2Vyc3BhY2Ugc2VsZnRlc3RzIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8gYW5kIGRvZXMgbm90IHRvdWNoIGFueSBrZXJuZWwgY29kZSBvciBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTM6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjU4LjkyODM2MjA0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU3OTM0MTQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG9ubHkgS1ZNIHVzZXJzcGFjZSBzZWxmdGVzdHMgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyBhbmQgZG9lcyBub3QgdG91Y2ggYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTM6MzQ6NTguOTI4MzY2MjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTQzMjAyNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMjVjMjk4ZGY0YTk1YzU3NDc3ODYzNGY3ZjZiZGIxOGQxZTcxNTY0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDEzOjM0OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxcbmluZGV4IDZlNmY3MDAzNTUwOGEuLmRmMzY4MjMyY2YzZTEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXFxuQEAgLTIzLDYgKzIzLDggQEAgZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfaW50ZWw7XFxuIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2FtZDtcXG4gZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfaHlnb247XFxuIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlO1xcbitleHRlcm4gYm9vbCBob3N0X2NwdV9pc196aGFveGluO1xcbitleHRlcm4gYm9vbCBob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlO1xcbiBleHRlcm4gdTY0IGd1ZXN0X3RzY19raHo7XFxuIGV4dGVybiBzdHJ1Y3Qga3ZtX21tdSBndWVzdF9tbXU7XFxuIFxcbkBAIC03ODIsNiArNzg0LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0aGlzX2NwdV9pc19oeWdvbih2b2lkKVxcbiBcXHRyZXR1cm4gdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcyhcXFwiSHlnb25HZW51aW5lXFxcIik7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCB0aGlzX2NwdV9pc196aGFveGluKHZvaWQpXFxuK3tcXG4rXFx0cmV0dXJuIHRoaXNfY3B1X3ZlbmRvcl9zdHJpbmdfaXMoXFxcIkNlbnRhdXJIYXVsc1xcXCIpIHx8XFxuK1xcdCAgICAgICB0aGlzX2NwdV92ZW5kb3Jfc3RyaW5nX2lzKFxcXCIgIFNoYW5naGFpICBcXFwiKTtcXG4rfVxcbitcXG4gc3RhdGljIGlubGluZSB1MzIgX190aGlzX2NwdV9oYXModTMyIGZ1bmN0aW9uLCB1MzIgaW5kZXgsIHU4IHJlZywgdTggbG8sIHU4IGhpKVxcbiB7XFxuIFxcdHUzMiBncHJzWzRdO1xcbkBAIC0xNDQ2LDcgKzE0NTQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX3BtdV9lbmFibGVkKHZvaWQpXFxuIFxcbiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX21lZGlhdGVkX3BtdV9lbmFibGVkKHZvaWQpXFxuIHtcXG4tXFx0aWYgKGhvc3RfY3B1X2lzX2ludGVsKVxcbitcXHRpZiAoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSlcXG4gXFx0XFx0cmV0dXJuIGdldF9rdm1faW50ZWxfcGFyYW1fYm9vbChcXFwiZW5hYmxlX21lZGlhdGVkX3BtdVxcXCIpO1xcbiBcXG4gXFx0cmV0dXJuIGdldF9rdm1fYW1kX3BhcmFtX2Jvb2woXFxcImVuYWJsZV9tZWRpYXRlZF9wbXVcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oXFxuaW5kZXggMDRmNWUzNGRlYTNhZS4uYjE5NjY1MWJkZWEyNiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvdm14LmhcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvdm14LmhcXG5AQCAtNTU3LDYgKzU1Nyw3IEBAIGJvb2wgbG9hZF92bWNzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCk7XFxuIGJvb2wgZXB0XzFnX3BhZ2VzX3N1cHBvcnRlZCh2b2lkKTtcXG4gXFxuIGJvb2wga3ZtX2NwdV9oYXNfZXB0KHZvaWQpO1xcbitib29sIGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KHZvaWQpO1xcbiB2b2lkIHZtX2VuYWJsZV9lcHQoc3RydWN0IGt2bV92bSAqdm0pO1xcbiB2b2lkIHByZXBhcmVfdmlydHVhbGl6ZV9hcGljX2FjY2Vzc2VzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCwgc3RydWN0IGt2bV92bSAqdm0pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9wcm9jZXNzb3IuY1xcbmluZGV4IGQzMWZhODFlYTA3NTYuLmJkNTBjMTI2NWNlZmEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9wcm9jZXNzb3IuY1xcbkBAIC0yNiw2ICsyNiw4IEBAIGJvb2wgaG9zdF9jcHVfaXNfYW1kO1xcbiBib29sIGhvc3RfY3B1X2lzX2ludGVsO1xcbiBib29sIGhvc3RfY3B1X2lzX2h5Z29uO1xcbiBib29sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlO1xcbitib29sIGhvc3RfY3B1X2lzX3poYW94aW47XFxuK2Jvb2wgaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZTtcXG4gYm9vbCBpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQ7XFxuIHU2NCBndWVzdF90c2Nfa2h6O1xcbiBzdHJ1Y3Qga3ZtX21tdSBndWVzdF9tbXU7XFxuQEAgLTE1OCw3ICsxNjAsNyBAQCBzdGF0aWMgdm9pZCBzcmVnc19kdW1wKEZJTEUgKnN0cmVhbSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsIHU4IGluZGVudClcXG4gXFxuIGJvb2wga3ZtX2lzX3RkcF9lbmFibGVkKHZvaWQpXFxuIHtcXG4tXFx0aWYgKGhvc3RfY3B1X2lzX2ludGVsKVxcbitcXHRpZiAoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSlcXG4gXFx0XFx0cmV0dXJuIGdldF9rdm1faW50ZWxfcGFyYW1fYm9vbChcXFwiZXB0XFxcIik7XFxuIFxcdGVsc2VcXG4gXFx0XFx0cmV0dXJuIGdldF9rdm1fYW1kX3BhcmFtX2Jvb2woXFxcIm5wdFxcXCIpO1xcbkBAIC04MTksNiArODIxLDggQEAgdm9pZCBrdm1fYXJjaF92bV9wb3N0X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZtICp2bSwgdW5zaWduZWQgaW50IG5yX3ZjcHVzKVxcbiBcXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfYW1kKTtcXG4gXFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX2h5Z29uKTtcXG4gXFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlKTtcXG4rXFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX3poYW94aW4pO1xcbitcXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSk7XFxuIFxcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQpO1xcbiBcXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgcG11X2VycmF0YV9tYXNrKTtcXG4gXFxuQEAgLTE0NDQsNiArMTQ0OCw4IEBAIHZvaWQga3ZtX3NlbGZ0ZXN0X2FyY2hfaW5pdCh2b2lkKVxcbiBcXHRob3N0X2NwdV9pc19hbWQgPSB0aGlzX2NwdV9pc19hbWQoKTtcXG4gXFx0aG9zdF9jcHVfaXNfaHlnb24gPSB0aGlzX2NwdV9pc19oeWdvbigpO1xcbiBcXHRob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZSA9IGhvc3RfY3B1X2lzX2FtZCB8fCBob3N0X2NwdV9pc19oeWdvbjtcXG4rXFx0aG9zdF9jcHVfaXNfemhhb3hpbiA9IHRoaXNfY3B1X2lzX3poYW94aW4oKTtcXG4rXFx0aG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSA9IGhvc3RfY3B1X2lzX2ludGVsIHx8IGhvc3RfY3B1X2lzX3poYW94aW47XFxuIFxcdGlzX2ZvcmNlZF9lbXVsYXRpb25fZW5hYmxlZCA9IGt2bV9pc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQoKTtcXG4gXFxuIFxcdGt2bV9pbml0X3BtdV9lcnJhdGEoKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvdm14LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni92bXguY1xcbmluZGV4IDA4OWUxYThhZjUzZmMuLmU1MTIxOTFmMWVlZDcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvdm14LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni92bXguY1xcbkBAIC0zOTAsNiArMzkwLDIxIEBAIGJvb2wga3ZtX2NwdV9oYXNfZXB0KHZvaWQpXFxuIFxcdHJldHVybiBjdHJsIFxcdTAwMjYgU0VDT05EQVJZX0VYRUNfRU5BQkxFX0VQVDtcXG4gfVxcbiBcXG4rYm9vbCBrdm1fY3B1X2hhc192bXhfYXBpY19hY2Nlc3NfdmlydCh2b2lkKVxcbit7XFxuK1xcdHU2NCBjdHJsO1xcbitcXG4rXFx0aWYgKCFrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9WTVgpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRjdHJsID0ga3ZtX2dldF9mZWF0dXJlX21zcihNU1JfSUEzMl9WTVhfVFJVRV9QUk9DQkFTRURfQ1RMUykgXFx1MDAzZVxcdTAwM2UgMzI7XFxuK1xcdGlmICghKGN0cmwgXFx1MDAyNiBDUFVfQkFTRURfQUNUSVZBVEVfU0VDT05EQVJZX0NPTlRST0xTKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0Y3RybCA9IGt2bV9nZXRfZmVhdHVyZV9tc3IoTVNSX0lBMzJfVk1YX1BST0NCQVNFRF9DVExTMikgXFx1MDAzZVxcdTAwM2UgMzI7XFxuK1xcdHJldHVybiBjdHJsIFxcdTAwMjYgU0VDT05EQVJZX0VYRUNfVklSVFVBTElaRV9BUElDX0FDQ0VTU0VTO1xcbit9XFxuK1xcbiB2b2lkIHByZXBhcmVfdmlydHVhbGl6ZV9hcGljX2FjY2Vzc2VzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCwgc3RydWN0IGt2bV92bSAqdm0pXFxuIHtcXG4gXFx0dm14LVxcdTAwM2VhcGljX2FjY2VzcyA9ICh2b2lkICopdm1fYWxsb2NfcGFnZSh2bSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuY1xcbmluZGV4IDE1ODU1MDcwMTc3MTguLmJiMzM5NzA5ZDYxZDggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jXFxuQEAgLTU0LDEyICs1NCwyNSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZlYXR1cmVfbXNyKHUzMiBtc3IpXFxuIFxcdGlmIChpc19rdm1fY29udHJvbGxlZF9tc3IobXNyKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogS1ZNIGFsbG93cyB1c2Vyc3BhY2UgdG8gcXVlcnkgTVNSX0lBMzJfUEVSRl9DQVBBQklMSVRJRVMgYXMgYVxcbitcXHQgKiBmZWF0dXJlIE1TUiBldmVuIGlmIEtWTSBkb2Vzbid0IGV4cG9zZSBQRENNLCBidXQgdkNQVSBhY2Nlc3NlcyB0b1xcbitcXHQgKiB0aGUgTVNSIHdpbGwgZmFpbCBpbiB0aGF0IGNhc2UuIFNraXAgdGhlIHZDUFUgY2hlY2tzIHNvIHRoYXQgdGhlXFxuK1xcdCAqIHJlbWFpbmluZyBmZWF0dXJlIE1TUnMgY2FuIGJlIHRlc3RlZC5cXG4rXFx0ICovXFxuK1xcdGlmIChtc3IgPT0gTVNSX0lBMzJfUEVSRl9DQVBBQklMSVRJRVMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9QRENNKSkge1xcbitcXHRcXHRwcmludGYoXFxcIktWTSBkb2VzIG5vdCBleHBvc2UgUERDTSwgc2tpcHBpbmcgdkNQVSBjaGVja3MgZm9yIFxcXCJcXG4rXFx0XFx0ICAgICAgIFxcXCJNU1JfSUEzMl9QRVJGX0NBUEFCSUxJVElFUyAoMHgleCkuXFxcXG5cXFwiLCBtc3IpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuIFxcdC8qXFxuIFxcdCAqIE1vcmUgZ29vZnkgYmVoYXZpb3IuICBLVk0gcmVwb3J0cyB0aGUgaG9zdCBDUFUncyBhY3R1YWwgcmV2aXNpb24gSUQsXFxuIFxcdCAqIGJ1dCBpbml0aWFsaXplcyB0aGUgdkNQVSdzIHJldmlzaW9uIElEIHRvIGFuIGFyYml0cmFyeSB2YWx1ZS5cXG4gXFx0ICovXFxuIFxcdGlmIChtc3IgPT0gTVNSX0lBMzJfVUNPREVfUkVWKVxcbi1cXHRcXHRyZXNldF92YWx1ZSA9IGhvc3RfY3B1X2lzX2ludGVsID8gMHgxMDAwMDAwMDBVTEwgOiAweDAxMDAwMDY1O1xcbitcXHRcXHRyZXNldF92YWx1ZSA9IGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUgPyAweDEwMDAwMDAwMFVMTCA6IDB4MDEwMDAwNjU7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBGb3IgcXVpcmtlZCBNU1JzLCBLVk0ncyBBQkkgaXMgdG8gaW5pdGlhbGl6ZSB0aGUgdkNQVSdzIHZhbHVlIHRvIHRoZVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZpeF9oeXBlcmNhbGxfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuY1xcbmluZGV4IDQ5MzFlYzIyNzY4ZWUuLmYxMWZjYzUyMGYyNDEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZml4X2h5cGVyY2FsbF90ZXN0LmNcXG5AQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9tYWluKHZvaWQpXFxuIFxcdGNvbnN0IHU4ICpvdGhlcl9oeXBlcmNhbGxfaW5zbjtcXG4gXFx0dTY0IHJldDtcXG4gXFxuLVxcdGlmIChob3N0X2NwdV9pc19pbnRlbCkge1xcbitcXHRpZiAoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSkge1xcbiBcXHRcXHRuYXRpdmVfaHlwZXJjYWxsX2luc24gPSB2bXhfdm1jYWxsO1xcbiBcXHRcXHRvdGhlcl9oeXBlcmNhbGxfaW5zbiAgPSBzdm1fdm1tY2FsbDtcXG4gXFx0fSBlbHNlIGlmIChob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZSkge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jXFxuaW5kZXggYWVlYzMxMjFjOGU4My4uNzhjMjdmYTdjMWE4NyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jXFxuQEAgLTM4LDYgKzM4LDcgQEBcXG4gICovXFxuICNkZWZpbmUgR1BfRVJST1JfQ09ERV9BTUQgKChTU19WRUNUT1IgKiA4KSB8IEVSUk9SX0NPREVfSURUX0ZMQUcpXFxuICNkZWZpbmUgR1BfRVJST1JfQ09ERV9JTlRFTCAoKFNTX1ZFQ1RPUiAqIDgpIHwgRVJST1JfQ09ERV9JRFRfRkxBRyB8IEVSUk9SX0NPREVfRVhUX0ZMQUcpXFxuKyNkZWZpbmUgR1BfRVJST1JfQ09ERV9aSEFPWElOICgoU1NfVkVDVE9SICogOCkgfCBFUlJPUl9DT0RFX0lEVF9GTEFHKVxcbiBcXG4gLypcXG4gICogSW50ZWwgYW5kIEFNRCBib3RoIHNob3ZlICcwJyBpbnRvIHRoZSBlcnJvciBjb2RlIG9uICNERiwgcmVnYXJkbGVzcyBvZiB3aGF0XFxuQEAgLTEzOSw3ICsxNDAsOCBAQCBzdGF0aWMgdm9pZCBsMV92bXhfY29kZShzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgpXFxuIFxcdCAqL1xcbiBcXHRHVUVTVF9BU1NFUlRfRVEodm13cml0ZShFWENFUFRJT05fQklUTUFQLCBJTlRFUkNFUFRfU1NfR1BfREYpLCAwKTtcXG4gXFx0dm14X3J1bl9sMihsMl9zc19wZW5kaW5nX3Rlc3QsIFNTX1ZFQ1RPUiwgKHUxNilTU19FUlJPUl9DT0RFKTtcXG4tXFx0dm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9ncF90ZXN0LCBHUF9WRUNUT1IsIEdQX0VSUk9SX0NPREVfSU5URUwpO1xcbitcXHR2bXhfcnVuX2wyKGwyX3NzX2luamVjdGVkX2dwX3Rlc3QsIEdQX1ZFQ1RPUixcXG4rXFx0XFx0ICAgaG9zdF9jcHVfaXNfemhhb3hpbiA/IEdQX0VSUk9SX0NPREVfWkhBT1hJTiA6IEdQX0VSUk9SX0NPREVfSU5URUwpO1xcbiBcXG4gXFx0R1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0RGKSwgMCk7XFxuIFxcdHZteF9ydW5fbDIobDJfc3NfaW5qZWN0ZWRfZGZfdGVzdCwgREZfVkVDVE9SLCBERl9FUlJPUl9DT0RFKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jXFxuaW5kZXggNDYzZjczYWE5MTU5YS4uYTFiNmRhNGMwNzQwOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9hcGljX2FjY2Vzc190ZXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9hcGljX2FjY2Vzc190ZXN0LmNcXG5AQCAtNzgsNiArNzgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcXG4gXFxuIFxcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9WTVgpKTtcXG4rXFx0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KCkpO1xcbiBcXG4gXFx0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcXHUwMDI2dmNwdSwgbDFfZ3Vlc3RfY29kZSk7XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmNcXG5pbmRleCAyY2FlODZkOWQ1ZTJlLi4wOGEwY2FhOWM1MmRhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY1xcbkBAIC0xMDksNyArMTA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbiBcXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcXG4gXFxuLVxcdFRFU1RfUkVRVUlSRShob3N0X2NwdV9pc19pbnRlbCk7XFxuK1xcdFRFU1RfUkVRVUlSRShob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKTtcXG4gXFx0VEVTVF9SRVFVSVJFKCFrdm1faXNfdW5yZXN0cmljdGVkX2d1ZXN0X2VuYWJsZWQoKSk7XFxuIFxcbiBcXHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFxcdTAwMjZ2Y3B1LCBndWVzdF9jb2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTM6MzU6MDAuNTQzMjkwMDk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3OTY0NDAzMjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IEtWTSB1c2Vyc3BhY2Ugc2VsZnRlc3RzIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8gYW5kIGRvZXMgbm90IHRvdWNoIGFueSBrZXJuZWwgY29kZSBvciBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTI1YzI5OGRmNGE5NWM1NzQ3Nzg2MzRmN2Y2YmRiMThkMWU3MTU2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDEzOjM0OjU3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5pbmRleCA2ZTZmNzAwMzU1MDhhLi5kZjM2ODIzMmNmM2UxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbkBAIC0yMyw2ICsyMyw4IEBAIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2ludGVsO1xuIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2FtZDtcbiBleHRlcm4gYm9vbCBob3N0X2NwdV9pc19oeWdvbjtcbiBleHRlcm4gYm9vbCBob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZTtcbitleHRlcm4gYm9vbCBob3N0X2NwdV9pc196aGFveGluO1xuK2V4dGVybiBib29sIGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGU7XG4gZXh0ZXJuIHU2NCBndWVzdF90c2Nfa2h6O1xuIGV4dGVybiBzdHJ1Y3Qga3ZtX21tdSBndWVzdF9tbXU7XG4gXG5AQCAtNzgyLDYgKzc4NCwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdGhpc19jcHVfaXNfaHlnb24odm9pZClcbiBcdHJldHVybiB0aGlzX2NwdV92ZW5kb3Jfc3RyaW5nX2lzKFwiSHlnb25HZW51aW5lXCIpO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIGJvb2wgdGhpc19jcHVfaXNfemhhb3hpbih2b2lkKVxuK3tcbitcdHJldHVybiB0aGlzX2NwdV92ZW5kb3Jfc3RyaW5nX2lzKFwiQ2VudGF1ckhhdWxzXCIpIHx8XG4rXHQgICAgICAgdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcyhcIiAgU2hhbmdoYWkgIFwiKTtcbit9XG4rXG4gc3RhdGljIGlubGluZSB1MzIgX190aGlzX2NwdV9oYXModTMyIGZ1bmN0aW9uLCB1MzIgaW5kZXgsIHU4IHJlZywgdTggbG8sIHU4IGhpKVxuIHtcbiBcdHUzMiBncHJzWzRdO1xuQEAgLTE0NDYsNyArMTQ1NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1faXNfcG11X2VuYWJsZWQodm9pZClcbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX21lZGlhdGVkX3BtdV9lbmFibGVkKHZvaWQpXG4ge1xuLVx0aWYgKGhvc3RfY3B1X2lzX2ludGVsKVxuK1x0aWYgKGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUpXG4gXHRcdHJldHVybiBnZXRfa3ZtX2ludGVsX3BhcmFtX2Jvb2woXCJlbmFibGVfbWVkaWF0ZWRfcG11XCIpO1xuIFxuIFx0cmV0dXJuIGdldF9rdm1fYW1kX3BhcmFtX2Jvb2woXCJlbmFibGVfbWVkaWF0ZWRfcG11XCIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni92bXguaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni92bXguaFxuaW5kZXggMDRmNWUzNGRlYTNhZS4uYjE5NjY1MWJkZWEyNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni92bXguaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oXG5AQCAtNTU3LDYgKzU1Nyw3IEBAIGJvb2wgbG9hZF92bWNzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCk7XG4gYm9vbCBlcHRfMWdfcGFnZXNfc3VwcG9ydGVkKHZvaWQpO1xuIFxuIGJvb2wga3ZtX2NwdV9oYXNfZXB0KHZvaWQpO1xuK2Jvb2wga3ZtX2NwdV9oYXNfdm14X2FwaWNfYWNjZXNzX3ZpcnQodm9pZCk7XG4gdm9pZCB2bV9lbmFibGVfZXB0KHN0cnVjdCBrdm1fdm0gKnZtKTtcbiB2b2lkIHByZXBhcmVfdmlydHVhbGl6ZV9hcGljX2FjY2Vzc2VzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCwgc3RydWN0IGt2bV92bSAqdm0pO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmNcbmluZGV4IGQzMWZhODFlYTA3NTYuLmJkNTBjMTI2NWNlZmEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9wcm9jZXNzb3IuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmNcbkBAIC0yNiw2ICsyNiw4IEBAIGJvb2wgaG9zdF9jcHVfaXNfYW1kO1xuIGJvb2wgaG9zdF9jcHVfaXNfaW50ZWw7XG4gYm9vbCBob3N0X2NwdV9pc19oeWdvbjtcbiBib29sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlO1xuK2Jvb2wgaG9zdF9jcHVfaXNfemhhb3hpbjtcbitib29sIGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGU7XG4gYm9vbCBpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQ7XG4gdTY0IGd1ZXN0X3RzY19raHo7XG4gc3RydWN0IGt2bV9tbXUgZ3Vlc3RfbW11O1xuQEAgLTE1OCw3ICsxNjAsNyBAQCBzdGF0aWMgdm9pZCBzcmVnc19kdW1wKEZJTEUgKnN0cmVhbSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsIHU4IGluZGVudClcbiBcbiBib29sIGt2bV9pc190ZHBfZW5hYmxlZCh2b2lkKVxuIHtcbi1cdGlmIChob3N0X2NwdV9pc19pbnRlbClcbitcdGlmIChob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKVxuIFx0XHRyZXR1cm4gZ2V0X2t2bV9pbnRlbF9wYXJhbV9ib29sKFwiZXB0XCIpO1xuIFx0ZWxzZVxuIFx0XHRyZXR1cm4gZ2V0X2t2bV9hbWRfcGFyYW1fYm9vbChcIm5wdFwiKTtcbkBAIC04MTksNiArODIxLDggQEAgdm9pZCBrdm1fYXJjaF92bV9wb3N0X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZtICp2bSwgdW5zaWduZWQgaW50IG5yX3ZjcHVzKVxuIFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX2FtZCk7XG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfaHlnb24pO1xuIFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlKTtcbitcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc196aGFveGluKTtcbitcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKTtcbiBcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQpO1xuIFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIHBtdV9lcnJhdGFfbWFzayk7XG4gXG5AQCAtMTQ0NCw2ICsxNDQ4LDggQEAgdm9pZCBrdm1fc2VsZnRlc3RfYXJjaF9pbml0KHZvaWQpXG4gXHRob3N0X2NwdV9pc19hbWQgPSB0aGlzX2NwdV9pc19hbWQoKTtcbiBcdGhvc3RfY3B1X2lzX2h5Z29uID0gdGhpc19jcHVfaXNfaHlnb24oKTtcbiBcdGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlID0gaG9zdF9jcHVfaXNfYW1kIHx8IGhvc3RfY3B1X2lzX2h5Z29uO1xuK1x0aG9zdF9jcHVfaXNfemhhb3hpbiA9IHRoaXNfY3B1X2lzX3poYW94aW4oKTtcbitcdGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUgPSBob3N0X2NwdV9pc19pbnRlbCB8fCBob3N0X2NwdV9pc196aGFveGluO1xuIFx0aXNfZm9yY2VkX2VtdWxhdGlvbl9lbmFibGVkID0ga3ZtX2lzX2ZvcmNlZF9lbXVsYXRpb25fZW5hYmxlZCgpO1xuIFxuIFx0a3ZtX2luaXRfcG11X2VycmF0YSgpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvdm14LmNcbmluZGV4IDA4OWUxYThhZjUzZmMuLmU1MTIxOTFmMWVlZDcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni92bXguY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvdm14LmNcbkBAIC0zOTAsNiArMzkwLDIxIEBAIGJvb2wga3ZtX2NwdV9oYXNfZXB0KHZvaWQpXG4gXHRyZXR1cm4gY3RybCBcdTAwMjYgU0VDT05EQVJZX0VYRUNfRU5BQkxFX0VQVDtcbiB9XG4gXG4rYm9vbCBrdm1fY3B1X2hhc192bXhfYXBpY19hY2Nlc3NfdmlydCh2b2lkKVxuK3tcbitcdHU2NCBjdHJsO1xuK1xuK1x0aWYgKCFrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9WTVgpKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRjdHJsID0ga3ZtX2dldF9mZWF0dXJlX21zcihNU1JfSUEzMl9WTVhfVFJVRV9QUk9DQkFTRURfQ1RMUykgXHUwMDNlXHUwMDNlIDMyO1xuK1x0aWYgKCEoY3RybCBcdTAwMjYgQ1BVX0JBU0VEX0FDVElWQVRFX1NFQ09OREFSWV9DT05UUk9MUykpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGN0cmwgPSBrdm1fZ2V0X2ZlYXR1cmVfbXNyKE1TUl9JQTMyX1ZNWF9QUk9DQkFTRURfQ1RMUzIpIFx1MDAzZVx1MDAzZSAzMjtcbitcdHJldHVybiBjdHJsIFx1MDAyNiBTRUNPTkRBUllfRVhFQ19WSVJUVUFMSVpFX0FQSUNfQUNDRVNTRVM7XG4rfVxuK1xuIHZvaWQgcHJlcGFyZV92aXJ0dWFsaXplX2FwaWNfYWNjZXNzZXMoc3RydWN0IHZteF9wYWdlcyAqdm14LCBzdHJ1Y3Qga3ZtX3ZtICp2bSlcbiB7XG4gXHR2bXgtXHUwMDNlYXBpY19hY2Nlc3MgPSAodm9pZCAqKXZtX2FsbG9jX3BhZ2Uodm0pO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuY1xuaW5kZXggMTU4NTUwNzAxNzcxOC4uYmIzMzk3MDlkNjFkOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jXG5AQCAtNTQsMTIgKzU0LDI1IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmVhdHVyZV9tc3IodTMyIG1zcilcbiBcdGlmIChpc19rdm1fY29udHJvbGxlZF9tc3IobXNyKSlcbiBcdFx0cmV0dXJuO1xuIFxuK1x0LypcbitcdCAqIEtWTSBhbGxvd3MgdXNlcnNwYWNlIHRvIHF1ZXJ5IE1TUl9JQTMyX1BFUkZfQ0FQQUJJTElUSUVTIGFzIGFcbitcdCAqIGZlYXR1cmUgTVNSIGV2ZW4gaWYgS1ZNIGRvZXNuJ3QgZXhwb3NlIFBEQ00sIGJ1dCB2Q1BVIGFjY2Vzc2VzIHRvXG4rXHQgKiB0aGUgTVNSIHdpbGwgZmFpbCBpbiB0aGF0IGNhc2UuIFNraXAgdGhlIHZDUFUgY2hlY2tzIHNvIHRoYXQgdGhlXG4rXHQgKiByZW1haW5pbmcgZmVhdHVyZSBNU1JzIGNhbiBiZSB0ZXN0ZWQuXG4rXHQgKi9cbitcdGlmIChtc3IgPT0gTVNSX0lBMzJfUEVSRl9DQVBBQklMSVRJRVMgXHUwMDI2XHUwMDI2XG4rXHQgICAgIWt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1BEQ00pKSB7XG4rXHRcdHByaW50ZihcIktWTSBkb2VzIG5vdCBleHBvc2UgUERDTSwgc2tpcHBpbmcgdkNQVSBjaGVja3MgZm9yIFwiXG4rXHRcdCAgICAgICBcIk1TUl9JQTMyX1BFUkZfQ0FQQUJJTElUSUVTICgweCV4KS5cXG5cIiwgbXNyKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0LypcbiBcdCAqIE1vcmUgZ29vZnkgYmVoYXZpb3IuICBLVk0gcmVwb3J0cyB0aGUgaG9zdCBDUFUncyBhY3R1YWwgcmV2aXNpb24gSUQsXG4gXHQgKiBidXQgaW5pdGlhbGl6ZXMgdGhlIHZDUFUncyByZXZpc2lvbiBJRCB0byBhbiBhcmJpdHJhcnkgdmFsdWUuXG4gXHQgKi9cbiBcdGlmIChtc3IgPT0gTVNSX0lBMzJfVUNPREVfUkVWKVxuLVx0XHRyZXNldF92YWx1ZSA9IGhvc3RfY3B1X2lzX2ludGVsID8gMHgxMDAwMDAwMDBVTEwgOiAweDAxMDAwMDY1O1xuK1x0XHRyZXNldF92YWx1ZSA9IGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUgPyAweDEwMDAwMDAwMFVMTCA6IDB4MDEwMDAwNjU7XG4gXG4gXHQvKlxuIFx0ICogRm9yIHF1aXJrZWQgTVNScywgS1ZNJ3MgQUJJIGlzIHRvIGluaXRpYWxpemUgdGhlIHZDUFUncyB2YWx1ZSB0byB0aGVcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZpeF9oeXBlcmNhbGxfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuY1xuaW5kZXggNDkzMWVjMjI3NjhlZS4uZjExZmNjNTIwZjI0MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZml4X2h5cGVyY2FsbF90ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZml4X2h5cGVyY2FsbF90ZXN0LmNcbkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB2b2lkIGd1ZXN0X21haW4odm9pZClcbiBcdGNvbnN0IHU4ICpvdGhlcl9oeXBlcmNhbGxfaW5zbjtcbiBcdHU2NCByZXQ7XG4gXG4tXHRpZiAoaG9zdF9jcHVfaXNfaW50ZWwpIHtcbitcdGlmIChob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKSB7XG4gXHRcdG5hdGl2ZV9oeXBlcmNhbGxfaW5zbiA9IHZteF92bWNhbGw7XG4gXHRcdG90aGVyX2h5cGVyY2FsbF9pbnNuICA9IHN2bV92bW1jYWxsO1xuIFx0fSBlbHNlIGlmIChob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZSkge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9uZXN0ZWRfZXhjZXB0aW9uc190ZXN0LmNcbmluZGV4IGFlZWMzMTIxYzhlODMuLjc4YzI3ZmE3YzFhODcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9uZXN0ZWRfZXhjZXB0aW9uc190ZXN0LmNcbkBAIC0zOCw2ICszOCw3IEBAXG4gICovXG4gI2RlZmluZSBHUF9FUlJPUl9DT0RFX0FNRCAoKFNTX1ZFQ1RPUiAqIDgpIHwgRVJST1JfQ09ERV9JRFRfRkxBRylcbiAjZGVmaW5lIEdQX0VSUk9SX0NPREVfSU5URUwgKChTU19WRUNUT1IgKiA4KSB8IEVSUk9SX0NPREVfSURUX0ZMQUcgfCBFUlJPUl9DT0RFX0VYVF9GTEFHKVxuKyNkZWZpbmUgR1BfRVJST1JfQ09ERV9aSEFPWElOICgoU1NfVkVDVE9SICogOCkgfCBFUlJPUl9DT0RFX0lEVF9GTEFHKVxuIFxuIC8qXG4gICogSW50ZWwgYW5kIEFNRCBib3RoIHNob3ZlICcwJyBpbnRvIHRoZSBlcnJvciBjb2RlIG9uICNERiwgcmVnYXJkbGVzcyBvZiB3aGF0XG5AQCAtMTM5LDcgKzE0MCw4IEBAIHN0YXRpYyB2b2lkIGwxX3ZteF9jb2RlKHN0cnVjdCB2bXhfcGFnZXMgKnZteClcbiBcdCAqL1xuIFx0R1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0dQX0RGKSwgMCk7XG4gXHR2bXhfcnVuX2wyKGwyX3NzX3BlbmRpbmdfdGVzdCwgU1NfVkVDVE9SLCAodTE2KVNTX0VSUk9SX0NPREUpO1xuLVx0dm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9ncF90ZXN0LCBHUF9WRUNUT1IsIEdQX0VSUk9SX0NPREVfSU5URUwpO1xuK1x0dm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9ncF90ZXN0LCBHUF9WRUNUT1IsXG4rXHRcdCAgIGhvc3RfY3B1X2lzX3poYW94aW4gPyBHUF9FUlJPUl9DT0RFX1pIQU9YSU4gOiBHUF9FUlJPUl9DT0RFX0lOVEVMKTtcbiBcbiBcdEdVRVNUX0FTU0VSVF9FUSh2bXdyaXRlKEVYQ0VQVElPTl9CSVRNQVAsIElOVEVSQ0VQVF9TU19ERiksIDApO1xuIFx0dm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9kZl90ZXN0LCBERl9WRUNUT1IsIERGX0VSUk9SX0NPREUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2FwaWNfYWNjZXNzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2FwaWNfYWNjZXNzX3Rlc3QuY1xuaW5kZXggNDYzZjczYWE5MTU5YS4uYTFiNmRhNGMwNzQwOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2FwaWNfYWNjZXNzX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jXG5AQCAtNzgsNiArNzgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0c3RydWN0IGt2bV92bSAqdm07XG4gXG4gXHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfVk1YKSk7XG4rXHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXNfdm14X2FwaWNfYWNjZXNzX3ZpcnQoKSk7XG4gXG4gXHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFx1MDAyNnZjcHUsIGwxX2d1ZXN0X2NvZGUpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY1xuaW5kZXggMmNhZTg2ZDlkNWUyZS4uMDhhMGNhYTljNTJkYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfZXhjZXB0aW9uX3dpdGhfaW52YWxpZF9ndWVzdF9zdGF0ZS5jXG5AQCAtMTA5LDcgKzEwOSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4gXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbiBcbi1cdFRFU1RfUkVRVUlSRShob3N0X2NwdV9pc19pbnRlbCk7XG4rXHRURVNUX1JFUVVJUkUoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSk7XG4gXHRURVNUX1JFUVVJUkUoIWt2bV9pc191bnJlc3RyaWN0ZWRfZ3Vlc3RfZW5hYmxlZCgpKTtcbiBcbiBcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXHUwMDI2dmNwdSwgZ3Vlc3RfY29kZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNTowMC41NDMyOTEzMTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3OTY0MzgwMjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2ggaXMgY2xlYXJseSBsb2NhbGl6ZWQgdG8gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9gLiBJIHNlZSB0aGUgZm9sbG93aW5nIGZpbGVzIGFyZSBiZWluZyBtb2RpZmllZDogYGluY2x1ZGUveDg2L3Byb2Nlc3Nvci5oYCwgYGluY2x1ZGUveDg2L3ZteC5oYCwgYGxpYi94ODYvcHJvY2Vzc29yLmNgLCBgbGliL3g4Ni92bXguY2AsIGFuZCBhIGhhbmRmdWwgb2YgYHg4Ni9gIHRlc3RzOiBgZmVhdHVyZV9tc3JzX3Rlc3QuY2AsIGBmaXhfaHlwZXJjYWxsX3Rlc3QuY2AsIGBuZXN0ZWRfZXhjZXB0aW9uc190ZXN0LmNgLCBgdm14X2FwaWNfYWNjZXNzX3Rlc3QuY2AsIGFuZCBgdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY2AuXG5cbk5vdywgYWNjb3JkaW5nIHRvIHRoZSBgV29ydGhGdXp6aW5nYCBydWxlcyAoc3BlY2lmaWNhbGx5IFNlY3Rpb24gMiksIHdlIG9ubHkgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGFsbCB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIHNwZWNpZmljIGNhdGVnb3JpZXMuIExldCBtZSBzZWUuLi4gXCJOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzLCB3aGljaCBpbmNsdWRlcyBtb2RpZmljYXRpb25zIHRvIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMuLi4gdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlwiIEJpbmdvISBUaGlzIGlzIHByZWNpc2VseSB3aGF0IHdlJ3JlIGxvb2tpbmcgYXQuIFRoZXNlIGFyZSBhbGwgS1ZNIHVzZXJzcGFjZSBzZWxmdGVzdHMuXG5cblRoZXJlZm9yZSwgdGhpcyBpcyBhIGNsZWFyIGNhc2UgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBmdXp6aW5nIG5lZWRlZCBoZXJlLlxuXG5TbywgbGV0J3MgcHJlcGFyZSB0aGUgdG9vbCBjYWxsOlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogYGZhbHNlYCAoVW5xdWVzdGlvbmFibHkpXG4qICAgKipGb2N1c1N5bWJvbHM6KiogKEVtcHR5IC0gbm90IHJlbGV2YW50IGhlcmUpXG4qICAgKipFbmFibGVDb25maWdzOioqIChFbXB0eSAtIGFsc28gbm90IHJlbGV2YW50IGhlcmUpXG4qICAgKipSZWFzb25pbmc6KiogQWxsIGNoYW5nZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIEtWTSB1c2Vyc3BhY2Ugc2VsZnRlc3RzIHVuZGVyIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYCBhbmQgKmRvIG5vdCogYWZmZWN0IHRoZSBjb3JlIGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLiBUaGlzIGFsaWducyBwZXJmZWN0bHkgd2l0aCB0aGUgY3JpdGVyaWEgZm9yIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1ODcsIk91dHB1dFRva2VucyI6NjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNTowOC41MDc2NzQ0ODFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG9ubHkgS1ZNIHVzZXJzcGFjZSBzZWxmdGVzdHMgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyBhbmQgZG9lcyBub3QgdG91Y2ggYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBLVk0gdXNlcnNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIGFuZCBkb2VzIG5vdCB0b3VjaCBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNTowOC41MDc2OTUxNjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkgr5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 13:33:29 +0000 UTC FinishedAt: 2026-09-10 13:35:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBLVk0gdXNlcnNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIGFuZCBkb2VzIG5vdCB0b3VjaCBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTI1YzI5OGRmNGE5NWM1NzQ3Nzg2MzRmN2Y2YmRiMThkMWU3MTU2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDEzOjM0OjU3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuaW5kZXggNmU2ZjcwMDM1NTA4YS4uZGYzNjgyMzJjZjNlMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5AQCAtMjMsNiAmIzQzOzIzLDggQEAgZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfaW50ZWw7XG4gZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfYW1kO1xuIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2h5Z29uO1xuIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlO1xuJiM0MztleHRlcm4gYm9vbCBob3N0X2NwdV9pc196aGFveGluO1xuJiM0MztleHRlcm4gYm9vbCBob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlO1xuIGV4dGVybiB1NjQgZ3Vlc3RfdHNjX2toejtcbiBleHRlcm4gc3RydWN0IGt2bV9tbXUgZ3Vlc3RfbW11O1xuIFxuQEAgLTc4Miw2ICYjNDM7Nzg0LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0aGlzX2NwdV9pc19oeWdvbih2b2lkKVxuIFx0cmV0dXJuIHRoaXNfY3B1X3ZlbmRvcl9zdHJpbmdfaXMoXCYjMzQ7SHlnb25HZW51aW5lXCYjMzQ7KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCB0aGlzX2NwdV9pc196aGFveGluKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcyhcJiMzNDtDZW50YXVySGF1bHNcJiMzNDspIHx8XG4mIzQzO1x0ICAgICAgIHRoaXNfY3B1X3ZlbmRvcl9zdHJpbmdfaXMoXCYjMzQ7ICBTaGFuZ2hhaSAgXCYjMzQ7KTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW5saW5lIHUzMiBfX3RoaXNfY3B1X2hhcyh1MzIgZnVuY3Rpb24sIHUzMiBpbmRleCwgdTggcmVnLCB1OCBsbywgdTggaGkpXG4ge1xuIFx0dTMyIGdwcnNbNF07XG5AQCAtMTQ0Niw3ICYjNDM7MTQ1NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1faXNfcG11X2VuYWJsZWQodm9pZClcbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX21lZGlhdGVkX3BtdV9lbmFibGVkKHZvaWQpXG4ge1xuLVx0aWYgKGhvc3RfY3B1X2lzX2ludGVsKVxuJiM0MztcdGlmIChob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKVxuIFx0XHRyZXR1cm4gZ2V0X2t2bV9pbnRlbF9wYXJhbV9ib29sKFwmIzM0O2VuYWJsZV9tZWRpYXRlZF9wbXVcJiMzNDspO1xuIFxuIFx0cmV0dXJuIGdldF9rdm1fYW1kX3BhcmFtX2Jvb2woXCYjMzQ7ZW5hYmxlX21lZGlhdGVkX3BtdVwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oXG5pbmRleCAwNGY1ZTM0ZGVhM2FlLi5iMTk2NjUxYmRlYTI2IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvdm14LmhcbkBAIC01NTcsNiAmIzQzOzU1Nyw3IEBAIGJvb2wgbG9hZF92bWNzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCk7XG4gYm9vbCBlcHRfMWdfcGFnZXNfc3VwcG9ydGVkKHZvaWQpO1xuIFxuIGJvb2wga3ZtX2NwdV9oYXNfZXB0KHZvaWQpO1xuJiM0Mztib29sIGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KHZvaWQpO1xuIHZvaWQgdm1fZW5hYmxlX2VwdChzdHJ1Y3Qga3ZtX3ZtICp2bSk7XG4gdm9pZCBwcmVwYXJlX3ZpcnR1YWxpemVfYXBpY19hY2Nlc3NlcyhzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgsIHN0cnVjdCBrdm1fdm0gKnZtKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9wcm9jZXNzb3IuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Byb2Nlc3Nvci5jXG5pbmRleCBkMzFmYTgxZWEwNzU2Li5iZDUwYzEyNjVjZWZhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Byb2Nlc3Nvci5jXG5AQCAtMjYsNiAmIzQzOzI2LDggQEAgYm9vbCBob3N0X2NwdV9pc19hbWQ7XG4gYm9vbCBob3N0X2NwdV9pc19pbnRlbDtcbiBib29sIGhvc3RfY3B1X2lzX2h5Z29uO1xuIGJvb2wgaG9zdF9jcHVfaXNfYW1kX2NvbXBhdGlibGU7XG4mIzQzO2Jvb2wgaG9zdF9jcHVfaXNfemhhb3hpbjtcbiYjNDM7Ym9vbCBob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlO1xuIGJvb2wgaXNfZm9yY2VkX2VtdWxhdGlvbl9lbmFibGVkO1xuIHU2NCBndWVzdF90c2Nfa2h6O1xuIHN0cnVjdCBrdm1fbW11IGd1ZXN0X21tdTtcbkBAIC0xNTgsNyAmIzQzOzE2MCw3IEBAIHN0YXRpYyB2b2lkIHNyZWdzX2R1bXAoRklMRSAqc3RyZWFtLCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncywgdTggaW5kZW50KVxuIFxuIGJvb2wga3ZtX2lzX3RkcF9lbmFibGVkKHZvaWQpXG4ge1xuLVx0aWYgKGhvc3RfY3B1X2lzX2ludGVsKVxuJiM0MztcdGlmIChob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKVxuIFx0XHRyZXR1cm4gZ2V0X2t2bV9pbnRlbF9wYXJhbV9ib29sKFwmIzM0O2VwdFwmIzM0Oyk7XG4gXHRlbHNlXG4gXHRcdHJldHVybiBnZXRfa3ZtX2FtZF9wYXJhbV9ib29sKFwmIzM0O25wdFwmIzM0Oyk7XG5AQCAtODE5LDYgJiM0Mzs4MjEsOCBAQCB2b2lkIGt2bV9hcmNoX3ZtX3Bvc3RfY3JlYXRlKHN0cnVjdCBrdm1fdm0gKnZtLCB1bnNpZ25lZCBpbnQgbnJfdmNwdXMpXG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfYW1kKTtcbiBcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc19oeWdvbik7XG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfYW1kX2NvbXBhdGlibGUpO1xuJiM0MztcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc196aGFveGluKTtcbiYjNDM7XHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSk7XG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaXNfZm9yY2VkX2VtdWxhdGlvbl9lbmFibGVkKTtcbiBcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBwbXVfZXJyYXRhX21hc2spO1xuIFxuQEAgLTE0NDQsNiAmIzQzOzE0NDgsOCBAQCB2b2lkIGt2bV9zZWxmdGVzdF9hcmNoX2luaXQodm9pZClcbiBcdGhvc3RfY3B1X2lzX2FtZCA9IHRoaXNfY3B1X2lzX2FtZCgpO1xuIFx0aG9zdF9jcHVfaXNfaHlnb24gPSB0aGlzX2NwdV9pc19oeWdvbigpO1xuIFx0aG9zdF9jcHVfaXNfYW1kX2NvbXBhdGlibGUgPSBob3N0X2NwdV9pc19hbWQgfHwgaG9zdF9jcHVfaXNfaHlnb247XG4mIzQzO1x0aG9zdF9jcHVfaXNfemhhb3hpbiA9IHRoaXNfY3B1X2lzX3poYW94aW4oKTtcbiYjNDM7XHRob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlID0gaG9zdF9jcHVfaXNfaW50ZWwgfHwgaG9zdF9jcHVfaXNfemhhb3hpbjtcbiBcdGlzX2ZvcmNlZF9lbXVsYXRpb25fZW5hYmxlZCA9IGt2bV9pc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQoKTtcbiBcbiBcdGt2bV9pbml0X3BtdV9lcnJhdGEoKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni92bXguYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jXG5pbmRleCAwODllMWE4YWY1M2ZjLi5lNTEyMTkxZjFlZWQ3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvdm14LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jXG5AQCAtMzkwLDYgJiM0MzszOTAsMjEgQEAgYm9vbCBrdm1fY3B1X2hhc19lcHQodm9pZClcbiBcdHJldHVybiBjdHJsIFx1MDAyNiBTRUNPTkRBUllfRVhFQ19FTkFCTEVfRVBUO1xuIH1cbiBcbiYjNDM7Ym9vbCBrdm1fY3B1X2hhc192bXhfYXBpY19hY2Nlc3NfdmlydCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0dTY0IGN0cmw7XG4mIzQzO1xuJiM0MztcdGlmICgha3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfVk1YKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0Y3RybCA9IGt2bV9nZXRfZmVhdHVyZV9tc3IoTVNSX0lBMzJfVk1YX1RSVUVfUFJPQ0JBU0VEX0NUTFMpIFx1MDAzZVx1MDAzZSAzMjtcbiYjNDM7XHRpZiAoIShjdHJsIFx1MDAyNiBDUFVfQkFTRURfQUNUSVZBVEVfU0VDT05EQVJZX0NPTlRST0xTKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0Y3RybCA9IGt2bV9nZXRfZmVhdHVyZV9tc3IoTVNSX0lBMzJfVk1YX1BST0NCQVNFRF9DVExTMikgXHUwMDNlXHUwMDNlIDMyO1xuJiM0MztcdHJldHVybiBjdHJsIFx1MDAyNiBTRUNPTkRBUllfRVhFQ19WSVJUVUFMSVpFX0FQSUNfQUNDRVNTRVM7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBwcmVwYXJlX3ZpcnR1YWxpemVfYXBpY19hY2Nlc3NlcyhzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgsIHN0cnVjdCBrdm1fdm0gKnZtKVxuIHtcbiBcdHZteC1cdTAwM2VhcGljX2FjY2VzcyA9ICh2b2lkICopdm1fYWxsb2NfcGFnZSh2bSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jXG5pbmRleCAxNTg1NTA3MDE3NzE4Li5iYjMzOTcwOWQ2MWQ4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZlYXR1cmVfbXNyc190ZXN0LmNcbkBAIC01NCwxMiAmIzQzOzU0LDI1IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmVhdHVyZV9tc3IodTMyIG1zcilcbiBcdGlmIChpc19rdm1fY29udHJvbGxlZF9tc3IobXNyKSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogS1ZNIGFsbG93cyB1c2Vyc3BhY2UgdG8gcXVlcnkgTVNSX0lBMzJfUEVSRl9DQVBBQklMSVRJRVMgYXMgYVxuJiM0MztcdCAqIGZlYXR1cmUgTVNSIGV2ZW4gaWYgS1ZNIGRvZXNuJiMzOTt0IGV4cG9zZSBQRENNLCBidXQgdkNQVSBhY2Nlc3NlcyB0b1xuJiM0MztcdCAqIHRoZSBNU1Igd2lsbCBmYWlsIGluIHRoYXQgY2FzZS4gU2tpcCB0aGUgdkNQVSBjaGVja3Mgc28gdGhhdCB0aGVcbiYjNDM7XHQgKiByZW1haW5pbmcgZmVhdHVyZSBNU1JzIGNhbiBiZSB0ZXN0ZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKG1zciA9PSBNU1JfSUEzMl9QRVJGX0NBUEFCSUxJVElFUyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIWt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1BEQ00pKSB7XG4mIzQzO1x0XHRwcmludGYoXCYjMzQ7S1ZNIGRvZXMgbm90IGV4cG9zZSBQRENNLCBza2lwcGluZyB2Q1BVIGNoZWNrcyBmb3IgXCYjMzQ7XG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7TVNSX0lBMzJfUEVSRl9DQVBBQklMSVRJRVMgKDB4JXgpLlxcblwmIzM0OywgbXNyKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LypcbiBcdCAqIE1vcmUgZ29vZnkgYmVoYXZpb3IuICBLVk0gcmVwb3J0cyB0aGUgaG9zdCBDUFUmIzM5O3MgYWN0dWFsIHJldmlzaW9uIElELFxuIFx0ICogYnV0IGluaXRpYWxpemVzIHRoZSB2Q1BVJiMzOTtzIHJldmlzaW9uIElEIHRvIGFuIGFyYml0cmFyeSB2YWx1ZS5cbiBcdCAqL1xuIFx0aWYgKG1zciA9PSBNU1JfSUEzMl9VQ09ERV9SRVYpXG4tXHRcdHJlc2V0X3ZhbHVlID0gaG9zdF9jcHVfaXNfaW50ZWwgPyAweDEwMDAwMDAwMFVMTCA6IDB4MDEwMDAwNjU7XG4mIzQzO1x0XHRyZXNldF92YWx1ZSA9IGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUgPyAweDEwMDAwMDAwMFVMTCA6IDB4MDEwMDAwNjU7XG4gXG4gXHQvKlxuIFx0ICogRm9yIHF1aXJrZWQgTVNScywgS1ZNJiMzOTtzIEFCSSBpcyB0byBpbml0aWFsaXplIHRoZSB2Q1BVJiMzOTtzIHZhbHVlIHRvIHRoZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZml4X2h5cGVyY2FsbF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZpeF9oeXBlcmNhbGxfdGVzdC5jXG5pbmRleCA0OTMxZWMyMjc2OGVlLi5mMTFmY2M1MjBmMjQxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuY1xuQEAgLTQ4LDcgJiM0Mzs0OCw3IEBAIHN0YXRpYyB2b2lkIGd1ZXN0X21haW4odm9pZClcbiBcdGNvbnN0IHU4ICpvdGhlcl9oeXBlcmNhbGxfaW5zbjtcbiBcdHU2NCByZXQ7XG4gXG4tXHRpZiAoaG9zdF9jcHVfaXNfaW50ZWwpIHtcbiYjNDM7XHRpZiAoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSkge1xuIFx0XHRuYXRpdmVfaHlwZXJjYWxsX2luc24gPSB2bXhfdm1jYWxsO1xuIFx0XHRvdGhlcl9oeXBlcmNhbGxfaW5zbiAgPSBzdm1fdm1tY2FsbDtcbiBcdH0gZWxzZSBpZiAoaG9zdF9jcHVfaXNfYW1kX2NvbXBhdGlibGUpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jXG5pbmRleCBhZWVjMzEyMWM4ZTgzLi43OGMyN2ZhN2MxYTg3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9uZXN0ZWRfZXhjZXB0aW9uc190ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jXG5AQCAtMzgsNiAmIzQzOzM4LDcgQEBcbiAgKi9cbiAjZGVmaW5lIEdQX0VSUk9SX0NPREVfQU1EICgoU1NfVkVDVE9SICogOCkgfCBFUlJPUl9DT0RFX0lEVF9GTEFHKVxuICNkZWZpbmUgR1BfRVJST1JfQ09ERV9JTlRFTCAoKFNTX1ZFQ1RPUiAqIDgpIHwgRVJST1JfQ09ERV9JRFRfRkxBRyB8IEVSUk9SX0NPREVfRVhUX0ZMQUcpXG4mIzQzOyNkZWZpbmUgR1BfRVJST1JfQ09ERV9aSEFPWElOICgoU1NfVkVDVE9SICogOCkgfCBFUlJPUl9DT0RFX0lEVF9GTEFHKVxuIFxuIC8qXG4gICogSW50ZWwgYW5kIEFNRCBib3RoIHNob3ZlICYjMzk7MCYjMzk7IGludG8gdGhlIGVycm9yIGNvZGUgb24gI0RGLCByZWdhcmRsZXNzIG9mIHdoYXRcbkBAIC0xMzksNyAmIzQzOzE0MCw4IEBAIHN0YXRpYyB2b2lkIGwxX3ZteF9jb2RlKHN0cnVjdCB2bXhfcGFnZXMgKnZteClcbiBcdCAqL1xuIFx0R1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0dQX0RGKSwgMCk7XG4gXHR2bXhfcnVuX2wyKGwyX3NzX3BlbmRpbmdfdGVzdCwgU1NfVkVDVE9SLCAodTE2KVNTX0VSUk9SX0NPREUpO1xuLVx0dm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9ncF90ZXN0LCBHUF9WRUNUT1IsIEdQX0VSUk9SX0NPREVfSU5URUwpO1xuJiM0MztcdHZteF9ydW5fbDIobDJfc3NfaW5qZWN0ZWRfZ3BfdGVzdCwgR1BfVkVDVE9SLFxuJiM0MztcdFx0ICAgaG9zdF9jcHVfaXNfemhhb3hpbiA/IEdQX0VSUk9SX0NPREVfWkhBT1hJTiA6IEdQX0VSUk9SX0NPREVfSU5URUwpO1xuIFxuIFx0R1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0RGKSwgMCk7XG4gXHR2bXhfcnVuX2wyKGwyX3NzX2luamVjdGVkX2RmX3Rlc3QsIERGX1ZFQ1RPUiwgREZfRVJST1JfQ09ERSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jXG5pbmRleCA0NjNmNzNhYTkxNTlhLi5hMWI2ZGE0YzA3NDA4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9hcGljX2FjY2Vzc190ZXN0LmNcbkBAIC03OCw2ICYjNDM7NzgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0c3RydWN0IGt2bV92bSAqdm07XG4gXG4gXHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfVk1YKSk7XG4mIzQzO1x0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KCkpO1xuIFxuIFx0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBsMV9ndWVzdF9jb2RlKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmNcbmluZGV4IDJjYWU4NmQ5ZDVlMmUuLjA4YTBjYWE5YzUyZGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY1xuQEAgLTEwOSw3ICYjNDM7MTA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcdHN0cnVjdCBrdm1fdm0gKnZtO1xuIFxuLVx0VEVTVF9SRVFVSVJFKGhvc3RfY3B1X2lzX2ludGVsKTtcbiYjNDM7XHRURVNUX1JFUVVJUkUoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSk7XG4gXHRURVNUX1JFUVVJUkUoIWt2bV9pc191bnJlc3RyaWN0ZWRfZ3Vlc3RfZW5hYmxlZCgpKTtcbiBcbiBcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXHUwMDI2dmNwdSwgZ3Vlc3RfY29kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTM6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBLVk0gdXNlcnNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIGFuZCBkb2VzIG5vdCB0b3VjaCBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTI1YzI5OGRmNGE5NWM1NzQ3Nzg2MzRmN2Y2YmRiMThkMWU3MTU2NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDEzOjM0OjU3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCmluZGV4IDZlNmY3MDAzNTUwOGEuLmRmMzY4MjMyY2YzZTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmgKQEAgLTIzLDYgJiM0MzsyMyw4IEBAIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2ludGVsOwogZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfYW1kOwogZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfaHlnb247CiBleHRlcm4gYm9vbCBob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZTsKJiM0MztleHRlcm4gYm9vbCBob3N0X2NwdV9pc196aGFveGluOwomIzQzO2V4dGVybiBib29sIGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGU7CiBleHRlcm4gdTY0IGd1ZXN0X3RzY19raHo7CiBleHRlcm4gc3RydWN0IGt2bV9tbXUgZ3Vlc3RfbW11OwogCkBAIC03ODIsNiAmIzQzOzc4NCwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdGhpc19jcHVfaXNfaHlnb24odm9pZCkKIAlyZXR1cm4gdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcygmIzM0O0h5Z29uR2VudWluZSYjMzQ7KTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCB0aGlzX2NwdV9pc196aGFveGluKHZvaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcygmIzM0O0NlbnRhdXJIYXVscyYjMzQ7KSB8fAomIzQzOwkgICAgICAgdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcygmIzM0OyAgU2hhbmdoYWkgICYjMzQ7KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIHUzMiBfX3RoaXNfY3B1X2hhcyh1MzIgZnVuY3Rpb24sIHUzMiBpbmRleCwgdTggcmVnLCB1OCBsbywgdTggaGkpCiB7CiAJdTMyIGdwcnNbNF07CkBAIC0xNDQ2LDcgJiM0MzsxNDU0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGt2bV9pc19wbXVfZW5hYmxlZCh2b2lkKQogCiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX21lZGlhdGVkX3BtdV9lbmFibGVkKHZvaWQpCiB7Ci0JaWYgKGhvc3RfY3B1X2lzX2ludGVsKQomIzQzOwlpZiAoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSkKIAkJcmV0dXJuIGdldF9rdm1faW50ZWxfcGFyYW1fYm9vbCgmIzM0O2VuYWJsZV9tZWRpYXRlZF9wbXUmIzM0Oyk7CiAKIAlyZXR1cm4gZ2V0X2t2bV9hbWRfcGFyYW1fYm9vbCgmIzM0O2VuYWJsZV9tZWRpYXRlZF9wbXUmIzM0Oyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvdm14LmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvdm14LmgKaW5kZXggMDRmNWUzNGRlYTNhZS4uYjE5NjY1MWJkZWEyNiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni92bXguaApAQCAtNTU3LDYgJiM0Mzs1NTcsNyBAQCBib29sIGxvYWRfdm1jcyhzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgpOwogYm9vbCBlcHRfMWdfcGFnZXNfc3VwcG9ydGVkKHZvaWQpOwogCiBib29sIGt2bV9jcHVfaGFzX2VwdCh2b2lkKTsKJiM0Mztib29sIGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KHZvaWQpOwogdm9pZCB2bV9lbmFibGVfZXB0KHN0cnVjdCBrdm1fdm0gKnZtKTsKIHZvaWQgcHJlcGFyZV92aXJ0dWFsaXplX2FwaWNfYWNjZXNzZXMoc3RydWN0IHZteF9wYWdlcyAqdm14LCBzdHJ1Y3Qga3ZtX3ZtICp2bSk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmMKaW5kZXggZDMxZmE4MWVhMDc1Ni4uYmQ1MGMxMjY1Y2VmYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmMKQEAgLTI2LDYgJiM0MzsyNiw4IEBAIGJvb2wgaG9zdF9jcHVfaXNfYW1kOwogYm9vbCBob3N0X2NwdV9pc19pbnRlbDsKIGJvb2wgaG9zdF9jcHVfaXNfaHlnb247CiBib29sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlOwomIzQzO2Jvb2wgaG9zdF9jcHVfaXNfemhhb3hpbjsKJiM0Mztib29sIGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGU7CiBib29sIGlzX2ZvcmNlZF9lbXVsYXRpb25fZW5hYmxlZDsKIHU2NCBndWVzdF90c2Nfa2h6Owogc3RydWN0IGt2bV9tbXUgZ3Vlc3RfbW11OwpAQCAtMTU4LDcgJiM0MzsxNjAsNyBAQCBzdGF0aWMgdm9pZCBzcmVnc19kdW1wKEZJTEUgKnN0cmVhbSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsIHU4IGluZGVudCkKIAogYm9vbCBrdm1faXNfdGRwX2VuYWJsZWQodm9pZCkKIHsKLQlpZiAoaG9zdF9jcHVfaXNfaW50ZWwpCiYjNDM7CWlmIChob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKQogCQlyZXR1cm4gZ2V0X2t2bV9pbnRlbF9wYXJhbV9ib29sKCYjMzQ7ZXB0JiMzNDspOwogCWVsc2UKIAkJcmV0dXJuIGdldF9rdm1fYW1kX3BhcmFtX2Jvb2woJiMzNDtucHQmIzM0Oyk7CkBAIC04MTksNiAmIzQzOzgyMSw4IEBAIHZvaWQga3ZtX2FyY2hfdm1fcG9zdF9jcmVhdGUoc3RydWN0IGt2bV92bSAqdm0sIHVuc2lnbmVkIGludCBucl92Y3B1cykKIAlzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfYW1kKTsKIAlzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfaHlnb24pOwogCXN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZSk7CiYjNDM7CXN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc196aGFveGluKTsKJiM0MzsJc3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUpOwogCXN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQpOwogCXN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBwbXVfZXJyYXRhX21hc2spOwogCkBAIC0xNDQ0LDYgJiM0MzsxNDQ4LDggQEAgdm9pZCBrdm1fc2VsZnRlc3RfYXJjaF9pbml0KHZvaWQpCiAJaG9zdF9jcHVfaXNfYW1kID0gdGhpc19jcHVfaXNfYW1kKCk7CiAJaG9zdF9jcHVfaXNfaHlnb24gPSB0aGlzX2NwdV9pc19oeWdvbigpOwogCWhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlID0gaG9zdF9jcHVfaXNfYW1kIHx8IGhvc3RfY3B1X2lzX2h5Z29uOwomIzQzOwlob3N0X2NwdV9pc196aGFveGluID0gdGhpc19jcHVfaXNfemhhb3hpbigpOwomIzQzOwlob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlID0gaG9zdF9jcHVfaXNfaW50ZWwgfHwgaG9zdF9jcHVfaXNfemhhb3hpbjsKIAlpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQgPSBrdm1faXNfZm9yY2VkX2VtdWxhdGlvbl9lbmFibGVkKCk7CiAKIAlrdm1faW5pdF9wbXVfZXJyYXRhKCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni92bXguYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jCmluZGV4IDA4OWUxYThhZjUzZmMuLmU1MTIxOTFmMWVlZDcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jCkBAIC0zOTAsNiAmIzQzOzM5MCwyMSBAQCBib29sIGt2bV9jcHVfaGFzX2VwdCh2b2lkKQogCXJldHVybiBjdHJsICZhbXA7IFNFQ09OREFSWV9FWEVDX0VOQUJMRV9FUFQ7CiB9CiAKJiM0Mztib29sIGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KHZvaWQpCiYjNDM7ewomIzQzOwl1NjQgY3RybDsKJiM0MzsKJiM0MzsJaWYgKCFrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9WTVgpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwljdHJsID0ga3ZtX2dldF9mZWF0dXJlX21zcihNU1JfSUEzMl9WTVhfVFJVRV9QUk9DQkFTRURfQ1RMUykgJmd0OyZndDsgMzI7CiYjNDM7CWlmICghKGN0cmwgJmFtcDsgQ1BVX0JBU0VEX0FDVElWQVRFX1NFQ09OREFSWV9DT05UUk9MUykpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWN0cmwgPSBrdm1fZ2V0X2ZlYXR1cmVfbXNyKE1TUl9JQTMyX1ZNWF9QUk9DQkFTRURfQ1RMUzIpICZndDsmZ3Q7IDMyOwomIzQzOwlyZXR1cm4gY3RybCAmYW1wOyBTRUNPTkRBUllfRVhFQ19WSVJUVUFMSVpFX0FQSUNfQUNDRVNTRVM7CiYjNDM7fQomIzQzOwogdm9pZCBwcmVwYXJlX3ZpcnR1YWxpemVfYXBpY19hY2Nlc3NlcyhzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgsIHN0cnVjdCBrdm1fdm0gKnZtKQogewogCXZteC0mZ3Q7YXBpY19hY2Nlc3MgPSAodm9pZCAqKXZtX2FsbG9jX3BhZ2Uodm0pOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jCmluZGV4IDE1ODU1MDcwMTc3MTguLmJiMzM5NzA5ZDYxZDggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZlYXR1cmVfbXNyc190ZXN0LmMKQEAgLTU0LDEyICYjNDM7NTQsMjUgQEAgc3RhdGljIHZvaWQgdGVzdF9mZWF0dXJlX21zcih1MzIgbXNyKQogCWlmIChpc19rdm1fY29udHJvbGxlZF9tc3IobXNyKSkKIAkJcmV0dXJuOwogCiYjNDM7CS8qCiYjNDM7CSAqIEtWTSBhbGxvd3MgdXNlcnNwYWNlIHRvIHF1ZXJ5IE1TUl9JQTMyX1BFUkZfQ0FQQUJJTElUSUVTIGFzIGEKJiM0MzsJICogZmVhdHVyZSBNU1IgZXZlbiBpZiBLVk0gZG9lc24mIzM5O3QgZXhwb3NlIFBEQ00sIGJ1dCB2Q1BVIGFjY2Vzc2VzIHRvCiYjNDM7CSAqIHRoZSBNU1Igd2lsbCBmYWlsIGluIHRoYXQgY2FzZS4gU2tpcCB0aGUgdkNQVSBjaGVja3Mgc28gdGhhdCB0aGUKJiM0MzsJICogcmVtYWluaW5nIGZlYXR1cmUgTVNScyBjYW4gYmUgdGVzdGVkLgomIzQzOwkgKi8KJiM0MzsJaWYgKG1zciA9PSBNU1JfSUEzMl9QRVJGX0NBUEFCSUxJVElFUyAmYW1wOyZhbXA7CiYjNDM7CSAgICAha3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfUERDTSkpIHsKJiM0MzsJCXByaW50ZigmIzM0O0tWTSBkb2VzIG5vdCBleHBvc2UgUERDTSwgc2tpcHBpbmcgdkNQVSBjaGVja3MgZm9yICYjMzQ7CiYjNDM7CQkgICAgICAgJiMzNDtNU1JfSUEzMl9QRVJGX0NBUEFCSUxJVElFUyAoMHgleCkuXG4mIzM0OywgbXNyKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCS8qCiAJICogTW9yZSBnb29meSBiZWhhdmlvci4gIEtWTSByZXBvcnRzIHRoZSBob3N0IENQVSYjMzk7cyBhY3R1YWwgcmV2aXNpb24gSUQsCiAJICogYnV0IGluaXRpYWxpemVzIHRoZSB2Q1BVJiMzOTtzIHJldmlzaW9uIElEIHRvIGFuIGFyYml0cmFyeSB2YWx1ZS4KIAkgKi8KIAlpZiAobXNyID09IE1TUl9JQTMyX1VDT0RFX1JFVikKLQkJcmVzZXRfdmFsdWUgPSBob3N0X2NwdV9pc19pbnRlbCA/IDB4MTAwMDAwMDAwVUxMIDogMHgwMTAwMDA2NTsKJiM0MzsJCXJlc2V0X3ZhbHVlID0gaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSA/IDB4MTAwMDAwMDAwVUxMIDogMHgwMTAwMDA2NTsKIAogCS8qCiAJICogRm9yIHF1aXJrZWQgTVNScywgS1ZNJiMzOTtzIEFCSSBpcyB0byBpbml0aWFsaXplIHRoZSB2Q1BVJiMzOTtzIHZhbHVlIHRvIHRoZQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZml4X2h5cGVyY2FsbF90ZXN0LmMKaW5kZXggNDkzMWVjMjI3NjhlZS4uZjExZmNjNTIwZjI0MSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZpeF9oeXBlcmNhbGxfdGVzdC5jCkBAIC00OCw3ICYjNDM7NDgsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9tYWluKHZvaWQpCiAJY29uc3QgdTggKm90aGVyX2h5cGVyY2FsbF9pbnNuOwogCXU2NCByZXQ7CiAKLQlpZiAoaG9zdF9jcHVfaXNfaW50ZWwpIHsKJiM0MzsJaWYgKGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUpIHsKIAkJbmF0aXZlX2h5cGVyY2FsbF9pbnNuID0gdm14X3ZtY2FsbDsKIAkJb3RoZXJfaHlwZXJjYWxsX2luc24gID0gc3ZtX3ZtbWNhbGw7CiAJfSBlbHNlIGlmIChob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZSkgewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9uZXN0ZWRfZXhjZXB0aW9uc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuYwppbmRleCBhZWVjMzEyMWM4ZTgzLi43OGMyN2ZhN2MxYTg3IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuYwpAQCAtMzgsNiAmIzQzOzM4LDcgQEAKICAqLwogI2RlZmluZSBHUF9FUlJPUl9DT0RFX0FNRCAoKFNTX1ZFQ1RPUiAqIDgpIHwgRVJST1JfQ09ERV9JRFRfRkxBRykKICNkZWZpbmUgR1BfRVJST1JfQ09ERV9JTlRFTCAoKFNTX1ZFQ1RPUiAqIDgpIHwgRVJST1JfQ09ERV9JRFRfRkxBRyB8IEVSUk9SX0NPREVfRVhUX0ZMQUcpCiYjNDM7I2RlZmluZSBHUF9FUlJPUl9DT0RFX1pIQU9YSU4gKChTU19WRUNUT1IgKiA4KSB8IEVSUk9SX0NPREVfSURUX0ZMQUcpCiAKIC8qCiAgKiBJbnRlbCBhbmQgQU1EIGJvdGggc2hvdmUgJiMzOTswJiMzOTsgaW50byB0aGUgZXJyb3IgY29kZSBvbiAjREYsIHJlZ2FyZGxlc3Mgb2Ygd2hhdApAQCAtMTM5LDcgJiM0MzsxNDAsOCBAQCBzdGF0aWMgdm9pZCBsMV92bXhfY29kZShzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgpCiAJICovCiAJR1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0dQX0RGKSwgMCk7CiAJdm14X3J1bl9sMihsMl9zc19wZW5kaW5nX3Rlc3QsIFNTX1ZFQ1RPUiwgKHUxNilTU19FUlJPUl9DT0RFKTsKLQl2bXhfcnVuX2wyKGwyX3NzX2luamVjdGVkX2dwX3Rlc3QsIEdQX1ZFQ1RPUiwgR1BfRVJST1JfQ09ERV9JTlRFTCk7CiYjNDM7CXZteF9ydW5fbDIobDJfc3NfaW5qZWN0ZWRfZ3BfdGVzdCwgR1BfVkVDVE9SLAomIzQzOwkJICAgaG9zdF9jcHVfaXNfemhhb3hpbiA/IEdQX0VSUk9SX0NPREVfWkhBT1hJTiA6IEdQX0VSUk9SX0NPREVfSU5URUwpOwogCiAJR1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0RGKSwgMCk7CiAJdm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9kZl90ZXN0LCBERl9WRUNUT1IsIERGX0VSUk9SX0NPREUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jCmluZGV4IDQ2M2Y3M2FhOTE1OWEuLmExYjZkYTRjMDc0MDggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2FwaWNfYWNjZXNzX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9hcGljX2FjY2Vzc190ZXN0LmMKQEAgLTc4LDYgJiM0Mzs3OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJc3RydWN0IGt2bV92bSAqdm07CiAKIAlURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfVk1YKSk7CiYjNDM7CVRFU1RfUkVRVUlSRShrdm1fY3B1X2hhc192bXhfYXBpY19hY2Nlc3NfdmlydCgpKTsKIAogCXZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoJmFtcDt2Y3B1LCBsMV9ndWVzdF9jb2RlKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfZXhjZXB0aW9uX3dpdGhfaW52YWxpZF9ndWVzdF9zdGF0ZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfZXhjZXB0aW9uX3dpdGhfaW52YWxpZF9ndWVzdF9zdGF0ZS5jCmluZGV4IDJjYWU4NmQ5ZDVlMmUuLjA4YTBjYWE5YzUyZGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmMKQEAgLTEwOSw3ICYjNDM7MTA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7CiAJc3RydWN0IGt2bV92bSAqdm07CiAKLQlURVNUX1JFUVVJUkUoaG9zdF9jcHVfaXNfaW50ZWwpOwomIzQzOwlURVNUX1JFUVVJUkUoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSk7CiAJVEVTVF9SRVFVSVJFKCFrdm1faXNfdW5yZXN0cmljdGVkX2d1ZXN0X2VuYWJsZWQoKSk7CiAKIAl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgZ3Vlc3RfY29kZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1ODcKCQkJCQkJCW91dHB1dDogNjgKCQkJCQkJCXRob3VnaHRzOiA1MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGlzIGNsZWFybHkgbG9jYWxpemVkIHRvIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYC4gSSBzZWUgdGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgYmVpbmcgbW9kaWZpZWQ6IGBpbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaGAsIGBpbmNsdWRlL3g4Ni92bXguaGAsIGBsaWIveDg2L3Byb2Nlc3Nvci5jYCwgYGxpYi94ODYvdm14LmNgLCBhbmQgYSBoYW5kZnVsIG9mIGB4ODYvYCB0ZXN0czogYGZlYXR1cmVfbXNyc190ZXN0LmNgLCBgZml4X2h5cGVyY2FsbF90ZXN0LmNgLCBgbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jYCwgYHZteF9hcGljX2FjY2Vzc190ZXN0LmNgLCBhbmQgYHZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmNgLgoKTm93LCBhY2NvcmRpbmcgdG8gdGhlIGBXb3J0aEZ1enppbmdgIHJ1bGVzIChzcGVjaWZpY2FsbHkgU2VjdGlvbiAyKSwgd2Ugb25seSBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgYWxsIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gc3BlY2lmaWMgY2F0ZWdvcmllcy4gTGV0IG1lIHNlZS4uLiAmIzM0O05vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIHdoaWNoIGluY2x1ZGVzIG1vZGlmaWNhdGlvbnMgdG8gdXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cy4uLiB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuJiMzNDsgQmluZ28hIFRoaXMgaXMgcHJlY2lzZWx5IHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQuIFRoZXNlIGFyZSBhbGwgS1ZNIHVzZXJzcGFjZSBzZWxmdGVzdHMuCgpUaGVyZWZvcmUsIHRoaXMgaXMgYSBjbGVhciBjYXNlIGZvciBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTm8gZnV6emluZyBuZWVkZWQgaGVyZS4KClNvLCBsZXQmIzM5O3MgcHJlcGFyZSB0aGUgdG9vbCBjYWxsOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIGBmYWxzZWAgKFVucXVlc3Rpb25hYmx5KQoqICAgKipGb2N1c1N5bWJvbHM6KiogKEVtcHR5IC0gbm90IHJlbGV2YW50IGhlcmUpCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogKEVtcHR5IC0gYWxzbyBub3QgcmVsZXZhbnQgaGVyZSkKKiAgICoqUmVhc29uaW5nOioqIEFsbCBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byBLVk0gdXNlcnNwYWNlIHNlbGZ0ZXN0cyB1bmRlciBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2AgYW5kICpkbyBub3QqIGFmZmVjdCB0aGUgY29yZSBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcy4gVGhpcyBhbGlnbnMgcGVyZmVjdGx5IHdpdGggdGhlIGNyaXRlcmlhIGZvciBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBLVk0gdXNlcnNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIGFuZCBkb2VzIG5vdCB0b3VjaCBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBvbmx5IEtWTSB1c2Vyc3BhY2Ugc2VsZnRlc3RzIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8gYW5kIGRvZXMgbm90IHRvdWNoIGFueSBrZXJuZWwgY29kZSBvciBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTM6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEzOjM0OjU4LjkyODM2MjA0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU3OTM0MTQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG9ubHkgS1ZNIHVzZXJzcGFjZSBzZWxmdGVzdHMgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyBhbmQgZG9lcyBub3QgdG91Y2ggYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTM6MzQ6NTguOTI4MzY2MjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTQzMjAyNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMjVjMjk4ZGY0YTk1YzU3NDc3ODYzNGY3ZjZiZGIxOGQxZTcxNTY0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDEzOjM0OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxcbmluZGV4IDZlNmY3MDAzNTUwOGEuLmRmMzY4MjMyY2YzZTEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXFxuQEAgLTIzLDYgKzIzLDggQEAgZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfaW50ZWw7XFxuIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2FtZDtcXG4gZXh0ZXJuIGJvb2wgaG9zdF9jcHVfaXNfaHlnb247XFxuIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlO1xcbitleHRlcm4gYm9vbCBob3N0X2NwdV9pc196aGFveGluO1xcbitleHRlcm4gYm9vbCBob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlO1xcbiBleHRlcm4gdTY0IGd1ZXN0X3RzY19raHo7XFxuIGV4dGVybiBzdHJ1Y3Qga3ZtX21tdSBndWVzdF9tbXU7XFxuIFxcbkBAIC03ODIsNiArNzg0LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0aGlzX2NwdV9pc19oeWdvbih2b2lkKVxcbiBcXHRyZXR1cm4gdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcyhcXFwiSHlnb25HZW51aW5lXFxcIik7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCB0aGlzX2NwdV9pc196aGFveGluKHZvaWQpXFxuK3tcXG4rXFx0cmV0dXJuIHRoaXNfY3B1X3ZlbmRvcl9zdHJpbmdfaXMoXFxcIkNlbnRhdXJIYXVsc1xcXCIpIHx8XFxuK1xcdCAgICAgICB0aGlzX2NwdV92ZW5kb3Jfc3RyaW5nX2lzKFxcXCIgIFNoYW5naGFpICBcXFwiKTtcXG4rfVxcbitcXG4gc3RhdGljIGlubGluZSB1MzIgX190aGlzX2NwdV9oYXModTMyIGZ1bmN0aW9uLCB1MzIgaW5kZXgsIHU4IHJlZywgdTggbG8sIHU4IGhpKVxcbiB7XFxuIFxcdHUzMiBncHJzWzRdO1xcbkBAIC0xNDQ2LDcgKzE0NTQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX3BtdV9lbmFibGVkKHZvaWQpXFxuIFxcbiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX21lZGlhdGVkX3BtdV9lbmFibGVkKHZvaWQpXFxuIHtcXG4tXFx0aWYgKGhvc3RfY3B1X2lzX2ludGVsKVxcbitcXHRpZiAoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSlcXG4gXFx0XFx0cmV0dXJuIGdldF9rdm1faW50ZWxfcGFyYW1fYm9vbChcXFwiZW5hYmxlX21lZGlhdGVkX3BtdVxcXCIpO1xcbiBcXG4gXFx0cmV0dXJuIGdldF9rdm1fYW1kX3BhcmFtX2Jvb2woXFxcImVuYWJsZV9tZWRpYXRlZF9wbXVcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oXFxuaW5kZXggMDRmNWUzNGRlYTNhZS4uYjE5NjY1MWJkZWEyNiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvdm14LmhcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvdm14LmhcXG5AQCAtNTU3LDYgKzU1Nyw3IEBAIGJvb2wgbG9hZF92bWNzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCk7XFxuIGJvb2wgZXB0XzFnX3BhZ2VzX3N1cHBvcnRlZCh2b2lkKTtcXG4gXFxuIGJvb2wga3ZtX2NwdV9oYXNfZXB0KHZvaWQpO1xcbitib29sIGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KHZvaWQpO1xcbiB2b2lkIHZtX2VuYWJsZV9lcHQoc3RydWN0IGt2bV92bSAqdm0pO1xcbiB2b2lkIHByZXBhcmVfdmlydHVhbGl6ZV9hcGljX2FjY2Vzc2VzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCwgc3RydWN0IGt2bV92bSAqdm0pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9wcm9jZXNzb3IuY1xcbmluZGV4IGQzMWZhODFlYTA3NTYuLmJkNTBjMTI2NWNlZmEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9wcm9jZXNzb3IuY1xcbkBAIC0yNiw2ICsyNiw4IEBAIGJvb2wgaG9zdF9jcHVfaXNfYW1kO1xcbiBib29sIGhvc3RfY3B1X2lzX2ludGVsO1xcbiBib29sIGhvc3RfY3B1X2lzX2h5Z29uO1xcbiBib29sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlO1xcbitib29sIGhvc3RfY3B1X2lzX3poYW94aW47XFxuK2Jvb2wgaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZTtcXG4gYm9vbCBpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQ7XFxuIHU2NCBndWVzdF90c2Nfa2h6O1xcbiBzdHJ1Y3Qga3ZtX21tdSBndWVzdF9tbXU7XFxuQEAgLTE1OCw3ICsxNjAsNyBAQCBzdGF0aWMgdm9pZCBzcmVnc19kdW1wKEZJTEUgKnN0cmVhbSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsIHU4IGluZGVudClcXG4gXFxuIGJvb2wga3ZtX2lzX3RkcF9lbmFibGVkKHZvaWQpXFxuIHtcXG4tXFx0aWYgKGhvc3RfY3B1X2lzX2ludGVsKVxcbitcXHRpZiAoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSlcXG4gXFx0XFx0cmV0dXJuIGdldF9rdm1faW50ZWxfcGFyYW1fYm9vbChcXFwiZXB0XFxcIik7XFxuIFxcdGVsc2VcXG4gXFx0XFx0cmV0dXJuIGdldF9rdm1fYW1kX3BhcmFtX2Jvb2woXFxcIm5wdFxcXCIpO1xcbkBAIC04MTksNiArODIxLDggQEAgdm9pZCBrdm1fYXJjaF92bV9wb3N0X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZtICp2bSwgdW5zaWduZWQgaW50IG5yX3ZjcHVzKVxcbiBcXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfYW1kKTtcXG4gXFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX2h5Z29uKTtcXG4gXFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlKTtcXG4rXFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX3poYW94aW4pO1xcbitcXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSk7XFxuIFxcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQpO1xcbiBcXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgcG11X2VycmF0YV9tYXNrKTtcXG4gXFxuQEAgLTE0NDQsNiArMTQ0OCw4IEBAIHZvaWQga3ZtX3NlbGZ0ZXN0X2FyY2hfaW5pdCh2b2lkKVxcbiBcXHRob3N0X2NwdV9pc19hbWQgPSB0aGlzX2NwdV9pc19hbWQoKTtcXG4gXFx0aG9zdF9jcHVfaXNfaHlnb24gPSB0aGlzX2NwdV9pc19oeWdvbigpO1xcbiBcXHRob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZSA9IGhvc3RfY3B1X2lzX2FtZCB8fCBob3N0X2NwdV9pc19oeWdvbjtcXG4rXFx0aG9zdF9jcHVfaXNfemhhb3hpbiA9IHRoaXNfY3B1X2lzX3poYW94aW4oKTtcXG4rXFx0aG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSA9IGhvc3RfY3B1X2lzX2ludGVsIHx8IGhvc3RfY3B1X2lzX3poYW94aW47XFxuIFxcdGlzX2ZvcmNlZF9lbXVsYXRpb25fZW5hYmxlZCA9IGt2bV9pc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQoKTtcXG4gXFxuIFxcdGt2bV9pbml0X3BtdV9lcnJhdGEoKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvdm14LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni92bXguY1xcbmluZGV4IDA4OWUxYThhZjUzZmMuLmU1MTIxOTFmMWVlZDcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvdm14LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni92bXguY1xcbkBAIC0zOTAsNiArMzkwLDIxIEBAIGJvb2wga3ZtX2NwdV9oYXNfZXB0KHZvaWQpXFxuIFxcdHJldHVybiBjdHJsIFxcdTAwMjYgU0VDT05EQVJZX0VYRUNfRU5BQkxFX0VQVDtcXG4gfVxcbiBcXG4rYm9vbCBrdm1fY3B1X2hhc192bXhfYXBpY19hY2Nlc3NfdmlydCh2b2lkKVxcbit7XFxuK1xcdHU2NCBjdHJsO1xcbitcXG4rXFx0aWYgKCFrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9WTVgpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRjdHJsID0ga3ZtX2dldF9mZWF0dXJlX21zcihNU1JfSUEzMl9WTVhfVFJVRV9QUk9DQkFTRURfQ1RMUykgXFx1MDAzZVxcdTAwM2UgMzI7XFxuK1xcdGlmICghKGN0cmwgXFx1MDAyNiBDUFVfQkFTRURfQUNUSVZBVEVfU0VDT05EQVJZX0NPTlRST0xTKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0Y3RybCA9IGt2bV9nZXRfZmVhdHVyZV9tc3IoTVNSX0lBMzJfVk1YX1BST0NCQVNFRF9DVExTMikgXFx1MDAzZVxcdTAwM2UgMzI7XFxuK1xcdHJldHVybiBjdHJsIFxcdTAwMjYgU0VDT05EQVJZX0VYRUNfVklSVFVBTElaRV9BUElDX0FDQ0VTU0VTO1xcbit9XFxuK1xcbiB2b2lkIHByZXBhcmVfdmlydHVhbGl6ZV9hcGljX2FjY2Vzc2VzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCwgc3RydWN0IGt2bV92bSAqdm0pXFxuIHtcXG4gXFx0dm14LVxcdTAwM2VhcGljX2FjY2VzcyA9ICh2b2lkICopdm1fYWxsb2NfcGFnZSh2bSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuY1xcbmluZGV4IDE1ODU1MDcwMTc3MTguLmJiMzM5NzA5ZDYxZDggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jXFxuQEAgLTU0LDEyICs1NCwyNSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZlYXR1cmVfbXNyKHUzMiBtc3IpXFxuIFxcdGlmIChpc19rdm1fY29udHJvbGxlZF9tc3IobXNyKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogS1ZNIGFsbG93cyB1c2Vyc3BhY2UgdG8gcXVlcnkgTVNSX0lBMzJfUEVSRl9DQVBBQklMSVRJRVMgYXMgYVxcbitcXHQgKiBmZWF0dXJlIE1TUiBldmVuIGlmIEtWTSBkb2Vzbid0IGV4cG9zZSBQRENNLCBidXQgdkNQVSBhY2Nlc3NlcyB0b1xcbitcXHQgKiB0aGUgTVNSIHdpbGwgZmFpbCBpbiB0aGF0IGNhc2UuIFNraXAgdGhlIHZDUFUgY2hlY2tzIHNvIHRoYXQgdGhlXFxuK1xcdCAqIHJlbWFpbmluZyBmZWF0dXJlIE1TUnMgY2FuIGJlIHRlc3RlZC5cXG4rXFx0ICovXFxuK1xcdGlmIChtc3IgPT0gTVNSX0lBMzJfUEVSRl9DQVBBQklMSVRJRVMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9QRENNKSkge1xcbitcXHRcXHRwcmludGYoXFxcIktWTSBkb2VzIG5vdCBleHBvc2UgUERDTSwgc2tpcHBpbmcgdkNQVSBjaGVja3MgZm9yIFxcXCJcXG4rXFx0XFx0ICAgICAgIFxcXCJNU1JfSUEzMl9QRVJGX0NBUEFCSUxJVElFUyAoMHgleCkuXFxcXG5cXFwiLCBtc3IpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuIFxcdC8qXFxuIFxcdCAqIE1vcmUgZ29vZnkgYmVoYXZpb3IuICBLVk0gcmVwb3J0cyB0aGUgaG9zdCBDUFUncyBhY3R1YWwgcmV2aXNpb24gSUQsXFxuIFxcdCAqIGJ1dCBpbml0aWFsaXplcyB0aGUgdkNQVSdzIHJldmlzaW9uIElEIHRvIGFuIGFyYml0cmFyeSB2YWx1ZS5cXG4gXFx0ICovXFxuIFxcdGlmIChtc3IgPT0gTVNSX0lBMzJfVUNPREVfUkVWKVxcbi1cXHRcXHRyZXNldF92YWx1ZSA9IGhvc3RfY3B1X2lzX2ludGVsID8gMHgxMDAwMDAwMDBVTEwgOiAweDAxMDAwMDY1O1xcbitcXHRcXHRyZXNldF92YWx1ZSA9IGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUgPyAweDEwMDAwMDAwMFVMTCA6IDB4MDEwMDAwNjU7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBGb3IgcXVpcmtlZCBNU1JzLCBLVk0ncyBBQkkgaXMgdG8gaW5pdGlhbGl6ZSB0aGUgdkNQVSdzIHZhbHVlIHRvIHRoZVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZpeF9oeXBlcmNhbGxfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuY1xcbmluZGV4IDQ5MzFlYzIyNzY4ZWUuLmYxMWZjYzUyMGYyNDEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZml4X2h5cGVyY2FsbF90ZXN0LmNcXG5AQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9tYWluKHZvaWQpXFxuIFxcdGNvbnN0IHU4ICpvdGhlcl9oeXBlcmNhbGxfaW5zbjtcXG4gXFx0dTY0IHJldDtcXG4gXFxuLVxcdGlmIChob3N0X2NwdV9pc19pbnRlbCkge1xcbitcXHRpZiAoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSkge1xcbiBcXHRcXHRuYXRpdmVfaHlwZXJjYWxsX2luc24gPSB2bXhfdm1jYWxsO1xcbiBcXHRcXHRvdGhlcl9oeXBlcmNhbGxfaW5zbiAgPSBzdm1fdm1tY2FsbDtcXG4gXFx0fSBlbHNlIGlmIChob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZSkge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jXFxuaW5kZXggYWVlYzMxMjFjOGU4My4uNzhjMjdmYTdjMWE4NyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jXFxuQEAgLTM4LDYgKzM4LDcgQEBcXG4gICovXFxuICNkZWZpbmUgR1BfRVJST1JfQ09ERV9BTUQgKChTU19WRUNUT1IgKiA4KSB8IEVSUk9SX0NPREVfSURUX0ZMQUcpXFxuICNkZWZpbmUgR1BfRVJST1JfQ09ERV9JTlRFTCAoKFNTX1ZFQ1RPUiAqIDgpIHwgRVJST1JfQ09ERV9JRFRfRkxBRyB8IEVSUk9SX0NPREVfRVhUX0ZMQUcpXFxuKyNkZWZpbmUgR1BfRVJST1JfQ09ERV9aSEFPWElOICgoU1NfVkVDVE9SICogOCkgfCBFUlJPUl9DT0RFX0lEVF9GTEFHKVxcbiBcXG4gLypcXG4gICogSW50ZWwgYW5kIEFNRCBib3RoIHNob3ZlICcwJyBpbnRvIHRoZSBlcnJvciBjb2RlIG9uICNERiwgcmVnYXJkbGVzcyBvZiB3aGF0XFxuQEAgLTEzOSw3ICsxNDAsOCBAQCBzdGF0aWMgdm9pZCBsMV92bXhfY29kZShzdHJ1Y3Qgdm14X3BhZ2VzICp2bXgpXFxuIFxcdCAqL1xcbiBcXHRHVUVTVF9BU1NFUlRfRVEodm13cml0ZShFWENFUFRJT05fQklUTUFQLCBJTlRFUkNFUFRfU1NfR1BfREYpLCAwKTtcXG4gXFx0dm14X3J1bl9sMihsMl9zc19wZW5kaW5nX3Rlc3QsIFNTX1ZFQ1RPUiwgKHUxNilTU19FUlJPUl9DT0RFKTtcXG4tXFx0dm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9ncF90ZXN0LCBHUF9WRUNUT1IsIEdQX0VSUk9SX0NPREVfSU5URUwpO1xcbitcXHR2bXhfcnVuX2wyKGwyX3NzX2luamVjdGVkX2dwX3Rlc3QsIEdQX1ZFQ1RPUixcXG4rXFx0XFx0ICAgaG9zdF9jcHVfaXNfemhhb3hpbiA/IEdQX0VSUk9SX0NPREVfWkhBT1hJTiA6IEdQX0VSUk9SX0NPREVfSU5URUwpO1xcbiBcXG4gXFx0R1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0RGKSwgMCk7XFxuIFxcdHZteF9ydW5fbDIobDJfc3NfaW5qZWN0ZWRfZGZfdGVzdCwgREZfVkVDVE9SLCBERl9FUlJPUl9DT0RFKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jXFxuaW5kZXggNDYzZjczYWE5MTU5YS4uYTFiNmRhNGMwNzQwOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9hcGljX2FjY2Vzc190ZXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9hcGljX2FjY2Vzc190ZXN0LmNcXG5AQCAtNzgsNiArNzgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcXG4gXFxuIFxcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9WTVgpKTtcXG4rXFx0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzX3ZteF9hcGljX2FjY2Vzc192aXJ0KCkpO1xcbiBcXG4gXFx0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcXHUwMDI2dmNwdSwgbDFfZ3Vlc3RfY29kZSk7XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9leGNlcHRpb25fd2l0aF9pbnZhbGlkX2d1ZXN0X3N0YXRlLmNcXG5pbmRleCAyY2FlODZkOWQ1ZTJlLi4wOGEwY2FhOWM1MmRhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY1xcbkBAIC0xMDksNyArMTA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbiBcXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcXG4gXFxuLVxcdFRFU1RfUkVRVUlSRShob3N0X2NwdV9pc19pbnRlbCk7XFxuK1xcdFRFU1RfUkVRVUlSRShob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKTtcXG4gXFx0VEVTVF9SRVFVSVJFKCFrdm1faXNfdW5yZXN0cmljdGVkX2d1ZXN0X2VuYWJsZWQoKSk7XFxuIFxcbiBcXHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFxcdTAwMjZ2Y3B1LCBndWVzdF9jb2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTM6MzU6MDAuNTQzMjkwMDk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3OTY0NDAzMjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IEtWTSB1c2Vyc3BhY2Ugc2VsZnRlc3RzIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8gYW5kIGRvZXMgbm90IHRvdWNoIGFueSBrZXJuZWwgY29kZSBvciBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTI1YzI5OGRmNGE5NWM1NzQ3Nzg2MzRmN2Y2YmRiMThkMWU3MTU2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDEzOjM0OjU3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5pbmRleCA2ZTZmNzAwMzU1MDhhLi5kZjM2ODIzMmNmM2UxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbkBAIC0yMyw2ICsyMyw4IEBAIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2ludGVsO1xuIGV4dGVybiBib29sIGhvc3RfY3B1X2lzX2FtZDtcbiBleHRlcm4gYm9vbCBob3N0X2NwdV9pc19oeWdvbjtcbiBleHRlcm4gYm9vbCBob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZTtcbitleHRlcm4gYm9vbCBob3N0X2NwdV9pc196aGFveGluO1xuK2V4dGVybiBib29sIGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGU7XG4gZXh0ZXJuIHU2NCBndWVzdF90c2Nfa2h6O1xuIGV4dGVybiBzdHJ1Y3Qga3ZtX21tdSBndWVzdF9tbXU7XG4gXG5AQCAtNzgyLDYgKzc4NCwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdGhpc19jcHVfaXNfaHlnb24odm9pZClcbiBcdHJldHVybiB0aGlzX2NwdV92ZW5kb3Jfc3RyaW5nX2lzKFwiSHlnb25HZW51aW5lXCIpO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIGJvb2wgdGhpc19jcHVfaXNfemhhb3hpbih2b2lkKVxuK3tcbitcdHJldHVybiB0aGlzX2NwdV92ZW5kb3Jfc3RyaW5nX2lzKFwiQ2VudGF1ckhhdWxzXCIpIHx8XG4rXHQgICAgICAgdGhpc19jcHVfdmVuZG9yX3N0cmluZ19pcyhcIiAgU2hhbmdoYWkgIFwiKTtcbit9XG4rXG4gc3RhdGljIGlubGluZSB1MzIgX190aGlzX2NwdV9oYXModTMyIGZ1bmN0aW9uLCB1MzIgaW5kZXgsIHU4IHJlZywgdTggbG8sIHU4IGhpKVxuIHtcbiBcdHUzMiBncHJzWzRdO1xuQEAgLTE0NDYsNyArMTQ1NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1faXNfcG11X2VuYWJsZWQodm9pZClcbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX21lZGlhdGVkX3BtdV9lbmFibGVkKHZvaWQpXG4ge1xuLVx0aWYgKGhvc3RfY3B1X2lzX2ludGVsKVxuK1x0aWYgKGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUpXG4gXHRcdHJldHVybiBnZXRfa3ZtX2ludGVsX3BhcmFtX2Jvb2woXCJlbmFibGVfbWVkaWF0ZWRfcG11XCIpO1xuIFxuIFx0cmV0dXJuIGdldF9rdm1fYW1kX3BhcmFtX2Jvb2woXCJlbmFibGVfbWVkaWF0ZWRfcG11XCIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni92bXguaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni92bXguaFxuaW5kZXggMDRmNWUzNGRlYTNhZS4uYjE5NjY1MWJkZWEyNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni92bXguaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3ZteC5oXG5AQCAtNTU3LDYgKzU1Nyw3IEBAIGJvb2wgbG9hZF92bWNzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCk7XG4gYm9vbCBlcHRfMWdfcGFnZXNfc3VwcG9ydGVkKHZvaWQpO1xuIFxuIGJvb2wga3ZtX2NwdV9oYXNfZXB0KHZvaWQpO1xuK2Jvb2wga3ZtX2NwdV9oYXNfdm14X2FwaWNfYWNjZXNzX3ZpcnQodm9pZCk7XG4gdm9pZCB2bV9lbmFibGVfZXB0KHN0cnVjdCBrdm1fdm0gKnZtKTtcbiB2b2lkIHByZXBhcmVfdmlydHVhbGl6ZV9hcGljX2FjY2Vzc2VzKHN0cnVjdCB2bXhfcGFnZXMgKnZteCwgc3RydWN0IGt2bV92bSAqdm0pO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmNcbmluZGV4IGQzMWZhODFlYTA3NTYuLmJkNTBjMTI2NWNlZmEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9wcm9jZXNzb3IuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvcHJvY2Vzc29yLmNcbkBAIC0yNiw2ICsyNiw4IEBAIGJvb2wgaG9zdF9jcHVfaXNfYW1kO1xuIGJvb2wgaG9zdF9jcHVfaXNfaW50ZWw7XG4gYm9vbCBob3N0X2NwdV9pc19oeWdvbjtcbiBib29sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlO1xuK2Jvb2wgaG9zdF9jcHVfaXNfemhhb3hpbjtcbitib29sIGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGU7XG4gYm9vbCBpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQ7XG4gdTY0IGd1ZXN0X3RzY19raHo7XG4gc3RydWN0IGt2bV9tbXUgZ3Vlc3RfbW11O1xuQEAgLTE1OCw3ICsxNjAsNyBAQCBzdGF0aWMgdm9pZCBzcmVnc19kdW1wKEZJTEUgKnN0cmVhbSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsIHU4IGluZGVudClcbiBcbiBib29sIGt2bV9pc190ZHBfZW5hYmxlZCh2b2lkKVxuIHtcbi1cdGlmIChob3N0X2NwdV9pc19pbnRlbClcbitcdGlmIChob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKVxuIFx0XHRyZXR1cm4gZ2V0X2t2bV9pbnRlbF9wYXJhbV9ib29sKFwiZXB0XCIpO1xuIFx0ZWxzZVxuIFx0XHRyZXR1cm4gZ2V0X2t2bV9hbWRfcGFyYW1fYm9vbChcIm5wdFwiKTtcbkBAIC04MTksNiArODIxLDggQEAgdm9pZCBrdm1fYXJjaF92bV9wb3N0X2NyZWF0ZShzdHJ1Y3Qga3ZtX3ZtICp2bSwgdW5zaWduZWQgaW50IG5yX3ZjcHVzKVxuIFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX2FtZCk7XG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgaG9zdF9jcHVfaXNfaHlnb24pO1xuIFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlKTtcbitcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc196aGFveGluKTtcbitcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKTtcbiBcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBpc19mb3JjZWRfZW11bGF0aW9uX2VuYWJsZWQpO1xuIFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIHBtdV9lcnJhdGFfbWFzayk7XG4gXG5AQCAtMTQ0NCw2ICsxNDQ4LDggQEAgdm9pZCBrdm1fc2VsZnRlc3RfYXJjaF9pbml0KHZvaWQpXG4gXHRob3N0X2NwdV9pc19hbWQgPSB0aGlzX2NwdV9pc19hbWQoKTtcbiBcdGhvc3RfY3B1X2lzX2h5Z29uID0gdGhpc19jcHVfaXNfaHlnb24oKTtcbiBcdGhvc3RfY3B1X2lzX2FtZF9jb21wYXRpYmxlID0gaG9zdF9jcHVfaXNfYW1kIHx8IGhvc3RfY3B1X2lzX2h5Z29uO1xuK1x0aG9zdF9jcHVfaXNfemhhb3hpbiA9IHRoaXNfY3B1X2lzX3poYW94aW4oKTtcbitcdGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUgPSBob3N0X2NwdV9pc19pbnRlbCB8fCBob3N0X2NwdV9pc196aGFveGluO1xuIFx0aXNfZm9yY2VkX2VtdWxhdGlvbl9lbmFibGVkID0ga3ZtX2lzX2ZvcmNlZF9lbXVsYXRpb25fZW5hYmxlZCgpO1xuIFxuIFx0a3ZtX2luaXRfcG11X2VycmF0YSgpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3ZteC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvdm14LmNcbmluZGV4IDA4OWUxYThhZjUzZmMuLmU1MTIxOTFmMWVlZDcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni92bXguY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvdm14LmNcbkBAIC0zOTAsNiArMzkwLDIxIEBAIGJvb2wga3ZtX2NwdV9oYXNfZXB0KHZvaWQpXG4gXHRyZXR1cm4gY3RybCBcdTAwMjYgU0VDT05EQVJZX0VYRUNfRU5BQkxFX0VQVDtcbiB9XG4gXG4rYm9vbCBrdm1fY3B1X2hhc192bXhfYXBpY19hY2Nlc3NfdmlydCh2b2lkKVxuK3tcbitcdHU2NCBjdHJsO1xuK1xuK1x0aWYgKCFrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9WTVgpKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRjdHJsID0ga3ZtX2dldF9mZWF0dXJlX21zcihNU1JfSUEzMl9WTVhfVFJVRV9QUk9DQkFTRURfQ1RMUykgXHUwMDNlXHUwMDNlIDMyO1xuK1x0aWYgKCEoY3RybCBcdTAwMjYgQ1BVX0JBU0VEX0FDVElWQVRFX1NFQ09OREFSWV9DT05UUk9MUykpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGN0cmwgPSBrdm1fZ2V0X2ZlYXR1cmVfbXNyKE1TUl9JQTMyX1ZNWF9QUk9DQkFTRURfQ1RMUzIpIFx1MDAzZVx1MDAzZSAzMjtcbitcdHJldHVybiBjdHJsIFx1MDAyNiBTRUNPTkRBUllfRVhFQ19WSVJUVUFMSVpFX0FQSUNfQUNDRVNTRVM7XG4rfVxuK1xuIHZvaWQgcHJlcGFyZV92aXJ0dWFsaXplX2FwaWNfYWNjZXNzZXMoc3RydWN0IHZteF9wYWdlcyAqdm14LCBzdHJ1Y3Qga3ZtX3ZtICp2bSlcbiB7XG4gXHR2bXgtXHUwMDNlYXBpY19hY2Nlc3MgPSAodm9pZCAqKXZtX2FsbG9jX3BhZ2Uodm0pO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuY1xuaW5kZXggMTU4NTUwNzAxNzcxOC4uYmIzMzk3MDlkNjFkOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZmVhdHVyZV9tc3JzX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9mZWF0dXJlX21zcnNfdGVzdC5jXG5AQCAtNTQsMTIgKzU0LDI1IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmVhdHVyZV9tc3IodTMyIG1zcilcbiBcdGlmIChpc19rdm1fY29udHJvbGxlZF9tc3IobXNyKSlcbiBcdFx0cmV0dXJuO1xuIFxuK1x0LypcbitcdCAqIEtWTSBhbGxvd3MgdXNlcnNwYWNlIHRvIHF1ZXJ5IE1TUl9JQTMyX1BFUkZfQ0FQQUJJTElUSUVTIGFzIGFcbitcdCAqIGZlYXR1cmUgTVNSIGV2ZW4gaWYgS1ZNIGRvZXNuJ3QgZXhwb3NlIFBEQ00sIGJ1dCB2Q1BVIGFjY2Vzc2VzIHRvXG4rXHQgKiB0aGUgTVNSIHdpbGwgZmFpbCBpbiB0aGF0IGNhc2UuIFNraXAgdGhlIHZDUFUgY2hlY2tzIHNvIHRoYXQgdGhlXG4rXHQgKiByZW1haW5pbmcgZmVhdHVyZSBNU1JzIGNhbiBiZSB0ZXN0ZWQuXG4rXHQgKi9cbitcdGlmIChtc3IgPT0gTVNSX0lBMzJfUEVSRl9DQVBBQklMSVRJRVMgXHUwMDI2XHUwMDI2XG4rXHQgICAgIWt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1BEQ00pKSB7XG4rXHRcdHByaW50ZihcIktWTSBkb2VzIG5vdCBleHBvc2UgUERDTSwgc2tpcHBpbmcgdkNQVSBjaGVja3MgZm9yIFwiXG4rXHRcdCAgICAgICBcIk1TUl9JQTMyX1BFUkZfQ0FQQUJJTElUSUVTICgweCV4KS5cXG5cIiwgbXNyKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0LypcbiBcdCAqIE1vcmUgZ29vZnkgYmVoYXZpb3IuICBLVk0gcmVwb3J0cyB0aGUgaG9zdCBDUFUncyBhY3R1YWwgcmV2aXNpb24gSUQsXG4gXHQgKiBidXQgaW5pdGlhbGl6ZXMgdGhlIHZDUFUncyByZXZpc2lvbiBJRCB0byBhbiBhcmJpdHJhcnkgdmFsdWUuXG4gXHQgKi9cbiBcdGlmIChtc3IgPT0gTVNSX0lBMzJfVUNPREVfUkVWKVxuLVx0XHRyZXNldF92YWx1ZSA9IGhvc3RfY3B1X2lzX2ludGVsID8gMHgxMDAwMDAwMDBVTEwgOiAweDAxMDAwMDY1O1xuK1x0XHRyZXNldF92YWx1ZSA9IGhvc3RfY3B1X2lzX2ludGVsX2NvbXBhdGlibGUgPyAweDEwMDAwMDAwMFVMTCA6IDB4MDEwMDAwNjU7XG4gXG4gXHQvKlxuIFx0ICogRm9yIHF1aXJrZWQgTVNScywgS1ZNJ3MgQUJJIGlzIHRvIGluaXRpYWxpemUgdGhlIHZDUFUncyB2YWx1ZSB0byB0aGVcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2ZpeF9oeXBlcmNhbGxfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9maXhfaHlwZXJjYWxsX3Rlc3QuY1xuaW5kZXggNDkzMWVjMjI3NjhlZS4uZjExZmNjNTIwZjI0MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZml4X2h5cGVyY2FsbF90ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZml4X2h5cGVyY2FsbF90ZXN0LmNcbkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB2b2lkIGd1ZXN0X21haW4odm9pZClcbiBcdGNvbnN0IHU4ICpvdGhlcl9oeXBlcmNhbGxfaW5zbjtcbiBcdHU2NCByZXQ7XG4gXG4tXHRpZiAoaG9zdF9jcHVfaXNfaW50ZWwpIHtcbitcdGlmIChob3N0X2NwdV9pc19pbnRlbF9jb21wYXRpYmxlKSB7XG4gXHRcdG5hdGl2ZV9oeXBlcmNhbGxfaW5zbiA9IHZteF92bWNhbGw7XG4gXHRcdG90aGVyX2h5cGVyY2FsbF9pbnNuICA9IHN2bV92bW1jYWxsO1xuIFx0fSBlbHNlIGlmIChob3N0X2NwdV9pc19hbWRfY29tcGF0aWJsZSkge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvbmVzdGVkX2V4Y2VwdGlvbnNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9uZXN0ZWRfZXhjZXB0aW9uc190ZXN0LmNcbmluZGV4IGFlZWMzMTIxYzhlODMuLjc4YzI3ZmE3YzFhODcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L25lc3RlZF9leGNlcHRpb25zX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9uZXN0ZWRfZXhjZXB0aW9uc190ZXN0LmNcbkBAIC0zOCw2ICszOCw3IEBAXG4gICovXG4gI2RlZmluZSBHUF9FUlJPUl9DT0RFX0FNRCAoKFNTX1ZFQ1RPUiAqIDgpIHwgRVJST1JfQ09ERV9JRFRfRkxBRylcbiAjZGVmaW5lIEdQX0VSUk9SX0NPREVfSU5URUwgKChTU19WRUNUT1IgKiA4KSB8IEVSUk9SX0NPREVfSURUX0ZMQUcgfCBFUlJPUl9DT0RFX0VYVF9GTEFHKVxuKyNkZWZpbmUgR1BfRVJST1JfQ09ERV9aSEFPWElOICgoU1NfVkVDVE9SICogOCkgfCBFUlJPUl9DT0RFX0lEVF9GTEFHKVxuIFxuIC8qXG4gICogSW50ZWwgYW5kIEFNRCBib3RoIHNob3ZlICcwJyBpbnRvIHRoZSBlcnJvciBjb2RlIG9uICNERiwgcmVnYXJkbGVzcyBvZiB3aGF0XG5AQCAtMTM5LDcgKzE0MCw4IEBAIHN0YXRpYyB2b2lkIGwxX3ZteF9jb2RlKHN0cnVjdCB2bXhfcGFnZXMgKnZteClcbiBcdCAqL1xuIFx0R1VFU1RfQVNTRVJUX0VRKHZtd3JpdGUoRVhDRVBUSU9OX0JJVE1BUCwgSU5URVJDRVBUX1NTX0dQX0RGKSwgMCk7XG4gXHR2bXhfcnVuX2wyKGwyX3NzX3BlbmRpbmdfdGVzdCwgU1NfVkVDVE9SLCAodTE2KVNTX0VSUk9SX0NPREUpO1xuLVx0dm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9ncF90ZXN0LCBHUF9WRUNUT1IsIEdQX0VSUk9SX0NPREVfSU5URUwpO1xuK1x0dm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9ncF90ZXN0LCBHUF9WRUNUT1IsXG4rXHRcdCAgIGhvc3RfY3B1X2lzX3poYW94aW4gPyBHUF9FUlJPUl9DT0RFX1pIQU9YSU4gOiBHUF9FUlJPUl9DT0RFX0lOVEVMKTtcbiBcbiBcdEdVRVNUX0FTU0VSVF9FUSh2bXdyaXRlKEVYQ0VQVElPTl9CSVRNQVAsIElOVEVSQ0VQVF9TU19ERiksIDApO1xuIFx0dm14X3J1bl9sMihsMl9zc19pbmplY3RlZF9kZl90ZXN0LCBERl9WRUNUT1IsIERGX0VSUk9SX0NPREUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2FwaWNfYWNjZXNzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2FwaWNfYWNjZXNzX3Rlc3QuY1xuaW5kZXggNDYzZjczYWE5MTU5YS4uYTFiNmRhNGMwNzQwOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2FwaWNfYWNjZXNzX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfYXBpY19hY2Nlc3NfdGVzdC5jXG5AQCAtNzgsNiArNzgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0c3RydWN0IGt2bV92bSAqdm07XG4gXG4gXHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfVk1YKSk7XG4rXHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXNfdm14X2FwaWNfYWNjZXNzX3ZpcnQoKSk7XG4gXG4gXHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFx1MDAyNnZjcHUsIGwxX2d1ZXN0X2NvZGUpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY1xuaW5kZXggMmNhZTg2ZDlkNWUyZS4uMDhhMGNhYTljNTJkYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfZXhjZXB0aW9uX3dpdGhfaW52YWxpZF9ndWVzdF9zdGF0ZS5jXG5AQCAtMTA5LDcgKzEwOSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4gXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbiBcbi1cdFRFU1RfUkVRVUlSRShob3N0X2NwdV9pc19pbnRlbCk7XG4rXHRURVNUX1JFUVVJUkUoaG9zdF9jcHVfaXNfaW50ZWxfY29tcGF0aWJsZSk7XG4gXHRURVNUX1JFUVVJUkUoIWt2bV9pc191bnJlc3RyaWN0ZWRfZ3Vlc3RfZW5hYmxlZCgpKTtcbiBcbiBcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXHUwMDI2dmNwdSwgZ3Vlc3RfY29kZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNTowMC41NDMyOTEzMTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3OTY0MzgwMjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2ggaXMgY2xlYXJseSBsb2NhbGl6ZWQgdG8gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9gLiBJIHNlZSB0aGUgZm9sbG93aW5nIGZpbGVzIGFyZSBiZWluZyBtb2RpZmllZDogYGluY2x1ZGUveDg2L3Byb2Nlc3Nvci5oYCwgYGluY2x1ZGUveDg2L3ZteC5oYCwgYGxpYi94ODYvcHJvY2Vzc29yLmNgLCBgbGliL3g4Ni92bXguY2AsIGFuZCBhIGhhbmRmdWwgb2YgYHg4Ni9gIHRlc3RzOiBgZmVhdHVyZV9tc3JzX3Rlc3QuY2AsIGBmaXhfaHlwZXJjYWxsX3Rlc3QuY2AsIGBuZXN0ZWRfZXhjZXB0aW9uc190ZXN0LmNgLCBgdm14X2FwaWNfYWNjZXNzX3Rlc3QuY2AsIGFuZCBgdm14X2V4Y2VwdGlvbl93aXRoX2ludmFsaWRfZ3Vlc3Rfc3RhdGUuY2AuXG5cbk5vdywgYWNjb3JkaW5nIHRvIHRoZSBgV29ydGhGdXp6aW5nYCBydWxlcyAoc3BlY2lmaWNhbGx5IFNlY3Rpb24gMiksIHdlIG9ubHkgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGFsbCB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIHNwZWNpZmljIGNhdGVnb3JpZXMuIExldCBtZSBzZWUuLi4gXCJOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzLCB3aGljaCBpbmNsdWRlcyBtb2RpZmljYXRpb25zIHRvIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMuLi4gdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlwiIEJpbmdvISBUaGlzIGlzIHByZWNpc2VseSB3aGF0IHdlJ3JlIGxvb2tpbmcgYXQuIFRoZXNlIGFyZSBhbGwgS1ZNIHVzZXJzcGFjZSBzZWxmdGVzdHMuXG5cblRoZXJlZm9yZSwgdGhpcyBpcyBhIGNsZWFyIGNhc2UgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBmdXp6aW5nIG5lZWRlZCBoZXJlLlxuXG5TbywgbGV0J3MgcHJlcGFyZSB0aGUgdG9vbCBjYWxsOlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogYGZhbHNlYCAoVW5xdWVzdGlvbmFibHkpXG4qICAgKipGb2N1c1N5bWJvbHM6KiogKEVtcHR5IC0gbm90IHJlbGV2YW50IGhlcmUpXG4qICAgKipFbmFibGVDb25maWdzOioqIChFbXB0eSAtIGFsc28gbm90IHJlbGV2YW50IGhlcmUpXG4qICAgKipSZWFzb25pbmc6KiogQWxsIGNoYW5nZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIEtWTSB1c2Vyc3BhY2Ugc2VsZnRlc3RzIHVuZGVyIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYCBhbmQgKmRvIG5vdCogYWZmZWN0IHRoZSBjb3JlIGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLiBUaGlzIGFsaWducyBwZXJmZWN0bHkgd2l0aCB0aGUgY3JpdGVyaWEgZm9yIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1ODcsIk91dHB1dFRva2VucyI6NjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNTowOC41MDc2NzQ0ODFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG9ubHkgS1ZNIHVzZXJzcGFjZSBzZWxmdGVzdHMgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyBhbmQgZG9lcyBub3QgdG91Y2ggYW55IGtlcm5lbCBjb2RlIG9yIGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBLVk0gdXNlcnNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIGFuZCBkb2VzIG5vdCB0b3VjaCBhbnkga2VybmVsIGNvZGUgb3IgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMzozNTowOC41MDc2OTUxNjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkgr5[1] Phase: Running StartedAt: 2026-09-10 13:35:19 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgr5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 13:35:19 +0000 UTC FinishedAt: 2026-09-10 13:35:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}