Name: series-workflow82hjn Phase: Failed StartedAt: 2026-08-26 15:04:19 +0000 UTC FinishedAt: 2026-08-26 15:22:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow82hjn[0] Phase: Succeeded StartedAt: 2026-08-26 15:04:19 +0000 UTC FinishedAt: 2026-08-26 15:22:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow82hjn[0].run-triage Phase: Succeeded StartedAt: 2026-08-26 15:04:19 +0000 UTC FinishedAt: 2026-08-26 15:22:06 +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+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJlMjI4Njc2ZmQyYjhiY2VlNTUwNmIwZTQ4OTFhZGQ1MDgwOTNmNzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxNToyMTo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNcbmluZGV4IDU2NzFjMzEwODVjZDEuLjdjNTM5Y2JjZjNhMWUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dsb2JhbF9kYXRhX2luaXQuY1xuQEAgLTY4LDEyICYjNDM7NjgsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMoc3RydWN0IGJwZl9tYXAgKm1hcCwgaW50IG1hcF9mZCwgaW50IHByb2dfZlxuIHtcbiBcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fcGVyY3B1ICpkYXRhID0gTlVMTDtcbiBcdGludCBpLCBlcnIsIGtleSA9IDAsIG51bV9vbmxpbmUsIHJ1biA9IDA7XG4tXHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcbiBcdHNpemVfdCBkYXRhX3N6O1xuIFx0Ym9vbCAqb25saW5lO1xuIFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuLVx0XHQgICAgLmN0eF9pbiA9IGFyZ3MsXG4tXHRcdCAgICAuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXG4gXHRcdCAgICAuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG4gXHQpO1xuIFxuQEAgLTgxLDcgJiM0Mzs3OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mXG4gXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3BhcnNlX2NwdV9tYXNrX2ZpbGVcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRkYXRhX3N6ID0gbWFwID8gYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApIDogc2l6ZW9mKCpkYXRhKTtcbiYjNDM7XHRkYXRhX3N6ID0gc2l6ZW9mKCpkYXRhKTtcbiBcdGRhdGEgPSBjYWxsb2MoMSwgZGF0YV9zeik7XG4gXHRpZiAoIUFTU0VSVF9PS19QVFIoZGF0YSwgXCYjMzQ7Y2FsbG9jIHBlcmNwdSBkYXRhXCYjMzQ7KSlcbiBcdFx0Z290byBvdXQ7XG5AQCAtMTA5LDcgJiM0MzsxMDYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMoc3RydWN0IGJwZl9tYXAgKm1hcCwgaW50IG1hcF9mZCwgaW50IHByb2dfZlxuIFx0XHRcdGJyZWFrO1xuIFxuIFx0XHRBU1NFUlRfRVEoKnJ1bnAsICYjNDM7JiM0MztydW4sIFwmIzM0O3J1blwmIzM0Oyk7XG4tXHRcdEFTU0VSVF9FUShkYXRhLVx1MDAzZWNwdV9pZFswXSwgaSwgXCYjMzQ7Y3B1X2lkXCYjMzQ7KTtcbiYjNDM7XHRcdEFTU0VSVF9FUShkYXRhLVx1MDAzZWNwdV9pZCwgaSwgXCYjMzQ7Y3B1X2lkXCYjMzQ7KTtcbiBcdFx0QVNTRVJUX0VRKGRhdGEtXHUwMDNlZGF0YSwgMSwgXCYjMzQ7ZGF0YVwmIzM0Oyk7XG4gXHRcdEFTU0VSVF9UUlVFKGRhdGEtXHUwMDNlc2V0LCBcJiMzNDtzZXRcJiMzNDspO1xuIFx0XHRBU1NFUlRfRVEoZGF0YS1cdTAwM2VudW1zWzZdLCAweGMwZGUsIFwmIzM0O251bXNbNl1cJiMzNDspO1xuQEAgLTEyNyw3ICYjNDM7MTI0LDYgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCh2b2lkKVxuIHtcbiBcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fcGVyY3B1IGluaXRfdmFsdWUgPSB7fTtcbiBcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fcGVyY3B1ICppbml0X2RhdGE7XG4tXHRjb25zdCBfX3UzMiBkZXNpcmVkX3N6ID0gc3lzY29uZihfU0NfUEFHRV9TSVpFKTtcbiBcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YSAqc2tlbCA9IE5VTEw7XG4gXHRzaXplX3QgaW5pdF9kYXRhX3N6O1xuIFx0c3RydWN0IGJwZl9tYXAgKm1hcDtcbkBAIC0xNjMsOSAmIzQzOzE1OSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9pbml0KHZvaWQpXG4gXHRpZiAoIUFTU0VSVF9FUShicGZfbWFwX190eXBlKG1hcCksIEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVksIFwmIzM0O2JwZl9tYXBfX3R5cGVcJiMzNDspKVxuIFx0XHRnb3RvIG91dDtcbiBcbiYjNDM7XHRpbml0X3ZhbHVlLnNldCA9IDE7XG4gXHRpbml0X3ZhbHVlLmRhdGEgPSAyO1xuIFx0aW5pdF92YWx1ZS5udW1zWzZdID0gLTE7XG4gXHRpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLmkgPSAyO1xuJiM0MztcdGluaXRfdmFsdWUuc3RydWN0X2RhdGEuc2V0ID0gMTtcbiBcdGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSA9IC0xO1xuIFx0ZXJyID0gYnBmX21hcF9fc2V0X2luaXRpYWxfdmFsdWUobWFwLCBcdTAwMjZpbml0X3ZhbHVlLCBzaXplb2YoaW5pdF92YWx1ZSkpO1xuIFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDticGZfbWFwX19zZXRfaW5pdGlhbF92YWx1ZVwmIzM0OykpXG5AQCAtMTc3LDM1ICYjNDM7MTc1LDI0IEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2luaXQodm9pZClcbiBcbiBcdEFTU0VSVF9FUShpbml0X2RhdGEtXHUwMDNlZGF0YSwgaW5pdF92YWx1ZS5kYXRhLCBcJiMzNDtpbml0X3ZhbHVlIGRhdGFcJiMzNDspO1xuIFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VzZXQsIGluaXRfdmFsdWUuc2V0LCBcJiMzNDtpbml0X3ZhbHVlIHNldFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VudW1zWzZdLCBpbml0X3ZhbHVlLm51bXNbNl0sIFwmIzM0O2luaXRfdmFsdWUgbnVtc1s2XVwmIzM0Oyk7XG4gXHRBU1NFUlRfRVEoaW5pdF9kYXRhLVx1MDAzZXN0cnVjdF9kYXRhLmksIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuaSwgXCYjMzQ7aW5pdF92YWx1ZSBzdHJ1Y3RfZGF0YS5pXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoaW5pdF9kYXRhLVx1MDAzZXN0cnVjdF9kYXRhLnNldCwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQsXG4mIzQzO1x0XHQgIFwmIzM0O2luaXRfdmFsdWUgc3RydWN0X2RhdGEuc2V0XCYjMzQ7KTtcbiBcdEFTU0VSVF9FUShpbml0X2RhdGEtXHUwMDNlc3RydWN0X2RhdGEubnVtc1s2XSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5udW1zWzZdLFxuIFx0XHQgIFwmIzM0O2luaXRfdmFsdWUgc3RydWN0X2RhdGEubnVtc1s2XVwmIzM0Oyk7XG4gXHRBU1NFUlRfRVEoaW5pdF9kYXRhX3N6LCBzaXplb2YoaW5pdF92YWx1ZSksIFwmIzM0O2luaXRfdmFsdWUgc2l6ZVwmIzM0Oyk7XG4gXHRBU1NFUlRfRVEoKHZvaWQgKikgaW5pdF9kYXRhLCAodm9pZCAqKSBza2VsLVx1MDAzZXBlcmNwdSwgXCYjMzQ7c2tlbC1cdTAwM2VwZXJjcHUgZXEgaW5pdF9kYXRhXCYjMzQ7KTtcbiBcdEFTU0VSVF9FUShza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VkYXRhLCBpbml0X3ZhbHVlLmRhdGEsIFwmIzM0O3NrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZWRhdGFcJiMzNDspO1xuIFx0QVNTRVJUX0VRKHNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXNldCwgaW5pdF92YWx1ZS5zZXQsIFwmIzM0O3NrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXNldFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZW51bXNbNl0sIGluaXRfdmFsdWUubnVtc1s2XSwgXCYjMzQ7c2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlbnVtc1s2XVwmIzM0Oyk7XG4gXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlc3RydWN0X2RhdGEuaSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pLFxuIFx0XHQgIFwmIzM0O3NrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXN0cnVjdF9kYXRhLmlcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VzdHJ1Y3RfZGF0YS5zZXQsIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuc2V0LFxuJiM0MztcdFx0ICBcJiMzNDtza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VzdHJ1Y3RfZGF0YS5zZXRcJiMzNDspO1xuIFx0QVNTRVJUX0VRKHNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSxcbiBcdFx0ICBcJiMzNDtza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VzdHJ1Y3RfZGF0YS5udW1zWzZdXCYjMzQ7KTtcbiBcbi1cdEFTU0VSVF9HVChkZXNpcmVkX3N6LCBzaXplb2YoaW5pdF92YWx1ZSksIFwmIzM0O2Rlc2lyZWRfc3pcJiMzNDspO1xuLVx0ZXJyID0gYnBmX21hcF9fc2V0X3ZhbHVlX3NpemUobWFwLCBkZXNpcmVkX3N6KTtcbi1cdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX21hcF9fc2V0X3ZhbHVlX3NpemVcJiMzNDspKVxuLVx0XHRnb3RvIG91dDtcbi1cdGlmICghQVNTRVJUX0VRKGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSwgZGVzaXJlZF9zeiwgXCYjMzQ7cGVyY3B1IHZhbHVlIHNpemVcJiMzNDspKVxuLVx0XHRnb3RvIG91dDtcbi1cdGlmICghQVNTRVJUX05FUShicGZfbWFwX19idGZfdmFsdWVfdHlwZV9pZChtYXApLCAwLCBcJiMzNDtwZXJjcHUgQlRGIHZhbHVlIHR5cGVcJiMzNDspKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGluaXRfZGF0YSA9IGJwZl9tYXBfX2luaXRpYWxfdmFsdWUobWFwLCBcdTAwMjZpbml0X2RhdGFfc3opO1xuLVx0aWYgKCFBU1NFUlRfT0tfUFRSKGluaXRfZGF0YSwgXCYjMzQ7cmVzaXplZCBicGZfbWFwX19pbml0aWFsX3ZhbHVlXCYjMzQ7KSlcbi1cdFx0Z290byBvdXQ7XG4tXHRpZiAoIUFTU0VSVF9FUShpbml0X2RhdGFfc3osIGRlc2lyZWRfc3osIFwmIzM0O3Jlc2l6ZWQgaW5pdGlhbCB2YWx1ZSBzaXplXCYjMzQ7KSlcbi1cdFx0Z290byBvdXQ7XG4tXHRpZiAoIUFTU0VSVF9FUShpbml0X2RhdGEtXHUwMDNlZGF0YSwgaW5pdF92YWx1ZS5kYXRhLCBcJiMzNDtyZXNpemVkIGluaXRpYWwgdmFsdWUgZGF0YVwmIzM0OykpXG4tXHRcdGdvdG8gb3V0O1xuLVxuIFx0ZXJyID0gdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQoc2tlbCk7XG4gXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19sb2FkXCYjMzQ7KSlcbiBcdFx0Z290byBvdXQ7XG5AQCAtMjM2LDYgJiM0MzsyMjMsNjcgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbHNrZWwodm9pZClcbiBcdHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2xza2VsX19kZXN0cm95KGxza2VsKTtcbiB9XG4gXG4mIzQzOyNkZWZpbmUgUENQVV9NSU5fVU5JVF9TSVpFICgzMiBcdTAwM2NcdTAwM2MgMTApXG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9tYXBfcmVzaXplKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBfX3UzMiBwYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFX1NJWkUpO1xuJiM0MztcdGNvbnN0IF9fdTMyIHBjcHVfbWF4X3ZhbHVlX3NpemUgPSBBTElHTihQQ1BVX01JTl9VTklUX1NJWkUsIHBhZ2Vfc2l6ZSk7XG4mIzQzO1x0Y29uc3QgX191MzIgZGVzaXJlZF9zeiA9IHBhZ2Vfc2l6ZSAqIDI7XG4mIzQzO1x0c3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhICpza2VsO1xuJiM0MztcdGNvbnN0IGludCBhcnJfdmFsdWUgPSAtMTtcbiYjNDM7XHRzdHJ1Y3QgYnBmX21hcCAqbWFwO1xuJiM0MztcdGludCBlcnIsIHByb2dfZmQ7XG4mIzQzO1x0c2l6ZV90IGRhdGFfc3o7XG4mIzQzO1xuJiM0MztcdHNrZWwgPSB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fb3BlbigpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDt0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fb3BlblwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdG1hcCA9IHNrZWwtXHUwMDNlbWFwcy5wZXJjcHVfYXJyO1xuJiM0MztcdHNrZWwtXHUwMDNlcGVyY3B1X2Fyci1cdTAwM2VhcnJbMF0gPSBhcnJfdmFsdWU7XG4mIzQzO1x0ZXJyID0gYnBmX21hcF9fc2V0X3ZhbHVlX3NpemUobWFwLCBkZXNpcmVkX3N6KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O2JwZl9tYXBfX3NldF92YWx1ZV9zaXplXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdGlmICghQVNTRVJUX0VRKGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSwgZGVzaXJlZF9zeiwgXCYjMzQ7YnBmX21hcF9fdmFsdWVfc2l6ZVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHRpZiAoIUFTU0VSVF9ORVEoYnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWQobWFwKSwgMCwgXCYjMzQ7YnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWRcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHNrZWwtXHUwMDNlcGVyY3B1X2FyciA9IGJwZl9tYXBfX2luaXRpYWxfdmFsdWUobWFwLCBcdTAwMjZkYXRhX3N6KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9FUShkYXRhX3N6LCBkZXNpcmVkX3N6LCBcJiMzNDtkYXRhX3N6XCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVx1MDAzZXBlcmNwdV9hcnIsIFwmIzM0O3NrZWwtXHUwMDNlcGVyY3B1X2FyclwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHRpZiAoIUFTU0VSVF9FUShza2VsLVx1MDAzZXBlcmNwdV9hcnItXHUwMDNlYXJyWzBdLCBhcnJfdmFsdWUsIFwmIzM0O2FyclswXVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQoc2tlbCk7XG4mIzQzO1x0aWYgKGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSBcdTAwM2UgcGNwdV9tYXhfdmFsdWVfc2l6ZSkge1xuJiM0MztcdFx0aWYgKEFTU0VSVF9FUShlcnIsIC1FMkJJRywgXCYjMzQ7dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQgRTJCSUdcJiMzNDspKVxuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBXaGVuIHRoZSBQQUdFX1NJWkUgaXMgNjRLaUIsIHRoZSBuZXcgdmFsdWUgc2l6ZSB3aWxsXG4mIzQzO1x0XHRcdCAqIGJlIDEyOEtpQi4gQ3JlYXRpbmcgYSBwZXJjcHVfYXJyYXkgbWFwIHdpdGggdGhlIG5ld1xuJiM0MztcdFx0XHQgKiB2YWx1ZSBzaXplIHdpbGwgZmFpbCB3aXRoIC1FMkJJRyBkdWUgdG8gcGVyY3B1X2FycmF5XG4mIzQzO1x0XHRcdCAqIG1hcCB2YWx1ZSBzaXplIGxpbWl0IDY0S2lCLCB3aGljaCBpcyBjYWxjdWxhdGVkIGJ5XG4mIzQzO1x0XHRcdCAqIFBGTl9BTElHTigzMktpQikuXG4mIzQzO1x0XHRcdCAqIExldCYjMzk7cyBza2lwIHRoZSB0ZXN0IGZvciBzdWNoIGNhc2UuXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHR0ZXN0X19za2lwKCk7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZFwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0bWFwID0gc2tlbC1cdTAwM2VtYXBzLnBlcmNwdTtcbiYjNDM7XHRwcm9nX2ZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MudXBkYXRlX3BlcmNwdV9kYXRhKTtcbiYjNDM7XHR0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMobWFwLCBicGZfbWFwX19mZChtYXApLCBwcm9nX2ZkLCBcdTAwMjZza2VsLVx1MDAzZWJzcy1cdTAwM2VydW4pO1xuJiM0MztcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VhcnJfc3VtLCBhcnJfdmFsdWUgKiBza2VsLVx1MDAzZWJzcy1cdTAwM2VydW4sIFwmIzM0O2Fycl9zdW1cJiMzNDspO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgY3JlYXRlX3Jkb25seV9wZXJjcHVfYXJyYXkodm9pZClcbiB7XG4gXHRMSUJCUEZfT1BUUyhicGZfbWFwX2NyZWF0ZV9vcHRzLCBtYXBfb3B0cyxcbkBAIC0zODgsNiAmIzQzOzQzNiw4IEBAIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEodm9pZClcbiBcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7bHNrZWxcJiMzNDspKVxuIFx0XHR0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbCgpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O21hcF9yZXNpemVcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbWFwX3Jlc2l6ZSgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmRvbmx5X2RpcmVjdF9yZWFkXCYjMzQ7KSlcbiBcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfcmRvbmx5X2RpcmVjdF9yZWFkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtyZG9ubHlfZGlyZWN0X3dyaXRlXCYjMzQ7KSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXG5pbmRleCA1ZGMyMWIzYjRjYjU5Li4yNzY1Y2Q0NmU5YWYwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXG5AQCAtOCw5ICYjNDM7OCwxMiBAQCBpbnQgbG9vbmcgU0VDKFwmIzM0Oy5wZXJjcHUubG9vb29vb29vb25nXCYjMzQ7KTtcbiBpbnQgZGF0YTMgU0VDKFwmIzM0Oy5kYXRhLnBlcmNwdVwmIzM0Oyk7XG4gaW50IGRhdGEyIFNFQyhcJiMzNDsucGVyY3B1LmRhdGFcJiMzNDspO1xuIFxuJiM0MzsvKiBVc2VkIGZvciB0ZXN0aW5nIGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKCkuICovXG4mIzQzO2ludCBhcnJbMV0gU0VDKFwmIzM0Oy5wZXJjcHUuYXJyXCYjMzQ7KTtcbiYjNDM7aW50IGFycl9zdW07XG4mIzQzO1xuIGludCBydW47XG4tLyogY3B1X2lkIGFzIGFycmF5IHRvIHZlcmlmeSBtYXAgdmFsdWUgcmVzaXppbmcuICovXG4taW50IGNwdV9pZFsxXSBTRUMoXCYjMzQ7LnBlcmNwdVwmIzM0Oyk7XG4mIzQzO2ludCBjcHVfaWQgU0VDKFwmIzM0Oy5wZXJjcHVcJiMzNDspO1xuIGludCBkYXRhIFNFQyhcJiMzNDsucGVyY3B1XCYjMzQ7KSA9IC0xO1xuIGludCBudW1zWzddIFNFQyhcJiMzNDsucGVyY3B1XCYjMzQ7KTtcbiBib29sIHNldCBTRUMoXCYjMzQ7LnBlcmNwdVwmIzM0OykgPSBmYWxzZTtcbkBAIC0zNCw3ICYjNDM7MzcsOCBAQCBpbnQgdXBkYXRlX3BlcmNwdV9kYXRhKHZvaWQgKmN0eClcbiBcdGRhdGEgPSAxO1xuIFx0cnVuJiM0MzsmIzQzOztcbiBcdHNldCA9IHRydWU7XG4tXHRjcHVfaWRbMF0gPSBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQoKTtcbiYjNDM7XHRjcHVfaWQgPSBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQoKTtcbiYjNDM7XHRhcnJfc3VtICYjNDM7PSBhcnJbMF07XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyZTIyODY3NmZkMmI4YmNlZTU1MDZiMGU0ODkxYWRkNTA4MDkzZjczCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMjYgMTU6MjE6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmMKaW5kZXggNTY3MWMzMTA4NWNkMS4uN2M1MzljYmNmM2ExZSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dsb2JhbF9kYXRhX2luaXQuYwpAQCAtNjgsMTIgJiM0Mzs2OCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mCiB7CiAJc3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19wZXJjcHUgKmRhdGEgPSBOVUxMOwogCWludCBpLCBlcnIsIGtleSA9IDAsIG51bV9vbmxpbmUsIHJ1biA9IDA7Ci0JX191NjQgYXJnc1syXSA9IHsweDEyMzRVTEwsIDB4NTY3OFVMTH07CiAJc2l6ZV90IGRhdGFfc3o7CiAJYm9vbCAqb25saW5lOwogCUxJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cywKLQkJICAgIC5jdHhfaW4gPSBhcmdzLAotCQkgICAgLmN0eF9zaXplX2luID0gc2l6ZW9mKGFyZ3MpLAogCQkgICAgLmZsYWdzID0gQlBGX0ZfVEVTVF9SVU5fT05fQ1BVLAogCSk7CiAKQEAgLTgxLDcgJiM0Mzs3OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mCiAJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O3BhcnNlX2NwdV9tYXNrX2ZpbGUmIzM0OykpCiAJCXJldHVybjsKIAotCWRhdGFfc3ogPSBtYXAgPyBicGZfbWFwX192YWx1ZV9zaXplKG1hcCkgOiBzaXplb2YoKmRhdGEpOwomIzQzOwlkYXRhX3N6ID0gc2l6ZW9mKCpkYXRhKTsKIAlkYXRhID0gY2FsbG9jKDEsIGRhdGFfc3opOwogCWlmICghQVNTRVJUX09LX1BUUihkYXRhLCAmIzM0O2NhbGxvYyBwZXJjcHUgZGF0YSYjMzQ7KSkKIAkJZ290byBvdXQ7CkBAIC0xMDksNyAmIzQzOzEwNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mCiAJCQlicmVhazsKIAogCQlBU1NFUlRfRVEoKnJ1bnAsICYjNDM7JiM0MztydW4sICYjMzQ7cnVuJiMzNDspOwotCQlBU1NFUlRfRVEoZGF0YS0mZ3Q7Y3B1X2lkWzBdLCBpLCAmIzM0O2NwdV9pZCYjMzQ7KTsKJiM0MzsJCUFTU0VSVF9FUShkYXRhLSZndDtjcHVfaWQsIGksICYjMzQ7Y3B1X2lkJiMzNDspOwogCQlBU1NFUlRfRVEoZGF0YS0mZ3Q7ZGF0YSwgMSwgJiMzNDtkYXRhJiMzNDspOwogCQlBU1NFUlRfVFJVRShkYXRhLSZndDtzZXQsICYjMzQ7c2V0JiMzNDspOwogCQlBU1NFUlRfRVEoZGF0YS0mZ3Q7bnVtc1s2XSwgMHhjMGRlLCAmIzM0O251bXNbNl0mIzM0Oyk7CkBAIC0xMjcsNyAmIzQzOzEyNCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2luaXQodm9pZCkKIHsKIAlzdHJ1Y3QgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX3BlcmNwdSBpbml0X3ZhbHVlID0ge307CiAJc3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19wZXJjcHUgKmluaXRfZGF0YTsKLQljb25zdCBfX3UzMiBkZXNpcmVkX3N6ID0gc3lzY29uZihfU0NfUEFHRV9TSVpFKTsKIAlzdHJ1Y3QgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEgKnNrZWwgPSBOVUxMOwogCXNpemVfdCBpbml0X2RhdGFfc3o7CiAJc3RydWN0IGJwZl9tYXAgKm1hcDsKQEAgLTE2Myw5ICYjNDM7MTU5LDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2luaXQodm9pZCkKIAlpZiAoIUFTU0VSVF9FUShicGZfbWFwX190eXBlKG1hcCksIEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVksICYjMzQ7YnBmX21hcF9fdHlwZSYjMzQ7KSkKIAkJZ290byBvdXQ7CiAKJiM0MzsJaW5pdF92YWx1ZS5zZXQgPSAxOwogCWluaXRfdmFsdWUuZGF0YSA9IDI7CiAJaW5pdF92YWx1ZS5udW1zWzZdID0gLTE7CiAJaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pID0gMjsKJiM0MzsJaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQgPSAxOwogCWluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSA9IC0xOwogCWVyciA9IGJwZl9tYXBfX3NldF9pbml0aWFsX3ZhbHVlKG1hcCwgJmFtcDtpbml0X3ZhbHVlLCBzaXplb2YoaW5pdF92YWx1ZSkpOwogCWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfbWFwX19zZXRfaW5pdGlhbF92YWx1ZSYjMzQ7KSkKQEAgLTE3NywzNSAmIzQzOzE3NSwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9pbml0KHZvaWQpCiAKIAlBU1NFUlRfRVEoaW5pdF9kYXRhLSZndDtkYXRhLCBpbml0X3ZhbHVlLmRhdGEsICYjMzQ7aW5pdF92YWx1ZSBkYXRhJiMzNDspOwogCUFTU0VSVF9FUShpbml0X2RhdGEtJmd0O3NldCwgaW5pdF92YWx1ZS5zZXQsICYjMzQ7aW5pdF92YWx1ZSBzZXQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShpbml0X2RhdGEtJmd0O251bXNbNl0sIGluaXRfdmFsdWUubnVtc1s2XSwgJiMzNDtpbml0X3ZhbHVlIG51bXNbNl0mIzM0Oyk7CiAJQVNTRVJUX0VRKGluaXRfZGF0YS0mZ3Q7c3RydWN0X2RhdGEuaSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pLCAmIzM0O2luaXRfdmFsdWUgc3RydWN0X2RhdGEuaSYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKGluaXRfZGF0YS0mZ3Q7c3RydWN0X2RhdGEuc2V0LCBpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLnNldCwKJiM0MzsJCSAgJiMzNDtpbml0X3ZhbHVlIHN0cnVjdF9kYXRhLnNldCYjMzQ7KTsKIAlBU1NFUlRfRVEoaW5pdF9kYXRhLSZndDtzdHJ1Y3RfZGF0YS5udW1zWzZdLCBpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLm51bXNbNl0sCiAJCSAgJiMzNDtpbml0X3ZhbHVlIHN0cnVjdF9kYXRhLm51bXNbNl0mIzM0Oyk7CiAJQVNTRVJUX0VRKGluaXRfZGF0YV9zeiwgc2l6ZW9mKGluaXRfdmFsdWUpLCAmIzM0O2luaXRfdmFsdWUgc2l6ZSYjMzQ7KTsKIAlBU1NFUlRfRVEoKHZvaWQgKikgaW5pdF9kYXRhLCAodm9pZCAqKSBza2VsLSZndDtwZXJjcHUsICYjMzQ7c2tlbC0mZ3Q7cGVyY3B1IGVxIGluaXRfZGF0YSYjMzQ7KTsKIAlBU1NFUlRfRVEoc2tlbC0mZ3Q7cGVyY3B1LSZndDtkYXRhLCBpbml0X3ZhbHVlLmRhdGEsICYjMzQ7c2tlbC0mZ3Q7cGVyY3B1LSZndDtkYXRhJiMzNDspOwogCUFTU0VSVF9FUShza2VsLSZndDtwZXJjcHUtJmd0O3NldCwgaW5pdF92YWx1ZS5zZXQsICYjMzQ7c2tlbC0mZ3Q7cGVyY3B1LSZndDtzZXQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShza2VsLSZndDtwZXJjcHUtJmd0O251bXNbNl0sIGluaXRfdmFsdWUubnVtc1s2XSwgJiMzNDtza2VsLSZndDtwZXJjcHUtJmd0O251bXNbNl0mIzM0Oyk7CiAJQVNTRVJUX0VRKHNrZWwtJmd0O3BlcmNwdS0mZ3Q7c3RydWN0X2RhdGEuaSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pLAogCQkgICYjMzQ7c2tlbC0mZ3Q7cGVyY3B1LSZndDtzdHJ1Y3RfZGF0YS5pJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7cGVyY3B1LSZndDtzdHJ1Y3RfZGF0YS5zZXQsIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuc2V0LAomIzQzOwkJICAmIzM0O3NrZWwtJmd0O3BlcmNwdS0mZ3Q7c3RydWN0X2RhdGEuc2V0JiMzNDspOwogCUFTU0VSVF9FUShza2VsLSZndDtwZXJjcHUtJmd0O3N0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSwKIAkJICAmIzM0O3NrZWwtJmd0O3BlcmNwdS0mZ3Q7c3RydWN0X2RhdGEubnVtc1s2XSYjMzQ7KTsKIAotCUFTU0VSVF9HVChkZXNpcmVkX3N6LCBzaXplb2YoaW5pdF92YWx1ZSksICYjMzQ7ZGVzaXJlZF9zeiYjMzQ7KTsKLQllcnIgPSBicGZfbWFwX19zZXRfdmFsdWVfc2l6ZShtYXAsIGRlc2lyZWRfc3opOwotCWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfbWFwX19zZXRfdmFsdWVfc2l6ZSYjMzQ7KSkKLQkJZ290byBvdXQ7Ci0JaWYgKCFBU1NFUlRfRVEoYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApLCBkZXNpcmVkX3N6LCAmIzM0O3BlcmNwdSB2YWx1ZSBzaXplJiMzNDspKQotCQlnb3RvIG91dDsKLQlpZiAoIUFTU0VSVF9ORVEoYnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWQobWFwKSwgMCwgJiMzNDtwZXJjcHUgQlRGIHZhbHVlIHR5cGUmIzM0OykpCi0JCWdvdG8gb3V0OwotCi0JaW5pdF9kYXRhID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsICZhbXA7aW5pdF9kYXRhX3N6KTsKLQlpZiAoIUFTU0VSVF9PS19QVFIoaW5pdF9kYXRhLCAmIzM0O3Jlc2l6ZWQgYnBmX21hcF9faW5pdGlhbF92YWx1ZSYjMzQ7KSkKLQkJZ290byBvdXQ7Ci0JaWYgKCFBU1NFUlRfRVEoaW5pdF9kYXRhX3N6LCBkZXNpcmVkX3N6LCAmIzM0O3Jlc2l6ZWQgaW5pdGlhbCB2YWx1ZSBzaXplJiMzNDspKQotCQlnb3RvIG91dDsKLQlpZiAoIUFTU0VSVF9FUShpbml0X2RhdGEtJmd0O2RhdGEsIGluaXRfdmFsdWUuZGF0YSwgJiMzNDtyZXNpemVkIGluaXRpYWwgdmFsdWUgZGF0YSYjMzQ7KSkKLQkJZ290byBvdXQ7Ci0KIAllcnIgPSB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZChza2VsKTsKIAlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQmIzM0OykpCiAJCWdvdG8gb3V0OwpAQCAtMjM2LDYgJiM0MzsyMjMsNjcgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbHNrZWwodm9pZCkKIAl0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbF9fZGVzdHJveShsc2tlbCk7CiB9CiAKJiM0MzsjZGVmaW5lIFBDUFVfTUlOX1VOSVRfU0laRSAoMzIgJmx0OyZsdDsgMTApCiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbWFwX3Jlc2l6ZSh2b2lkKQomIzQzO3sKJiM0MzsJY29uc3QgX191MzIgcGFnZV9zaXplID0gc3lzY29uZihfU0NfUEFHRV9TSVpFKTsKJiM0MzsJY29uc3QgX191MzIgcGNwdV9tYXhfdmFsdWVfc2l6ZSA9IEFMSUdOKFBDUFVfTUlOX1VOSVRfU0laRSwgcGFnZV9zaXplKTsKJiM0MzsJY29uc3QgX191MzIgZGVzaXJlZF9zeiA9IHBhZ2Vfc2l6ZSAqIDI7CiYjNDM7CXN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YSAqc2tlbDsKJiM0MzsJY29uc3QgaW50IGFycl92YWx1ZSA9IC0xOwomIzQzOwlzdHJ1Y3QgYnBmX21hcCAqbWFwOwomIzQzOwlpbnQgZXJyLCBwcm9nX2ZkOwomIzQzOwlzaXplX3QgZGF0YV9zejsKJiM0MzsKJiM0MzsJc2tlbCA9IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19vcGVuKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19vcGVuJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltYXAgPSBza2VsLSZndDttYXBzLnBlcmNwdV9hcnI7CiYjNDM7CXNrZWwtJmd0O3BlcmNwdV9hcnItJmd0O2FyclswXSA9IGFycl92YWx1ZTsKJiM0MzsJZXJyID0gYnBmX21hcF9fc2V0X3ZhbHVlX3NpemUobWFwLCBkZXNpcmVkX3N6KTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2JwZl9tYXBfX3NldF92YWx1ZV9zaXplJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CWlmICghQVNTRVJUX0VRKGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSwgZGVzaXJlZF9zeiwgJiMzNDticGZfbWFwX192YWx1ZV9zaXplJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CWlmICghQVNTRVJUX05FUShicGZfbWFwX19idGZfdmFsdWVfdHlwZV9pZChtYXApLCAwLCAmIzM0O2JwZl9tYXBfX2J0Zl92YWx1ZV90eXBlX2lkJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CXNrZWwtJmd0O3BlcmNwdV9hcnIgPSBicGZfbWFwX19pbml0aWFsX3ZhbHVlKG1hcCwgJmFtcDtkYXRhX3N6KTsKJiM0MzsJaWYgKCFBU1NFUlRfRVEoZGF0YV9zeiwgZGVzaXJlZF9zeiwgJiMzNDtkYXRhX3N6JiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLSZndDtwZXJjcHVfYXJyLCAmIzM0O3NrZWwtJmd0O3BlcmNwdV9hcnImIzM0OykpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJaWYgKCFBU1NFUlRfRVEoc2tlbC0mZ3Q7cGVyY3B1X2Fyci0mZ3Q7YXJyWzBdLCBhcnJfdmFsdWUsICYjMzQ7YXJyWzBdJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWVyciA9IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19sb2FkKHNrZWwpOwomIzQzOwlpZiAoYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApICZndDsgcGNwdV9tYXhfdmFsdWVfc2l6ZSkgewomIzQzOwkJaWYgKEFTU0VSVF9FUShlcnIsIC1FMkJJRywgJiMzNDt0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZCBFMkJJRyYjMzQ7KSkKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFdoZW4gdGhlIFBBR0VfU0laRSBpcyA2NEtpQiwgdGhlIG5ldyB2YWx1ZSBzaXplIHdpbGwKJiM0MzsJCQkgKiBiZSAxMjhLaUIuIENyZWF0aW5nIGEgcGVyY3B1X2FycmF5IG1hcCB3aXRoIHRoZSBuZXcKJiM0MzsJCQkgKiB2YWx1ZSBzaXplIHdpbGwgZmFpbCB3aXRoIC1FMkJJRyBkdWUgdG8gcGVyY3B1X2FycmF5CiYjNDM7CQkJICogbWFwIHZhbHVlIHNpemUgbGltaXQgNjRLaUIsIHdoaWNoIGlzIGNhbGN1bGF0ZWQgYnkKJiM0MzsJCQkgKiBQRk5fQUxJR04oMzJLaUIpLgomIzQzOwkJCSAqIExldCYjMzk7cyBza2lwIHRoZSB0ZXN0IGZvciBzdWNoIGNhc2UuCiYjNDM7CQkJICovCiYjNDM7CQkJdGVzdF9fc2tpcCgpOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19sb2FkJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CW1hcCA9IHNrZWwtJmd0O21hcHMucGVyY3B1OwomIzQzOwlwcm9nX2ZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLnVwZGF0ZV9wZXJjcHVfZGF0YSk7CiYjNDM7CXRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhtYXAsIGJwZl9tYXBfX2ZkKG1hcCksIHByb2dfZmQsICZhbXA7c2tlbC0mZ3Q7YnNzLSZndDtydW4pOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDthcnJfc3VtLCBhcnJfdmFsdWUgKiBza2VsLSZndDtic3MtJmd0O3J1biwgJiMzNDthcnJfc3VtJiMzNDspOwomIzQzOwomIzQzO291dDoKJiM0MzsJdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBjcmVhdGVfcmRvbmx5X3BlcmNwdV9hcnJheSh2b2lkKQogewogCUxJQkJQRl9PUFRTKGJwZl9tYXBfY3JlYXRlX29wdHMsIG1hcF9vcHRzLApAQCAtMzg4LDYgJiM0Mzs0MzYsOCBAQCB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhKHZvaWQpCiAJCXRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2luaXQoKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O2xza2VsJiMzNDspKQogCQl0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbCgpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O21hcF9yZXNpemUmIzM0OykpCiYjNDM7CQl0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9tYXBfcmVzaXplKCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtyZG9ubHlfZGlyZWN0X3JlYWQmIzM0OykpCiAJCXRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX3Jkb25seV9kaXJlY3RfcmVhZCgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7cmRvbmx5X2RpcmVjdF93cml0ZSYjMzQ7KSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmMKaW5kZXggNWRjMjFiM2I0Y2I1OS4uMjc2NWNkNDZlOWFmMCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmMKQEAgLTgsOSAmIzQzOzgsMTIgQEAgaW50IGxvb25nIFNFQygmIzM0Oy5wZXJjcHUubG9vb29vb29vb25nJiMzNDspOwogaW50IGRhdGEzIFNFQygmIzM0Oy5kYXRhLnBlcmNwdSYjMzQ7KTsKIGludCBkYXRhMiBTRUMoJiMzNDsucGVyY3B1LmRhdGEmIzM0Oyk7CiAKJiM0MzsvKiBVc2VkIGZvciB0ZXN0aW5nIGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKCkuICovCiYjNDM7aW50IGFyclsxXSBTRUMoJiMzNDsucGVyY3B1LmFyciYjMzQ7KTsKJiM0MztpbnQgYXJyX3N1bTsKJiM0MzsKIGludCBydW47Ci0vKiBjcHVfaWQgYXMgYXJyYXkgdG8gdmVyaWZ5IG1hcCB2YWx1ZSByZXNpemluZy4gKi8KLWludCBjcHVfaWRbMV0gU0VDKCYjMzQ7LnBlcmNwdSYjMzQ7KTsKJiM0MztpbnQgY3B1X2lkIFNFQygmIzM0Oy5wZXJjcHUmIzM0Oyk7CiBpbnQgZGF0YSBTRUMoJiMzNDsucGVyY3B1JiMzNDspID0gLTE7CiBpbnQgbnVtc1s3XSBTRUMoJiMzNDsucGVyY3B1JiMzNDspOwogYm9vbCBzZXQgU0VDKCYjMzQ7LnBlcmNwdSYjMzQ7KSA9IGZhbHNlOwpAQCAtMzQsNyAmIzQzOzM3LDggQEAgaW50IHVwZGF0ZV9wZXJjcHVfZGF0YSh2b2lkICpjdHgpCiAJZGF0YSA9IDE7CiAJcnVuJiM0MzsmIzQzOzsKIAlzZXQgPSB0cnVlOwotCWNwdV9pZFswXSA9IGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZCgpOwomIzQzOwljcHVfaWQgPSBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQoKTsKJiM0MzsJYXJyX3N1bSAmIzQzOz0gYXJyWzBdOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNTAKCQkJCQkJCW91dHB1dDogNjUKCQkJCQkJCXRob3VnaHRzOiAzMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPUZhbHNlOiBCUEYgU2VsZnRlc3QgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgc3BpZGV5LXNlbnNlIGlzIHRlbGxpbmcgbWUgdGhpcyBpc24mIzM5O3Qga2VybmVsLWNyaXRpY2FsLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgQlBGIHNlbGZ0ZXN0cywgc3BlY2lmaWNhbGx5IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNgLiBObyBjb3JlIGxvZ2ljLCBubyBkcml2ZXJzLCBubyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc3R1ZmYuIEp1c3QgdGVzdHMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBxdWlja2x5IGRvdWJsZS1jaGVja2luZyB0aGUgZGlmZi4uLiBZZXAsIGp1c3QgdGhvc2UgdHdvIGZpbGVzLiBUaGlzIGlzIHRleHRib29rIHNlbGZ0ZXN0IG1vZGlmaWNhdGlvbi4gWW91IGtub3csIG1ha2luZyBzdXJlIHRoZSB0ZXN0cyBhcmUgdXAtdG8tZGF0ZSBhbmQgcm9idXN0LgoKR2l2ZW4gdGhhdCBpdCYjMzk7cyBqdXN0IHNlbGYtdGVzdHMsIHdoaWNoIGFyZSBkZXNpZ25lZCB0byAqdmVyaWZ5KiB0aGUgQlBGIGluZnJhc3RydWN0dXJlLCBidXQgZG9uJiMzOTt0IGFjdHVhbGx5ICpjaGFuZ2UqIGhvdyBpdCBiZWhhdmVzIGluIHByb2R1Y3Rpb24sIHRoaXMgaXNuJiMzOTt0IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZ1enouIEZ1enppbmcgd291bGQgYmUgYSBjb21wbGV0ZSB3YXN0ZSBvZiByZXNvdXJjZXMuIFdlJiMzOTtyZSBub3QgZ2V0dGluZyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGtlcm5lbCBjb2RlLgoKTGV0IG1lIGNvbmZpcm0gb25lIGxhc3QgdGltZS4uLiBZdXAsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNgLiBKdXN0IHNlbGZ0ZXN0cy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogKipXb3J0aEZ1enppbmc9ZmFsc2UuKiogVGhpcyBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBzZWxmdGVzdHMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmlzayBvciBjaGFuZ2UgaW4gdGhlIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUuIEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIHN1Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyMTo0Ni43NDA5MjU1NzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjc5NDkwOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6MjE6NDYuNzQwOTM1NzkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDkzNjgzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyZTIyODY3NmZkMmI4YmNlZTU1MDZiMGU0ODkxYWRkNTA4MDkzZjczXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDI2IDE1OjIxOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dsb2JhbF9kYXRhX2luaXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dsb2JhbF9kYXRhX2luaXQuY1xcbmluZGV4IDU2NzFjMzEwODVjZDEuLjdjNTM5Y2JjZjNhMWUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jXFxuQEAgLTY4LDEyICs2OCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mXFxuIHtcXG4gXFx0c3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19wZXJjcHUgKmRhdGEgPSBOVUxMO1xcbiBcXHRpbnQgaSwgZXJyLCBrZXkgPSAwLCBudW1fb25saW5lLCBydW4gPSAwO1xcbi1cXHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcXG4gXFx0c2l6ZV90IGRhdGFfc3o7XFxuIFxcdGJvb2wgKm9ubGluZTtcXG4gXFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxcbi1cXHRcXHQgICAgLmN0eF9pbiA9IGFyZ3MsXFxuLVxcdFxcdCAgICAuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXFxuIFxcdFxcdCAgICAuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXFxuIFxcdCk7XFxuIFxcbkBAIC04MSw3ICs3OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mXFxuIFxcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInBhcnNlX2NwdV9tYXNrX2ZpbGVcXFwiKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0ZGF0YV9zeiA9IG1hcCA/IGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSA6IHNpemVvZigqZGF0YSk7XFxuK1xcdGRhdGFfc3ogPSBzaXplb2YoKmRhdGEpO1xcbiBcXHRkYXRhID0gY2FsbG9jKDEsIGRhdGFfc3opO1xcbiBcXHRpZiAoIUFTU0VSVF9PS19QVFIoZGF0YSwgXFxcImNhbGxvYyBwZXJjcHUgZGF0YVxcXCIpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtMTA5LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0XFx0QVNTRVJUX0VRKCpydW5wLCArK3J1biwgXFxcInJ1blxcXCIpO1xcbi1cXHRcXHRBU1NFUlRfRVEoZGF0YS1cXHUwMDNlY3B1X2lkWzBdLCBpLCBcXFwiY3B1X2lkXFxcIik7XFxuK1xcdFxcdEFTU0VSVF9FUShkYXRhLVxcdTAwM2VjcHVfaWQsIGksIFxcXCJjcHVfaWRcXFwiKTtcXG4gXFx0XFx0QVNTRVJUX0VRKGRhdGEtXFx1MDAzZWRhdGEsIDEsIFxcXCJkYXRhXFxcIik7XFxuIFxcdFxcdEFTU0VSVF9UUlVFKGRhdGEtXFx1MDAzZXNldCwgXFxcInNldFxcXCIpO1xcbiBcXHRcXHRBU1NFUlRfRVEoZGF0YS1cXHUwMDNlbnVtc1s2XSwgMHhjMGRlLCBcXFwibnVtc1s2XVxcXCIpO1xcbkBAIC0xMjcsNyArMTI0LDYgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCh2b2lkKVxcbiB7XFxuIFxcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fcGVyY3B1IGluaXRfdmFsdWUgPSB7fTtcXG4gXFx0c3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19wZXJjcHUgKmluaXRfZGF0YTtcXG4tXFx0Y29uc3QgX191MzIgZGVzaXJlZF9zeiA9IHN5c2NvbmYoX1NDX1BBR0VfU0laRSk7XFxuIFxcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YSAqc2tlbCA9IE5VTEw7XFxuIFxcdHNpemVfdCBpbml0X2RhdGFfc3o7XFxuIFxcdHN0cnVjdCBicGZfbWFwICptYXA7XFxuQEAgLTE2Myw5ICsxNTksMTEgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCh2b2lkKVxcbiBcXHRpZiAoIUFTU0VSVF9FUShicGZfbWFwX190eXBlKG1hcCksIEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVksIFxcXCJicGZfbWFwX190eXBlXFxcIikpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4rXFx0aW5pdF92YWx1ZS5zZXQgPSAxO1xcbiBcXHRpbml0X3ZhbHVlLmRhdGEgPSAyO1xcbiBcXHRpbml0X3ZhbHVlLm51bXNbNl0gPSAtMTtcXG4gXFx0aW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pID0gMjtcXG4rXFx0aW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQgPSAxO1xcbiBcXHRpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLm51bXNbNl0gPSAtMTtcXG4gXFx0ZXJyID0gYnBmX21hcF9fc2V0X2luaXRpYWxfdmFsdWUobWFwLCBcXHUwMDI2aW5pdF92YWx1ZSwgc2l6ZW9mKGluaXRfdmFsdWUpKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiYnBmX21hcF9fc2V0X2luaXRpYWxfdmFsdWVcXFwiKSlcXG5AQCAtMTc3LDM1ICsxNzUsMjQgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCh2b2lkKVxcbiBcXG4gXFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cXHUwMDNlZGF0YSwgaW5pdF92YWx1ZS5kYXRhLCBcXFwiaW5pdF92YWx1ZSBkYXRhXFxcIik7XFxuIFxcdEFTU0VSVF9FUShpbml0X2RhdGEtXFx1MDAzZXNldCwgaW5pdF92YWx1ZS5zZXQsIFxcXCJpbml0X3ZhbHVlIHNldFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoaW5pdF9kYXRhLVxcdTAwM2VudW1zWzZdLCBpbml0X3ZhbHVlLm51bXNbNl0sIFxcXCJpbml0X3ZhbHVlIG51bXNbNl1cXFwiKTtcXG4gXFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cXHUwMDNlc3RydWN0X2RhdGEuaSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pLCBcXFwiaW5pdF92YWx1ZSBzdHJ1Y3RfZGF0YS5pXFxcIik7XFxuK1xcdEFTU0VSVF9FUShpbml0X2RhdGEtXFx1MDAzZXN0cnVjdF9kYXRhLnNldCwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQsXFxuK1xcdFxcdCAgXFxcImluaXRfdmFsdWUgc3RydWN0X2RhdGEuc2V0XFxcIik7XFxuIFxcdEFTU0VSVF9FUShpbml0X2RhdGEtXFx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSxcXG4gXFx0XFx0ICBcXFwiaW5pdF92YWx1ZSBzdHJ1Y3RfZGF0YS5udW1zWzZdXFxcIik7XFxuIFxcdEFTU0VSVF9FUShpbml0X2RhdGFfc3osIHNpemVvZihpbml0X3ZhbHVlKSwgXFxcImluaXRfdmFsdWUgc2l6ZVxcXCIpO1xcbiBcXHRBU1NFUlRfRVEoKHZvaWQgKikgaW5pdF9kYXRhLCAodm9pZCAqKSBza2VsLVxcdTAwM2VwZXJjcHUsIFxcXCJza2VsLVxcdTAwM2VwZXJjcHUgZXEgaW5pdF9kYXRhXFxcIik7XFxuIFxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2VwZXJjcHUtXFx1MDAzZWRhdGEsIGluaXRfdmFsdWUuZGF0YSwgXFxcInNrZWwtXFx1MDAzZXBlcmNwdS1cXHUwMDNlZGF0YVxcXCIpO1xcbiBcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlcGVyY3B1LVxcdTAwM2VzZXQsIGluaXRfdmFsdWUuc2V0LCBcXFwic2tlbC1cXHUwMDNlcGVyY3B1LVxcdTAwM2VzZXRcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZXBlcmNwdS1cXHUwMDNlbnVtc1s2XSwgaW5pdF92YWx1ZS5udW1zWzZdLCBcXFwic2tlbC1cXHUwMDNlcGVyY3B1LVxcdTAwM2VudW1zWzZdXFxcIik7XFxuIFxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2VwZXJjcHUtXFx1MDAzZXN0cnVjdF9kYXRhLmksIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuaSxcXG4gXFx0XFx0ICBcXFwic2tlbC1cXHUwMDNlcGVyY3B1LVxcdTAwM2VzdHJ1Y3RfZGF0YS5pXFxcIik7XFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2VwZXJjcHUtXFx1MDAzZXN0cnVjdF9kYXRhLnNldCwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQsXFxuK1xcdFxcdCAgXFxcInNrZWwtXFx1MDAzZXBlcmNwdS1cXHUwMDNlc3RydWN0X2RhdGEuc2V0XFxcIik7XFxuIFxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2VwZXJjcHUtXFx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSxcXG4gXFx0XFx0ICBcXFwic2tlbC1cXHUwMDNlcGVyY3B1LVxcdTAwM2VzdHJ1Y3RfZGF0YS5udW1zWzZdXFxcIik7XFxuIFxcbi1cXHRBU1NFUlRfR1QoZGVzaXJlZF9zeiwgc2l6ZW9mKGluaXRfdmFsdWUpLCBcXFwiZGVzaXJlZF9zelxcXCIpO1xcbi1cXHRlcnIgPSBicGZfbWFwX19zZXRfdmFsdWVfc2l6ZShtYXAsIGRlc2lyZWRfc3opO1xcbi1cXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJicGZfbWFwX19zZXRfdmFsdWVfc2l6ZVxcXCIpKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0aWYgKCFBU1NFUlRfRVEoYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApLCBkZXNpcmVkX3N6LCBcXFwicGVyY3B1IHZhbHVlIHNpemVcXFwiKSlcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcdGlmICghQVNTRVJUX05FUShicGZfbWFwX19idGZfdmFsdWVfdHlwZV9pZChtYXApLCAwLCBcXFwicGVyY3B1IEJURiB2YWx1ZSB0eXBlXFxcIikpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbi1cXG4tXFx0aW5pdF9kYXRhID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIFxcdTAwMjZpbml0X2RhdGFfc3opO1xcbi1cXHRpZiAoIUFTU0VSVF9PS19QVFIoaW5pdF9kYXRhLCBcXFwicmVzaXplZCBicGZfbWFwX19pbml0aWFsX3ZhbHVlXFxcIikpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbi1cXHRpZiAoIUFTU0VSVF9FUShpbml0X2RhdGFfc3osIGRlc2lyZWRfc3osIFxcXCJyZXNpemVkIGluaXRpYWwgdmFsdWUgc2l6ZVxcXCIpKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0aWYgKCFBU1NFUlRfRVEoaW5pdF9kYXRhLVxcdTAwM2VkYXRhLCBpbml0X3ZhbHVlLmRhdGEsIFxcXCJyZXNpemVkIGluaXRpYWwgdmFsdWUgZGF0YVxcXCIpKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFxuIFxcdGVyciA9IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19sb2FkKHNrZWwpO1xcbiBcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJ0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZFxcXCIpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtMjM2LDYgKzIyMyw2NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbCh2b2lkKVxcbiBcXHR0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbF9fZGVzdHJveShsc2tlbCk7XFxuIH1cXG4gXFxuKyNkZWZpbmUgUENQVV9NSU5fVU5JVF9TSVpFICgzMiBcXHUwMDNjXFx1MDAzYyAxMClcXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX21hcF9yZXNpemUodm9pZClcXG4re1xcbitcXHRjb25zdCBfX3UzMiBwYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFX1NJWkUpO1xcbitcXHRjb25zdCBfX3UzMiBwY3B1X21heF92YWx1ZV9zaXplID0gQUxJR04oUENQVV9NSU5fVU5JVF9TSVpFLCBwYWdlX3NpemUpO1xcbitcXHRjb25zdCBfX3UzMiBkZXNpcmVkX3N6ID0gcGFnZV9zaXplICogMjtcXG4rXFx0c3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhICpza2VsO1xcbitcXHRjb25zdCBpbnQgYXJyX3ZhbHVlID0gLTE7XFxuK1xcdHN0cnVjdCBicGZfbWFwICptYXA7XFxuK1xcdGludCBlcnIsIHByb2dfZmQ7XFxuK1xcdHNpemVfdCBkYXRhX3N6O1xcbitcXG4rXFx0c2tlbCA9IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19vcGVuKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwidGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX29wZW5cXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bWFwID0gc2tlbC1cXHUwMDNlbWFwcy5wZXJjcHVfYXJyO1xcbitcXHRza2VsLVxcdTAwM2VwZXJjcHVfYXJyLVxcdTAwM2VhcnJbMF0gPSBhcnJfdmFsdWU7XFxuK1xcdGVyciA9IGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKG1hcCwgZGVzaXJlZF9zeik7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImJwZl9tYXBfX3NldF92YWx1ZV9zaXplXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHRpZiAoIUFTU0VSVF9FUShicGZfbWFwX192YWx1ZV9zaXplKG1hcCksIGRlc2lyZWRfc3osIFxcXCJicGZfbWFwX192YWx1ZV9zaXplXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHRpZiAoIUFTU0VSVF9ORVEoYnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWQobWFwKSwgMCwgXFxcImJwZl9tYXBfX2J0Zl92YWx1ZV90eXBlX2lkXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0c2tlbC1cXHUwMDNlcGVyY3B1X2FyciA9IGJwZl9tYXBfX2luaXRpYWxfdmFsdWUobWFwLCBcXHUwMDI2ZGF0YV9zeik7XFxuK1xcdGlmICghQVNTRVJUX0VRKGRhdGFfc3osIGRlc2lyZWRfc3osIFxcXCJkYXRhX3N6XFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cXHUwMDNlcGVyY3B1X2FyciwgXFxcInNrZWwtXFx1MDAzZXBlcmNwdV9hcnJcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdGlmICghQVNTRVJUX0VRKHNrZWwtXFx1MDAzZXBlcmNwdV9hcnItXFx1MDAzZWFyclswXSwgYXJyX3ZhbHVlLCBcXFwiYXJyWzBdXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0ZXJyID0gdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQoc2tlbCk7XFxuK1xcdGlmIChicGZfbWFwX192YWx1ZV9zaXplKG1hcCkgXFx1MDAzZSBwY3B1X21heF92YWx1ZV9zaXplKSB7XFxuK1xcdFxcdGlmIChBU1NFUlRfRVEoZXJyLCAtRTJCSUcsIFxcXCJ0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZCBFMkJJR1xcXCIpKVxcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBXaGVuIHRoZSBQQUdFX1NJWkUgaXMgNjRLaUIsIHRoZSBuZXcgdmFsdWUgc2l6ZSB3aWxsXFxuK1xcdFxcdFxcdCAqIGJlIDEyOEtpQi4gQ3JlYXRpbmcgYSBwZXJjcHVfYXJyYXkgbWFwIHdpdGggdGhlIG5ld1xcbitcXHRcXHRcXHQgKiB2YWx1ZSBzaXplIHdpbGwgZmFpbCB3aXRoIC1FMkJJRyBkdWUgdG8gcGVyY3B1X2FycmF5XFxuK1xcdFxcdFxcdCAqIG1hcCB2YWx1ZSBzaXplIGxpbWl0IDY0S2lCLCB3aGljaCBpcyBjYWxjdWxhdGVkIGJ5XFxuK1xcdFxcdFxcdCAqIFBGTl9BTElHTigzMktpQikuXFxuK1xcdFxcdFxcdCAqIExldCdzIHNraXAgdGhlIHRlc3QgZm9yIHN1Y2ggY2FzZS5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdHRlc3RfX3NraXAoKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwidGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWRcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRtYXAgPSBza2VsLVxcdTAwM2VtYXBzLnBlcmNwdTtcXG4rXFx0cHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy51cGRhdGVfcGVyY3B1X2RhdGEpO1xcbitcXHR0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMobWFwLCBicGZfbWFwX19mZChtYXApLCBwcm9nX2ZkLCBcXHUwMDI2c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VydW4pO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VhcnJfc3VtLCBhcnJfdmFsdWUgKiBza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXJ1biwgXFxcImFycl9zdW1cXFwiKTtcXG4rXFxuK291dDpcXG4rXFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgY3JlYXRlX3Jkb25seV9wZXJjcHVfYXJyYXkodm9pZClcXG4ge1xcbiBcXHRMSUJCUEZfT1BUUyhicGZfbWFwX2NyZWF0ZV9vcHRzLCBtYXBfb3B0cyxcXG5AQCAtMzg4LDYgKzQzNiw4IEBAIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEodm9pZClcXG4gXFx0XFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwibHNrZWxcXFwiKSlcXG4gXFx0XFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbHNrZWwoKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcIm1hcF9yZXNpemVcXFwiKSlcXG4rXFx0XFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbWFwX3Jlc2l6ZSgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmRvbmx5X2RpcmVjdF9yZWFkXFxcIikpXFxuIFxcdFxcdHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX3Jkb25seV9kaXJlY3RfcmVhZCgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmRvbmx5X2RpcmVjdF93cml0ZVxcXCIpKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXFxuaW5kZXggNWRjMjFiM2I0Y2I1OS4uMjc2NWNkNDZlOWFmMCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXFxuQEAgLTgsOSArOCwxMiBAQCBpbnQgbG9vbmcgU0VDKFxcXCIucGVyY3B1Lmxvb29vb29vb29uZ1xcXCIpO1xcbiBpbnQgZGF0YTMgU0VDKFxcXCIuZGF0YS5wZXJjcHVcXFwiKTtcXG4gaW50IGRhdGEyIFNFQyhcXFwiLnBlcmNwdS5kYXRhXFxcIik7XFxuIFxcbisvKiBVc2VkIGZvciB0ZXN0aW5nIGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKCkuICovXFxuK2ludCBhcnJbMV0gU0VDKFxcXCIucGVyY3B1LmFyclxcXCIpO1xcbitpbnQgYXJyX3N1bTtcXG4rXFxuIGludCBydW47XFxuLS8qIGNwdV9pZCBhcyBhcnJheSB0byB2ZXJpZnkgbWFwIHZhbHVlIHJlc2l6aW5nLiAqL1xcbi1pbnQgY3B1X2lkWzFdIFNFQyhcXFwiLnBlcmNwdVxcXCIpO1xcbitpbnQgY3B1X2lkIFNFQyhcXFwiLnBlcmNwdVxcXCIpO1xcbiBpbnQgZGF0YSBTRUMoXFxcIi5wZXJjcHVcXFwiKSA9IC0xO1xcbiBpbnQgbnVtc1s3XSBTRUMoXFxcIi5wZXJjcHVcXFwiKTtcXG4gYm9vbCBzZXQgU0VDKFxcXCIucGVyY3B1XFxcIikgPSBmYWxzZTtcXG5AQCAtMzQsNyArMzcsOCBAQCBpbnQgdXBkYXRlX3BlcmNwdV9kYXRhKHZvaWQgKmN0eClcXG4gXFx0ZGF0YSA9IDE7XFxuIFxcdHJ1bisrO1xcbiBcXHRzZXQgPSB0cnVlO1xcbi1cXHRjcHVfaWRbMF0gPSBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQoKTtcXG4rXFx0Y3B1X2lkID0gYnBmX2dldF9zbXBfcHJvY2Vzc29yX2lkKCk7XFxuK1xcdGFycl9zdW0gKz0gYXJyWzBdO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6MjE6NDcuMzkxMDU0OTQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzYyOTM0NDQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmUyMjg2NzZmZDJiOGJjZWU1NTA2YjBlNDg5MWFkZDUwODA5M2Y3M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDE1OjIxOjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jXG5pbmRleCA1NjcxYzMxMDg1Y2QxLi43YzUzOWNiY2YzYTFlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNcbkBAIC02OCwxMiArNjgsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMoc3RydWN0IGJwZl9tYXAgKm1hcCwgaW50IG1hcF9mZCwgaW50IHByb2dfZlxuIHtcbiBcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fcGVyY3B1ICpkYXRhID0gTlVMTDtcbiBcdGludCBpLCBlcnIsIGtleSA9IDAsIG51bV9vbmxpbmUsIHJ1biA9IDA7XG4tXHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcbiBcdHNpemVfdCBkYXRhX3N6O1xuIFx0Ym9vbCAqb25saW5lO1xuIFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuLVx0XHQgICAgLmN0eF9pbiA9IGFyZ3MsXG4tXHRcdCAgICAuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXG4gXHRcdCAgICAuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG4gXHQpO1xuIFxuQEAgLTgxLDcgKzc4LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9wZXJjcHVfZGF0YV9vbl9jcHVzKHN0cnVjdCBicGZfbWFwICptYXAsIGludCBtYXBfZmQsIGludCBwcm9nX2ZcbiBcdGlmICghQVNTRVJUX09LKGVyciwgXCJwYXJzZV9jcHVfbWFza19maWxlXCIpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRkYXRhX3N6ID0gbWFwID8gYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApIDogc2l6ZW9mKCpkYXRhKTtcbitcdGRhdGFfc3ogPSBzaXplb2YoKmRhdGEpO1xuIFx0ZGF0YSA9IGNhbGxvYygxLCBkYXRhX3N6KTtcbiBcdGlmICghQVNTRVJUX09LX1BUUihkYXRhLCBcImNhbGxvYyBwZXJjcHUgZGF0YVwiKSlcbiBcdFx0Z290byBvdXQ7XG5AQCAtMTA5LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdEFTU0VSVF9FUSgqcnVucCwgKytydW4sIFwicnVuXCIpO1xuLVx0XHRBU1NFUlRfRVEoZGF0YS1cdTAwM2VjcHVfaWRbMF0sIGksIFwiY3B1X2lkXCIpO1xuK1x0XHRBU1NFUlRfRVEoZGF0YS1cdTAwM2VjcHVfaWQsIGksIFwiY3B1X2lkXCIpO1xuIFx0XHRBU1NFUlRfRVEoZGF0YS1cdTAwM2VkYXRhLCAxLCBcImRhdGFcIik7XG4gXHRcdEFTU0VSVF9UUlVFKGRhdGEtXHUwMDNlc2V0LCBcInNldFwiKTtcbiBcdFx0QVNTRVJUX0VRKGRhdGEtXHUwMDNlbnVtc1s2XSwgMHhjMGRlLCBcIm51bXNbNl1cIik7XG5AQCAtMTI3LDcgKzEyNCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2luaXQodm9pZClcbiB7XG4gXHRzdHJ1Y3QgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX3BlcmNwdSBpbml0X3ZhbHVlID0ge307XG4gXHRzdHJ1Y3QgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX3BlcmNwdSAqaW5pdF9kYXRhO1xuLVx0Y29uc3QgX191MzIgZGVzaXJlZF9zeiA9IHN5c2NvbmYoX1NDX1BBR0VfU0laRSk7XG4gXHRzdHJ1Y3QgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEgKnNrZWwgPSBOVUxMO1xuIFx0c2l6ZV90IGluaXRfZGF0YV9zejtcbiBcdHN0cnVjdCBicGZfbWFwICptYXA7XG5AQCAtMTYzLDkgKzE1OSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9pbml0KHZvaWQpXG4gXHRpZiAoIUFTU0VSVF9FUShicGZfbWFwX190eXBlKG1hcCksIEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVksIFwiYnBmX21hcF9fdHlwZVwiKSlcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHRpbml0X3ZhbHVlLnNldCA9IDE7XG4gXHRpbml0X3ZhbHVlLmRhdGEgPSAyO1xuIFx0aW5pdF92YWx1ZS5udW1zWzZdID0gLTE7XG4gXHRpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLmkgPSAyO1xuK1x0aW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQgPSAxO1xuIFx0aW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5udW1zWzZdID0gLTE7XG4gXHRlcnIgPSBicGZfbWFwX19zZXRfaW5pdGlhbF92YWx1ZShtYXAsIFx1MDAyNmluaXRfdmFsdWUsIHNpemVvZihpbml0X3ZhbHVlKSk7XG4gXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiYnBmX21hcF9fc2V0X2luaXRpYWxfdmFsdWVcIikpXG5AQCAtMTc3LDM1ICsxNzUsMjQgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCh2b2lkKVxuIFxuIFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VkYXRhLCBpbml0X3ZhbHVlLmRhdGEsIFwiaW5pdF92YWx1ZSBkYXRhXCIpO1xuIFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VzZXQsIGluaXRfdmFsdWUuc2V0LCBcImluaXRfdmFsdWUgc2V0XCIpO1xuK1x0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VudW1zWzZdLCBpbml0X3ZhbHVlLm51bXNbNl0sIFwiaW5pdF92YWx1ZSBudW1zWzZdXCIpO1xuIFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VzdHJ1Y3RfZGF0YS5pLCBpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLmksIFwiaW5pdF92YWx1ZSBzdHJ1Y3RfZGF0YS5pXCIpO1xuK1x0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VzdHJ1Y3RfZGF0YS5zZXQsIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuc2V0LFxuK1x0XHQgIFwiaW5pdF92YWx1ZSBzdHJ1Y3RfZGF0YS5zZXRcIik7XG4gXHRBU1NFUlRfRVEoaW5pdF9kYXRhLVx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSxcbiBcdFx0ICBcImluaXRfdmFsdWUgc3RydWN0X2RhdGEubnVtc1s2XVwiKTtcbiBcdEFTU0VSVF9FUShpbml0X2RhdGFfc3osIHNpemVvZihpbml0X3ZhbHVlKSwgXCJpbml0X3ZhbHVlIHNpemVcIik7XG4gXHRBU1NFUlRfRVEoKHZvaWQgKikgaW5pdF9kYXRhLCAodm9pZCAqKSBza2VsLVx1MDAzZXBlcmNwdSwgXCJza2VsLVx1MDAzZXBlcmNwdSBlcSBpbml0X2RhdGFcIik7XG4gXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlZGF0YSwgaW5pdF92YWx1ZS5kYXRhLCBcInNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZWRhdGFcIik7XG4gXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlc2V0LCBpbml0X3ZhbHVlLnNldCwgXCJza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VzZXRcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlbnVtc1s2XSwgaW5pdF92YWx1ZS5udW1zWzZdLCBcInNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZW51bXNbNl1cIik7XG4gXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlc3RydWN0X2RhdGEuaSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pLFxuIFx0XHQgIFwic2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlc3RydWN0X2RhdGEuaVwiKTtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VzdHJ1Y3RfZGF0YS5zZXQsIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuc2V0LFxuK1x0XHQgIFwic2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlc3RydWN0X2RhdGEuc2V0XCIpO1xuIFx0QVNTRVJUX0VRKHNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSxcbiBcdFx0ICBcInNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl1cIik7XG4gXG4tXHRBU1NFUlRfR1QoZGVzaXJlZF9zeiwgc2l6ZW9mKGluaXRfdmFsdWUpLCBcImRlc2lyZWRfc3pcIik7XG4tXHRlcnIgPSBicGZfbWFwX19zZXRfdmFsdWVfc2l6ZShtYXAsIGRlc2lyZWRfc3opO1xuLVx0aWYgKCFBU1NFUlRfT0soZXJyLCBcImJwZl9tYXBfX3NldF92YWx1ZV9zaXplXCIpKVxuLVx0XHRnb3RvIG91dDtcbi1cdGlmICghQVNTRVJUX0VRKGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSwgZGVzaXJlZF9zeiwgXCJwZXJjcHUgdmFsdWUgc2l6ZVwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXHRpZiAoIUFTU0VSVF9ORVEoYnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWQobWFwKSwgMCwgXCJwZXJjcHUgQlRGIHZhbHVlIHR5cGVcIikpXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0aW5pdF9kYXRhID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIFx1MDAyNmluaXRfZGF0YV9zeik7XG4tXHRpZiAoIUFTU0VSVF9PS19QVFIoaW5pdF9kYXRhLCBcInJlc2l6ZWQgYnBmX21hcF9faW5pdGlhbF92YWx1ZVwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXHRpZiAoIUFTU0VSVF9FUShpbml0X2RhdGFfc3osIGRlc2lyZWRfc3osIFwicmVzaXplZCBpbml0aWFsIHZhbHVlIHNpemVcIikpXG4tXHRcdGdvdG8gb3V0O1xuLVx0aWYgKCFBU1NFUlRfRVEoaW5pdF9kYXRhLVx1MDAzZWRhdGEsIGluaXRfdmFsdWUuZGF0YSwgXCJyZXNpemVkIGluaXRpYWwgdmFsdWUgZGF0YVwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXG4gXHRlcnIgPSB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZChza2VsKTtcbiBcdGlmICghQVNTRVJUX09LKGVyciwgXCJ0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZFwiKSlcbiBcdFx0Z290byBvdXQ7XG5AQCAtMjM2LDYgKzIyMyw2NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbCh2b2lkKVxuIFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbHNrZWxfX2Rlc3Ryb3kobHNrZWwpO1xuIH1cbiBcbisjZGVmaW5lIFBDUFVfTUlOX1VOSVRfU0laRSAoMzIgXHUwMDNjXHUwMDNjIDEwKVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX21hcF9yZXNpemUodm9pZClcbit7XG4rXHRjb25zdCBfX3UzMiBwYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFX1NJWkUpO1xuK1x0Y29uc3QgX191MzIgcGNwdV9tYXhfdmFsdWVfc2l6ZSA9IEFMSUdOKFBDUFVfTUlOX1VOSVRfU0laRSwgcGFnZV9zaXplKTtcbitcdGNvbnN0IF9fdTMyIGRlc2lyZWRfc3ogPSBwYWdlX3NpemUgKiAyO1xuK1x0c3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhICpza2VsO1xuK1x0Y29uc3QgaW50IGFycl92YWx1ZSA9IC0xO1xuK1x0c3RydWN0IGJwZl9tYXAgKm1hcDtcbitcdGludCBlcnIsIHByb2dfZmQ7XG4rXHRzaXplX3QgZGF0YV9zejtcbitcbitcdHNrZWwgPSB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fb3BlbigpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwidGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX29wZW5cIikpXG4rXHRcdHJldHVybjtcbitcbitcdG1hcCA9IHNrZWwtXHUwMDNlbWFwcy5wZXJjcHVfYXJyO1xuK1x0c2tlbC1cdTAwM2VwZXJjcHVfYXJyLVx1MDAzZWFyclswXSA9IGFycl92YWx1ZTtcbitcdGVyciA9IGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKG1hcCwgZGVzaXJlZF9zeik7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiYnBmX21hcF9fc2V0X3ZhbHVlX3NpemVcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1x0aWYgKCFBU1NFUlRfRVEoYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApLCBkZXNpcmVkX3N6LCBcImJwZl9tYXBfX3ZhbHVlX3NpemVcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1x0aWYgKCFBU1NFUlRfTkVRKGJwZl9tYXBfX2J0Zl92YWx1ZV90eXBlX2lkKG1hcCksIDAsIFwiYnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWRcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0c2tlbC1cdTAwM2VwZXJjcHVfYXJyID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIFx1MDAyNmRhdGFfc3opO1xuK1x0aWYgKCFBU1NFUlRfRVEoZGF0YV9zeiwgZGVzaXJlZF9zeiwgXCJkYXRhX3N6XCIpKVxuK1x0XHRnb3RvIG91dDtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVx1MDAzZXBlcmNwdV9hcnIsIFwic2tlbC1cdTAwM2VwZXJjcHVfYXJyXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcdGlmICghQVNTRVJUX0VRKHNrZWwtXHUwMDNlcGVyY3B1X2Fyci1cdTAwM2VhcnJbMF0sIGFycl92YWx1ZSwgXCJhcnJbMF1cIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0ZXJyID0gdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQoc2tlbCk7XG4rXHRpZiAoYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApIFx1MDAzZSBwY3B1X21heF92YWx1ZV9zaXplKSB7XG4rXHRcdGlmIChBU1NFUlRfRVEoZXJyLCAtRTJCSUcsIFwidGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQgRTJCSUdcIikpXG4rXHRcdFx0LypcbitcdFx0XHQgKiBXaGVuIHRoZSBQQUdFX1NJWkUgaXMgNjRLaUIsIHRoZSBuZXcgdmFsdWUgc2l6ZSB3aWxsXG4rXHRcdFx0ICogYmUgMTI4S2lCLiBDcmVhdGluZyBhIHBlcmNwdV9hcnJheSBtYXAgd2l0aCB0aGUgbmV3XG4rXHRcdFx0ICogdmFsdWUgc2l6ZSB3aWxsIGZhaWwgd2l0aCAtRTJCSUcgZHVlIHRvIHBlcmNwdV9hcnJheVxuK1x0XHRcdCAqIG1hcCB2YWx1ZSBzaXplIGxpbWl0IDY0S2lCLCB3aGljaCBpcyBjYWxjdWxhdGVkIGJ5XG4rXHRcdFx0ICogUEZOX0FMSUdOKDMyS2lCKS5cbitcdFx0XHQgKiBMZXQncyBza2lwIHRoZSB0ZXN0IGZvciBzdWNoIGNhc2UuXG4rXHRcdFx0ICovXG4rXHRcdFx0dGVzdF9fc2tpcCgpO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJ0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZFwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRtYXAgPSBza2VsLVx1MDAzZW1hcHMucGVyY3B1O1xuK1x0cHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLnVwZGF0ZV9wZXJjcHVfZGF0YSk7XG4rXHR0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMobWFwLCBicGZfbWFwX19mZChtYXApLCBwcm9nX2ZkLCBcdTAwMjZza2VsLVx1MDAzZWJzcy1cdTAwM2VydW4pO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWFycl9zdW0sIGFycl92YWx1ZSAqIHNrZWwtXHUwMDNlYnNzLVx1MDAzZXJ1biwgXCJhcnJfc3VtXCIpO1xuK1xuK291dDpcbitcdHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19kZXN0cm95KHNrZWwpO1xuK31cbitcbiBzdGF0aWMgaW50IGNyZWF0ZV9yZG9ubHlfcGVyY3B1X2FycmF5KHZvaWQpXG4ge1xuIFx0TElCQlBGX09QVFMoYnBmX21hcF9jcmVhdGVfb3B0cywgbWFwX29wdHMsXG5AQCAtMzg4LDYgKzQzNiw4IEBAIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEodm9pZClcbiBcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJsc2tlbFwiKSlcbiBcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbHNrZWwoKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwibWFwX3Jlc2l6ZVwiKSlcbitcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbWFwX3Jlc2l6ZSgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJyZG9ubHlfZGlyZWN0X3JlYWRcIikpXG4gXHRcdHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX3Jkb25seV9kaXJlY3RfcmVhZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJyZG9ubHlfZGlyZWN0X3dyaXRlXCIpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNcbmluZGV4IDVkYzIxYjNiNGNiNTkuLjI3NjVjZDQ2ZTlhZjAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNcbkBAIC04LDkgKzgsMTIgQEAgaW50IGxvb25nIFNFQyhcIi5wZXJjcHUubG9vb29vb29vb25nXCIpO1xuIGludCBkYXRhMyBTRUMoXCIuZGF0YS5wZXJjcHVcIik7XG4gaW50IGRhdGEyIFNFQyhcIi5wZXJjcHUuZGF0YVwiKTtcbiBcbisvKiBVc2VkIGZvciB0ZXN0aW5nIGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKCkuICovXG4raW50IGFyclsxXSBTRUMoXCIucGVyY3B1LmFyclwiKTtcbitpbnQgYXJyX3N1bTtcbitcbiBpbnQgcnVuO1xuLS8qIGNwdV9pZCBhcyBhcnJheSB0byB2ZXJpZnkgbWFwIHZhbHVlIHJlc2l6aW5nLiAqL1xuLWludCBjcHVfaWRbMV0gU0VDKFwiLnBlcmNwdVwiKTtcbitpbnQgY3B1X2lkIFNFQyhcIi5wZXJjcHVcIik7XG4gaW50IGRhdGEgU0VDKFwiLnBlcmNwdVwiKSA9IC0xO1xuIGludCBudW1zWzddIFNFQyhcIi5wZXJjcHVcIik7XG4gYm9vbCBzZXQgU0VDKFwiLnBlcmNwdVwiKSA9IGZhbHNlO1xuQEAgLTM0LDcgKzM3LDggQEAgaW50IHVwZGF0ZV9wZXJjcHVfZGF0YSh2b2lkICpjdHgpXG4gXHRkYXRhID0gMTtcbiBcdHJ1bisrO1xuIFx0c2V0ID0gdHJ1ZTtcbi1cdGNwdV9pZFswXSA9IGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZCgpO1xuK1x0Y3B1X2lkID0gYnBmX2dldF9zbXBfcHJvY2Vzc29yX2lkKCk7XG4rXHRhcnJfc3VtICs9IGFyclswXTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjIxOjQ3LjM5MTA1NjA2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MjkzMDcxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBCUEYgU2VsZnRlc3QgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0ZWxsaW5nIG1lIHRoaXMgaXNuJ3Qga2VybmVsLWNyaXRpY2FsLiBJdCdzIHRvdWNoaW5nIHRoZSBCUEYgc2VsZnRlc3RzLCBzcGVjaWZpY2FsbHkgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dsb2JhbF9kYXRhX2luaXQuY2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuY2AuIE5vIGNvcmUgbG9naWMsIG5vIGRyaXZlcnMsIG5vIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBzdHVmZi4gSnVzdCB0ZXN0cy5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbSBxdWlja2x5IGRvdWJsZS1jaGVja2luZyB0aGUgZGlmZi4uLiBZZXAsIGp1c3QgdGhvc2UgdHdvIGZpbGVzLiBUaGlzIGlzIHRleHRib29rIHNlbGZ0ZXN0IG1vZGlmaWNhdGlvbi4gWW91IGtub3csIG1ha2luZyBzdXJlIHRoZSB0ZXN0cyBhcmUgdXAtdG8tZGF0ZSBhbmQgcm9idXN0LlxuXG5HaXZlbiB0aGF0IGl0J3MganVzdCBzZWxmLXRlc3RzLCB3aGljaCBhcmUgZGVzaWduZWQgdG8gKnZlcmlmeSogdGhlIEJQRiBpbmZyYXN0cnVjdHVyZSwgYnV0IGRvbid0IGFjdHVhbGx5ICpjaGFuZ2UqIGhvdyBpdCBiZWhhdmVzIGluIHByb2R1Y3Rpb24sIHRoaXMgaXNuJ3Qgc29tZXRoaW5nIHdlIG5lZWQgdG8gZnV6ei4gRnV6emluZyB3b3VsZCBiZSBhIGNvbXBsZXRlIHdhc3RlIG9mIHJlc291cmNlcy4gV2UncmUgbm90IGdldHRpbmcgYW55IGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgY29kZS5cblxuTGV0IG1lIGNvbmZpcm0gb25lIGxhc3QgdGltZS4uLiBZdXAsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNgLiBKdXN0IHNlbGZ0ZXN0cy5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiAqKldvcnRoRnV6emluZz1mYWxzZS4qKiBUaGlzIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIHNlbGZ0ZXN0cyBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJpc2sgb3IgY2hhbmdlIGluIHRoZSBmdW5jdGlvbmFsIGtlcm5lbCBjb2RlLiBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIHN1Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNTAsIk91dHB1dFRva2VucyI6NjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyMTo1NS4wMjAzNjc0MzhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjIxOjU1LjAyMDQwMTczOFoiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow82hjn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-26 15:04:19 +0000 UTC FinishedAt: 2026-08-26 15:21:56 +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+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJlMjI4Njc2ZmQyYjhiY2VlNTUwNmIwZTQ4OTFhZGQ1MDgwOTNmNzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxNToyMTo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNcbmluZGV4IDU2NzFjMzEwODVjZDEuLjdjNTM5Y2JjZjNhMWUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dsb2JhbF9kYXRhX2luaXQuY1xuQEAgLTY4LDEyICYjNDM7NjgsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMoc3RydWN0IGJwZl9tYXAgKm1hcCwgaW50IG1hcF9mZCwgaW50IHByb2dfZlxuIHtcbiBcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fcGVyY3B1ICpkYXRhID0gTlVMTDtcbiBcdGludCBpLCBlcnIsIGtleSA9IDAsIG51bV9vbmxpbmUsIHJ1biA9IDA7XG4tXHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcbiBcdHNpemVfdCBkYXRhX3N6O1xuIFx0Ym9vbCAqb25saW5lO1xuIFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuLVx0XHQgICAgLmN0eF9pbiA9IGFyZ3MsXG4tXHRcdCAgICAuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXG4gXHRcdCAgICAuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG4gXHQpO1xuIFxuQEAgLTgxLDcgJiM0Mzs3OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mXG4gXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3BhcnNlX2NwdV9tYXNrX2ZpbGVcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRkYXRhX3N6ID0gbWFwID8gYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApIDogc2l6ZW9mKCpkYXRhKTtcbiYjNDM7XHRkYXRhX3N6ID0gc2l6ZW9mKCpkYXRhKTtcbiBcdGRhdGEgPSBjYWxsb2MoMSwgZGF0YV9zeik7XG4gXHRpZiAoIUFTU0VSVF9PS19QVFIoZGF0YSwgXCYjMzQ7Y2FsbG9jIHBlcmNwdSBkYXRhXCYjMzQ7KSlcbiBcdFx0Z290byBvdXQ7XG5AQCAtMTA5LDcgJiM0MzsxMDYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMoc3RydWN0IGJwZl9tYXAgKm1hcCwgaW50IG1hcF9mZCwgaW50IHByb2dfZlxuIFx0XHRcdGJyZWFrO1xuIFxuIFx0XHRBU1NFUlRfRVEoKnJ1bnAsICYjNDM7JiM0MztydW4sIFwmIzM0O3J1blwmIzM0Oyk7XG4tXHRcdEFTU0VSVF9FUShkYXRhLVx1MDAzZWNwdV9pZFswXSwgaSwgXCYjMzQ7Y3B1X2lkXCYjMzQ7KTtcbiYjNDM7XHRcdEFTU0VSVF9FUShkYXRhLVx1MDAzZWNwdV9pZCwgaSwgXCYjMzQ7Y3B1X2lkXCYjMzQ7KTtcbiBcdFx0QVNTRVJUX0VRKGRhdGEtXHUwMDNlZGF0YSwgMSwgXCYjMzQ7ZGF0YVwmIzM0Oyk7XG4gXHRcdEFTU0VSVF9UUlVFKGRhdGEtXHUwMDNlc2V0LCBcJiMzNDtzZXRcJiMzNDspO1xuIFx0XHRBU1NFUlRfRVEoZGF0YS1cdTAwM2VudW1zWzZdLCAweGMwZGUsIFwmIzM0O251bXNbNl1cJiMzNDspO1xuQEAgLTEyNyw3ICYjNDM7MTI0LDYgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCh2b2lkKVxuIHtcbiBcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fcGVyY3B1IGluaXRfdmFsdWUgPSB7fTtcbiBcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fcGVyY3B1ICppbml0X2RhdGE7XG4tXHRjb25zdCBfX3UzMiBkZXNpcmVkX3N6ID0gc3lzY29uZihfU0NfUEFHRV9TSVpFKTtcbiBcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YSAqc2tlbCA9IE5VTEw7XG4gXHRzaXplX3QgaW5pdF9kYXRhX3N6O1xuIFx0c3RydWN0IGJwZl9tYXAgKm1hcDtcbkBAIC0xNjMsOSAmIzQzOzE1OSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9pbml0KHZvaWQpXG4gXHRpZiAoIUFTU0VSVF9FUShicGZfbWFwX190eXBlKG1hcCksIEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVksIFwmIzM0O2JwZl9tYXBfX3R5cGVcJiMzNDspKVxuIFx0XHRnb3RvIG91dDtcbiBcbiYjNDM7XHRpbml0X3ZhbHVlLnNldCA9IDE7XG4gXHRpbml0X3ZhbHVlLmRhdGEgPSAyO1xuIFx0aW5pdF92YWx1ZS5udW1zWzZdID0gLTE7XG4gXHRpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLmkgPSAyO1xuJiM0MztcdGluaXRfdmFsdWUuc3RydWN0X2RhdGEuc2V0ID0gMTtcbiBcdGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSA9IC0xO1xuIFx0ZXJyID0gYnBmX21hcF9fc2V0X2luaXRpYWxfdmFsdWUobWFwLCBcdTAwMjZpbml0X3ZhbHVlLCBzaXplb2YoaW5pdF92YWx1ZSkpO1xuIFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDticGZfbWFwX19zZXRfaW5pdGlhbF92YWx1ZVwmIzM0OykpXG5AQCAtMTc3LDM1ICYjNDM7MTc1LDI0IEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2luaXQodm9pZClcbiBcbiBcdEFTU0VSVF9FUShpbml0X2RhdGEtXHUwMDNlZGF0YSwgaW5pdF92YWx1ZS5kYXRhLCBcJiMzNDtpbml0X3ZhbHVlIGRhdGFcJiMzNDspO1xuIFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VzZXQsIGluaXRfdmFsdWUuc2V0LCBcJiMzNDtpbml0X3ZhbHVlIHNldFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VudW1zWzZdLCBpbml0X3ZhbHVlLm51bXNbNl0sIFwmIzM0O2luaXRfdmFsdWUgbnVtc1s2XVwmIzM0Oyk7XG4gXHRBU1NFUlRfRVEoaW5pdF9kYXRhLVx1MDAzZXN0cnVjdF9kYXRhLmksIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuaSwgXCYjMzQ7aW5pdF92YWx1ZSBzdHJ1Y3RfZGF0YS5pXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoaW5pdF9kYXRhLVx1MDAzZXN0cnVjdF9kYXRhLnNldCwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQsXG4mIzQzO1x0XHQgIFwmIzM0O2luaXRfdmFsdWUgc3RydWN0X2RhdGEuc2V0XCYjMzQ7KTtcbiBcdEFTU0VSVF9FUShpbml0X2RhdGEtXHUwMDNlc3RydWN0X2RhdGEubnVtc1s2XSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5udW1zWzZdLFxuIFx0XHQgIFwmIzM0O2luaXRfdmFsdWUgc3RydWN0X2RhdGEubnVtc1s2XVwmIzM0Oyk7XG4gXHRBU1NFUlRfRVEoaW5pdF9kYXRhX3N6LCBzaXplb2YoaW5pdF92YWx1ZSksIFwmIzM0O2luaXRfdmFsdWUgc2l6ZVwmIzM0Oyk7XG4gXHRBU1NFUlRfRVEoKHZvaWQgKikgaW5pdF9kYXRhLCAodm9pZCAqKSBza2VsLVx1MDAzZXBlcmNwdSwgXCYjMzQ7c2tlbC1cdTAwM2VwZXJjcHUgZXEgaW5pdF9kYXRhXCYjMzQ7KTtcbiBcdEFTU0VSVF9FUShza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VkYXRhLCBpbml0X3ZhbHVlLmRhdGEsIFwmIzM0O3NrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZWRhdGFcJiMzNDspO1xuIFx0QVNTRVJUX0VRKHNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXNldCwgaW5pdF92YWx1ZS5zZXQsIFwmIzM0O3NrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXNldFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZW51bXNbNl0sIGluaXRfdmFsdWUubnVtc1s2XSwgXCYjMzQ7c2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlbnVtc1s2XVwmIzM0Oyk7XG4gXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlc3RydWN0X2RhdGEuaSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pLFxuIFx0XHQgIFwmIzM0O3NrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXN0cnVjdF9kYXRhLmlcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VzdHJ1Y3RfZGF0YS5zZXQsIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuc2V0LFxuJiM0MztcdFx0ICBcJiMzNDtza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VzdHJ1Y3RfZGF0YS5zZXRcJiMzNDspO1xuIFx0QVNTRVJUX0VRKHNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSxcbiBcdFx0ICBcJiMzNDtza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VzdHJ1Y3RfZGF0YS5udW1zWzZdXCYjMzQ7KTtcbiBcbi1cdEFTU0VSVF9HVChkZXNpcmVkX3N6LCBzaXplb2YoaW5pdF92YWx1ZSksIFwmIzM0O2Rlc2lyZWRfc3pcJiMzNDspO1xuLVx0ZXJyID0gYnBmX21hcF9fc2V0X3ZhbHVlX3NpemUobWFwLCBkZXNpcmVkX3N6KTtcbi1cdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX21hcF9fc2V0X3ZhbHVlX3NpemVcJiMzNDspKVxuLVx0XHRnb3RvIG91dDtcbi1cdGlmICghQVNTRVJUX0VRKGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSwgZGVzaXJlZF9zeiwgXCYjMzQ7cGVyY3B1IHZhbHVlIHNpemVcJiMzNDspKVxuLVx0XHRnb3RvIG91dDtcbi1cdGlmICghQVNTRVJUX05FUShicGZfbWFwX19idGZfdmFsdWVfdHlwZV9pZChtYXApLCAwLCBcJiMzNDtwZXJjcHUgQlRGIHZhbHVlIHR5cGVcJiMzNDspKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGluaXRfZGF0YSA9IGJwZl9tYXBfX2luaXRpYWxfdmFsdWUobWFwLCBcdTAwMjZpbml0X2RhdGFfc3opO1xuLVx0aWYgKCFBU1NFUlRfT0tfUFRSKGluaXRfZGF0YSwgXCYjMzQ7cmVzaXplZCBicGZfbWFwX19pbml0aWFsX3ZhbHVlXCYjMzQ7KSlcbi1cdFx0Z290byBvdXQ7XG4tXHRpZiAoIUFTU0VSVF9FUShpbml0X2RhdGFfc3osIGRlc2lyZWRfc3osIFwmIzM0O3Jlc2l6ZWQgaW5pdGlhbCB2YWx1ZSBzaXplXCYjMzQ7KSlcbi1cdFx0Z290byBvdXQ7XG4tXHRpZiAoIUFTU0VSVF9FUShpbml0X2RhdGEtXHUwMDNlZGF0YSwgaW5pdF92YWx1ZS5kYXRhLCBcJiMzNDtyZXNpemVkIGluaXRpYWwgdmFsdWUgZGF0YVwmIzM0OykpXG4tXHRcdGdvdG8gb3V0O1xuLVxuIFx0ZXJyID0gdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQoc2tlbCk7XG4gXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19sb2FkXCYjMzQ7KSlcbiBcdFx0Z290byBvdXQ7XG5AQCAtMjM2LDYgJiM0MzsyMjMsNjcgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbHNrZWwodm9pZClcbiBcdHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2xza2VsX19kZXN0cm95KGxza2VsKTtcbiB9XG4gXG4mIzQzOyNkZWZpbmUgUENQVV9NSU5fVU5JVF9TSVpFICgzMiBcdTAwM2NcdTAwM2MgMTApXG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9tYXBfcmVzaXplKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBfX3UzMiBwYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFX1NJWkUpO1xuJiM0MztcdGNvbnN0IF9fdTMyIHBjcHVfbWF4X3ZhbHVlX3NpemUgPSBBTElHTihQQ1BVX01JTl9VTklUX1NJWkUsIHBhZ2Vfc2l6ZSk7XG4mIzQzO1x0Y29uc3QgX191MzIgZGVzaXJlZF9zeiA9IHBhZ2Vfc2l6ZSAqIDI7XG4mIzQzO1x0c3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhICpza2VsO1xuJiM0MztcdGNvbnN0IGludCBhcnJfdmFsdWUgPSAtMTtcbiYjNDM7XHRzdHJ1Y3QgYnBmX21hcCAqbWFwO1xuJiM0MztcdGludCBlcnIsIHByb2dfZmQ7XG4mIzQzO1x0c2l6ZV90IGRhdGFfc3o7XG4mIzQzO1xuJiM0MztcdHNrZWwgPSB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fb3BlbigpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDt0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fb3BlblwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdG1hcCA9IHNrZWwtXHUwMDNlbWFwcy5wZXJjcHVfYXJyO1xuJiM0MztcdHNrZWwtXHUwMDNlcGVyY3B1X2Fyci1cdTAwM2VhcnJbMF0gPSBhcnJfdmFsdWU7XG4mIzQzO1x0ZXJyID0gYnBmX21hcF9fc2V0X3ZhbHVlX3NpemUobWFwLCBkZXNpcmVkX3N6KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O2JwZl9tYXBfX3NldF92YWx1ZV9zaXplXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdGlmICghQVNTRVJUX0VRKGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSwgZGVzaXJlZF9zeiwgXCYjMzQ7YnBmX21hcF9fdmFsdWVfc2l6ZVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHRpZiAoIUFTU0VSVF9ORVEoYnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWQobWFwKSwgMCwgXCYjMzQ7YnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWRcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHNrZWwtXHUwMDNlcGVyY3B1X2FyciA9IGJwZl9tYXBfX2luaXRpYWxfdmFsdWUobWFwLCBcdTAwMjZkYXRhX3N6KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9FUShkYXRhX3N6LCBkZXNpcmVkX3N6LCBcJiMzNDtkYXRhX3N6XCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVx1MDAzZXBlcmNwdV9hcnIsIFwmIzM0O3NrZWwtXHUwMDNlcGVyY3B1X2FyclwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHRpZiAoIUFTU0VSVF9FUShza2VsLVx1MDAzZXBlcmNwdV9hcnItXHUwMDNlYXJyWzBdLCBhcnJfdmFsdWUsIFwmIzM0O2FyclswXVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQoc2tlbCk7XG4mIzQzO1x0aWYgKGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSBcdTAwM2UgcGNwdV9tYXhfdmFsdWVfc2l6ZSkge1xuJiM0MztcdFx0aWYgKEFTU0VSVF9FUShlcnIsIC1FMkJJRywgXCYjMzQ7dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQgRTJCSUdcJiMzNDspKVxuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBXaGVuIHRoZSBQQUdFX1NJWkUgaXMgNjRLaUIsIHRoZSBuZXcgdmFsdWUgc2l6ZSB3aWxsXG4mIzQzO1x0XHRcdCAqIGJlIDEyOEtpQi4gQ3JlYXRpbmcgYSBwZXJjcHVfYXJyYXkgbWFwIHdpdGggdGhlIG5ld1xuJiM0MztcdFx0XHQgKiB2YWx1ZSBzaXplIHdpbGwgZmFpbCB3aXRoIC1FMkJJRyBkdWUgdG8gcGVyY3B1X2FycmF5XG4mIzQzO1x0XHRcdCAqIG1hcCB2YWx1ZSBzaXplIGxpbWl0IDY0S2lCLCB3aGljaCBpcyBjYWxjdWxhdGVkIGJ5XG4mIzQzO1x0XHRcdCAqIFBGTl9BTElHTigzMktpQikuXG4mIzQzO1x0XHRcdCAqIExldCYjMzk7cyBza2lwIHRoZSB0ZXN0IGZvciBzdWNoIGNhc2UuXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHR0ZXN0X19za2lwKCk7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZFwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0bWFwID0gc2tlbC1cdTAwM2VtYXBzLnBlcmNwdTtcbiYjNDM7XHRwcm9nX2ZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MudXBkYXRlX3BlcmNwdV9kYXRhKTtcbiYjNDM7XHR0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMobWFwLCBicGZfbWFwX19mZChtYXApLCBwcm9nX2ZkLCBcdTAwMjZza2VsLVx1MDAzZWJzcy1cdTAwM2VydW4pO1xuJiM0MztcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VhcnJfc3VtLCBhcnJfdmFsdWUgKiBza2VsLVx1MDAzZWJzcy1cdTAwM2VydW4sIFwmIzM0O2Fycl9zdW1cJiMzNDspO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgY3JlYXRlX3Jkb25seV9wZXJjcHVfYXJyYXkodm9pZClcbiB7XG4gXHRMSUJCUEZfT1BUUyhicGZfbWFwX2NyZWF0ZV9vcHRzLCBtYXBfb3B0cyxcbkBAIC0zODgsNiAmIzQzOzQzNiw4IEBAIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEodm9pZClcbiBcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7bHNrZWxcJiMzNDspKVxuIFx0XHR0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbCgpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O21hcF9yZXNpemVcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbWFwX3Jlc2l6ZSgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmRvbmx5X2RpcmVjdF9yZWFkXCYjMzQ7KSlcbiBcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfcmRvbmx5X2RpcmVjdF9yZWFkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtyZG9ubHlfZGlyZWN0X3dyaXRlXCYjMzQ7KSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXG5pbmRleCA1ZGMyMWIzYjRjYjU5Li4yNzY1Y2Q0NmU5YWYwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXG5AQCAtOCw5ICYjNDM7OCwxMiBAQCBpbnQgbG9vbmcgU0VDKFwmIzM0Oy5wZXJjcHUubG9vb29vb29vb25nXCYjMzQ7KTtcbiBpbnQgZGF0YTMgU0VDKFwmIzM0Oy5kYXRhLnBlcmNwdVwmIzM0Oyk7XG4gaW50IGRhdGEyIFNFQyhcJiMzNDsucGVyY3B1LmRhdGFcJiMzNDspO1xuIFxuJiM0MzsvKiBVc2VkIGZvciB0ZXN0aW5nIGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKCkuICovXG4mIzQzO2ludCBhcnJbMV0gU0VDKFwmIzM0Oy5wZXJjcHUuYXJyXCYjMzQ7KTtcbiYjNDM7aW50IGFycl9zdW07XG4mIzQzO1xuIGludCBydW47XG4tLyogY3B1X2lkIGFzIGFycmF5IHRvIHZlcmlmeSBtYXAgdmFsdWUgcmVzaXppbmcuICovXG4taW50IGNwdV9pZFsxXSBTRUMoXCYjMzQ7LnBlcmNwdVwmIzM0Oyk7XG4mIzQzO2ludCBjcHVfaWQgU0VDKFwmIzM0Oy5wZXJjcHVcJiMzNDspO1xuIGludCBkYXRhIFNFQyhcJiMzNDsucGVyY3B1XCYjMzQ7KSA9IC0xO1xuIGludCBudW1zWzddIFNFQyhcJiMzNDsucGVyY3B1XCYjMzQ7KTtcbiBib29sIHNldCBTRUMoXCYjMzQ7LnBlcmNwdVwmIzM0OykgPSBmYWxzZTtcbkBAIC0zNCw3ICYjNDM7MzcsOCBAQCBpbnQgdXBkYXRlX3BlcmNwdV9kYXRhKHZvaWQgKmN0eClcbiBcdGRhdGEgPSAxO1xuIFx0cnVuJiM0MzsmIzQzOztcbiBcdHNldCA9IHRydWU7XG4tXHRjcHVfaWRbMF0gPSBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQoKTtcbiYjNDM7XHRjcHVfaWQgPSBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQoKTtcbiYjNDM7XHRhcnJfc3VtICYjNDM7PSBhcnJbMF07XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyZTIyODY3NmZkMmI4YmNlZTU1MDZiMGU0ODkxYWRkNTA4MDkzZjczCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMjYgMTU6MjE6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmMKaW5kZXggNTY3MWMzMTA4NWNkMS4uN2M1MzljYmNmM2ExZSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dsb2JhbF9kYXRhX2luaXQuYwpAQCAtNjgsMTIgJiM0Mzs2OCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mCiB7CiAJc3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19wZXJjcHUgKmRhdGEgPSBOVUxMOwogCWludCBpLCBlcnIsIGtleSA9IDAsIG51bV9vbmxpbmUsIHJ1biA9IDA7Ci0JX191NjQgYXJnc1syXSA9IHsweDEyMzRVTEwsIDB4NTY3OFVMTH07CiAJc2l6ZV90IGRhdGFfc3o7CiAJYm9vbCAqb25saW5lOwogCUxJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cywKLQkJICAgIC5jdHhfaW4gPSBhcmdzLAotCQkgICAgLmN0eF9zaXplX2luID0gc2l6ZW9mKGFyZ3MpLAogCQkgICAgLmZsYWdzID0gQlBGX0ZfVEVTVF9SVU5fT05fQ1BVLAogCSk7CiAKQEAgLTgxLDcgJiM0Mzs3OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mCiAJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O3BhcnNlX2NwdV9tYXNrX2ZpbGUmIzM0OykpCiAJCXJldHVybjsKIAotCWRhdGFfc3ogPSBtYXAgPyBicGZfbWFwX192YWx1ZV9zaXplKG1hcCkgOiBzaXplb2YoKmRhdGEpOwomIzQzOwlkYXRhX3N6ID0gc2l6ZW9mKCpkYXRhKTsKIAlkYXRhID0gY2FsbG9jKDEsIGRhdGFfc3opOwogCWlmICghQVNTRVJUX09LX1BUUihkYXRhLCAmIzM0O2NhbGxvYyBwZXJjcHUgZGF0YSYjMzQ7KSkKIAkJZ290byBvdXQ7CkBAIC0xMDksNyAmIzQzOzEwNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mCiAJCQlicmVhazsKIAogCQlBU1NFUlRfRVEoKnJ1bnAsICYjNDM7JiM0MztydW4sICYjMzQ7cnVuJiMzNDspOwotCQlBU1NFUlRfRVEoZGF0YS0mZ3Q7Y3B1X2lkWzBdLCBpLCAmIzM0O2NwdV9pZCYjMzQ7KTsKJiM0MzsJCUFTU0VSVF9FUShkYXRhLSZndDtjcHVfaWQsIGksICYjMzQ7Y3B1X2lkJiMzNDspOwogCQlBU1NFUlRfRVEoZGF0YS0mZ3Q7ZGF0YSwgMSwgJiMzNDtkYXRhJiMzNDspOwogCQlBU1NFUlRfVFJVRShkYXRhLSZndDtzZXQsICYjMzQ7c2V0JiMzNDspOwogCQlBU1NFUlRfRVEoZGF0YS0mZ3Q7bnVtc1s2XSwgMHhjMGRlLCAmIzM0O251bXNbNl0mIzM0Oyk7CkBAIC0xMjcsNyAmIzQzOzEyNCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2luaXQodm9pZCkKIHsKIAlzdHJ1Y3QgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX3BlcmNwdSBpbml0X3ZhbHVlID0ge307CiAJc3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19wZXJjcHUgKmluaXRfZGF0YTsKLQljb25zdCBfX3UzMiBkZXNpcmVkX3N6ID0gc3lzY29uZihfU0NfUEFHRV9TSVpFKTsKIAlzdHJ1Y3QgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEgKnNrZWwgPSBOVUxMOwogCXNpemVfdCBpbml0X2RhdGFfc3o7CiAJc3RydWN0IGJwZl9tYXAgKm1hcDsKQEAgLTE2Myw5ICYjNDM7MTU5LDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2luaXQodm9pZCkKIAlpZiAoIUFTU0VSVF9FUShicGZfbWFwX190eXBlKG1hcCksIEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVksICYjMzQ7YnBmX21hcF9fdHlwZSYjMzQ7KSkKIAkJZ290byBvdXQ7CiAKJiM0MzsJaW5pdF92YWx1ZS5zZXQgPSAxOwogCWluaXRfdmFsdWUuZGF0YSA9IDI7CiAJaW5pdF92YWx1ZS5udW1zWzZdID0gLTE7CiAJaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pID0gMjsKJiM0MzsJaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQgPSAxOwogCWluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSA9IC0xOwogCWVyciA9IGJwZl9tYXBfX3NldF9pbml0aWFsX3ZhbHVlKG1hcCwgJmFtcDtpbml0X3ZhbHVlLCBzaXplb2YoaW5pdF92YWx1ZSkpOwogCWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfbWFwX19zZXRfaW5pdGlhbF92YWx1ZSYjMzQ7KSkKQEAgLTE3NywzNSAmIzQzOzE3NSwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9pbml0KHZvaWQpCiAKIAlBU1NFUlRfRVEoaW5pdF9kYXRhLSZndDtkYXRhLCBpbml0X3ZhbHVlLmRhdGEsICYjMzQ7aW5pdF92YWx1ZSBkYXRhJiMzNDspOwogCUFTU0VSVF9FUShpbml0X2RhdGEtJmd0O3NldCwgaW5pdF92YWx1ZS5zZXQsICYjMzQ7aW5pdF92YWx1ZSBzZXQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShpbml0X2RhdGEtJmd0O251bXNbNl0sIGluaXRfdmFsdWUubnVtc1s2XSwgJiMzNDtpbml0X3ZhbHVlIG51bXNbNl0mIzM0Oyk7CiAJQVNTRVJUX0VRKGluaXRfZGF0YS0mZ3Q7c3RydWN0X2RhdGEuaSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pLCAmIzM0O2luaXRfdmFsdWUgc3RydWN0X2RhdGEuaSYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKGluaXRfZGF0YS0mZ3Q7c3RydWN0X2RhdGEuc2V0LCBpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLnNldCwKJiM0MzsJCSAgJiMzNDtpbml0X3ZhbHVlIHN0cnVjdF9kYXRhLnNldCYjMzQ7KTsKIAlBU1NFUlRfRVEoaW5pdF9kYXRhLSZndDtzdHJ1Y3RfZGF0YS5udW1zWzZdLCBpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLm51bXNbNl0sCiAJCSAgJiMzNDtpbml0X3ZhbHVlIHN0cnVjdF9kYXRhLm51bXNbNl0mIzM0Oyk7CiAJQVNTRVJUX0VRKGluaXRfZGF0YV9zeiwgc2l6ZW9mKGluaXRfdmFsdWUpLCAmIzM0O2luaXRfdmFsdWUgc2l6ZSYjMzQ7KTsKIAlBU1NFUlRfRVEoKHZvaWQgKikgaW5pdF9kYXRhLCAodm9pZCAqKSBza2VsLSZndDtwZXJjcHUsICYjMzQ7c2tlbC0mZ3Q7cGVyY3B1IGVxIGluaXRfZGF0YSYjMzQ7KTsKIAlBU1NFUlRfRVEoc2tlbC0mZ3Q7cGVyY3B1LSZndDtkYXRhLCBpbml0X3ZhbHVlLmRhdGEsICYjMzQ7c2tlbC0mZ3Q7cGVyY3B1LSZndDtkYXRhJiMzNDspOwogCUFTU0VSVF9FUShza2VsLSZndDtwZXJjcHUtJmd0O3NldCwgaW5pdF92YWx1ZS5zZXQsICYjMzQ7c2tlbC0mZ3Q7cGVyY3B1LSZndDtzZXQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShza2VsLSZndDtwZXJjcHUtJmd0O251bXNbNl0sIGluaXRfdmFsdWUubnVtc1s2XSwgJiMzNDtza2VsLSZndDtwZXJjcHUtJmd0O251bXNbNl0mIzM0Oyk7CiAJQVNTRVJUX0VRKHNrZWwtJmd0O3BlcmNwdS0mZ3Q7c3RydWN0X2RhdGEuaSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pLAogCQkgICYjMzQ7c2tlbC0mZ3Q7cGVyY3B1LSZndDtzdHJ1Y3RfZGF0YS5pJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7cGVyY3B1LSZndDtzdHJ1Y3RfZGF0YS5zZXQsIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuc2V0LAomIzQzOwkJICAmIzM0O3NrZWwtJmd0O3BlcmNwdS0mZ3Q7c3RydWN0X2RhdGEuc2V0JiMzNDspOwogCUFTU0VSVF9FUShza2VsLSZndDtwZXJjcHUtJmd0O3N0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSwKIAkJICAmIzM0O3NrZWwtJmd0O3BlcmNwdS0mZ3Q7c3RydWN0X2RhdGEubnVtc1s2XSYjMzQ7KTsKIAotCUFTU0VSVF9HVChkZXNpcmVkX3N6LCBzaXplb2YoaW5pdF92YWx1ZSksICYjMzQ7ZGVzaXJlZF9zeiYjMzQ7KTsKLQllcnIgPSBicGZfbWFwX19zZXRfdmFsdWVfc2l6ZShtYXAsIGRlc2lyZWRfc3opOwotCWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfbWFwX19zZXRfdmFsdWVfc2l6ZSYjMzQ7KSkKLQkJZ290byBvdXQ7Ci0JaWYgKCFBU1NFUlRfRVEoYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApLCBkZXNpcmVkX3N6LCAmIzM0O3BlcmNwdSB2YWx1ZSBzaXplJiMzNDspKQotCQlnb3RvIG91dDsKLQlpZiAoIUFTU0VSVF9ORVEoYnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWQobWFwKSwgMCwgJiMzNDtwZXJjcHUgQlRGIHZhbHVlIHR5cGUmIzM0OykpCi0JCWdvdG8gb3V0OwotCi0JaW5pdF9kYXRhID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsICZhbXA7aW5pdF9kYXRhX3N6KTsKLQlpZiAoIUFTU0VSVF9PS19QVFIoaW5pdF9kYXRhLCAmIzM0O3Jlc2l6ZWQgYnBmX21hcF9faW5pdGlhbF92YWx1ZSYjMzQ7KSkKLQkJZ290byBvdXQ7Ci0JaWYgKCFBU1NFUlRfRVEoaW5pdF9kYXRhX3N6LCBkZXNpcmVkX3N6LCAmIzM0O3Jlc2l6ZWQgaW5pdGlhbCB2YWx1ZSBzaXplJiMzNDspKQotCQlnb3RvIG91dDsKLQlpZiAoIUFTU0VSVF9FUShpbml0X2RhdGEtJmd0O2RhdGEsIGluaXRfdmFsdWUuZGF0YSwgJiMzNDtyZXNpemVkIGluaXRpYWwgdmFsdWUgZGF0YSYjMzQ7KSkKLQkJZ290byBvdXQ7Ci0KIAllcnIgPSB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZChza2VsKTsKIAlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQmIzM0OykpCiAJCWdvdG8gb3V0OwpAQCAtMjM2LDYgJiM0MzsyMjMsNjcgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbHNrZWwodm9pZCkKIAl0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbF9fZGVzdHJveShsc2tlbCk7CiB9CiAKJiM0MzsjZGVmaW5lIFBDUFVfTUlOX1VOSVRfU0laRSAoMzIgJmx0OyZsdDsgMTApCiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbWFwX3Jlc2l6ZSh2b2lkKQomIzQzO3sKJiM0MzsJY29uc3QgX191MzIgcGFnZV9zaXplID0gc3lzY29uZihfU0NfUEFHRV9TSVpFKTsKJiM0MzsJY29uc3QgX191MzIgcGNwdV9tYXhfdmFsdWVfc2l6ZSA9IEFMSUdOKFBDUFVfTUlOX1VOSVRfU0laRSwgcGFnZV9zaXplKTsKJiM0MzsJY29uc3QgX191MzIgZGVzaXJlZF9zeiA9IHBhZ2Vfc2l6ZSAqIDI7CiYjNDM7CXN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YSAqc2tlbDsKJiM0MzsJY29uc3QgaW50IGFycl92YWx1ZSA9IC0xOwomIzQzOwlzdHJ1Y3QgYnBmX21hcCAqbWFwOwomIzQzOwlpbnQgZXJyLCBwcm9nX2ZkOwomIzQzOwlzaXplX3QgZGF0YV9zejsKJiM0MzsKJiM0MzsJc2tlbCA9IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19vcGVuKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19vcGVuJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltYXAgPSBza2VsLSZndDttYXBzLnBlcmNwdV9hcnI7CiYjNDM7CXNrZWwtJmd0O3BlcmNwdV9hcnItJmd0O2FyclswXSA9IGFycl92YWx1ZTsKJiM0MzsJZXJyID0gYnBmX21hcF9fc2V0X3ZhbHVlX3NpemUobWFwLCBkZXNpcmVkX3N6KTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2JwZl9tYXBfX3NldF92YWx1ZV9zaXplJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CWlmICghQVNTRVJUX0VRKGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSwgZGVzaXJlZF9zeiwgJiMzNDticGZfbWFwX192YWx1ZV9zaXplJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CWlmICghQVNTRVJUX05FUShicGZfbWFwX19idGZfdmFsdWVfdHlwZV9pZChtYXApLCAwLCAmIzM0O2JwZl9tYXBfX2J0Zl92YWx1ZV90eXBlX2lkJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CXNrZWwtJmd0O3BlcmNwdV9hcnIgPSBicGZfbWFwX19pbml0aWFsX3ZhbHVlKG1hcCwgJmFtcDtkYXRhX3N6KTsKJiM0MzsJaWYgKCFBU1NFUlRfRVEoZGF0YV9zeiwgZGVzaXJlZF9zeiwgJiMzNDtkYXRhX3N6JiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLSZndDtwZXJjcHVfYXJyLCAmIzM0O3NrZWwtJmd0O3BlcmNwdV9hcnImIzM0OykpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJaWYgKCFBU1NFUlRfRVEoc2tlbC0mZ3Q7cGVyY3B1X2Fyci0mZ3Q7YXJyWzBdLCBhcnJfdmFsdWUsICYjMzQ7YXJyWzBdJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWVyciA9IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19sb2FkKHNrZWwpOwomIzQzOwlpZiAoYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApICZndDsgcGNwdV9tYXhfdmFsdWVfc2l6ZSkgewomIzQzOwkJaWYgKEFTU0VSVF9FUShlcnIsIC1FMkJJRywgJiMzNDt0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZCBFMkJJRyYjMzQ7KSkKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFdoZW4gdGhlIFBBR0VfU0laRSBpcyA2NEtpQiwgdGhlIG5ldyB2YWx1ZSBzaXplIHdpbGwKJiM0MzsJCQkgKiBiZSAxMjhLaUIuIENyZWF0aW5nIGEgcGVyY3B1X2FycmF5IG1hcCB3aXRoIHRoZSBuZXcKJiM0MzsJCQkgKiB2YWx1ZSBzaXplIHdpbGwgZmFpbCB3aXRoIC1FMkJJRyBkdWUgdG8gcGVyY3B1X2FycmF5CiYjNDM7CQkJICogbWFwIHZhbHVlIHNpemUgbGltaXQgNjRLaUIsIHdoaWNoIGlzIGNhbGN1bGF0ZWQgYnkKJiM0MzsJCQkgKiBQRk5fQUxJR04oMzJLaUIpLgomIzQzOwkJCSAqIExldCYjMzk7cyBza2lwIHRoZSB0ZXN0IGZvciBzdWNoIGNhc2UuCiYjNDM7CQkJICovCiYjNDM7CQkJdGVzdF9fc2tpcCgpOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19sb2FkJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CW1hcCA9IHNrZWwtJmd0O21hcHMucGVyY3B1OwomIzQzOwlwcm9nX2ZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLnVwZGF0ZV9wZXJjcHVfZGF0YSk7CiYjNDM7CXRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhtYXAsIGJwZl9tYXBfX2ZkKG1hcCksIHByb2dfZmQsICZhbXA7c2tlbC0mZ3Q7YnNzLSZndDtydW4pOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDthcnJfc3VtLCBhcnJfdmFsdWUgKiBza2VsLSZndDtic3MtJmd0O3J1biwgJiMzNDthcnJfc3VtJiMzNDspOwomIzQzOwomIzQzO291dDoKJiM0MzsJdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBjcmVhdGVfcmRvbmx5X3BlcmNwdV9hcnJheSh2b2lkKQogewogCUxJQkJQRl9PUFRTKGJwZl9tYXBfY3JlYXRlX29wdHMsIG1hcF9vcHRzLApAQCAtMzg4LDYgJiM0Mzs0MzYsOCBAQCB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhKHZvaWQpCiAJCXRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2luaXQoKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O2xza2VsJiMzNDspKQogCQl0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbCgpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O21hcF9yZXNpemUmIzM0OykpCiYjNDM7CQl0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9tYXBfcmVzaXplKCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtyZG9ubHlfZGlyZWN0X3JlYWQmIzM0OykpCiAJCXRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX3Jkb25seV9kaXJlY3RfcmVhZCgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7cmRvbmx5X2RpcmVjdF93cml0ZSYjMzQ7KSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmMKaW5kZXggNWRjMjFiM2I0Y2I1OS4uMjc2NWNkNDZlOWFmMCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmMKQEAgLTgsOSAmIzQzOzgsMTIgQEAgaW50IGxvb25nIFNFQygmIzM0Oy5wZXJjcHUubG9vb29vb29vb25nJiMzNDspOwogaW50IGRhdGEzIFNFQygmIzM0Oy5kYXRhLnBlcmNwdSYjMzQ7KTsKIGludCBkYXRhMiBTRUMoJiMzNDsucGVyY3B1LmRhdGEmIzM0Oyk7CiAKJiM0MzsvKiBVc2VkIGZvciB0ZXN0aW5nIGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKCkuICovCiYjNDM7aW50IGFyclsxXSBTRUMoJiMzNDsucGVyY3B1LmFyciYjMzQ7KTsKJiM0MztpbnQgYXJyX3N1bTsKJiM0MzsKIGludCBydW47Ci0vKiBjcHVfaWQgYXMgYXJyYXkgdG8gdmVyaWZ5IG1hcCB2YWx1ZSByZXNpemluZy4gKi8KLWludCBjcHVfaWRbMV0gU0VDKCYjMzQ7LnBlcmNwdSYjMzQ7KTsKJiM0MztpbnQgY3B1X2lkIFNFQygmIzM0Oy5wZXJjcHUmIzM0Oyk7CiBpbnQgZGF0YSBTRUMoJiMzNDsucGVyY3B1JiMzNDspID0gLTE7CiBpbnQgbnVtc1s3XSBTRUMoJiMzNDsucGVyY3B1JiMzNDspOwogYm9vbCBzZXQgU0VDKCYjMzQ7LnBlcmNwdSYjMzQ7KSA9IGZhbHNlOwpAQCAtMzQsNyAmIzQzOzM3LDggQEAgaW50IHVwZGF0ZV9wZXJjcHVfZGF0YSh2b2lkICpjdHgpCiAJZGF0YSA9IDE7CiAJcnVuJiM0MzsmIzQzOzsKIAlzZXQgPSB0cnVlOwotCWNwdV9pZFswXSA9IGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZCgpOwomIzQzOwljcHVfaWQgPSBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQoKTsKJiM0MzsJYXJyX3N1bSAmIzQzOz0gYXJyWzBdOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNTAKCQkJCQkJCW91dHB1dDogNjUKCQkJCQkJCXRob3VnaHRzOiAzMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPUZhbHNlOiBCUEYgU2VsZnRlc3QgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgc3BpZGV5LXNlbnNlIGlzIHRlbGxpbmcgbWUgdGhpcyBpc24mIzM5O3Qga2VybmVsLWNyaXRpY2FsLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgQlBGIHNlbGZ0ZXN0cywgc3BlY2lmaWNhbGx5IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNgLiBObyBjb3JlIGxvZ2ljLCBubyBkcml2ZXJzLCBubyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc3R1ZmYuIEp1c3QgdGVzdHMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBxdWlja2x5IGRvdWJsZS1jaGVja2luZyB0aGUgZGlmZi4uLiBZZXAsIGp1c3QgdGhvc2UgdHdvIGZpbGVzLiBUaGlzIGlzIHRleHRib29rIHNlbGZ0ZXN0IG1vZGlmaWNhdGlvbi4gWW91IGtub3csIG1ha2luZyBzdXJlIHRoZSB0ZXN0cyBhcmUgdXAtdG8tZGF0ZSBhbmQgcm9idXN0LgoKR2l2ZW4gdGhhdCBpdCYjMzk7cyBqdXN0IHNlbGYtdGVzdHMsIHdoaWNoIGFyZSBkZXNpZ25lZCB0byAqdmVyaWZ5KiB0aGUgQlBGIGluZnJhc3RydWN0dXJlLCBidXQgZG9uJiMzOTt0IGFjdHVhbGx5ICpjaGFuZ2UqIGhvdyBpdCBiZWhhdmVzIGluIHByb2R1Y3Rpb24sIHRoaXMgaXNuJiMzOTt0IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZ1enouIEZ1enppbmcgd291bGQgYmUgYSBjb21wbGV0ZSB3YXN0ZSBvZiByZXNvdXJjZXMuIFdlJiMzOTtyZSBub3QgZ2V0dGluZyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGtlcm5lbCBjb2RlLgoKTGV0IG1lIGNvbmZpcm0gb25lIGxhc3QgdGltZS4uLiBZdXAsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNgLiBKdXN0IHNlbGZ0ZXN0cy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogKipXb3J0aEZ1enppbmc9ZmFsc2UuKiogVGhpcyBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBzZWxmdGVzdHMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmlzayBvciBjaGFuZ2UgaW4gdGhlIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUuIEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIHN1Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyMTo0Ni43NDA5MjU1NzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjc5NDkwOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6MjE6NDYuNzQwOTM1NzkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDkzNjgzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyZTIyODY3NmZkMmI4YmNlZTU1MDZiMGU0ODkxYWRkNTA4MDkzZjczXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDI2IDE1OjIxOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dsb2JhbF9kYXRhX2luaXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dsb2JhbF9kYXRhX2luaXQuY1xcbmluZGV4IDU2NzFjMzEwODVjZDEuLjdjNTM5Y2JjZjNhMWUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jXFxuQEAgLTY4LDEyICs2OCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mXFxuIHtcXG4gXFx0c3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19wZXJjcHUgKmRhdGEgPSBOVUxMO1xcbiBcXHRpbnQgaSwgZXJyLCBrZXkgPSAwLCBudW1fb25saW5lLCBydW4gPSAwO1xcbi1cXHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcXG4gXFx0c2l6ZV90IGRhdGFfc3o7XFxuIFxcdGJvb2wgKm9ubGluZTtcXG4gXFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxcbi1cXHRcXHQgICAgLmN0eF9pbiA9IGFyZ3MsXFxuLVxcdFxcdCAgICAuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXFxuIFxcdFxcdCAgICAuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXFxuIFxcdCk7XFxuIFxcbkBAIC04MSw3ICs3OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mXFxuIFxcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInBhcnNlX2NwdV9tYXNrX2ZpbGVcXFwiKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0ZGF0YV9zeiA9IG1hcCA/IGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSA6IHNpemVvZigqZGF0YSk7XFxuK1xcdGRhdGFfc3ogPSBzaXplb2YoKmRhdGEpO1xcbiBcXHRkYXRhID0gY2FsbG9jKDEsIGRhdGFfc3opO1xcbiBcXHRpZiAoIUFTU0VSVF9PS19QVFIoZGF0YSwgXFxcImNhbGxvYyBwZXJjcHUgZGF0YVxcXCIpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtMTA5LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0XFx0QVNTRVJUX0VRKCpydW5wLCArK3J1biwgXFxcInJ1blxcXCIpO1xcbi1cXHRcXHRBU1NFUlRfRVEoZGF0YS1cXHUwMDNlY3B1X2lkWzBdLCBpLCBcXFwiY3B1X2lkXFxcIik7XFxuK1xcdFxcdEFTU0VSVF9FUShkYXRhLVxcdTAwM2VjcHVfaWQsIGksIFxcXCJjcHVfaWRcXFwiKTtcXG4gXFx0XFx0QVNTRVJUX0VRKGRhdGEtXFx1MDAzZWRhdGEsIDEsIFxcXCJkYXRhXFxcIik7XFxuIFxcdFxcdEFTU0VSVF9UUlVFKGRhdGEtXFx1MDAzZXNldCwgXFxcInNldFxcXCIpO1xcbiBcXHRcXHRBU1NFUlRfRVEoZGF0YS1cXHUwMDNlbnVtc1s2XSwgMHhjMGRlLCBcXFwibnVtc1s2XVxcXCIpO1xcbkBAIC0xMjcsNyArMTI0LDYgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCh2b2lkKVxcbiB7XFxuIFxcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fcGVyY3B1IGluaXRfdmFsdWUgPSB7fTtcXG4gXFx0c3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19wZXJjcHUgKmluaXRfZGF0YTtcXG4tXFx0Y29uc3QgX191MzIgZGVzaXJlZF9zeiA9IHN5c2NvbmYoX1NDX1BBR0VfU0laRSk7XFxuIFxcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YSAqc2tlbCA9IE5VTEw7XFxuIFxcdHNpemVfdCBpbml0X2RhdGFfc3o7XFxuIFxcdHN0cnVjdCBicGZfbWFwICptYXA7XFxuQEAgLTE2Myw5ICsxNTksMTEgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCh2b2lkKVxcbiBcXHRpZiAoIUFTU0VSVF9FUShicGZfbWFwX190eXBlKG1hcCksIEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVksIFxcXCJicGZfbWFwX190eXBlXFxcIikpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4rXFx0aW5pdF92YWx1ZS5zZXQgPSAxO1xcbiBcXHRpbml0X3ZhbHVlLmRhdGEgPSAyO1xcbiBcXHRpbml0X3ZhbHVlLm51bXNbNl0gPSAtMTtcXG4gXFx0aW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pID0gMjtcXG4rXFx0aW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQgPSAxO1xcbiBcXHRpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLm51bXNbNl0gPSAtMTtcXG4gXFx0ZXJyID0gYnBmX21hcF9fc2V0X2luaXRpYWxfdmFsdWUobWFwLCBcXHUwMDI2aW5pdF92YWx1ZSwgc2l6ZW9mKGluaXRfdmFsdWUpKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiYnBmX21hcF9fc2V0X2luaXRpYWxfdmFsdWVcXFwiKSlcXG5AQCAtMTc3LDM1ICsxNzUsMjQgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCh2b2lkKVxcbiBcXG4gXFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cXHUwMDNlZGF0YSwgaW5pdF92YWx1ZS5kYXRhLCBcXFwiaW5pdF92YWx1ZSBkYXRhXFxcIik7XFxuIFxcdEFTU0VSVF9FUShpbml0X2RhdGEtXFx1MDAzZXNldCwgaW5pdF92YWx1ZS5zZXQsIFxcXCJpbml0X3ZhbHVlIHNldFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoaW5pdF9kYXRhLVxcdTAwM2VudW1zWzZdLCBpbml0X3ZhbHVlLm51bXNbNl0sIFxcXCJpbml0X3ZhbHVlIG51bXNbNl1cXFwiKTtcXG4gXFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cXHUwMDNlc3RydWN0X2RhdGEuaSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pLCBcXFwiaW5pdF92YWx1ZSBzdHJ1Y3RfZGF0YS5pXFxcIik7XFxuK1xcdEFTU0VSVF9FUShpbml0X2RhdGEtXFx1MDAzZXN0cnVjdF9kYXRhLnNldCwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQsXFxuK1xcdFxcdCAgXFxcImluaXRfdmFsdWUgc3RydWN0X2RhdGEuc2V0XFxcIik7XFxuIFxcdEFTU0VSVF9FUShpbml0X2RhdGEtXFx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSxcXG4gXFx0XFx0ICBcXFwiaW5pdF92YWx1ZSBzdHJ1Y3RfZGF0YS5udW1zWzZdXFxcIik7XFxuIFxcdEFTU0VSVF9FUShpbml0X2RhdGFfc3osIHNpemVvZihpbml0X3ZhbHVlKSwgXFxcImluaXRfdmFsdWUgc2l6ZVxcXCIpO1xcbiBcXHRBU1NFUlRfRVEoKHZvaWQgKikgaW5pdF9kYXRhLCAodm9pZCAqKSBza2VsLVxcdTAwM2VwZXJjcHUsIFxcXCJza2VsLVxcdTAwM2VwZXJjcHUgZXEgaW5pdF9kYXRhXFxcIik7XFxuIFxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2VwZXJjcHUtXFx1MDAzZWRhdGEsIGluaXRfdmFsdWUuZGF0YSwgXFxcInNrZWwtXFx1MDAzZXBlcmNwdS1cXHUwMDNlZGF0YVxcXCIpO1xcbiBcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlcGVyY3B1LVxcdTAwM2VzZXQsIGluaXRfdmFsdWUuc2V0LCBcXFwic2tlbC1cXHUwMDNlcGVyY3B1LVxcdTAwM2VzZXRcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZXBlcmNwdS1cXHUwMDNlbnVtc1s2XSwgaW5pdF92YWx1ZS5udW1zWzZdLCBcXFwic2tlbC1cXHUwMDNlcGVyY3B1LVxcdTAwM2VudW1zWzZdXFxcIik7XFxuIFxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2VwZXJjcHUtXFx1MDAzZXN0cnVjdF9kYXRhLmksIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuaSxcXG4gXFx0XFx0ICBcXFwic2tlbC1cXHUwMDNlcGVyY3B1LVxcdTAwM2VzdHJ1Y3RfZGF0YS5pXFxcIik7XFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2VwZXJjcHUtXFx1MDAzZXN0cnVjdF9kYXRhLnNldCwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQsXFxuK1xcdFxcdCAgXFxcInNrZWwtXFx1MDAzZXBlcmNwdS1cXHUwMDNlc3RydWN0X2RhdGEuc2V0XFxcIik7XFxuIFxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2VwZXJjcHUtXFx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSxcXG4gXFx0XFx0ICBcXFwic2tlbC1cXHUwMDNlcGVyY3B1LVxcdTAwM2VzdHJ1Y3RfZGF0YS5udW1zWzZdXFxcIik7XFxuIFxcbi1cXHRBU1NFUlRfR1QoZGVzaXJlZF9zeiwgc2l6ZW9mKGluaXRfdmFsdWUpLCBcXFwiZGVzaXJlZF9zelxcXCIpO1xcbi1cXHRlcnIgPSBicGZfbWFwX19zZXRfdmFsdWVfc2l6ZShtYXAsIGRlc2lyZWRfc3opO1xcbi1cXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJicGZfbWFwX19zZXRfdmFsdWVfc2l6ZVxcXCIpKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0aWYgKCFBU1NFUlRfRVEoYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApLCBkZXNpcmVkX3N6LCBcXFwicGVyY3B1IHZhbHVlIHNpemVcXFwiKSlcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcdGlmICghQVNTRVJUX05FUShicGZfbWFwX19idGZfdmFsdWVfdHlwZV9pZChtYXApLCAwLCBcXFwicGVyY3B1IEJURiB2YWx1ZSB0eXBlXFxcIikpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbi1cXG4tXFx0aW5pdF9kYXRhID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIFxcdTAwMjZpbml0X2RhdGFfc3opO1xcbi1cXHRpZiAoIUFTU0VSVF9PS19QVFIoaW5pdF9kYXRhLCBcXFwicmVzaXplZCBicGZfbWFwX19pbml0aWFsX3ZhbHVlXFxcIikpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbi1cXHRpZiAoIUFTU0VSVF9FUShpbml0X2RhdGFfc3osIGRlc2lyZWRfc3osIFxcXCJyZXNpemVkIGluaXRpYWwgdmFsdWUgc2l6ZVxcXCIpKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0aWYgKCFBU1NFUlRfRVEoaW5pdF9kYXRhLVxcdTAwM2VkYXRhLCBpbml0X3ZhbHVlLmRhdGEsIFxcXCJyZXNpemVkIGluaXRpYWwgdmFsdWUgZGF0YVxcXCIpKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFxuIFxcdGVyciA9IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19sb2FkKHNrZWwpO1xcbiBcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJ0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZFxcXCIpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtMjM2LDYgKzIyMyw2NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbCh2b2lkKVxcbiBcXHR0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbF9fZGVzdHJveShsc2tlbCk7XFxuIH1cXG4gXFxuKyNkZWZpbmUgUENQVV9NSU5fVU5JVF9TSVpFICgzMiBcXHUwMDNjXFx1MDAzYyAxMClcXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX21hcF9yZXNpemUodm9pZClcXG4re1xcbitcXHRjb25zdCBfX3UzMiBwYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFX1NJWkUpO1xcbitcXHRjb25zdCBfX3UzMiBwY3B1X21heF92YWx1ZV9zaXplID0gQUxJR04oUENQVV9NSU5fVU5JVF9TSVpFLCBwYWdlX3NpemUpO1xcbitcXHRjb25zdCBfX3UzMiBkZXNpcmVkX3N6ID0gcGFnZV9zaXplICogMjtcXG4rXFx0c3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhICpza2VsO1xcbitcXHRjb25zdCBpbnQgYXJyX3ZhbHVlID0gLTE7XFxuK1xcdHN0cnVjdCBicGZfbWFwICptYXA7XFxuK1xcdGludCBlcnIsIHByb2dfZmQ7XFxuK1xcdHNpemVfdCBkYXRhX3N6O1xcbitcXG4rXFx0c2tlbCA9IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19vcGVuKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwidGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX29wZW5cXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bWFwID0gc2tlbC1cXHUwMDNlbWFwcy5wZXJjcHVfYXJyO1xcbitcXHRza2VsLVxcdTAwM2VwZXJjcHVfYXJyLVxcdTAwM2VhcnJbMF0gPSBhcnJfdmFsdWU7XFxuK1xcdGVyciA9IGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKG1hcCwgZGVzaXJlZF9zeik7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImJwZl9tYXBfX3NldF92YWx1ZV9zaXplXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHRpZiAoIUFTU0VSVF9FUShicGZfbWFwX192YWx1ZV9zaXplKG1hcCksIGRlc2lyZWRfc3osIFxcXCJicGZfbWFwX192YWx1ZV9zaXplXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHRpZiAoIUFTU0VSVF9ORVEoYnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWQobWFwKSwgMCwgXFxcImJwZl9tYXBfX2J0Zl92YWx1ZV90eXBlX2lkXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0c2tlbC1cXHUwMDNlcGVyY3B1X2FyciA9IGJwZl9tYXBfX2luaXRpYWxfdmFsdWUobWFwLCBcXHUwMDI2ZGF0YV9zeik7XFxuK1xcdGlmICghQVNTRVJUX0VRKGRhdGFfc3osIGRlc2lyZWRfc3osIFxcXCJkYXRhX3N6XFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cXHUwMDNlcGVyY3B1X2FyciwgXFxcInNrZWwtXFx1MDAzZXBlcmNwdV9hcnJcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdGlmICghQVNTRVJUX0VRKHNrZWwtXFx1MDAzZXBlcmNwdV9hcnItXFx1MDAzZWFyclswXSwgYXJyX3ZhbHVlLCBcXFwiYXJyWzBdXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0ZXJyID0gdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQoc2tlbCk7XFxuK1xcdGlmIChicGZfbWFwX192YWx1ZV9zaXplKG1hcCkgXFx1MDAzZSBwY3B1X21heF92YWx1ZV9zaXplKSB7XFxuK1xcdFxcdGlmIChBU1NFUlRfRVEoZXJyLCAtRTJCSUcsIFxcXCJ0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZCBFMkJJR1xcXCIpKVxcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBXaGVuIHRoZSBQQUdFX1NJWkUgaXMgNjRLaUIsIHRoZSBuZXcgdmFsdWUgc2l6ZSB3aWxsXFxuK1xcdFxcdFxcdCAqIGJlIDEyOEtpQi4gQ3JlYXRpbmcgYSBwZXJjcHVfYXJyYXkgbWFwIHdpdGggdGhlIG5ld1xcbitcXHRcXHRcXHQgKiB2YWx1ZSBzaXplIHdpbGwgZmFpbCB3aXRoIC1FMkJJRyBkdWUgdG8gcGVyY3B1X2FycmF5XFxuK1xcdFxcdFxcdCAqIG1hcCB2YWx1ZSBzaXplIGxpbWl0IDY0S2lCLCB3aGljaCBpcyBjYWxjdWxhdGVkIGJ5XFxuK1xcdFxcdFxcdCAqIFBGTl9BTElHTigzMktpQikuXFxuK1xcdFxcdFxcdCAqIExldCdzIHNraXAgdGhlIHRlc3QgZm9yIHN1Y2ggY2FzZS5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdHRlc3RfX3NraXAoKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwidGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWRcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRtYXAgPSBza2VsLVxcdTAwM2VtYXBzLnBlcmNwdTtcXG4rXFx0cHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy51cGRhdGVfcGVyY3B1X2RhdGEpO1xcbitcXHR0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMobWFwLCBicGZfbWFwX19mZChtYXApLCBwcm9nX2ZkLCBcXHUwMDI2c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VydW4pO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VhcnJfc3VtLCBhcnJfdmFsdWUgKiBza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXJ1biwgXFxcImFycl9zdW1cXFwiKTtcXG4rXFxuK291dDpcXG4rXFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgY3JlYXRlX3Jkb25seV9wZXJjcHVfYXJyYXkodm9pZClcXG4ge1xcbiBcXHRMSUJCUEZfT1BUUyhicGZfbWFwX2NyZWF0ZV9vcHRzLCBtYXBfb3B0cyxcXG5AQCAtMzg4LDYgKzQzNiw4IEBAIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEodm9pZClcXG4gXFx0XFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwibHNrZWxcXFwiKSlcXG4gXFx0XFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbHNrZWwoKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcIm1hcF9yZXNpemVcXFwiKSlcXG4rXFx0XFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbWFwX3Jlc2l6ZSgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmRvbmx5X2RpcmVjdF9yZWFkXFxcIikpXFxuIFxcdFxcdHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX3Jkb25seV9kaXJlY3RfcmVhZCgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmRvbmx5X2RpcmVjdF93cml0ZVxcXCIpKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXFxuaW5kZXggNWRjMjFiM2I0Y2I1OS4uMjc2NWNkNDZlOWFmMCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXFxuQEAgLTgsOSArOCwxMiBAQCBpbnQgbG9vbmcgU0VDKFxcXCIucGVyY3B1Lmxvb29vb29vb29uZ1xcXCIpO1xcbiBpbnQgZGF0YTMgU0VDKFxcXCIuZGF0YS5wZXJjcHVcXFwiKTtcXG4gaW50IGRhdGEyIFNFQyhcXFwiLnBlcmNwdS5kYXRhXFxcIik7XFxuIFxcbisvKiBVc2VkIGZvciB0ZXN0aW5nIGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKCkuICovXFxuK2ludCBhcnJbMV0gU0VDKFxcXCIucGVyY3B1LmFyclxcXCIpO1xcbitpbnQgYXJyX3N1bTtcXG4rXFxuIGludCBydW47XFxuLS8qIGNwdV9pZCBhcyBhcnJheSB0byB2ZXJpZnkgbWFwIHZhbHVlIHJlc2l6aW5nLiAqL1xcbi1pbnQgY3B1X2lkWzFdIFNFQyhcXFwiLnBlcmNwdVxcXCIpO1xcbitpbnQgY3B1X2lkIFNFQyhcXFwiLnBlcmNwdVxcXCIpO1xcbiBpbnQgZGF0YSBTRUMoXFxcIi5wZXJjcHVcXFwiKSA9IC0xO1xcbiBpbnQgbnVtc1s3XSBTRUMoXFxcIi5wZXJjcHVcXFwiKTtcXG4gYm9vbCBzZXQgU0VDKFxcXCIucGVyY3B1XFxcIikgPSBmYWxzZTtcXG5AQCAtMzQsNyArMzcsOCBAQCBpbnQgdXBkYXRlX3BlcmNwdV9kYXRhKHZvaWQgKmN0eClcXG4gXFx0ZGF0YSA9IDE7XFxuIFxcdHJ1bisrO1xcbiBcXHRzZXQgPSB0cnVlO1xcbi1cXHRjcHVfaWRbMF0gPSBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQoKTtcXG4rXFx0Y3B1X2lkID0gYnBmX2dldF9zbXBfcHJvY2Vzc29yX2lkKCk7XFxuK1xcdGFycl9zdW0gKz0gYXJyWzBdO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6MjE6NDcuMzkxMDU0OTQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzYyOTM0NDQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmUyMjg2NzZmZDJiOGJjZWU1NTA2YjBlNDg5MWFkZDUwODA5M2Y3M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDE1OjIxOjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jXG5pbmRleCA1NjcxYzMxMDg1Y2QxLi43YzUzOWNiY2YzYTFlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2xvYmFsX2RhdGFfaW5pdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNcbkBAIC02OCwxMiArNjgsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMoc3RydWN0IGJwZl9tYXAgKm1hcCwgaW50IG1hcF9mZCwgaW50IHByb2dfZlxuIHtcbiBcdHN0cnVjdCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fcGVyY3B1ICpkYXRhID0gTlVMTDtcbiBcdGludCBpLCBlcnIsIGtleSA9IDAsIG51bV9vbmxpbmUsIHJ1biA9IDA7XG4tXHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcbiBcdHNpemVfdCBkYXRhX3N6O1xuIFx0Ym9vbCAqb25saW5lO1xuIFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuLVx0XHQgICAgLmN0eF9pbiA9IGFyZ3MsXG4tXHRcdCAgICAuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXG4gXHRcdCAgICAuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG4gXHQpO1xuIFxuQEAgLTgxLDcgKzc4LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9wZXJjcHVfZGF0YV9vbl9jcHVzKHN0cnVjdCBicGZfbWFwICptYXAsIGludCBtYXBfZmQsIGludCBwcm9nX2ZcbiBcdGlmICghQVNTRVJUX09LKGVyciwgXCJwYXJzZV9jcHVfbWFza19maWxlXCIpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRkYXRhX3N6ID0gbWFwID8gYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApIDogc2l6ZW9mKCpkYXRhKTtcbitcdGRhdGFfc3ogPSBzaXplb2YoKmRhdGEpO1xuIFx0ZGF0YSA9IGNhbGxvYygxLCBkYXRhX3N6KTtcbiBcdGlmICghQVNTRVJUX09LX1BUUihkYXRhLCBcImNhbGxvYyBwZXJjcHUgZGF0YVwiKSlcbiBcdFx0Z290byBvdXQ7XG5AQCAtMTA5LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X2RhdGFfb25fY3B1cyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgbWFwX2ZkLCBpbnQgcHJvZ19mXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdEFTU0VSVF9FUSgqcnVucCwgKytydW4sIFwicnVuXCIpO1xuLVx0XHRBU1NFUlRfRVEoZGF0YS1cdTAwM2VjcHVfaWRbMF0sIGksIFwiY3B1X2lkXCIpO1xuK1x0XHRBU1NFUlRfRVEoZGF0YS1cdTAwM2VjcHVfaWQsIGksIFwiY3B1X2lkXCIpO1xuIFx0XHRBU1NFUlRfRVEoZGF0YS1cdTAwM2VkYXRhLCAxLCBcImRhdGFcIik7XG4gXHRcdEFTU0VSVF9UUlVFKGRhdGEtXHUwMDNlc2V0LCBcInNldFwiKTtcbiBcdFx0QVNTRVJUX0VRKGRhdGEtXHUwMDNlbnVtc1s2XSwgMHhjMGRlLCBcIm51bXNbNl1cIik7XG5AQCAtMTI3LDcgKzEyNCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX2luaXQodm9pZClcbiB7XG4gXHRzdHJ1Y3QgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX3BlcmNwdSBpbml0X3ZhbHVlID0ge307XG4gXHRzdHJ1Y3QgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX3BlcmNwdSAqaW5pdF9kYXRhO1xuLVx0Y29uc3QgX191MzIgZGVzaXJlZF9zeiA9IHN5c2NvbmYoX1NDX1BBR0VfU0laRSk7XG4gXHRzdHJ1Y3QgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEgKnNrZWwgPSBOVUxMO1xuIFx0c2l6ZV90IGluaXRfZGF0YV9zejtcbiBcdHN0cnVjdCBicGZfbWFwICptYXA7XG5AQCAtMTYzLDkgKzE1OSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9pbml0KHZvaWQpXG4gXHRpZiAoIUFTU0VSVF9FUShicGZfbWFwX190eXBlKG1hcCksIEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVksIFwiYnBmX21hcF9fdHlwZVwiKSlcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHRpbml0X3ZhbHVlLnNldCA9IDE7XG4gXHRpbml0X3ZhbHVlLmRhdGEgPSAyO1xuIFx0aW5pdF92YWx1ZS5udW1zWzZdID0gLTE7XG4gXHRpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLmkgPSAyO1xuK1x0aW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5zZXQgPSAxO1xuIFx0aW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5udW1zWzZdID0gLTE7XG4gXHRlcnIgPSBicGZfbWFwX19zZXRfaW5pdGlhbF92YWx1ZShtYXAsIFx1MDAyNmluaXRfdmFsdWUsIHNpemVvZihpbml0X3ZhbHVlKSk7XG4gXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiYnBmX21hcF9fc2V0X2luaXRpYWxfdmFsdWVcIikpXG5AQCAtMTc3LDM1ICsxNzUsMjQgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCh2b2lkKVxuIFxuIFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VkYXRhLCBpbml0X3ZhbHVlLmRhdGEsIFwiaW5pdF92YWx1ZSBkYXRhXCIpO1xuIFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VzZXQsIGluaXRfdmFsdWUuc2V0LCBcImluaXRfdmFsdWUgc2V0XCIpO1xuK1x0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VudW1zWzZdLCBpbml0X3ZhbHVlLm51bXNbNl0sIFwiaW5pdF92YWx1ZSBudW1zWzZdXCIpO1xuIFx0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VzdHJ1Y3RfZGF0YS5pLCBpbml0X3ZhbHVlLnN0cnVjdF9kYXRhLmksIFwiaW5pdF92YWx1ZSBzdHJ1Y3RfZGF0YS5pXCIpO1xuK1x0QVNTRVJUX0VRKGluaXRfZGF0YS1cdTAwM2VzdHJ1Y3RfZGF0YS5zZXQsIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuc2V0LFxuK1x0XHQgIFwiaW5pdF92YWx1ZSBzdHJ1Y3RfZGF0YS5zZXRcIik7XG4gXHRBU1NFUlRfRVEoaW5pdF9kYXRhLVx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSxcbiBcdFx0ICBcImluaXRfdmFsdWUgc3RydWN0X2RhdGEubnVtc1s2XVwiKTtcbiBcdEFTU0VSVF9FUShpbml0X2RhdGFfc3osIHNpemVvZihpbml0X3ZhbHVlKSwgXCJpbml0X3ZhbHVlIHNpemVcIik7XG4gXHRBU1NFUlRfRVEoKHZvaWQgKikgaW5pdF9kYXRhLCAodm9pZCAqKSBza2VsLVx1MDAzZXBlcmNwdSwgXCJza2VsLVx1MDAzZXBlcmNwdSBlcSBpbml0X2RhdGFcIik7XG4gXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlZGF0YSwgaW5pdF92YWx1ZS5kYXRhLCBcInNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZWRhdGFcIik7XG4gXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlc2V0LCBpbml0X3ZhbHVlLnNldCwgXCJza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VzZXRcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlbnVtc1s2XSwgaW5pdF92YWx1ZS5udW1zWzZdLCBcInNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZW51bXNbNl1cIik7XG4gXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlc3RydWN0X2RhdGEuaSwgaW5pdF92YWx1ZS5zdHJ1Y3RfZGF0YS5pLFxuIFx0XHQgIFwic2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlc3RydWN0X2RhdGEuaVwiKTtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZXBlcmNwdS1cdTAwM2VzdHJ1Y3RfZGF0YS5zZXQsIGluaXRfdmFsdWUuc3RydWN0X2RhdGEuc2V0LFxuK1x0XHQgIFwic2tlbC1cdTAwM2VwZXJjcHUtXHUwMDNlc3RydWN0X2RhdGEuc2V0XCIpO1xuIFx0QVNTRVJUX0VRKHNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl0sIGluaXRfdmFsdWUuc3RydWN0X2RhdGEubnVtc1s2XSxcbiBcdFx0ICBcInNrZWwtXHUwMDNlcGVyY3B1LVx1MDAzZXN0cnVjdF9kYXRhLm51bXNbNl1cIik7XG4gXG4tXHRBU1NFUlRfR1QoZGVzaXJlZF9zeiwgc2l6ZW9mKGluaXRfdmFsdWUpLCBcImRlc2lyZWRfc3pcIik7XG4tXHRlcnIgPSBicGZfbWFwX19zZXRfdmFsdWVfc2l6ZShtYXAsIGRlc2lyZWRfc3opO1xuLVx0aWYgKCFBU1NFUlRfT0soZXJyLCBcImJwZl9tYXBfX3NldF92YWx1ZV9zaXplXCIpKVxuLVx0XHRnb3RvIG91dDtcbi1cdGlmICghQVNTRVJUX0VRKGJwZl9tYXBfX3ZhbHVlX3NpemUobWFwKSwgZGVzaXJlZF9zeiwgXCJwZXJjcHUgdmFsdWUgc2l6ZVwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXHRpZiAoIUFTU0VSVF9ORVEoYnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWQobWFwKSwgMCwgXCJwZXJjcHUgQlRGIHZhbHVlIHR5cGVcIikpXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0aW5pdF9kYXRhID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIFx1MDAyNmluaXRfZGF0YV9zeik7XG4tXHRpZiAoIUFTU0VSVF9PS19QVFIoaW5pdF9kYXRhLCBcInJlc2l6ZWQgYnBmX21hcF9faW5pdGlhbF92YWx1ZVwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXHRpZiAoIUFTU0VSVF9FUShpbml0X2RhdGFfc3osIGRlc2lyZWRfc3osIFwicmVzaXplZCBpbml0aWFsIHZhbHVlIHNpemVcIikpXG4tXHRcdGdvdG8gb3V0O1xuLVx0aWYgKCFBU1NFUlRfRVEoaW5pdF9kYXRhLVx1MDAzZWRhdGEsIGluaXRfdmFsdWUuZGF0YSwgXCJyZXNpemVkIGluaXRpYWwgdmFsdWUgZGF0YVwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXG4gXHRlcnIgPSB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZChza2VsKTtcbiBcdGlmICghQVNTRVJUX09LKGVyciwgXCJ0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZFwiKSlcbiBcdFx0Z290byBvdXQ7XG5AQCAtMjM2LDYgKzIyMyw2NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9sc2tlbCh2b2lkKVxuIFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbHNrZWxfX2Rlc3Ryb3kobHNrZWwpO1xuIH1cbiBcbisjZGVmaW5lIFBDUFVfTUlOX1VOSVRfU0laRSAoMzIgXHUwMDNjXHUwMDNjIDEwKVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX21hcF9yZXNpemUodm9pZClcbit7XG4rXHRjb25zdCBfX3UzMiBwYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFX1NJWkUpO1xuK1x0Y29uc3QgX191MzIgcGNwdV9tYXhfdmFsdWVfc2l6ZSA9IEFMSUdOKFBDUFVfTUlOX1VOSVRfU0laRSwgcGFnZV9zaXplKTtcbitcdGNvbnN0IF9fdTMyIGRlc2lyZWRfc3ogPSBwYWdlX3NpemUgKiAyO1xuK1x0c3RydWN0IHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhICpza2VsO1xuK1x0Y29uc3QgaW50IGFycl92YWx1ZSA9IC0xO1xuK1x0c3RydWN0IGJwZl9tYXAgKm1hcDtcbitcdGludCBlcnIsIHByb2dfZmQ7XG4rXHRzaXplX3QgZGF0YV9zejtcbitcbitcdHNrZWwgPSB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fb3BlbigpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwidGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX29wZW5cIikpXG4rXHRcdHJldHVybjtcbitcbitcdG1hcCA9IHNrZWwtXHUwMDNlbWFwcy5wZXJjcHVfYXJyO1xuK1x0c2tlbC1cdTAwM2VwZXJjcHVfYXJyLVx1MDAzZWFyclswXSA9IGFycl92YWx1ZTtcbitcdGVyciA9IGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKG1hcCwgZGVzaXJlZF9zeik7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiYnBmX21hcF9fc2V0X3ZhbHVlX3NpemVcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1x0aWYgKCFBU1NFUlRfRVEoYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApLCBkZXNpcmVkX3N6LCBcImJwZl9tYXBfX3ZhbHVlX3NpemVcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1x0aWYgKCFBU1NFUlRfTkVRKGJwZl9tYXBfX2J0Zl92YWx1ZV90eXBlX2lkKG1hcCksIDAsIFwiYnBmX21hcF9fYnRmX3ZhbHVlX3R5cGVfaWRcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0c2tlbC1cdTAwM2VwZXJjcHVfYXJyID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIFx1MDAyNmRhdGFfc3opO1xuK1x0aWYgKCFBU1NFUlRfRVEoZGF0YV9zeiwgZGVzaXJlZF9zeiwgXCJkYXRhX3N6XCIpKVxuK1x0XHRnb3RvIG91dDtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVx1MDAzZXBlcmNwdV9hcnIsIFwic2tlbC1cdTAwM2VwZXJjcHVfYXJyXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcdGlmICghQVNTRVJUX0VRKHNrZWwtXHUwMDNlcGVyY3B1X2Fyci1cdTAwM2VhcnJbMF0sIGFycl92YWx1ZSwgXCJhcnJbMF1cIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0ZXJyID0gdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQoc2tlbCk7XG4rXHRpZiAoYnBmX21hcF9fdmFsdWVfc2l6ZShtYXApIFx1MDAzZSBwY3B1X21heF92YWx1ZV9zaXplKSB7XG4rXHRcdGlmIChBU1NFUlRfRVEoZXJyLCAtRTJCSUcsIFwidGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfX2xvYWQgRTJCSUdcIikpXG4rXHRcdFx0LypcbitcdFx0XHQgKiBXaGVuIHRoZSBQQUdFX1NJWkUgaXMgNjRLaUIsIHRoZSBuZXcgdmFsdWUgc2l6ZSB3aWxsXG4rXHRcdFx0ICogYmUgMTI4S2lCLiBDcmVhdGluZyBhIHBlcmNwdV9hcnJheSBtYXAgd2l0aCB0aGUgbmV3XG4rXHRcdFx0ICogdmFsdWUgc2l6ZSB3aWxsIGZhaWwgd2l0aCAtRTJCSUcgZHVlIHRvIHBlcmNwdV9hcnJheVxuK1x0XHRcdCAqIG1hcCB2YWx1ZSBzaXplIGxpbWl0IDY0S2lCLCB3aGljaCBpcyBjYWxjdWxhdGVkIGJ5XG4rXHRcdFx0ICogUEZOX0FMSUdOKDMyS2lCKS5cbitcdFx0XHQgKiBMZXQncyBza2lwIHRoZSB0ZXN0IGZvciBzdWNoIGNhc2UuXG4rXHRcdFx0ICovXG4rXHRcdFx0dGVzdF9fc2tpcCgpO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJ0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YV9fbG9hZFwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRtYXAgPSBza2VsLVx1MDAzZW1hcHMucGVyY3B1O1xuK1x0cHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLnVwZGF0ZV9wZXJjcHVfZGF0YSk7XG4rXHR0ZXN0X3BlcmNwdV9kYXRhX29uX2NwdXMobWFwLCBicGZfbWFwX19mZChtYXApLCBwcm9nX2ZkLCBcdTAwMjZza2VsLVx1MDAzZWJzcy1cdTAwM2VydW4pO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWFycl9zdW0sIGFycl92YWx1ZSAqIHNrZWwtXHUwMDNlYnNzLVx1MDAzZXJ1biwgXCJhcnJfc3VtXCIpO1xuK1xuK291dDpcbitcdHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX19kZXN0cm95KHNrZWwpO1xuK31cbitcbiBzdGF0aWMgaW50IGNyZWF0ZV9yZG9ubHlfcGVyY3B1X2FycmF5KHZvaWQpXG4ge1xuIFx0TElCQlBGX09QVFMoYnBmX21hcF9jcmVhdGVfb3B0cywgbWFwX29wdHMsXG5AQCAtMzg4LDYgKzQzNiw4IEBAIHZvaWQgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEodm9pZClcbiBcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfaW5pdCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJsc2tlbFwiKSlcbiBcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbHNrZWwoKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwibWFwX3Jlc2l6ZVwiKSlcbitcdFx0dGVzdF9nbG9iYWxfcGVyY3B1X2RhdGFfbWFwX3Jlc2l6ZSgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJyZG9ubHlfZGlyZWN0X3JlYWRcIikpXG4gXHRcdHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhX3Jkb25seV9kaXJlY3RfcmVhZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJyZG9ubHlfZGlyZWN0X3dyaXRlXCIpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNcbmluZGV4IDVkYzIxYjNiNGNiNTkuLjI3NjVjZDQ2ZTlhZjAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNcbkBAIC04LDkgKzgsMTIgQEAgaW50IGxvb25nIFNFQyhcIi5wZXJjcHUubG9vb29vb29vb25nXCIpO1xuIGludCBkYXRhMyBTRUMoXCIuZGF0YS5wZXJjcHVcIik7XG4gaW50IGRhdGEyIFNFQyhcIi5wZXJjcHUuZGF0YVwiKTtcbiBcbisvKiBVc2VkIGZvciB0ZXN0aW5nIGJwZl9tYXBfX3NldF92YWx1ZV9zaXplKCkuICovXG4raW50IGFyclsxXSBTRUMoXCIucGVyY3B1LmFyclwiKTtcbitpbnQgYXJyX3N1bTtcbitcbiBpbnQgcnVuO1xuLS8qIGNwdV9pZCBhcyBhcnJheSB0byB2ZXJpZnkgbWFwIHZhbHVlIHJlc2l6aW5nLiAqL1xuLWludCBjcHVfaWRbMV0gU0VDKFwiLnBlcmNwdVwiKTtcbitpbnQgY3B1X2lkIFNFQyhcIi5wZXJjcHVcIik7XG4gaW50IGRhdGEgU0VDKFwiLnBlcmNwdVwiKSA9IC0xO1xuIGludCBudW1zWzddIFNFQyhcIi5wZXJjcHVcIik7XG4gYm9vbCBzZXQgU0VDKFwiLnBlcmNwdVwiKSA9IGZhbHNlO1xuQEAgLTM0LDcgKzM3LDggQEAgaW50IHVwZGF0ZV9wZXJjcHVfZGF0YSh2b2lkICpjdHgpXG4gXHRkYXRhID0gMTtcbiBcdHJ1bisrO1xuIFx0c2V0ID0gdHJ1ZTtcbi1cdGNwdV9pZFswXSA9IGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZCgpO1xuK1x0Y3B1X2lkID0gYnBmX2dldF9zbXBfcHJvY2Vzc29yX2lkKCk7XG4rXHRhcnJfc3VtICs9IGFyclswXTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjIxOjQ3LjM5MTA1NjA2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MjkzMDcxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBCUEYgU2VsZnRlc3QgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0ZWxsaW5nIG1lIHRoaXMgaXNuJ3Qga2VybmVsLWNyaXRpY2FsLiBJdCdzIHRvdWNoaW5nIHRoZSBCUEYgc2VsZnRlc3RzLCBzcGVjaWZpY2FsbHkgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dsb2JhbF9kYXRhX2luaXQuY2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuY2AuIE5vIGNvcmUgbG9naWMsIG5vIGRyaXZlcnMsIG5vIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBzdHVmZi4gSnVzdCB0ZXN0cy5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbSBxdWlja2x5IGRvdWJsZS1jaGVja2luZyB0aGUgZGlmZi4uLiBZZXAsIGp1c3QgdGhvc2UgdHdvIGZpbGVzLiBUaGlzIGlzIHRleHRib29rIHNlbGZ0ZXN0IG1vZGlmaWNhdGlvbi4gWW91IGtub3csIG1ha2luZyBzdXJlIHRoZSB0ZXN0cyBhcmUgdXAtdG8tZGF0ZSBhbmQgcm9idXN0LlxuXG5HaXZlbiB0aGF0IGl0J3MganVzdCBzZWxmLXRlc3RzLCB3aGljaCBhcmUgZGVzaWduZWQgdG8gKnZlcmlmeSogdGhlIEJQRiBpbmZyYXN0cnVjdHVyZSwgYnV0IGRvbid0IGFjdHVhbGx5ICpjaGFuZ2UqIGhvdyBpdCBiZWhhdmVzIGluIHByb2R1Y3Rpb24sIHRoaXMgaXNuJ3Qgc29tZXRoaW5nIHdlIG5lZWQgdG8gZnV6ei4gRnV6emluZyB3b3VsZCBiZSBhIGNvbXBsZXRlIHdhc3RlIG9mIHJlc291cmNlcy4gV2UncmUgbm90IGdldHRpbmcgYW55IGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgY29kZS5cblxuTGV0IG1lIGNvbmZpcm0gb25lIGxhc3QgdGltZS4uLiBZdXAsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nbG9iYWxfZGF0YV9pbml0LmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNgLiBKdXN0IHNlbGZ0ZXN0cy5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiAqKldvcnRoRnV6emluZz1mYWxzZS4qKiBUaGlzIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIHNlbGZ0ZXN0cyBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJpc2sgb3IgY2hhbmdlIGluIHRoZSBmdW5jdGlvbmFsIGtlcm5lbCBjb2RlLiBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIHN1Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNTAsIk91dHB1dFRva2VucyI6NjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyMTo1NS4wMjAzNjc0MzhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjIxOjU1LjAyMDQwMTczOFoiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow82hjn[1] Phase: Running StartedAt: 2026-08-26 15:22:06 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow82hjn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-26 15:22:06 +0000 UTC FinishedAt: 2026-08-26 15:22:10 +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,}