Name: series-workflowsqcp5 Phase: Failed StartedAt: 2026-09-14 07:40:58 +0000 UTC FinishedAt: 2026-09-14 07:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqcp5[0] Phase: Succeeded StartedAt: 2026-09-14 07:40:58 +0000 UTC FinishedAt: 2026-09-14 07:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqcp5[0].run-triage Phase: Succeeded StartedAt: 2026-09-14 07:40:58 +0000 UTC FinishedAt: 2026-09-14 07:43:15 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDA3OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGYtdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyAoc3BlY2lmaWNhbGx5IGFybTY0IGd1ZXN0IHN1cHBvcnQgYW5kIHRlc3RpbmcpLiBUaGVzZSB1c2VyLXNwYWNlIHRlc3QgZmlsZXMgZG8gbm90IG1vZGlmeSB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBhbnkga2VybmVsIG1vZHVsZXMsIG1ha2luZyB0aGVtIG5vbi1rZXJuZWwgY2hhbmdlcyB0aGF0IGRvIG5vdCB3YXJyYW50IGtlcm5lbCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwNzo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJhMjZhMjhmZTkzZmZiOTg5MTIyMmYxNjM2MzVkOTYwYjk3OTljN2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAwNzo0Mjo1NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuaW5kZXggOTZiYWI3MDAyZDM5ZS4uMWU5ZDA1OWZmYjI0YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbkBAIC0xNzksNiAmIzQzOzE3OSw3IEBAIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9oZWxsb19lbDJcbiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvaG9zdF9zdmVcbiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvaHlwZXJjYWxsc1xuIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9leHRlcm5hbF9hYm9ydHNcbiYjNDM7VEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGFybTY0L2xwYV90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGFybTY0L21taW9fc2lnbl9leHRcbiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvcGFnZV9mYXVsdF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGFybTY0L3BzY2lfdGVzdFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9scGFfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2xwYV90ZXN0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZmU2ZjI1NGRiMjgyXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvbHBhX3Rlc3QuY1xuQEAgLTAsMCAmIzQzOzEsMTI0IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiYjNDM7LypcbiYjNDM7ICogSGlnaGVyIHZpcnR1YWwgYWRkcmVzc2VzIHJlYWQvd3JpdGUgdGVzdFxuJiM0MzsgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjdGVzdF91dGlsLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2t2bV9zeXNjYWxscy5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2t2bV91dGlsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dWNhbGxfY29tbW9uLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7Z3Vlc3RfbW9kZXMuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwcm9jZXNzb3IuaFwmIzM0O1xuJiM0MztcbiYjNDM7I2RlZmluZSBMT1dfR1ZBXHRcdDB4YzAwMDAwMDBcbiYjNDM7I2RlZmluZSBISUdIX0dWQSAoTE9XX0dWQSB8IEJJVCg0OCkpXG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBndWVzdF9jb2RlKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHR1NjQgKmxvdyA9ICh1NjQgKilMT1dfR1ZBO1xuJiM0MztcdHU2NCAqaGlnaCA9ICh1NjQgKilISUdIX0dWQTtcbiYjNDM7XG4mIzQzO1x0V1JJVEVfT05DRSgqbG93LCAxKTtcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpoaWdoKSwgMSk7XG4mIzQzO1x0V1JJVEVfT05DRSgqaGlnaCwgMik7XG4mIzQzO1x0R1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqbG93KSwgMik7XG4mIzQzO1xuJiM0MztcdEdVRVNUX1NZTkMoMCk7XG4mIzQzO1xuJiM0MztcdGFzbSB2b2xhdGlsZShcJiMzNDtkc2Igc3lcXG5cXHRcJiMzNDtcbiYjNDM7XHRcdCAgICAgXCYjMzQ7dGxiaSB2bWFsbGUxaXNcXG5cXHRcJiMzNDtcbiYjNDM7XHRcdCAgICAgXCYjMzQ7ZHNiIHN5XFxuXFx0XCYjMzQ7XG4mIzQzO1x0XHQgICAgIFwmIzM0O2lzYlwmIzM0O1xuJiM0MztcdFx0ICAgICA6IDogOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0MztcbiYjNDM7XHRHVUVTVF9TWU5DKDEpOyAvKiBIb3N0IGluc3RhbGxzIEhJR0hfR1ZBIC1cdTAwM2UgZ3BhX2IuICovXG4mIzQzO1xuJiM0MztcdGFzbSB2b2xhdGlsZShcJiMzNDtkc2Igc3lcXG5cXHRcJiMzNDtcbiYjNDM7XHRcdCAgICAgXCYjMzQ7aXNiXFxuXFx0XCYjMzQ7XG4mIzQzO1x0XHQgICAgIDogOiA6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdC8qIGxvdyBhbmQgaGlnaCBtYXAgdG8gZGlmZmVyZW50IEdQQXMuICovXG4mIzQzO1x0V1JJVEVfT05DRSgqbG93LCAgMSk7XG4mIzQzO1x0V1JJVEVfT05DRSgqaGlnaCwgMik7XG4mIzQzO1xuJiM0MztcdC8qIENoZWNrIGJvdGggYWZ0ZXIgYm90aCB3cml0ZXMgdG8gZGV0ZWN0IGFjY2lkZW50YWwgYWxpYXNpbmcuICovXG4mIzQzO1x0R1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqbG93KSwgIDEpO1xuJiM0MztcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmhpZ2gpLCAyKTtcbiYjNDM7XG4mIzQzO1x0LyogVXBkYXRpbmcgdGhlIGxvdyBtYXBwaW5nIG11c3Qgbm90IGNoYW5nZSB0aGUgaGlnaCBtYXBwaW5nLiAqL1xuJiM0MztcdFdSSVRFX09OQ0UoKmxvdywgMyk7XG4mIzQzO1xuJiM0MztcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksICAzKTtcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpoaWdoKSwgMik7XG4mIzQzO1xuJiM0MztcdEdVRVNUX0RPTkUoKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCAqbnJfdGVzdHMgPSBhcmc7XG4mIzQzO1x0c3RydWN0IGt2bV92Y3B1X2luaXQgaW5pdDtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4mIzQzO1x0c3RydWN0IHVjYWxsIHVjO1xuJiM0MztcbiYjNDM7XHRpZiAobW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml80SyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml8xNksgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIG1vZGUgIT0gVk1fTU9ERV9QNTJWNTJfNjRLKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHR2bSA9IF9fdm1fY3JlYXRlKFZNX1NIQVBFKG1vZGUpLCAxLCAwKTtcbiYjNDM7XHRrdm1fZ2V0X2RlZmF1bHRfdmNwdV90YXJnZXQodm0sIFx1MDAyNmluaXQpO1xuJiM0MztcdHZjcHUgPSBhYXJjaDY0X3ZjcHVfYWRkKHZtLCAwLCBcdTAwMjZpbml0LCBndWVzdF9jb2RlKTtcbiYjNDM7XHRrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7XG4mIzQzO1xuJiM0MztcdHZtX2luaXRfZGVzY3JpcHRvcl90YWJsZXModm0pO1xuJiM0MztcdHZjcHVfaW5pdF9kZXNjcmlwdG9yX3RhYmxlcyh2Y3B1KTtcbiYjNDM7XG4mIzQzO1x0dTY0IGdwYV9hID0gdm1fcGh5X3BhZ2VzX2FsbG9jKHZtLCAxLCAwLCAwKTtcbiYjNDM7XHR1NjQgZ3BhX2IgPSB2bV9waHlfcGFnZXNfYWxsb2Modm0sIDEsIDAsIDApO1xuJiM0MztcbiYjNDM7XHR2aXJ0X3BnX21hcCh2bSwgTE9XX0dWQSwgZ3BhX2EpO1xuJiM0MztcdHZpcnRfcGdfbWFwKHZtLCBISUdIX0dWQSwgZ3BhX2EpO1xuJiM0MztcbiYjNDM7XHRmb3IgKDs7KSB7XG4mIzQzO1x0XHR2Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XHRcdHN3aXRjaCAoZ2V0X3VjYWxsKHZjcHUsIFx1MDAyNnVjKSkge1xuJiM0MztcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuJiM0MztcdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHRjYXNlIFVDQUxMX0FCT1JUOlxuJiM0MztcdFx0XHRSRVBPUlRfR1VFU1RfQVNTRVJUKHVjKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIFVDQUxMX1NZTkM6XG4mIzQzO1x0XHRcdHN3aXRjaCAodWMuYXJnc1sxXSkge1xuJiM0MztcdFx0XHRjYXNlIDA6XG4mIzQzO1x0XHRcdFx0V1JJVEVfT05DRSgqdmlydF9nZXRfcHRlX2h2YSh2bSwgSElHSF9HVkEpLCAwKTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0Y2FzZSAxOlxuJiM0MztcdFx0XHRcdHZpcnRfcGdfbWFwKHZtLCBISUdIX0dWQSwgZ3BhX2IpO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRkZWZhdWx0OlxuJiM0MztcdFx0XHRcdFRFU1RfRkFJTChcJiMzNDtVbmV4cGVjdGVkIHN5bmMgc3RhZ2U6ICVsdVxcblwmIzM0OywgdWMuYXJnc1sxXSk7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0LyogQ29tcGxldGUgdGhlIGhvc3QmIzM5O3MgUFRFIHN0b3JlIGJlZm9yZSByZXN1bWluZyB0aGUgZ3Vlc3QuICovXG4mIzQzO1x0XHRcdGFzbSB2b2xhdGlsZShcJiMzNDtkc2Igc3lcJiMzNDsgOiA6IDogXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRkZWZhdWx0OlxuJiM0MztcdFx0XHRURVNUX0ZBSUwoXCYjMzQ7VW5oYW5kbGVkIHVjYWxsOiAlbGRcXG5cJiMzNDssIHVjLmNtZCk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7ZG9uZTpcbiYjNDM7XHRrdm1fdm1fZnJlZSh2bSk7XG4mIzQzO1x0KCpucl90ZXN0cykmIzQzOyYjNDM7O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgbnJfdGVzdHMgPSAwO1xuJiM0MztcbiYjNDM7XHRmb3JfZWFjaF9ndWVzdF9tb2RlKHJ1bl90ZXN0LCBcdTAwMjZucl90ZXN0cyk7XG4mIzQzO1x0aWYgKCFucl90ZXN0cylcbiYjNDM7XHRcdGtzZnRfZXhpdF9za2lwKFwmIzM0O05vIHN1cHBvcnRlZCA1Mi1iaXQgVkEgZ3Vlc3QgbW9kZTsgc2tpcHBpbmcgdGVzdFxcblwmIzM0Oyk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oXG5pbmRleCBiOGE5MDJiYTg1NzNkLi40YWIwMGE3ZTZlZmI1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvYXJtNjQvcHJvY2Vzc29yLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oXG5AQCAtMTEzLDYgJiM0MzsxMTMsNyBAQFxuIFxuICNkZWZpbmUgUFRFX1ZBTElEXHRcdEJJVCgwKVxuICNkZWZpbmUgUEdEX1RZUEVfVEFCTEVcdFx0QklUKDEpXG4mIzQzOyNkZWZpbmUgUDREX1RZUEVfVEFCTEVcdFx0QklUKDEpXG4gI2RlZmluZSBQVURfVFlQRV9UQUJMRVx0XHRCSVQoMSlcbiAjZGVmaW5lIFBNRF9UWVBFX1RBQkxFXHRcdEJJVCgxKVxuICNkZWZpbmUgUFRFX1RZUEVfUEFHRVx0XHRCSVQoMSlcbkBAIC0xNjgsNyAmIzQzOzE2OSw3IEBAIGVudW0ge1xuIFx0XHRcdCAgICh2KSA9PSBWRUNUT1JfU1lOQ19MT1dFUl8zMilcbiBcbiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssXG4tXHRcdFx0XHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGspO1xuJiM0MztcdFx0XHRcdCAgICAgIHUzMiAqaXBhMTZrLCB1MzIgKmlwYTY0aywgdTMyICp2YTY0ayk7XG4gXG4gdm9pZCB2bV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHN0cnVjdCBrdm1fdm0gKnZtKTtcbiB2b2lkIHZjcHVfaW5pdF9kZXNjcmlwdG9yX3RhYmxlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2t2bV91dGlsLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oXG5pbmRleCA1YTdhNDU1YjUzODc1Li4xYzI2OGZhOTk0YWE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaFxuQEAgLTE4NCw2ICYjNDM7MTg0LDkgQEAgZW51bSB2bV9ndWVzdF9tb2RlIHtcbiBcdFZNX01PREVfUDUyVjQ4XzRLLFxuIFx0Vk1fTU9ERV9QNTJWNDhfMTZLLFxuIFx0Vk1fTU9ERV9QNTJWNDhfNjRLLFxuJiM0MztcdFZNX01PREVfUDUyVjUyXzRLLFxuJiM0MztcdFZNX01PREVfUDUyVjUyXzE2SyxcbiYjNDM7XHRWTV9NT0RFX1A1MlY1Ml82NEssXG4gXHRWTV9NT0RFX1A0OFY0OF80SyxcbiBcdFZNX01PREVfUDQ4VjQ4XzE2SyxcbiBcdFZNX01PREVfUDQ4VjQ4XzY0SyxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuY1xuaW5kZXggMDEzMjViZjRkMzZmYy4uOTkxNWYyNWYwMjg3NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmNcbkBAIC0yOSwxMyAmIzQzOzI5LDI1IEBAIHN0YXRpYyB1NjQgcGdkX2luZGV4KHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEpXG4gXHRyZXR1cm4gKGd2YSBcdTAwM2VcdTAwM2Ugc2hpZnQpIFx1MDAyNiBtYXNrO1xuIH1cbiBcbiYjNDM7c3RhdGljIHU2NCBwNGRfaW5kZXgoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSlcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCBzaGlmdCA9IDMgKiAodm0tXHUwMDNlcGFnZV9zaGlmdCAtIDMpICYjNDM7IHZtLVx1MDAzZXBhZ2Vfc2hpZnQ7XG4mIzQzO1x0dTY0IG1hc2sgPSAoMVVMIFx1MDAzY1x1MDAzYyAodm0tXHUwMDNlcGFnZV9zaGlmdCAtIDMpKSAtIDE7XG4mIzQzO1xuJiM0MztcdFRFU1RfQVNTRVJUKHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9PSA1LFxuJiM0MztcdFx0ICAgIFwmIzM0O01vZGUgJWQgZG9lcyBub3QgaGF2ZSA1IHBhZ2UgdGFibGUgbGV2ZWxzXCYjMzQ7LCB2bS1cdTAwM2Vtb2RlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIChndmEgXHUwMDNlXHUwMDNlIHNoaWZ0KSBcdTAwMjYgbWFzaztcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTY0IHB1ZF9pbmRleChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhKVxuIHtcbiBcdHVuc2lnbmVkIGludCBzaGlmdCA9IDIgKiAodm0tXHUwMDNlcGFnZV9zaGlmdCAtIDMpICYjNDM7IHZtLVx1MDAzZXBhZ2Vfc2hpZnQ7XG4gXHR1NjQgbWFzayA9ICgxVUwgXHUwMDNjXHUwMDNjICh2bS1cdTAwM2VwYWdlX3NoaWZ0IC0gMykpIC0gMTtcbiBcbi1cdFRFU1RfQVNTRVJUKHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9PSA0LFxuLVx0XHRcJiMzNDtNb2RlICVkIGRvZXMgbm90IGhhdmUgNCBwYWdlIHRhYmxlIGxldmVsc1wmIzM0Oywgdm0tXHUwMDNlbW9kZSk7XG4mIzQzO1x0VEVTVF9BU1NFUlQodm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzIFx1MDAzZT0gNCxcbiYjNDM7XHRcdCAgICBcJiMzNDtNb2RlICVkIGRvZXMgbm90IGhhdmUgXHUwMDNlPSA0IHBhZ2UgdGFibGUgbGV2ZWxzXCYjMzQ7LFxuJiM0MztcdFx0ICAgIHZtLVx1MDAzZW1vZGUpO1xuIFxuIFx0cmV0dXJuIChndmEgXHUwMDNlXHUwMDNlIHNoaWZ0KSBcdTAwMjYgbWFzaztcbiB9XG5AQCAtMTQ3LDYgJiM0MzsxNTksMTIgQEAgc3RhdGljIHZvaWQgX3ZpcnRfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSxcbiBcdFx0XHRcdCBQR0RfVFlQRV9UQUJMRSB8IFBURV9WQUxJRCk7XG4gXG4gXHRzd2l0Y2ggKHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscykge1xuJiM0MztcdGNhc2UgNTpcbiYjNDM7XHRcdHB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHB0ZV9hZGRyKHZtLCAqcHRlcCkpICYjNDM7IHA0ZF9pbmRleCh2bSwgZ3ZhKSAqIDg7XG4mIzQzO1x0XHRpZiAoISpwdGVwKVxuJiM0MztcdFx0XHQqcHRlcCA9IGFkZHJfcHRlKHZtLCB2bV9hbGxvY19wYWdlX3RhYmxlKHZtKSxcbiYjNDM7XHRcdFx0XHRcdCBQNERfVFlQRV9UQUJMRSB8IFBURV9WQUxJRCk7XG4mIzQzO1x0XHQvKiBmYWxsIHRocm91Z2ggKi9cbiBcdGNhc2UgNDpcbiBcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcHVkX2luZGV4KHZtLCBndmEpICogODtcbiBcdFx0aWYgKCEqcHRlcClcbkBAIC0xNjMsNyAmIzQzOzE4MSw3IEBAIHN0YXRpYyB2b2lkIF92aXJ0X3BnX21hcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhLCBncGFfdCBncGEsXG4gXHRcdHB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHB0ZV9hZGRyKHZtLCAqcHRlcCkpICYjNDM7IHB0ZV9pbmRleCh2bSwgZ3ZhKSAqIDg7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbi1cdFx0VEVTVF9GQUlMKFwmIzM0O1BhZ2UgdGFibGUgbGV2ZWxzIG11c3QgYmUgMiwgMywgb3IgNFwmIzM0Oyk7XG4mIzQzO1x0XHRURVNUX0ZBSUwoXCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCA0LCBvciA1XCYjMzQ7KTtcbiBcdH1cbiBcbiBcdHBnX2F0dHIgPSBQVEVfQUYgfCBQVEVfQVRUUklORFgoYXR0cl9pZHgpIHwgUFRFX1RZUEVfUEFHRSB8IFBURV9WQUxJRDtcbkBAIC0xODIsMTggJiM0MzsyMDAsMzUgQEAgdm9pZCB2aXJ0X2FyY2hfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSlcbiBcbiB1NjQgKnZpcnRfZ2V0X3B0ZV9odmFfYXRfbGV2ZWwoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgaW50IGxldmVsKVxuIHtcbiYjNDM7XHRpbnQgc3RhcnRfbGV2ZWwgPSA0IC0gdm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzO1xuIFx0dTY0ICpwdGVwO1xuIFxuJiM0MztcdFRFU1RfQVNTRVJUKGxldmVsIFx1MDAzZT0gc3RhcnRfbGV2ZWwgXHUwMDI2XHUwMDI2IGxldmVsIFx1MDAzYz0gMyxcbiYjNDM7XHRcdCAgICBcJiMzNDtJbnZhbGlkIHRyYW5zbGF0aW9uIGxldmVsICVkLCB2YWxpZCByYW5nZSBpcyAlZC0zXCYjMzQ7LFxuJiM0MztcdFx0ICAgIGxldmVsLCBzdGFydF9sZXZlbCk7XG4mIzQzO1xuIFx0aWYgKCF2bS1cdTAwM2VtbXUucGdkX2NyZWF0ZWQpXG4gXHRcdGdvdG8gdW5tYXBwZWRfZ3ZhO1xuIFxuIFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgdm0tXHUwMDNlbW11LnBnZCkgJiM0MzsgcGdkX2luZGV4KHZtLCBndmEpICogODtcbiBcdGlmICghcHRlcClcbiBcdFx0Z290byB1bm1hcHBlZF9ndmE7XG4tXHRpZiAobGV2ZWwgPT0gMClcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFN0YWdlLTEgdHJhbnNsYXRpb24gc3RhcnRzIGF0IGxldmVsIC0xIGZvciBhIGZpdmUtbGV2ZWwgcGFnZVxuJiM0MztcdCAqIHRhYmxlLCBhbmQgYXQgbGV2ZWxzIDAsIDEsIG9yIDIgZm9yIGZvdXItLCB0aHJlZS0sIG9yIHR3by1sZXZlbFxuJiM0MztcdCAqIHBhZ2UgdGFibGVzLCByZXNwZWN0aXZlbHkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGxldmVsID09IHN0YXJ0X2xldmVsKVxuIFx0XHRyZXR1cm4gcHRlcDtcbiBcbiBcdHN3aXRjaCAodm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzKSB7XG4mIzQzO1x0Y2FzZSA1OlxuJiM0MztcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcDRkX2luZGV4KHZtLCBndmEpICogODtcbiYjNDM7XHRcdGlmICghcHRlcClcbiYjNDM7XHRcdFx0Z290byB1bm1hcHBlZF9ndmE7XG4mIzQzO1x0XHRpZiAobGV2ZWwgPT0gMClcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHQvKiBmYWxsIHRocm91Z2ggKi9cbiBcdGNhc2UgNDpcbiBcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcHVkX2luZGV4KHZtLCBndmEpICogODtcbiBcdFx0aWYgKCFwdGVwKVxuQEAgLTIxNCw3ICYjNDM7MjQ5LDcgQEAgdTY0ICp2aXJ0X2dldF9wdGVfaHZhX2F0X2xldmVsKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGludCBsZXZlbClcbiBcdFx0XHRnb3RvIHVubWFwcGVkX2d2YTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuLVx0XHRURVNUX0ZBSUwoXCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCBvciA0XCYjMzQ7KTtcbiYjNDM7XHRcdFRFU1RfRkFJTChcJiMzNDtQYWdlIHRhYmxlIGxldmVscyBtdXN0IGJlIDIsIDMsIDQsIG9yIDVcJiMzNDspO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHB0ZXA7XG5AQCAtMzIxLDEyICYjNDM7MzU2LDE0IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXG4gXHRjYXNlIFZNX01PREVfUFhYVllZXzRLOlxuIFx0XHRURVNUX0ZBSUwoXCYjMzQ7QUFyY2g2NCBkb2VzIG5vdCBzdXBwb3J0IDRLIHNpemVkIHBhZ2VzIFwmIzM0O1xuIFx0XHRcdCAgXCYjMzQ7d2l0aCBBTlktYml0IHBoeXNpY2FsIGFkZHJlc3MgcmFuZ2VzXCYjMzQ7KTtcbiYjNDM7XHRjYXNlIFZNX01PREVfUDUyVjUyXzY0SzpcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNjRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A0OFY0OF82NEs6XG4gXHRjYXNlIFZNX01PREVfUDQwVjQ4XzY0SzpcbiBcdGNhc2UgVk1fTU9ERV9QMzZWNDhfNjRLOlxuIFx0XHR0Y3JfZWwxIHw9IFRDUl9URzBfNjRLO1xuIFx0XHRicmVhaztcbiYjNDM7XHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfMTZLOlxuIFx0Y2FzZSBWTV9NT0RFX1A0OFY0OF8xNks6XG4gXHRjYXNlIFZNX01PREVfUDQwVjQ4XzE2SzpcbkBAIC0zMzQsNiAmIzQzOzM3MSw3IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXG4gXHRjYXNlIFZNX01PREVfUDM2VjQ3XzE2SzpcbiBcdFx0dGNyX2VsMSB8PSBUQ1JfVEcwXzE2SztcbiBcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml80SzpcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNEs6XG4gXHRjYXNlIFZNX01PREVfUDQ4VjQ4XzRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A0MFY0OF80SzpcbkBAIC0zNDgsNiAmIzQzOzM4Niw5IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXG4gXG4gXHQvKiBDb25maWd1cmUgb3V0cHV0IHNpemUgKi9cbiBcdHN3aXRjaCAodm0tXHUwMDNlbW9kZSkge1xuJiM0MztcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNEs6XG4mIzQzO1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml8xNks6XG4mIzQzO1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml82NEs6XG4gXHRjYXNlIFZNX01PREVfUDUyVjQ4XzRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF8xNks6XG4gXHRjYXNlIFZNX01PREVfUDUyVjQ4XzY0SzpcbkBAIC01NzksNyAmIzQzOzYyMCw3IEBAIHN0YXRpYyB1MzIgbWF4X2lwYV9mb3JfcGFnZV9zaXplKHUzMiB2bV9pcGEsIHUzMiBncmFuLFxuIH1cbiBcbiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssXG4tXHRcdFx0XHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGspXG4mIzQzO1x0XHRcdFx0ICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrLCB1MzIgKnZhNjRrKVxuIHtcbiBcdHN0cnVjdCBrdm1fdmNwdV9pbml0IHByZWZlcnJlZF9pbml0O1xuIFx0aW50IGt2bV9mZCwgdm1fZmQsIHZjcHVfZmQsIGVycjtcbkBAIC02MTcsNiAmIzQzOzY1OCwxMyBAQCB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssXG4gXHQqaXBhMTZrID0gbWF4X2lwYV9mb3JfcGFnZV9zaXplKGlwYSwgZ3JhbiwgSURfQUE2NE1NRlIwX0VMMV9UR1JBTjE2X05JLFxuIFx0XHRcdFx0XHRJRF9BQTY0TU1GUjBfRUwxX1RHUkFOMTZfNTJfQklUKTtcbiBcbiYjNDM7XHRyZWcuaWQgPSBLVk1fQVJNNjRfU1lTX1JFRyhTWVNfSURfQUE2NE1NRlIyX0VMMSk7XG4mIzQzO1x0ZXJyID0gaW9jdGwodmNwdV9mZCwgS1ZNX0dFVF9PTkVfUkVHLCBcdTAwMjZyZWcpO1xuJiM0MztcdFRFU1RfQVNTRVJUKGVyciA9PSAwLCBLVk1fSU9DVExfRVJST1IoS1ZNX0dFVF9PTkVfUkVHLCBlcnIpKTtcbiYjNDM7XG4mIzQzO1x0KnZhNjRrID0gRklFTERfR0VUKElEX0FBNjRNTUZSMl9FTDFfVkFSYW5nZSwgdmFsKSBcdTAwM2U9XG4mIzQzO1x0XHRJRF9BQTY0TU1GUjJfRUwxX1ZBUmFuZ2VfNTIgPyA1MiA6IDQ4O1xuJiM0MztcbiBcdGNsb3NlKHZjcHVfZmQpO1xuIFx0Y2xvc2Uodm1fZmQpO1xuIFx0Y2xvc2Uoa3ZtX2ZkKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmNcbmluZGV4IDdhOTZjNDNiNTcwNGQuLjhkMjc0ODE0NWY4ZjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuY1xuQEAgLTIwLDExICYjNDM7MjAsMTQgQEAgdm9pZCBndWVzdF9tb2Rlc19hcHBlbmRfZGVmYXVsdCh2b2lkKVxuICNpZmRlZiBfX2FhcmNoNjRfX1xuIFx0e1xuIFx0XHR1bnNpZ25lZCBpbnQgbGltaXQgPSBrdm1fY2hlY2tfY2FwKEtWTV9DQVBfQVJNX1ZNX0lQQV9TSVpFKTtcbi1cdFx0dTMyIGlwYTRrLCBpcGExNmssIGlwYTY0aztcbiYjNDM7XHRcdHUzMiBpcGE0aywgaXBhMTZrLCBpcGE2NGssIHZhNjRrO1xuIFx0XHRpbnQgaTtcbiBcbi1cdFx0YWFyY2g2NF9nZXRfc3VwcG9ydGVkX3BhZ2Vfc2l6ZXMobGltaXQsIFx1MDAyNmlwYTRrLCBcdTAwMjZpcGExNmssIFx1MDAyNmlwYTY0ayk7XG4mIzQzO1x0XHRhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyhsaW1pdCwgXHUwMDI2aXBhNGssIFx1MDAyNmlwYTE2aywgXHUwMDI2aXBhNjRrLCBcdTAwMjZ2YTY0ayk7XG4gXG4mIzQzO1x0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY1Ml80SywgaXBhNGsgXHUwMDNlPSA1Mik7XG4mIzQzO1x0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY1Ml8xNkssIGlwYTE2ayBcdTAwM2U9IDUyKTtcbiYjNDM7XHRcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzY0SywgaXBhNjRrIFx1MDAzZT0gNTIgXHUwMDI2XHUwMDI2IHZhNjRrIFx1MDAzZT0gNTIpO1xuIFx0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF80SywgaXBhNGsgXHUwMDNlPSA1Mik7XG4gXHRcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjQ4XzE2SywgaXBhMTZrIFx1MDAzZT0gNTIpO1xuIFx0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF82NEssIGlwYTY0ayBcdTAwM2U9IDUyKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbmluZGV4IDlkZGMwNDdkNWMyNzUuLmJjM2VkMDM0ZTIwMzYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuQEAgLTIwMyw2ICYjNDM7MjAzLDkgQEAgY29uc3QgY2hhciAqdm1fZ3Vlc3RfbW9kZV9zdHJpbmcodTMyIGkpXG4gXHRcdFtWTV9NT0RFX1A1MlY0OF80S11cdD0gXCYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsICA0SyBwYWdlc1wmIzM0OyxcbiBcdFx0W1ZNX01PREVfUDUyVjQ4XzE2S11cdD0gXCYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDE2SyBwYWdlc1wmIzM0OyxcbiBcdFx0W1ZNX01PREVfUDUyVjQ4XzY0S11cdD0gXCYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDY0SyBwYWdlc1wmIzM0OyxcbiYjNDM7XHRcdFtWTV9NT0RFX1A1MlY1Ml80S11cdD0gXCYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NTIsICA0SyBwYWdlc1wmIzM0OyxcbiYjNDM7XHRcdFtWTV9NT0RFX1A1MlY1Ml8xNktdXHQ9IFwmIzM0O1BBLWJpdHM6NTIsICBWQS1iaXRzOjUyLCAxNksgcGFnZXNcJiMzNDssXG4mIzQzO1x0XHRbVk1fTU9ERV9QNTJWNTJfNjRLXVx0PSBcJiMzNDtQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgNjRLIHBhZ2VzXCYjMzQ7LFxuIFx0XHRbVk1fTU9ERV9QNDhWNDhfNEtdXHQ9IFwmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAgNEsgcGFnZXNcJiMzNDssXG4gXHRcdFtWTV9NT0RFX1A0OFY0OF8xNktdXHQ9IFwmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAxNksgcGFnZXNcJiMzNDssXG4gXHRcdFtWTV9NT0RFX1A0OFY0OF82NEtdXHQ9IFwmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCA2NEsgcGFnZXNcJiMzNDssXG5AQCAtMjM5LDYgJiM0MzsyNDIsOSBAQCBjb25zdCBzdHJ1Y3Qgdm1fZ3Vlc3RfbW9kZV9wYXJhbXMgdm1fZ3Vlc3RfbW9kZV9wYXJhbXNbXSA9IHtcbiBcdFtWTV9NT0RFX1A1MlY0OF80S11cdD0geyA1MiwgNDgsICAweDEwMDAsIDEyIH0sXG4gXHRbVk1fTU9ERV9QNTJWNDhfMTZLXVx0PSB7IDUyLCA0OCwgIDB4NDAwMCwgMTQgfSxcbiBcdFtWTV9NT0RFX1A1MlY0OF82NEtdXHQ9IHsgNTIsIDQ4LCAweDEwMDAwLCAxNiB9LFxuJiM0MztcdFtWTV9NT0RFX1A1MlY1Ml80S11cdD0geyA1MiwgNTIsICAweDEwMDAsIDEyIH0sXG4mIzQzO1x0W1ZNX01PREVfUDUyVjUyXzE2S11cdD0geyA1MiwgNTIsICAweDQwMDAsIDE0IH0sXG4mIzQzO1x0W1ZNX01PREVfUDUyVjUyXzY0S11cdD0geyA1MiwgNTIsIDB4MTAwMDAsIDE2IH0sXG4gXHRbVk1fTU9ERV9QNDhWNDhfNEtdXHQ9IHsgNDgsIDQ4LCAgMHgxMDAwLCAxMiB9LFxuIFx0W1ZNX01PREVfUDQ4VjQ4XzE2S11cdD0geyA0OCwgNDgsICAweDQwMDAsIDE0IH0sXG4gXHRbVk1fTU9ERV9QNDhWNDhfNjRLXVx0PSB7IDQ4LCA0OCwgMHgxMDAwMCwgMTYgfSxcbkBAIC0zMDYsMTAgJiM0MzszMTIsMTQgQEAgc3RydWN0IGt2bV92bSAqX19fX3ZtX2NyZWF0ZShzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUpXG4gXG4gXHQvKiBTZXR1cCBtb2RlIHNwZWNpZmljIHRyYWl0cy4gKi9cbiBcdHN3aXRjaCAodm0tXHUwMDNlbW9kZSkge1xuJiM0MztcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNEs6XG4mIzQzO1x0XHR2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMgPSA1O1xuJiM0MztcdFx0YnJlYWs7XG4gXHRjYXNlIFZNX01PREVfUDUyVjQ4XzRLOlxuIFx0XHR2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMgPSA0O1xuIFx0XHRicmVhaztcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNjRLOlxuJiM0MztcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNjRLOlxuIFx0XHR2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMgPSAzO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgVk1fTU9ERV9QNDhWNDhfNEs6XG5AQCAtMzMwLDYgJiM0MzszNDAsNyBAQCBzdHJ1Y3Qga3ZtX3ZtICpfX19fdm1fY3JlYXRlKHN0cnVjdCB2bV9zaGFwZSBzaGFwZSlcbiBcdGNhc2UgVk1fTU9ERV9QNDhWNDhfMTZLOlxuIFx0Y2FzZSBWTV9NT0RFX1A0MFY0OF8xNks6XG4gXHRjYXNlIFZNX01PREVfUDM2VjQ4XzE2SzpcbiYjNDM7XHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcbiBcdFx0dm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID0gNDtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFZNX01PREVfUDQ3VjQ3XzE2SzpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwNzo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgb25seSBtb2RpZmllcyBLVk0gc2VsZi10ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIChzcGVjaWZpY2FsbHkgYXJtNjQgZ3Vlc3Qgc3VwcG9ydCBhbmQgdGVzdGluZykuIFRoZXNlIHVzZXItc3BhY2UgdGVzdCBmaWxlcyBkbyBub3QgbW9kaWZ5IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGFueSBrZXJuZWwgbW9kdWxlcywgbWFraW5nIHRoZW0gbm9uLWtlcm5lbCBjaGFuZ2VzIHRoYXQgZG8gbm90IHdhcnJhbnQga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmEyNmEyOGZlOTNmZmI5ODkxMjIyZjE2MzYzNWQ5NjBiOTc5OWM3ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDE0IDA3OjQyOjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KaW5kZXggOTZiYWI3MDAyZDM5ZS4uMWU5ZDA1OWZmYjI0YSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCkBAIC0xNzksNiAmIzQzOzE3OSw3IEBAIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9oZWxsb19lbDIKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9ob3N0X3N2ZQogVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGFybTY0L2h5cGVyY2FsbHMKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9leHRlcm5hbF9hYm9ydHMKJiM0MztURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvbHBhX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9tbWlvX3NpZ25fZXh0CiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvcGFnZV9mYXVsdF90ZXN0CiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvcHNjaV90ZXN0CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvbHBhX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9scGFfdGVzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjhmZTZmMjU0ZGIyODIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvbHBhX3Rlc3QuYwpAQCAtMCwwICYjNDM7MSwxMjQgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiYjNDM7LyoKJiM0MzsgKiBIaWdoZXIgdmlydHVhbCBhZGRyZXNzZXMgcmVhZC93cml0ZSB0ZXN0CiYjNDM7ICovCiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfdXRpbC5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7a3ZtX3N5c2NhbGxzLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7a3ZtX3V0aWwuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDt1Y2FsbF9jb21tb24uaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtndWVzdF9tb2Rlcy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3Byb2Nlc3Nvci5oJiMzNDsKJiM0MzsKJiM0MzsjZGVmaW5lIExPV19HVkEJCTB4YzAwMDAwMDAKJiM0MzsjZGVmaW5lIEhJR0hfR1ZBIChMT1dfR1ZBIHwgQklUKDQ4KSkKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBndWVzdF9jb2RlKHZvaWQpCiYjNDM7ewomIzQzOwl1NjQgKmxvdyA9ICh1NjQgKilMT1dfR1ZBOwomIzQzOwl1NjQgKmhpZ2ggPSAodTY0ICopSElHSF9HVkE7CiYjNDM7CiYjNDM7CVdSSVRFX09OQ0UoKmxvdywgMSk7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmhpZ2gpLCAxKTsKJiM0MzsJV1JJVEVfT05DRSgqaGlnaCwgMik7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksIDIpOwomIzQzOwomIzQzOwlHVUVTVF9TWU5DKDApOwomIzQzOwomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDtkc2Igc3lcblx0JiMzNDsKJiM0MzsJCSAgICAgJiMzNDt0bGJpIHZtYWxsZTFpc1xuXHQmIzM0OwomIzQzOwkJICAgICAmIzM0O2RzYiBzeVxuXHQmIzM0OwomIzQzOwkJICAgICAmIzM0O2lzYiYjMzQ7CiYjNDM7CQkgICAgIDogOiA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwomIzQzOwlHVUVTVF9TWU5DKDEpOyAvKiBIb3N0IGluc3RhbGxzIEhJR0hfR1ZBIC0mZ3Q7IGdwYV9iLiAqLwomIzQzOwomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDtkc2Igc3lcblx0JiMzNDsKJiM0MzsJCSAgICAgJiMzNDtpc2Jcblx0JiMzNDsKJiM0MzsJCSAgICAgOiA6IDogJiMzNDttZW1vcnkmIzM0Oyk7CiYjNDM7CiYjNDM7CS8qIGxvdyBhbmQgaGlnaCBtYXAgdG8gZGlmZmVyZW50IEdQQXMuICovCiYjNDM7CVdSSVRFX09OQ0UoKmxvdywgIDEpOwomIzQzOwlXUklURV9PTkNFKCpoaWdoLCAyKTsKJiM0MzsKJiM0MzsJLyogQ2hlY2sgYm90aCBhZnRlciBib3RoIHdyaXRlcyB0byBkZXRlY3QgYWNjaWRlbnRhbCBhbGlhc2luZy4gKi8KJiM0MzsJR1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqbG93KSwgIDEpOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpoaWdoKSwgMik7CiYjNDM7CiYjNDM7CS8qIFVwZGF0aW5nIHRoZSBsb3cgbWFwcGluZyBtdXN0IG5vdCBjaGFuZ2UgdGhlIGhpZ2ggbWFwcGluZy4gKi8KJiM0MzsJV1JJVEVfT05DRSgqbG93LCAzKTsKJiM0MzsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqbG93KSwgIDMpOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpoaWdoKSwgMik7CiYjNDM7CiYjNDM7CUdVRVNUX0RPTkUoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCAqbnJfdGVzdHMgPSBhcmc7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdV9pbml0IGluaXQ7CiYjNDM7CXN0cnVjdCBrdm1fdm0gKnZtOwomIzQzOwlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7CiYjNDM7CXN0cnVjdCB1Y2FsbCB1YzsKJiM0MzsKJiM0MzsJaWYgKG1vZGUgIT0gVk1fTU9ERV9QNTJWNTJfNEsgJmFtcDsmYW1wOwomIzQzOwkgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml8xNksgJmFtcDsmYW1wOwomIzQzOwkgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml82NEspCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXZtID0gX192bV9jcmVhdGUoVk1fU0hBUEUobW9kZSksIDEsIDApOwomIzQzOwlrdm1fZ2V0X2RlZmF1bHRfdmNwdV90YXJnZXQodm0sICZhbXA7aW5pdCk7CiYjNDM7CXZjcHUgPSBhYXJjaDY0X3ZjcHVfYWRkKHZtLCAwLCAmYW1wO2luaXQsIGd1ZXN0X2NvZGUpOwomIzQzOwlrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7CiYjNDM7CiYjNDM7CXZtX2luaXRfZGVzY3JpcHRvcl90YWJsZXModm0pOwomIzQzOwl2Y3B1X2luaXRfZGVzY3JpcHRvcl90YWJsZXModmNwdSk7CiYjNDM7CiYjNDM7CXU2NCBncGFfYSA9IHZtX3BoeV9wYWdlc19hbGxvYyh2bSwgMSwgMCwgMCk7CiYjNDM7CXU2NCBncGFfYiA9IHZtX3BoeV9wYWdlc19hbGxvYyh2bSwgMSwgMCwgMCk7CiYjNDM7CiYjNDM7CXZpcnRfcGdfbWFwKHZtLCBMT1dfR1ZBLCBncGFfYSk7CiYjNDM7CXZpcnRfcGdfbWFwKHZtLCBISUdIX0dWQSwgZ3BhX2EpOwomIzQzOwomIzQzOwlmb3IgKDs7KSB7CiYjNDM7CQl2Y3B1X3J1bih2Y3B1KTsKJiM0MzsJCXN3aXRjaCAoZ2V0X3VjYWxsKHZjcHUsICZhbXA7dWMpKSB7CiYjNDM7CQljYXNlIFVDQUxMX0RPTkU6CiYjNDM7CQkJZ290byBkb25lOwomIzQzOwkJY2FzZSBVQ0FMTF9BQk9SVDoKJiM0MzsJCQlSRVBPUlRfR1VFU1RfQVNTRVJUKHVjKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCWNhc2UgVUNBTExfU1lOQzoKJiM0MzsJCQlzd2l0Y2ggKHVjLmFyZ3NbMV0pIHsKJiM0MzsJCQljYXNlIDA6CiYjNDM7CQkJCVdSSVRFX09OQ0UoKnZpcnRfZ2V0X3B0ZV9odmEodm0sIEhJR0hfR1ZBKSwgMCk7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWNhc2UgMToKJiM0MzsJCQkJdmlydF9wZ19tYXAodm0sIEhJR0hfR1ZBLCBncGFfYik7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWRlZmF1bHQ6CiYjNDM7CQkJCVRFU1RfRkFJTCgmIzM0O1VuZXhwZWN0ZWQgc3luYyBzdGFnZTogJWx1XG4mIzM0OywgdWMuYXJnc1sxXSk7CiYjNDM7CQkJfQomIzQzOwkJCS8qIENvbXBsZXRlIHRoZSBob3N0JiMzOTtzIFBURSBzdG9yZSBiZWZvcmUgcmVzdW1pbmcgdGhlIGd1ZXN0LiAqLwomIzQzOwkJCWFzbSB2b2xhdGlsZSgmIzM0O2RzYiBzeSYjMzQ7IDogOiA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJZGVmYXVsdDoKJiM0MzsJCQlURVNUX0ZBSUwoJiMzNDtVbmhhbmRsZWQgdWNhbGw6ICVsZFxuJiMzNDssIHVjLmNtZCk7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0Mztkb25lOgomIzQzOwlrdm1fdm1fZnJlZSh2bSk7CiYjNDM7CSgqbnJfdGVzdHMpJiM0MzsmIzQzOzsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQomIzQzO3sKJiM0MzsJdW5zaWduZWQgaW50IG5yX3Rlc3RzID0gMDsKJiM0MzsKJiM0MzsJZm9yX2VhY2hfZ3Vlc3RfbW9kZShydW5fdGVzdCwgJmFtcDtucl90ZXN0cyk7CiYjNDM7CWlmICghbnJfdGVzdHMpCiYjNDM7CQlrc2Z0X2V4aXRfc2tpcCgmIzM0O05vIHN1cHBvcnRlZCA1Mi1iaXQgVkEgZ3Vlc3QgbW9kZTsgc2tpcHBpbmcgdGVzdFxuJiMzNDspOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oCmluZGV4IGI4YTkwMmJhODU3M2QuLjRhYjAwYTdlNmVmYjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oCkBAIC0xMTMsNiAmIzQzOzExMyw3IEBACiAKICNkZWZpbmUgUFRFX1ZBTElECQlCSVQoMCkKICNkZWZpbmUgUEdEX1RZUEVfVEFCTEUJCUJJVCgxKQomIzQzOyNkZWZpbmUgUDREX1RZUEVfVEFCTEUJCUJJVCgxKQogI2RlZmluZSBQVURfVFlQRV9UQUJMRQkJQklUKDEpCiAjZGVmaW5lIFBNRF9UWVBFX1RBQkxFCQlCSVQoMSkKICNkZWZpbmUgUFRFX1RZUEVfUEFHRQkJQklUKDEpCkBAIC0xNjgsNyAmIzQzOzE2OSw3IEBAIGVudW0gewogCQkJICAgKHYpID09IFZFQ1RPUl9TWU5DX0xPV0VSXzMyKQogCiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssCi0JCQkJICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrKTsKJiM0MzsJCQkJICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrLCB1MzIgKnZhNjRrKTsKIAogdm9pZCB2bV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHN0cnVjdCBrdm1fdm0gKnZtKTsKIHZvaWQgdmNwdV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaAppbmRleCA1YTdhNDU1YjUzODc1Li4xYzI2OGZhOTk0YWE5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2t2bV91dGlsLmgKQEAgLTE4NCw2ICYjNDM7MTg0LDkgQEAgZW51bSB2bV9ndWVzdF9tb2RlIHsKIAlWTV9NT0RFX1A1MlY0OF80SywKIAlWTV9NT0RFX1A1MlY0OF8xNkssCiAJVk1fTU9ERV9QNTJWNDhfNjRLLAomIzQzOwlWTV9NT0RFX1A1MlY1Ml80SywKJiM0MzsJVk1fTU9ERV9QNTJWNTJfMTZLLAomIzQzOwlWTV9NT0RFX1A1MlY1Ml82NEssCiAJVk1fTU9ERV9QNDhWNDhfNEssCiAJVk1fTU9ERV9QNDhWNDhfMTZLLAogCVZNX01PREVfUDQ4VjQ4XzY0SywKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jCmluZGV4IDAxMzI1YmY0ZDM2ZmMuLjk5MTVmMjVmMDI4NzQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuYwpAQCAtMjksMTMgJiM0MzsyOSwyNSBAQCBzdGF0aWMgdTY0IHBnZF9pbmRleChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhKQogCXJldHVybiAoZ3ZhICZndDsmZ3Q7IHNoaWZ0KSAmYW1wOyBtYXNrOwogfQogCiYjNDM7c3RhdGljIHU2NCBwNGRfaW5kZXgoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBzaGlmdCA9IDMgKiAodm0tJmd0O3BhZ2Vfc2hpZnQgLSAzKSAmIzQzOyB2bS0mZ3Q7cGFnZV9zaGlmdDsKJiM0MzsJdTY0IG1hc2sgPSAoMVVMICZsdDsmbHQ7ICh2bS0mZ3Q7cGFnZV9zaGlmdCAtIDMpKSAtIDE7CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKHZtLSZndDttbXUucGd0YWJsZV9sZXZlbHMgPT0gNSwKJiM0MzsJCSAgICAmIzM0O01vZGUgJWQgZG9lcyBub3QgaGF2ZSA1IHBhZ2UgdGFibGUgbGV2ZWxzJiMzNDssIHZtLSZndDttb2RlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIChndmEgJmd0OyZndDsgc2hpZnQpICZhbXA7IG1hc2s7CiYjNDM7fQomIzQzOwogc3RhdGljIHU2NCBwdWRfaW5kZXgoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSkKIHsKIAl1bnNpZ25lZCBpbnQgc2hpZnQgPSAyICogKHZtLSZndDtwYWdlX3NoaWZ0IC0gMykgJiM0Mzsgdm0tJmd0O3BhZ2Vfc2hpZnQ7CiAJdTY0IG1hc2sgPSAoMVVMICZsdDsmbHQ7ICh2bS0mZ3Q7cGFnZV9zaGlmdCAtIDMpKSAtIDE7CiAKLQlURVNUX0FTU0VSVCh2bS0mZ3Q7bW11LnBndGFibGVfbGV2ZWxzID09IDQsCi0JCSYjMzQ7TW9kZSAlZCBkb2VzIG5vdCBoYXZlIDQgcGFnZSB0YWJsZSBsZXZlbHMmIzM0Oywgdm0tJmd0O21vZGUpOwomIzQzOwlURVNUX0FTU0VSVCh2bS0mZ3Q7bW11LnBndGFibGVfbGV2ZWxzICZndDs9IDQsCiYjNDM7CQkgICAgJiMzNDtNb2RlICVkIGRvZXMgbm90IGhhdmUgJmd0Oz0gNCBwYWdlIHRhYmxlIGxldmVscyYjMzQ7LAomIzQzOwkJICAgIHZtLSZndDttb2RlKTsKIAogCXJldHVybiAoZ3ZhICZndDsmZ3Q7IHNoaWZ0KSAmYW1wOyBtYXNrOwogfQpAQCAtMTQ3LDYgJiM0MzsxNTksMTIgQEAgc3RhdGljIHZvaWQgX3ZpcnRfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSwKIAkJCQkgUEdEX1RZUEVfVEFCTEUgfCBQVEVfVkFMSUQpOwogCiAJc3dpdGNoICh2bS0mZ3Q7bW11LnBndGFibGVfbGV2ZWxzKSB7CiYjNDM7CWNhc2UgNToKJiM0MzsJCXB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHB0ZV9hZGRyKHZtLCAqcHRlcCkpICYjNDM7IHA0ZF9pbmRleCh2bSwgZ3ZhKSAqIDg7CiYjNDM7CQlpZiAoISpwdGVwKQomIzQzOwkJCSpwdGVwID0gYWRkcl9wdGUodm0sIHZtX2FsbG9jX3BhZ2VfdGFibGUodm0pLAomIzQzOwkJCQkJIFA0RF9UWVBFX1RBQkxFIHwgUFRFX1ZBTElEKTsKJiM0MzsJCS8qIGZhbGwgdGhyb3VnaCAqLwogCWNhc2UgNDoKIAkJcHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcHVkX2luZGV4KHZtLCBndmEpICogODsKIAkJaWYgKCEqcHRlcCkKQEAgLTE2Myw3ICYjNDM7MTgxLDcgQEAgc3RhdGljIHZvaWQgX3ZpcnRfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSwKIAkJcHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcHRlX2luZGV4KHZtLCBndmEpICogODsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJVEVTVF9GQUlMKCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCBvciA0JiMzNDspOwomIzQzOwkJVEVTVF9GQUlMKCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCA0LCBvciA1JiMzNDspOwogCX0KIAogCXBnX2F0dHIgPSBQVEVfQUYgfCBQVEVfQVRUUklORFgoYXR0cl9pZHgpIHwgUFRFX1RZUEVfUEFHRSB8IFBURV9WQUxJRDsKQEAgLTE4MiwxOCAmIzQzOzIwMCwzNSBAQCB2b2lkIHZpcnRfYXJjaF9wZ19tYXAoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgZ3BhX3QgZ3BhKQogCiB1NjQgKnZpcnRfZ2V0X3B0ZV9odmFfYXRfbGV2ZWwoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgaW50IGxldmVsKQogewomIzQzOwlpbnQgc3RhcnRfbGV2ZWwgPSA0IC0gdm0tJmd0O21tdS5wZ3RhYmxlX2xldmVsczsKIAl1NjQgKnB0ZXA7CiAKJiM0MzsJVEVTVF9BU1NFUlQobGV2ZWwgJmd0Oz0gc3RhcnRfbGV2ZWwgJmFtcDsmYW1wOyBsZXZlbCAmbHQ7PSAzLAomIzQzOwkJICAgICYjMzQ7SW52YWxpZCB0cmFuc2xhdGlvbiBsZXZlbCAlZCwgdmFsaWQgcmFuZ2UgaXMgJWQtMyYjMzQ7LAomIzQzOwkJICAgIGxldmVsLCBzdGFydF9sZXZlbCk7CiYjNDM7CiAJaWYgKCF2bS0mZ3Q7bW11LnBnZF9jcmVhdGVkKQogCQlnb3RvIHVubWFwcGVkX2d2YTsKIAogCXB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHZtLSZndDttbXUucGdkKSAmIzQzOyBwZ2RfaW5kZXgodm0sIGd2YSkgKiA4OwogCWlmICghcHRlcCkKIAkJZ290byB1bm1hcHBlZF9ndmE7Ci0JaWYgKGxldmVsID09IDApCiYjNDM7CS8qCiYjNDM7CSAqIFN0YWdlLTEgdHJhbnNsYXRpb24gc3RhcnRzIGF0IGxldmVsIC0xIGZvciBhIGZpdmUtbGV2ZWwgcGFnZQomIzQzOwkgKiB0YWJsZSwgYW5kIGF0IGxldmVscyAwLCAxLCBvciAyIGZvciBmb3VyLSwgdGhyZWUtLCBvciB0d28tbGV2ZWwKJiM0MzsJICogcGFnZSB0YWJsZXMsIHJlc3BlY3RpdmVseS4KJiM0MzsJICovCiYjNDM7CWlmIChsZXZlbCA9PSBzdGFydF9sZXZlbCkKIAkJcmV0dXJuIHB0ZXA7CiAKIAlzd2l0Y2ggKHZtLSZndDttbXUucGd0YWJsZV9sZXZlbHMpIHsKJiM0MzsJY2FzZSA1OgomIzQzOwkJcHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcDRkX2luZGV4KHZtLCBndmEpICogODsKJiM0MzsJCWlmICghcHRlcCkKJiM0MzsJCQlnb3RvIHVubWFwcGVkX2d2YTsKJiM0MzsJCWlmIChsZXZlbCA9PSAwKQomIzQzOwkJCWJyZWFrOwomIzQzOwkJLyogZmFsbCB0aHJvdWdoICovCiAJY2FzZSA0OgogCQlwdGVwID0gYWRkcl9ncGEyaHZhKHZtLCBwdGVfYWRkcih2bSwgKnB0ZXApKSAmIzQzOyBwdWRfaW5kZXgodm0sIGd2YSkgKiA4OwogCQlpZiAoIXB0ZXApCkBAIC0yMTQsNyAmIzQzOzI0OSw3IEBAIHU2NCAqdmlydF9nZXRfcHRlX2h2YV9hdF9sZXZlbChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhLCBpbnQgbGV2ZWwpCiAJCQlnb3RvIHVubWFwcGVkX2d2YTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJVEVTVF9GQUlMKCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCBvciA0JiMzNDspOwomIzQzOwkJVEVTVF9GQUlMKCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCA0LCBvciA1JiMzNDspOwogCX0KIAogCXJldHVybiBwdGVwOwpAQCAtMzIxLDEyICYjNDM7MzU2LDE0IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpCiAJY2FzZSBWTV9NT0RFX1BYWFZZWV80SzoKIAkJVEVTVF9GQUlMKCYjMzQ7QUFyY2g2NCBkb2VzIG5vdCBzdXBwb3J0IDRLIHNpemVkIHBhZ2VzICYjMzQ7CiAJCQkgICYjMzQ7d2l0aCBBTlktYml0IHBoeXNpY2FsIGFkZHJlc3MgcmFuZ2VzJiMzNDspOwomIzQzOwljYXNlIFZNX01PREVfUDUyVjUyXzY0SzoKIAljYXNlIFZNX01PREVfUDUyVjQ4XzY0SzoKIAljYXNlIFZNX01PREVfUDQ4VjQ4XzY0SzoKIAljYXNlIFZNX01PREVfUDQwVjQ4XzY0SzoKIAljYXNlIFZNX01PREVfUDM2VjQ4XzY0SzoKIAkJdGNyX2VsMSB8PSBUQ1JfVEcwXzY0SzsKIAkJYnJlYWs7CiYjNDM7CWNhc2UgVk1fTU9ERV9QNTJWNTJfMTZLOgogCWNhc2UgVk1fTU9ERV9QNTJWNDhfMTZLOgogCWNhc2UgVk1fTU9ERV9QNDhWNDhfMTZLOgogCWNhc2UgVk1fTU9ERV9QNDBWNDhfMTZLOgpAQCAtMzM0LDYgJiM0MzszNzEsNyBAQCB2b2lkIGFhcmNoNjRfdmNwdV9zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fdmNwdV9pbml0ICppbml0KQogCWNhc2UgVk1fTU9ERV9QMzZWNDdfMTZLOgogCQl0Y3JfZWwxIHw9IFRDUl9URzBfMTZLOwogCQlicmVhazsKJiM0MzsJY2FzZSBWTV9NT0RFX1A1MlY1Ml80SzoKIAljYXNlIFZNX01PREVfUDUyVjQ4XzRLOgogCWNhc2UgVk1fTU9ERV9QNDhWNDhfNEs6CiAJY2FzZSBWTV9NT0RFX1A0MFY0OF80SzoKQEAgLTM0OCw2ICYjNDM7Mzg2LDkgQEAgdm9pZCBhYXJjaDY0X3ZjcHVfc2V0dXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCAqaW5pdCkKIAogCS8qIENvbmZpZ3VyZSBvdXRwdXQgc2l6ZSAqLwogCXN3aXRjaCAodm0tJmd0O21vZGUpIHsKJiM0MzsJY2FzZSBWTV9NT0RFX1A1MlY1Ml80SzoKJiM0MzsJY2FzZSBWTV9NT0RFX1A1MlY1Ml8xNks6CiYjNDM7CWNhc2UgVk1fTU9ERV9QNTJWNTJfNjRLOgogCWNhc2UgVk1fTU9ERV9QNTJWNDhfNEs6CiAJY2FzZSBWTV9NT0RFX1A1MlY0OF8xNks6CiAJY2FzZSBWTV9NT0RFX1A1MlY0OF82NEs6CkBAIC01NzksNyAmIzQzOzYyMCw3IEBAIHN0YXRpYyB1MzIgbWF4X2lwYV9mb3JfcGFnZV9zaXplKHUzMiB2bV9pcGEsIHUzMiBncmFuLAogfQogCiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssCi0JCQkJICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrKQomIzQzOwkJCQkgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGssIHUzMiAqdmE2NGspCiB7CiAJc3RydWN0IGt2bV92Y3B1X2luaXQgcHJlZmVycmVkX2luaXQ7CiAJaW50IGt2bV9mZCwgdm1fZmQsIHZjcHVfZmQsIGVycjsKQEAgLTYxNyw2ICYjNDM7NjU4LDEzIEBAIHZvaWQgYWFyY2g2NF9nZXRfc3VwcG9ydGVkX3BhZ2Vfc2l6ZXModTMyIGlwYSwgdTMyICppcGE0aywKIAkqaXBhMTZrID0gbWF4X2lwYV9mb3JfcGFnZV9zaXplKGlwYSwgZ3JhbiwgSURfQUE2NE1NRlIwX0VMMV9UR1JBTjE2X05JLAogCQkJCQlJRF9BQTY0TU1GUjBfRUwxX1RHUkFOMTZfNTJfQklUKTsKIAomIzQzOwlyZWcuaWQgPSBLVk1fQVJNNjRfU1lTX1JFRyhTWVNfSURfQUE2NE1NRlIyX0VMMSk7CiYjNDM7CWVyciA9IGlvY3RsKHZjcHVfZmQsIEtWTV9HRVRfT05FX1JFRywgJmFtcDtyZWcpOwomIzQzOwlURVNUX0FTU0VSVChlcnIgPT0gMCwgS1ZNX0lPQ1RMX0VSUk9SKEtWTV9HRVRfT05FX1JFRywgZXJyKSk7CiYjNDM7CiYjNDM7CSp2YTY0ayA9IEZJRUxEX0dFVChJRF9BQTY0TU1GUjJfRUwxX1ZBUmFuZ2UsIHZhbCkgJmd0Oz0KJiM0MzsJCUlEX0FBNjRNTUZSMl9FTDFfVkFSYW5nZV81MiA/IDUyIDogNDg7CiYjNDM7CiAJY2xvc2UodmNwdV9mZCk7CiAJY2xvc2Uodm1fZmQpOwogCWNsb3NlKGt2bV9mZCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmMKaW5kZXggN2E5NmM0M2I1NzA0ZC4uOGQyNzQ4MTQ1ZjhmOCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9ndWVzdF9tb2Rlcy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuYwpAQCAtMjAsMTEgJiM0MzsyMCwxNCBAQCB2b2lkIGd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KHZvaWQpCiAjaWZkZWYgX19hYXJjaDY0X18KIAl7CiAJCXVuc2lnbmVkIGludCBsaW1pdCA9IGt2bV9jaGVja19jYXAoS1ZNX0NBUF9BUk1fVk1fSVBBX1NJWkUpOwotCQl1MzIgaXBhNGssIGlwYTE2aywgaXBhNjRrOwomIzQzOwkJdTMyIGlwYTRrLCBpcGExNmssIGlwYTY0aywgdmE2NGs7CiAJCWludCBpOwogCi0JCWFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKGxpbWl0LCAmYW1wO2lwYTRrLCAmYW1wO2lwYTE2aywgJmFtcDtpcGE2NGspOwomIzQzOwkJYWFyY2g2NF9nZXRfc3VwcG9ydGVkX3BhZ2Vfc2l6ZXMobGltaXQsICZhbXA7aXBhNGssICZhbXA7aXBhMTZrLCAmYW1wO2lwYTY0aywgJmFtcDt2YTY0ayk7CiAKJiM0MzsJCWd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzRLLCBpcGE0ayAmZ3Q7PSA1Mik7CiYjNDM7CQlndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY1Ml8xNkssIGlwYTE2ayAmZ3Q7PSA1Mik7CiYjNDM7CQlndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY1Ml82NEssIGlwYTY0ayAmZ3Q7PSA1MiAmYW1wOyZhbXA7IHZhNjRrICZndDs9IDUyKTsKIAkJZ3Vlc3RfbW9kZV9hcHBlbmQoVk1fTU9ERV9QNTJWNDhfNEssIGlwYTRrICZndDs9IDUyKTsKIAkJZ3Vlc3RfbW9kZV9hcHBlbmQoVk1fTU9ERV9QNTJWNDhfMTZLLCBpcGExNmsgJmd0Oz0gNTIpOwogCQlndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF82NEssIGlwYTY0ayAmZ3Q7PSA1Mik7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMKaW5kZXggOWRkYzA0N2Q1YzI3NS4uYmMzZWQwMzRlMjAzNiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYwpAQCAtMjAzLDYgJiM0MzsyMDMsOSBAQCBjb25zdCBjaGFyICp2bV9ndWVzdF9tb2RlX3N0cmluZyh1MzIgaSkKIAkJW1ZNX01PREVfUDUyVjQ4XzRLXQk9ICYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsICA0SyBwYWdlcyYjMzQ7LAogCQlbVk1fTU9ERV9QNTJWNDhfMTZLXQk9ICYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDE2SyBwYWdlcyYjMzQ7LAogCQlbVk1fTU9ERV9QNTJWNDhfNjRLXQk9ICYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDY0SyBwYWdlcyYjMzQ7LAomIzQzOwkJW1ZNX01PREVfUDUyVjUyXzRLXQk9ICYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NTIsICA0SyBwYWdlcyYjMzQ7LAomIzQzOwkJW1ZNX01PREVfUDUyVjUyXzE2S10JPSAmIzM0O1BBLWJpdHM6NTIsICBWQS1iaXRzOjUyLCAxNksgcGFnZXMmIzM0OywKJiM0MzsJCVtWTV9NT0RFX1A1MlY1Ml82NEtdCT0gJiMzNDtQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgNjRLIHBhZ2VzJiMzNDssCiAJCVtWTV9NT0RFX1A0OFY0OF80S10JPSAmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAgNEsgcGFnZXMmIzM0OywKIAkJW1ZNX01PREVfUDQ4VjQ4XzE2S10JPSAmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAxNksgcGFnZXMmIzM0OywKIAkJW1ZNX01PREVfUDQ4VjQ4XzY0S10JPSAmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCA2NEsgcGFnZXMmIzM0OywKQEAgLTIzOSw2ICYjNDM7MjQyLDkgQEAgY29uc3Qgc3RydWN0IHZtX2d1ZXN0X21vZGVfcGFyYW1zIHZtX2d1ZXN0X21vZGVfcGFyYW1zW10gPSB7CiAJW1ZNX01PREVfUDUyVjQ4XzRLXQk9IHsgNTIsIDQ4LCAgMHgxMDAwLCAxMiB9LAogCVtWTV9NT0RFX1A1MlY0OF8xNktdCT0geyA1MiwgNDgsICAweDQwMDAsIDE0IH0sCiAJW1ZNX01PREVfUDUyVjQ4XzY0S10JPSB7IDUyLCA0OCwgMHgxMDAwMCwgMTYgfSwKJiM0MzsJW1ZNX01PREVfUDUyVjUyXzRLXQk9IHsgNTIsIDUyLCAgMHgxMDAwLCAxMiB9LAomIzQzOwlbVk1fTU9ERV9QNTJWNTJfMTZLXQk9IHsgNTIsIDUyLCAgMHg0MDAwLCAxNCB9LAomIzQzOwlbVk1fTU9ERV9QNTJWNTJfNjRLXQk9IHsgNTIsIDUyLCAweDEwMDAwLCAxNiB9LAogCVtWTV9NT0RFX1A0OFY0OF80S10JPSB7IDQ4LCA0OCwgIDB4MTAwMCwgMTIgfSwKIAlbVk1fTU9ERV9QNDhWNDhfMTZLXQk9IHsgNDgsIDQ4LCAgMHg0MDAwLCAxNCB9LAogCVtWTV9NT0RFX1A0OFY0OF82NEtdCT0geyA0OCwgNDgsIDB4MTAwMDAsIDE2IH0sCkBAIC0zMDYsMTAgJiM0MzszMTIsMTQgQEAgc3RydWN0IGt2bV92bSAqX19fX3ZtX2NyZWF0ZShzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUpCiAKIAkvKiBTZXR1cCBtb2RlIHNwZWNpZmljIHRyYWl0cy4gKi8KIAlzd2l0Y2ggKHZtLSZndDttb2RlKSB7CiYjNDM7CWNhc2UgVk1fTU9ERV9QNTJWNTJfNEs6CiYjNDM7CQl2bS0mZ3Q7bW11LnBndGFibGVfbGV2ZWxzID0gNTsKJiM0MzsJCWJyZWFrOwogCWNhc2UgVk1fTU9ERV9QNTJWNDhfNEs6CiAJCXZtLSZndDttbXUucGd0YWJsZV9sZXZlbHMgPSA0OwogCQlicmVhazsKIAljYXNlIFZNX01PREVfUDUyVjQ4XzY0SzoKJiM0MzsJY2FzZSBWTV9NT0RFX1A1MlY1Ml82NEs6CiAJCXZtLSZndDttbXUucGd0YWJsZV9sZXZlbHMgPSAzOwogCQlicmVhazsKIAljYXNlIFZNX01PREVfUDQ4VjQ4XzRLOgpAQCAtMzMwLDYgJiM0MzszNDAsNyBAQCBzdHJ1Y3Qga3ZtX3ZtICpfX19fdm1fY3JlYXRlKHN0cnVjdCB2bV9zaGFwZSBzaGFwZSkKIAljYXNlIFZNX01PREVfUDQ4VjQ4XzE2SzoKIAljYXNlIFZNX01PREVfUDQwVjQ4XzE2SzoKIAljYXNlIFZNX01PREVfUDM2VjQ4XzE2SzoKJiM0MzsJY2FzZSBWTV9NT0RFX1A1MlY1Ml8xNks6CiAJCXZtLSZndDttbXUucGd0YWJsZV9sZXZlbHMgPSA0OwogCQlicmVhazsKIAljYXNlIFZNX01PREVfUDQ3VjQ3XzE2SzoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTYzOQoJCQkJCQkJb3V0cHV0OiAxMDAKCQkJCQkJCXRob3VnaHRzOiA3NTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoOiBXb3J0aEZ1enppbmcgPSBGYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQuICBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcuICBJJiMzOTt2ZSBjaGVja2VkIHRoZSBmaWxlIGxpc3Q6CgoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1gCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2xwYV90ZXN0LmNgCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvYXJtNjQvcHJvY2Vzc29yLmhgCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaGAKKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jYAoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuY2AKKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNgCgpBbGwgdGhlIG1vZGlmaWVkIGZpbGVzIGFyZSBuZWF0bHkgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2AuIFRoYXQmIzM5O3MgYSBodWdlIHJlZCBmbGFnIOKAkyBhIGdvb2Qgb25lISBUaGlzIGlzICp0ZXh0Ym9vayogc2VsZi10ZXN0IGNvZGUsIGFuZCB0aGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IGl0IGlzICpub3QqIGltcGFjdGluZyB0aGUga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuIEkgaW1tZWRpYXRlbHkgcmVmZXIgdG8gbXkgbWVudGFsIGNoZWNrbGlzdCBmb3IgdGhlc2Uga2luZHMgb2Ygc2NlbmFyaW9zLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgY2hhbmdlcyBsaW1pdGVkIHRvIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIGxpa2UgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzYCwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIGFyZSBhIG5lZ2F0aXZlIGluZGljYXRvciwgYW5kIHRoYXQgd2UgcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2suIEkgc2VlIG5vIGluZGljYXRpb24gb2Yga2VybmVsIGZpbGUgbW9kaWZpY2F0aW9ucy4gVGhlIHByb3ZpZGVkIGRpZmYgYXBwZWFycyBjb21wcmVoZW5zaXZlLiBJIGNhbiBxdWlja2x5IGNvbmZpcm0gdGhpczsgdGhlIGxpc3Qgb2YgZmlsZXMgaW4gdGhlIGRpZmYgaXMgYWxsIHRoYXQgaXMgY2hhbmdlZC4gSSBhbSBjZXJ0YWluIHRoYXQgdGhlIEtWTSBzZWxmdGVzdHMgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlLgoKRmluYWxseSwgY29uc2lkZXIgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0LiBUaGUgdGVzdCBjb2RlIGlzIGFybTY0LCBtZWFuaW5nIHRoYXQgdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgKm5vdCogZm9yIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiBUaGlzIGdpdmVzIHVzIGFub3RoZXIgcmVhc29uIHRvIGZsYWcgdGhpcyBhcyBXb3J0aEZ1enppbmcgPSBmYWxzZS4KClNvLCBzdW1taW5nIGl0IHVwLCBteSBkZWNpc2lvbiBpczoKCiogICBXb3J0aEZ1enppbmc6IGZhbHNlCiogICBFbmFibGVDb25maWdzOiBcWyBdCiogICBGb2N1c1N5bWJvbHM6IFxbIF0KKiAgIFJlYXNvbmluZzogQWxsIGNoYW5nZXMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdXNlci1zcGFjZSBLVk0gc2VsZi10ZXN0cyBhbmQgYXJlIGZvciBhbiBhcmNoaXRlY3R1cmUgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KICAgIEl0JiMzOTtzIGFuIHVuYW1iaWd1b3VzICYjMzQ7bm8gZ28mIzM0OyBmb3IgZnV6emluZy4gV2UmIzM5O3JlIGRvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgb25seSBtb2RpZmllcyBLVk0gc2VsZi10ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIChzcGVjaWZpY2FsbHkgYXJtNjQgZ3Vlc3Qgc3VwcG9ydCBhbmQgdGVzdGluZykuIFRoZXNlIHVzZXItc3BhY2UgdGVzdCBmaWxlcyBkbyBub3QgbW9kaWZ5IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGFueSBrZXJuZWwgbW9kdWxlcywgbWFraW5nIHRoZW0gbm9uLWtlcm5lbCBjaGFuZ2VzIHRoYXQgZG8gbm90IHdhcnJhbnQga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgb25seSBtb2RpZmllcyBLVk0gc2VsZi10ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIChzcGVjaWZpY2FsbHkgYXJtNjQgZ3Vlc3Qgc3VwcG9ydCBhbmQgdGVzdGluZykuIFRoZXNlIHVzZXItc3BhY2UgdGVzdCBmaWxlcyBkbyBub3QgbW9kaWZ5IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGFueSBrZXJuZWwgbW9kdWxlcywgbWFraW5nIHRoZW0gbm9uLWtlcm5lbCBjaGFuZ2VzIHRoYXQgZG8gbm90IHdhcnJhbnQga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA3OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwNzo0Mjo1Ni43MDU3MzQ5NDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDc5NDc0NzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGYtdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyAoc3BlY2lmaWNhbGx5IGFybTY0IGd1ZXN0IHN1cHBvcnQgYW5kIHRlc3RpbmcpLiBUaGVzZSB1c2VyLXNwYWNlIHRlc3QgZmlsZXMgZG8gbm90IG1vZGlmeSB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBhbnkga2VybmVsIG1vZHVsZXMsIG1ha2luZyB0aGVtIG5vbi1rZXJuZWwgY2hhbmdlcyB0aGF0IGRvIG5vdCB3YXJyYW50IGtlcm5lbCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDc6NDI6NTYuNzA1NzM5MTcxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDU5NzkzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiYTI2YTI4ZmU5M2ZmYjk4OTEyMjJmMTYzNjM1ZDk2MGI5Nzk5YzdmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDE0IDA3OjQyOjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuaW5kZXggOTZiYWI3MDAyZDM5ZS4uMWU5ZDA1OWZmYjI0YSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxcbkBAIC0xNzksNiArMTc5LDcgQEAgVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gYXJtNjQvaGVsbG9fZWwyXFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2hvc3Rfc3ZlXFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2h5cGVyY2FsbHNcXG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gYXJtNjQvZXh0ZXJuYWxfYWJvcnRzXFxuK1RFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2xwYV90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L21taW9fc2lnbl9leHRcXG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gYXJtNjQvcGFnZV9mYXVsdF90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L3BzY2lfdGVzdFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvbHBhX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9scGFfdGVzdC5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZmU2ZjI1NGRiMjgyXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9scGFfdGVzdC5jXFxuQEAgLTAsMCArMSwxMjQgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbisvKlxcbisgKiBIaWdoZXIgdmlydHVhbCBhZGRyZXNzZXMgcmVhZC93cml0ZSB0ZXN0XFxuKyAqL1xcbisjaW5jbHVkZSBcXHUwMDNjdGVzdF91dGlsLmhcXHUwMDNlXFxuK1xcbisjaW5jbHVkZSBcXFwia3ZtX3N5c2NhbGxzLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJrdm1fdXRpbC5oXFxcIlxcbisjaW5jbHVkZSBcXFwidWNhbGxfY29tbW9uLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJndWVzdF9tb2Rlcy5oXFxcIlxcbisjaW5jbHVkZSBcXFwicHJvY2Vzc29yLmhcXFwiXFxuK1xcbisjZGVmaW5lIExPV19HVkFcXHRcXHQweGMwMDAwMDAwXFxuKyNkZWZpbmUgSElHSF9HVkEgKExPV19HVkEgfCBCSVQoNDgpKVxcbitcXG4rc3RhdGljIHZvaWQgZ3Vlc3RfY29kZSh2b2lkKVxcbit7XFxuK1xcdHU2NCAqbG93ID0gKHU2NCAqKUxPV19HVkE7XFxuK1xcdHU2NCAqaGlnaCA9ICh1NjQgKilISUdIX0dWQTtcXG4rXFxuK1xcdFdSSVRFX09OQ0UoKmxvdywgMSk7XFxuK1xcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmhpZ2gpLCAxKTtcXG4rXFx0V1JJVEVfT05DRSgqaGlnaCwgMik7XFxuK1xcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksIDIpO1xcbitcXG4rXFx0R1VFU1RfU1lOQygwKTtcXG4rXFxuK1xcdGFzbSB2b2xhdGlsZShcXFwiZHNiIHN5XFxcXG5cXFxcdFxcXCJcXG4rXFx0XFx0ICAgICBcXFwidGxiaSB2bWFsbGUxaXNcXFxcblxcXFx0XFxcIlxcbitcXHRcXHQgICAgIFxcXCJkc2Igc3lcXFxcblxcXFx0XFxcIlxcbitcXHRcXHQgICAgIFxcXCJpc2JcXFwiXFxuK1xcdFxcdCAgICAgOiA6IDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXG4rXFx0R1VFU1RfU1lOQygxKTsgLyogSG9zdCBpbnN0YWxscyBISUdIX0dWQSAtXFx1MDAzZSBncGFfYi4gKi9cXG4rXFxuK1xcdGFzbSB2b2xhdGlsZShcXFwiZHNiIHN5XFxcXG5cXFxcdFxcXCJcXG4rXFx0XFx0ICAgICBcXFwiaXNiXFxcXG5cXFxcdFxcXCJcXG4rXFx0XFx0ICAgICA6IDogOiBcXFwibWVtb3J5XFxcIik7XFxuK1xcbitcXHQvKiBsb3cgYW5kIGhpZ2ggbWFwIHRvIGRpZmZlcmVudCBHUEFzLiAqL1xcbitcXHRXUklURV9PTkNFKCpsb3csICAxKTtcXG4rXFx0V1JJVEVfT05DRSgqaGlnaCwgMik7XFxuK1xcbitcXHQvKiBDaGVjayBib3RoIGFmdGVyIGJvdGggd3JpdGVzIHRvIGRldGVjdCBhY2NpZGVudGFsIGFsaWFzaW5nLiAqL1xcbitcXHRHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpsb3cpLCAgMSk7XFxuK1xcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmhpZ2gpLCAyKTtcXG4rXFxuK1xcdC8qIFVwZGF0aW5nIHRoZSBsb3cgbWFwcGluZyBtdXN0IG5vdCBjaGFuZ2UgdGhlIGhpZ2ggbWFwcGluZy4gKi9cXG4rXFx0V1JJVEVfT05DRSgqbG93LCAzKTtcXG4rXFxuK1xcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksICAzKTtcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqaGlnaCksIDIpO1xcbitcXG4rXFx0R1VFU1RfRE9ORSgpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCAqbnJfdGVzdHMgPSBhcmc7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9pbml0IGluaXQ7XFxuK1xcdHN0cnVjdCBrdm1fdm0gKnZtO1xcbitcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuK1xcdHN0cnVjdCB1Y2FsbCB1YztcXG4rXFxuK1xcdGlmIChtb2RlICE9IFZNX01PREVfUDUyVjUyXzRLIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBtb2RlICE9IFZNX01PREVfUDUyVjUyXzE2SyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml82NEspXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdHZtID0gX192bV9jcmVhdGUoVk1fU0hBUEUobW9kZSksIDEsIDApO1xcbitcXHRrdm1fZ2V0X2RlZmF1bHRfdmNwdV90YXJnZXQodm0sIFxcdTAwMjZpbml0KTtcXG4rXFx0dmNwdSA9IGFhcmNoNjRfdmNwdV9hZGQodm0sIDAsIFxcdTAwMjZpbml0LCBndWVzdF9jb2RlKTtcXG4rXFx0a3ZtX2FyY2hfdm1fZmluYWxpemVfdmNwdXModm0pO1xcbitcXG4rXFx0dm1faW5pdF9kZXNjcmlwdG9yX3RhYmxlcyh2bSk7XFxuK1xcdHZjcHVfaW5pdF9kZXNjcmlwdG9yX3RhYmxlcyh2Y3B1KTtcXG4rXFxuK1xcdHU2NCBncGFfYSA9IHZtX3BoeV9wYWdlc19hbGxvYyh2bSwgMSwgMCwgMCk7XFxuK1xcdHU2NCBncGFfYiA9IHZtX3BoeV9wYWdlc19hbGxvYyh2bSwgMSwgMCwgMCk7XFxuK1xcbitcXHR2aXJ0X3BnX21hcCh2bSwgTE9XX0dWQSwgZ3BhX2EpO1xcbitcXHR2aXJ0X3BnX21hcCh2bSwgSElHSF9HVkEsIGdwYV9hKTtcXG4rXFxuK1xcdGZvciAoOzspIHtcXG4rXFx0XFx0dmNwdV9ydW4odmNwdSk7XFxuK1xcdFxcdHN3aXRjaCAoZ2V0X3VjYWxsKHZjcHUsIFxcdTAwMjZ1YykpIHtcXG4rXFx0XFx0Y2FzZSBVQ0FMTF9ET05FOlxcbitcXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdFxcdGNhc2UgVUNBTExfQUJPUlQ6XFxuK1xcdFxcdFxcdFJFUE9SVF9HVUVTVF9BU1NFUlQodWMpO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSBVQ0FMTF9TWU5DOlxcbitcXHRcXHRcXHRzd2l0Y2ggKHVjLmFyZ3NbMV0pIHtcXG4rXFx0XFx0XFx0Y2FzZSAwOlxcbitcXHRcXHRcXHRcXHRXUklURV9PTkNFKCp2aXJ0X2dldF9wdGVfaHZhKHZtLCBISUdIX0dWQSksIDApO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0Y2FzZSAxOlxcbitcXHRcXHRcXHRcXHR2aXJ0X3BnX21hcCh2bSwgSElHSF9HVkEsIGdwYV9iKTtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGRlZmF1bHQ6XFxuK1xcdFxcdFxcdFxcdFRFU1RfRkFJTChcXFwiVW5leHBlY3RlZCBzeW5jIHN0YWdlOiAlbHVcXFxcblxcXCIsIHVjLmFyZ3NbMV0pO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdC8qIENvbXBsZXRlIHRoZSBob3N0J3MgUFRFIHN0b3JlIGJlZm9yZSByZXN1bWluZyB0aGUgZ3Vlc3QuICovXFxuK1xcdFxcdFxcdGFzbSB2b2xhdGlsZShcXFwiZHNiIHN5XFxcIiA6IDogOiBcXFwibWVtb3J5XFxcIik7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRkZWZhdWx0OlxcbitcXHRcXHRcXHRURVNUX0ZBSUwoXFxcIlVuaGFuZGxlZCB1Y2FsbDogJWxkXFxcXG5cXFwiLCB1Yy5jbWQpO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK2RvbmU6XFxuK1xcdGt2bV92bV9mcmVlKHZtKTtcXG4rXFx0KCpucl90ZXN0cykrKztcXG4rfVxcbitcXG4raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBucl90ZXN0cyA9IDA7XFxuK1xcbitcXHRmb3JfZWFjaF9ndWVzdF9tb2RlKHJ1bl90ZXN0LCBcXHUwMDI2bnJfdGVzdHMpO1xcbitcXHRpZiAoIW5yX3Rlc3RzKVxcbitcXHRcXHRrc2Z0X2V4aXRfc2tpcChcXFwiTm8gc3VwcG9ydGVkIDUyLWJpdCBWQSBndWVzdCBtb2RlOyBza2lwcGluZyB0ZXN0XFxcXG5cXFwiKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvYXJtNjQvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaFxcbmluZGV4IGI4YTkwMmJhODU3M2QuLjRhYjAwYTdlNmVmYjUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvYXJtNjQvcHJvY2Vzc29yLmhcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaFxcbkBAIC0xMTMsNiArMTEzLDcgQEBcXG4gXFxuICNkZWZpbmUgUFRFX1ZBTElEXFx0XFx0QklUKDApXFxuICNkZWZpbmUgUEdEX1RZUEVfVEFCTEVcXHRcXHRCSVQoMSlcXG4rI2RlZmluZSBQNERfVFlQRV9UQUJMRVxcdFxcdEJJVCgxKVxcbiAjZGVmaW5lIFBVRF9UWVBFX1RBQkxFXFx0XFx0QklUKDEpXFxuICNkZWZpbmUgUE1EX1RZUEVfVEFCTEVcXHRcXHRCSVQoMSlcXG4gI2RlZmluZSBQVEVfVFlQRV9QQUdFXFx0XFx0QklUKDEpXFxuQEAgLTE2OCw3ICsxNjksNyBAQCBlbnVtIHtcXG4gXFx0XFx0XFx0ICAgKHYpID09IFZFQ1RPUl9TWU5DX0xPV0VSXzMyKVxcbiBcXG4gdm9pZCBhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyh1MzIgaXBhLCB1MzIgKmlwYTRrLFxcbi1cXHRcXHRcXHRcXHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGspO1xcbitcXHRcXHRcXHRcXHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGssIHUzMiAqdmE2NGspO1xcbiBcXG4gdm9pZCB2bV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHN0cnVjdCBrdm1fdm0gKnZtKTtcXG4gdm9pZCB2Y3B1X2luaXRfZGVzY3JpcHRvcl90YWJsZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2t2bV91dGlsLmhcXG5pbmRleCA1YTdhNDU1YjUzODc1Li4xYzI2OGZhOTk0YWE5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2t2bV91dGlsLmhcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oXFxuQEAgLTE4NCw2ICsxODQsOSBAQCBlbnVtIHZtX2d1ZXN0X21vZGUge1xcbiBcXHRWTV9NT0RFX1A1MlY0OF80SyxcXG4gXFx0Vk1fTU9ERV9QNTJWNDhfMTZLLFxcbiBcXHRWTV9NT0RFX1A1MlY0OF82NEssXFxuK1xcdFZNX01PREVfUDUyVjUyXzRLLFxcbitcXHRWTV9NT0RFX1A1MlY1Ml8xNkssXFxuK1xcdFZNX01PREVfUDUyVjUyXzY0SyxcXG4gXFx0Vk1fTU9ERV9QNDhWNDhfNEssXFxuIFxcdFZNX01PREVfUDQ4VjQ4XzE2SyxcXG4gXFx0Vk1fTU9ERV9QNDhWNDhfNjRLLFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuY1xcbmluZGV4IDAxMzI1YmY0ZDM2ZmMuLjk5MTVmMjVmMDI4NzQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmNcXG5AQCAtMjksMTMgKzI5LDI1IEBAIHN0YXRpYyB1NjQgcGdkX2luZGV4KHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEpXFxuIFxcdHJldHVybiAoZ3ZhIFxcdTAwM2VcXHUwMDNlIHNoaWZ0KSBcXHUwMDI2IG1hc2s7XFxuIH1cXG4gXFxuK3N0YXRpYyB1NjQgcDRkX2luZGV4KHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IHNoaWZ0ID0gMyAqICh2bS1cXHUwMDNlcGFnZV9zaGlmdCAtIDMpICsgdm0tXFx1MDAzZXBhZ2Vfc2hpZnQ7XFxuK1xcdHU2NCBtYXNrID0gKDFVTCBcXHUwMDNjXFx1MDAzYyAodm0tXFx1MDAzZXBhZ2Vfc2hpZnQgLSAzKSkgLSAxO1xcbitcXG4rXFx0VEVTVF9BU1NFUlQodm0tXFx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9PSA1LFxcbitcXHRcXHQgICAgXFxcIk1vZGUgJWQgZG9lcyBub3QgaGF2ZSA1IHBhZ2UgdGFibGUgbGV2ZWxzXFxcIiwgdm0tXFx1MDAzZW1vZGUpO1xcbitcXG4rXFx0cmV0dXJuIChndmEgXFx1MDAzZVxcdTAwM2Ugc2hpZnQpIFxcdTAwMjYgbWFzaztcXG4rfVxcbitcXG4gc3RhdGljIHU2NCBwdWRfaW5kZXgoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSlcXG4ge1xcbiBcXHR1bnNpZ25lZCBpbnQgc2hpZnQgPSAyICogKHZtLVxcdTAwM2VwYWdlX3NoaWZ0IC0gMykgKyB2bS1cXHUwMDNlcGFnZV9zaGlmdDtcXG4gXFx0dTY0IG1hc2sgPSAoMVVMIFxcdTAwM2NcXHUwMDNjICh2bS1cXHUwMDNlcGFnZV9zaGlmdCAtIDMpKSAtIDE7XFxuIFxcbi1cXHRURVNUX0FTU0VSVCh2bS1cXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID09IDQsXFxuLVxcdFxcdFxcXCJNb2RlICVkIGRvZXMgbm90IGhhdmUgNCBwYWdlIHRhYmxlIGxldmVsc1xcXCIsIHZtLVxcdTAwM2Vtb2RlKTtcXG4rXFx0VEVTVF9BU1NFUlQodm0tXFx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyBcXHUwMDNlPSA0LFxcbitcXHRcXHQgICAgXFxcIk1vZGUgJWQgZG9lcyBub3QgaGF2ZSBcXHUwMDNlPSA0IHBhZ2UgdGFibGUgbGV2ZWxzXFxcIixcXG4rXFx0XFx0ICAgIHZtLVxcdTAwM2Vtb2RlKTtcXG4gXFxuIFxcdHJldHVybiAoZ3ZhIFxcdTAwM2VcXHUwMDNlIHNoaWZ0KSBcXHUwMDI2IG1hc2s7XFxuIH1cXG5AQCAtMTQ3LDYgKzE1OSwxMiBAQCBzdGF0aWMgdm9pZCBfdmlydF9wZ19tYXAoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgZ3BhX3QgZ3BhLFxcbiBcXHRcXHRcXHRcXHQgUEdEX1RZUEVfVEFCTEUgfCBQVEVfVkFMSUQpO1xcbiBcXG4gXFx0c3dpdGNoICh2bS1cXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzKSB7XFxuK1xcdGNhc2UgNTpcXG4rXFx0XFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwNGRfaW5kZXgodm0sIGd2YSkgKiA4O1xcbitcXHRcXHRpZiAoISpwdGVwKVxcbitcXHRcXHRcXHQqcHRlcCA9IGFkZHJfcHRlKHZtLCB2bV9hbGxvY19wYWdlX3RhYmxlKHZtKSxcXG4rXFx0XFx0XFx0XFx0XFx0IFA0RF9UWVBFX1RBQkxFIHwgUFRFX1ZBTElEKTtcXG4rXFx0XFx0LyogZmFsbCB0aHJvdWdoICovXFxuIFxcdGNhc2UgNDpcXG4gXFx0XFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwdWRfaW5kZXgodm0sIGd2YSkgKiA4O1xcbiBcXHRcXHRpZiAoISpwdGVwKVxcbkBAIC0xNjMsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgX3ZpcnRfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSxcXG4gXFx0XFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwdGVfaW5kZXgodm0sIGd2YSkgKiA4O1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4tXFx0XFx0VEVTVF9GQUlMKFxcXCJQYWdlIHRhYmxlIGxldmVscyBtdXN0IGJlIDIsIDMsIG9yIDRcXFwiKTtcXG4rXFx0XFx0VEVTVF9GQUlMKFxcXCJQYWdlIHRhYmxlIGxldmVscyBtdXN0IGJlIDIsIDMsIDQsIG9yIDVcXFwiKTtcXG4gXFx0fVxcbiBcXG4gXFx0cGdfYXR0ciA9IFBURV9BRiB8IFBURV9BVFRSSU5EWChhdHRyX2lkeCkgfCBQVEVfVFlQRV9QQUdFIHwgUFRFX1ZBTElEO1xcbkBAIC0xODIsMTggKzIwMCwzNSBAQCB2b2lkIHZpcnRfYXJjaF9wZ19tYXAoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgZ3BhX3QgZ3BhKVxcbiBcXG4gdTY0ICp2aXJ0X2dldF9wdGVfaHZhX2F0X2xldmVsKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGludCBsZXZlbClcXG4ge1xcbitcXHRpbnQgc3RhcnRfbGV2ZWwgPSA0IC0gdm0tXFx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscztcXG4gXFx0dTY0ICpwdGVwO1xcbiBcXG4rXFx0VEVTVF9BU1NFUlQobGV2ZWwgXFx1MDAzZT0gc3RhcnRfbGV2ZWwgXFx1MDAyNlxcdTAwMjYgbGV2ZWwgXFx1MDAzYz0gMyxcXG4rXFx0XFx0ICAgIFxcXCJJbnZhbGlkIHRyYW5zbGF0aW9uIGxldmVsICVkLCB2YWxpZCByYW5nZSBpcyAlZC0zXFxcIixcXG4rXFx0XFx0ICAgIGxldmVsLCBzdGFydF9sZXZlbCk7XFxuK1xcbiBcXHRpZiAoIXZtLVxcdTAwM2VtbXUucGdkX2NyZWF0ZWQpXFxuIFxcdFxcdGdvdG8gdW5tYXBwZWRfZ3ZhO1xcbiBcXG4gXFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgdm0tXFx1MDAzZW1tdS5wZ2QpICsgcGdkX2luZGV4KHZtLCBndmEpICogODtcXG4gXFx0aWYgKCFwdGVwKVxcbiBcXHRcXHRnb3RvIHVubWFwcGVkX2d2YTtcXG4tXFx0aWYgKGxldmVsID09IDApXFxuK1xcdC8qXFxuK1xcdCAqIFN0YWdlLTEgdHJhbnNsYXRpb24gc3RhcnRzIGF0IGxldmVsIC0xIGZvciBhIGZpdmUtbGV2ZWwgcGFnZVxcbitcXHQgKiB0YWJsZSwgYW5kIGF0IGxldmVscyAwLCAxLCBvciAyIGZvciBmb3VyLSwgdGhyZWUtLCBvciB0d28tbGV2ZWxcXG4rXFx0ICogcGFnZSB0YWJsZXMsIHJlc3BlY3RpdmVseS5cXG4rXFx0ICovXFxuK1xcdGlmIChsZXZlbCA9PSBzdGFydF9sZXZlbClcXG4gXFx0XFx0cmV0dXJuIHB0ZXA7XFxuIFxcbiBcXHRzd2l0Y2ggKHZtLVxcdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMpIHtcXG4rXFx0Y2FzZSA1OlxcbitcXHRcXHRwdGVwID0gYWRkcl9ncGEyaHZhKHZtLCBwdGVfYWRkcih2bSwgKnB0ZXApKSArIHA0ZF9pbmRleCh2bSwgZ3ZhKSAqIDg7XFxuK1xcdFxcdGlmICghcHRlcClcXG4rXFx0XFx0XFx0Z290byB1bm1hcHBlZF9ndmE7XFxuK1xcdFxcdGlmIChsZXZlbCA9PSAwKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0LyogZmFsbCB0aHJvdWdoICovXFxuIFxcdGNhc2UgNDpcXG4gXFx0XFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwdWRfaW5kZXgodm0sIGd2YSkgKiA4O1xcbiBcXHRcXHRpZiAoIXB0ZXApXFxuQEAgLTIxNCw3ICsyNDksNyBAQCB1NjQgKnZpcnRfZ2V0X3B0ZV9odmFfYXRfbGV2ZWwoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgaW50IGxldmVsKVxcbiBcXHRcXHRcXHRnb3RvIHVubWFwcGVkX2d2YTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuLVxcdFxcdFRFU1RfRkFJTChcXFwiUGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCBvciA0XFxcIik7XFxuK1xcdFxcdFRFU1RfRkFJTChcXFwiUGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCA0LCBvciA1XFxcIik7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBwdGVwO1xcbkBAIC0zMjEsMTIgKzM1NiwxNCBAQCB2b2lkIGFhcmNoNjRfdmNwdV9zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fdmNwdV9pbml0ICppbml0KVxcbiBcXHRjYXNlIFZNX01PREVfUFhYVllZXzRLOlxcbiBcXHRcXHRURVNUX0ZBSUwoXFxcIkFBcmNoNjQgZG9lcyBub3Qgc3VwcG9ydCA0SyBzaXplZCBwYWdlcyBcXFwiXFxuIFxcdFxcdFxcdCAgXFxcIndpdGggQU5ZLWJpdCBwaHlzaWNhbCBhZGRyZXNzIHJhbmdlc1xcXCIpO1xcbitcXHRjYXNlIFZNX01PREVfUDUyVjUyXzY0SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF82NEs6XFxuIFxcdGNhc2UgVk1fTU9ERV9QNDhWNDhfNjRLOlxcbiBcXHRjYXNlIFZNX01PREVfUDQwVjQ4XzY0SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1AzNlY0OF82NEs6XFxuIFxcdFxcdHRjcl9lbDEgfD0gVENSX1RHMF82NEs7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF8xNks6XFxuIFxcdGNhc2UgVk1fTU9ERV9QNDhWNDhfMTZLOlxcbiBcXHRjYXNlIFZNX01PREVfUDQwVjQ4XzE2SzpcXG5AQCAtMzM0LDYgKzM3MSw3IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXFxuIFxcdGNhc2UgVk1fTU9ERV9QMzZWNDdfMTZLOlxcbiBcXHRcXHR0Y3JfZWwxIHw9IFRDUl9URzBfMTZLO1xcbiBcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBWTV9NT0RFX1A1MlY1Ml80SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF80SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1A0OFY0OF80SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1A0MFY0OF80SzpcXG5AQCAtMzQ4LDYgKzM4Niw5IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXFxuIFxcbiBcXHQvKiBDb25maWd1cmUgb3V0cHV0IHNpemUgKi9cXG4gXFx0c3dpdGNoICh2bS1cXHUwMDNlbW9kZSkge1xcbitcXHRjYXNlIFZNX01PREVfUDUyVjUyXzRLOlxcbitcXHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcXG4rXFx0Y2FzZSBWTV9NT0RFX1A1MlY1Ml82NEs6XFxuIFxcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNEs6XFxuIFxcdGNhc2UgVk1fTU9ERV9QNTJWNDhfMTZLOlxcbiBcXHRjYXNlIFZNX01PREVfUDUyVjQ4XzY0SzpcXG5AQCAtNTc5LDcgKzYyMCw3IEBAIHN0YXRpYyB1MzIgbWF4X2lwYV9mb3JfcGFnZV9zaXplKHUzMiB2bV9pcGEsIHUzMiBncmFuLFxcbiB9XFxuIFxcbiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssXFxuLVxcdFxcdFxcdFxcdCAgICAgIHUzMiAqaXBhMTZrLCB1MzIgKmlwYTY0aylcXG4rXFx0XFx0XFx0XFx0ICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrLCB1MzIgKnZhNjRrKVxcbiB7XFxuIFxcdHN0cnVjdCBrdm1fdmNwdV9pbml0IHByZWZlcnJlZF9pbml0O1xcbiBcXHRpbnQga3ZtX2ZkLCB2bV9mZCwgdmNwdV9mZCwgZXJyO1xcbkBAIC02MTcsNiArNjU4LDEzIEBAIHZvaWQgYWFyY2g2NF9nZXRfc3VwcG9ydGVkX3BhZ2Vfc2l6ZXModTMyIGlwYSwgdTMyICppcGE0ayxcXG4gXFx0KmlwYTE2ayA9IG1heF9pcGFfZm9yX3BhZ2Vfc2l6ZShpcGEsIGdyYW4sIElEX0FBNjRNTUZSMF9FTDFfVEdSQU4xNl9OSSxcXG4gXFx0XFx0XFx0XFx0XFx0SURfQUE2NE1NRlIwX0VMMV9UR1JBTjE2XzUyX0JJVCk7XFxuIFxcbitcXHRyZWcuaWQgPSBLVk1fQVJNNjRfU1lTX1JFRyhTWVNfSURfQUE2NE1NRlIyX0VMMSk7XFxuK1xcdGVyciA9IGlvY3RsKHZjcHVfZmQsIEtWTV9HRVRfT05FX1JFRywgXFx1MDAyNnJlZyk7XFxuK1xcdFRFU1RfQVNTRVJUKGVyciA9PSAwLCBLVk1fSU9DVExfRVJST1IoS1ZNX0dFVF9PTkVfUkVHLCBlcnIpKTtcXG4rXFxuK1xcdCp2YTY0ayA9IEZJRUxEX0dFVChJRF9BQTY0TU1GUjJfRUwxX1ZBUmFuZ2UsIHZhbCkgXFx1MDAzZT1cXG4rXFx0XFx0SURfQUE2NE1NRlIyX0VMMV9WQVJhbmdlXzUyID8gNTIgOiA0ODtcXG4rXFxuIFxcdGNsb3NlKHZjcHVfZmQpO1xcbiBcXHRjbG9zZSh2bV9mZCk7XFxuIFxcdGNsb3NlKGt2bV9mZCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuY1xcbmluZGV4IDdhOTZjNDNiNTcwNGQuLjhkMjc0ODE0NWY4ZjggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9ndWVzdF9tb2Rlcy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9ndWVzdF9tb2Rlcy5jXFxuQEAgLTIwLDExICsyMCwxNCBAQCB2b2lkIGd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KHZvaWQpXFxuICNpZmRlZiBfX2FhcmNoNjRfX1xcbiBcXHR7XFxuIFxcdFxcdHVuc2lnbmVkIGludCBsaW1pdCA9IGt2bV9jaGVja19jYXAoS1ZNX0NBUF9BUk1fVk1fSVBBX1NJWkUpO1xcbi1cXHRcXHR1MzIgaXBhNGssIGlwYTE2aywgaXBhNjRrO1xcbitcXHRcXHR1MzIgaXBhNGssIGlwYTE2aywgaXBhNjRrLCB2YTY0aztcXG4gXFx0XFx0aW50IGk7XFxuIFxcbi1cXHRcXHRhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyhsaW1pdCwgXFx1MDAyNmlwYTRrLCBcXHUwMDI2aXBhMTZrLCBcXHUwMDI2aXBhNjRrKTtcXG4rXFx0XFx0YWFyY2g2NF9nZXRfc3VwcG9ydGVkX3BhZ2Vfc2l6ZXMobGltaXQsIFxcdTAwMjZpcGE0aywgXFx1MDAyNmlwYTE2aywgXFx1MDAyNmlwYTY0aywgXFx1MDAyNnZhNjRrKTtcXG4gXFxuK1xcdFxcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzRLLCBpcGE0ayBcXHUwMDNlPSA1Mik7XFxuK1xcdFxcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzE2SywgaXBhMTZrIFxcdTAwM2U9IDUyKTtcXG4rXFx0XFx0Z3Vlc3RfbW9kZV9hcHBlbmQoVk1fTU9ERV9QNTJWNTJfNjRLLCBpcGE2NGsgXFx1MDAzZT0gNTIgXFx1MDAyNlxcdTAwMjYgdmE2NGsgXFx1MDAzZT0gNTIpO1xcbiBcXHRcXHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF80SywgaXBhNGsgXFx1MDAzZT0gNTIpO1xcbiBcXHRcXHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF8xNkssIGlwYTE2ayBcXHUwMDNlPSA1Mik7XFxuIFxcdFxcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjQ4XzY0SywgaXBhNjRrIFxcdTAwM2U9IDUyKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXFxuaW5kZXggOWRkYzA0N2Q1YzI3NS4uYmMzZWQwMzRlMjAzNiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcXG5AQCAtMjAzLDYgKzIwMyw5IEBAIGNvbnN0IGNoYXIgKnZtX2d1ZXN0X21vZGVfc3RyaW5nKHUzMiBpKVxcbiBcXHRcXHRbVk1fTU9ERV9QNTJWNDhfNEtdXFx0PSBcXFwiUEEtYml0czo1MiwgIFZBLWJpdHM6NDgsICA0SyBwYWdlc1xcXCIsXFxuIFxcdFxcdFtWTV9NT0RFX1A1MlY0OF8xNktdXFx0PSBcXFwiUEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDE2SyBwYWdlc1xcXCIsXFxuIFxcdFxcdFtWTV9NT0RFX1A1MlY0OF82NEtdXFx0PSBcXFwiUEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDY0SyBwYWdlc1xcXCIsXFxuK1xcdFxcdFtWTV9NT0RFX1A1MlY1Ml80S11cXHQ9IFxcXCJQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgIDRLIHBhZ2VzXFxcIixcXG4rXFx0XFx0W1ZNX01PREVfUDUyVjUyXzE2S11cXHQ9IFxcXCJQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgMTZLIHBhZ2VzXFxcIixcXG4rXFx0XFx0W1ZNX01PREVfUDUyVjUyXzY0S11cXHQ9IFxcXCJQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgNjRLIHBhZ2VzXFxcIixcXG4gXFx0XFx0W1ZNX01PREVfUDQ4VjQ4XzRLXVxcdD0gXFxcIlBBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAgNEsgcGFnZXNcXFwiLFxcbiBcXHRcXHRbVk1fTU9ERV9QNDhWNDhfMTZLXVxcdD0gXFxcIlBBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAxNksgcGFnZXNcXFwiLFxcbiBcXHRcXHRbVk1fTU9ERV9QNDhWNDhfNjRLXVxcdD0gXFxcIlBBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCA2NEsgcGFnZXNcXFwiLFxcbkBAIC0yMzksNiArMjQyLDkgQEAgY29uc3Qgc3RydWN0IHZtX2d1ZXN0X21vZGVfcGFyYW1zIHZtX2d1ZXN0X21vZGVfcGFyYW1zW10gPSB7XFxuIFxcdFtWTV9NT0RFX1A1MlY0OF80S11cXHQ9IHsgNTIsIDQ4LCAgMHgxMDAwLCAxMiB9LFxcbiBcXHRbVk1fTU9ERV9QNTJWNDhfMTZLXVxcdD0geyA1MiwgNDgsICAweDQwMDAsIDE0IH0sXFxuIFxcdFtWTV9NT0RFX1A1MlY0OF82NEtdXFx0PSB7IDUyLCA0OCwgMHgxMDAwMCwgMTYgfSxcXG4rXFx0W1ZNX01PREVfUDUyVjUyXzRLXVxcdD0geyA1MiwgNTIsICAweDEwMDAsIDEyIH0sXFxuK1xcdFtWTV9NT0RFX1A1MlY1Ml8xNktdXFx0PSB7IDUyLCA1MiwgIDB4NDAwMCwgMTQgfSxcXG4rXFx0W1ZNX01PREVfUDUyVjUyXzY0S11cXHQ9IHsgNTIsIDUyLCAweDEwMDAwLCAxNiB9LFxcbiBcXHRbVk1fTU9ERV9QNDhWNDhfNEtdXFx0PSB7IDQ4LCA0OCwgIDB4MTAwMCwgMTIgfSxcXG4gXFx0W1ZNX01PREVfUDQ4VjQ4XzE2S11cXHQ9IHsgNDgsIDQ4LCAgMHg0MDAwLCAxNCB9LFxcbiBcXHRbVk1fTU9ERV9QNDhWNDhfNjRLXVxcdD0geyA0OCwgNDgsIDB4MTAwMDAsIDE2IH0sXFxuQEAgLTMwNiwxMCArMzEyLDE0IEBAIHN0cnVjdCBrdm1fdm0gKl9fX192bV9jcmVhdGUoc3RydWN0IHZtX3NoYXBlIHNoYXBlKVxcbiBcXG4gXFx0LyogU2V0dXAgbW9kZSBzcGVjaWZpYyB0cmFpdHMuICovXFxuIFxcdHN3aXRjaCAodm0tXFx1MDAzZW1vZGUpIHtcXG4rXFx0Y2FzZSBWTV9NT0RFX1A1MlY1Ml80SzpcXG4rXFx0XFx0dm0tXFx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9IDU7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFZNX01PREVfUDUyVjQ4XzRLOlxcbiBcXHRcXHR2bS1cXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID0gNDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNjRLOlxcbitcXHRjYXNlIFZNX01PREVfUDUyVjUyXzY0SzpcXG4gXFx0XFx0dm0tXFx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9IDM7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFZNX01PREVfUDQ4VjQ4XzRLOlxcbkBAIC0zMzAsNiArMzQwLDcgQEAgc3RydWN0IGt2bV92bSAqX19fX3ZtX2NyZWF0ZShzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUpXFxuIFxcdGNhc2UgVk1fTU9ERV9QNDhWNDhfMTZLOlxcbiBcXHRjYXNlIFZNX01PREVfUDQwVjQ4XzE2SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1AzNlY0OF8xNks6XFxuK1xcdGNhc2UgVk1fTU9ERV9QNTJWNTJfMTZLOlxcbiBcXHRcXHR2bS1cXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID0gNDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgVk1fTU9ERV9QNDdWNDdfMTZLOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwNzo0Mjo1Ny4yMTI1NjQxNzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjc1NzI2MzM5NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmLXRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8gKHNwZWNpZmljYWxseSBhcm02NCBndWVzdCBzdXBwb3J0IGFuZCB0ZXN0aW5nKS4gVGhlc2UgdXNlci1zcGFjZSB0ZXN0IGZpbGVzIGRvIG5vdCBtb2RpZnkgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3IgYW55IGtlcm5lbCBtb2R1bGVzLCBtYWtpbmcgdGhlbSBub24ta2VybmVsIGNoYW5nZXMgdGhhdCBkbyBub3Qgd2FycmFudCBrZXJuZWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYmEyNmEyOGZlOTNmZmI5ODkxMjIyZjE2MzYzNWQ5NjBiOTc5OWM3ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDE0IDA3OjQyOjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbmluZGV4IDk2YmFiNzAwMmQzOWUuLjFlOWQwNTlmZmIyNGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG5AQCAtMTc5LDYgKzE3OSw3IEBAIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2hlbGxvX2VsMlxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2hvc3Rfc3ZlXG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gYXJtNjQvaHlwZXJjYWxsc1xuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2V4dGVybmFsX2Fib3J0c1xuK1RFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2xwYV90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gYXJtNjQvbW1pb19zaWduX2V4dFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L3BhZ2VfZmF1bHRfdGVzdFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L3BzY2lfdGVzdFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9scGFfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2xwYV90ZXN0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZmU2ZjI1NGRiMjgyXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvbHBhX3Rlc3QuY1xuQEAgLTAsMCArMSwxMjQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4rLypcbisgKiBIaWdoZXIgdmlydHVhbCBhZGRyZXNzZXMgcmVhZC93cml0ZSB0ZXN0XG4rICovXG4rI2luY2x1ZGUgXHUwMDNjdGVzdF91dGlsLmhcdTAwM2VcbitcbisjaW5jbHVkZSBcImt2bV9zeXNjYWxscy5oXCJcbisjaW5jbHVkZSBcImt2bV91dGlsLmhcIlxuKyNpbmNsdWRlIFwidWNhbGxfY29tbW9uLmhcIlxuKyNpbmNsdWRlIFwiZ3Vlc3RfbW9kZXMuaFwiXG4rI2luY2x1ZGUgXCJwcm9jZXNzb3IuaFwiXG4rXG4rI2RlZmluZSBMT1dfR1ZBXHRcdDB4YzAwMDAwMDBcbisjZGVmaW5lIEhJR0hfR1ZBIChMT1dfR1ZBIHwgQklUKDQ4KSlcbitcbitzdGF0aWMgdm9pZCBndWVzdF9jb2RlKHZvaWQpXG4re1xuK1x0dTY0ICpsb3cgPSAodTY0ICopTE9XX0dWQTtcbitcdHU2NCAqaGlnaCA9ICh1NjQgKilISUdIX0dWQTtcbitcbitcdFdSSVRFX09OQ0UoKmxvdywgMSk7XG4rXHRHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpoaWdoKSwgMSk7XG4rXHRXUklURV9PTkNFKCpoaWdoLCAyKTtcbitcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksIDIpO1xuK1xuK1x0R1VFU1RfU1lOQygwKTtcbitcbitcdGFzbSB2b2xhdGlsZShcImRzYiBzeVxcblxcdFwiXG4rXHRcdCAgICAgXCJ0bGJpIHZtYWxsZTFpc1xcblxcdFwiXG4rXHRcdCAgICAgXCJkc2Igc3lcXG5cXHRcIlxuK1x0XHQgICAgIFwiaXNiXCJcbitcdFx0ICAgICA6IDogOiBcIm1lbW9yeVwiKTtcbitcbitcdEdVRVNUX1NZTkMoMSk7IC8qIEhvc3QgaW5zdGFsbHMgSElHSF9HVkEgLVx1MDAzZSBncGFfYi4gKi9cbitcbitcdGFzbSB2b2xhdGlsZShcImRzYiBzeVxcblxcdFwiXG4rXHRcdCAgICAgXCJpc2JcXG5cXHRcIlxuK1x0XHQgICAgIDogOiA6IFwibWVtb3J5XCIpO1xuK1xuK1x0LyogbG93IGFuZCBoaWdoIG1hcCB0byBkaWZmZXJlbnQgR1BBcy4gKi9cbitcdFdSSVRFX09OQ0UoKmxvdywgIDEpO1xuK1x0V1JJVEVfT05DRSgqaGlnaCwgMik7XG4rXG4rXHQvKiBDaGVjayBib3RoIGFmdGVyIGJvdGggd3JpdGVzIHRvIGRldGVjdCBhY2NpZGVudGFsIGFsaWFzaW5nLiAqL1xuK1x0R1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqbG93KSwgIDEpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqaGlnaCksIDIpO1xuK1xuK1x0LyogVXBkYXRpbmcgdGhlIGxvdyBtYXBwaW5nIG11c3Qgbm90IGNoYW5nZSB0aGUgaGlnaCBtYXBwaW5nLiAqL1xuK1x0V1JJVEVfT05DRSgqbG93LCAzKTtcbitcbitcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksICAzKTtcbitcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmhpZ2gpLCAyKTtcbitcbitcdEdVRVNUX0RPTkUoKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbit7XG4rXHR1bnNpZ25lZCBpbnQgKm5yX3Rlc3RzID0gYXJnO1xuK1x0c3RydWN0IGt2bV92Y3B1X2luaXQgaW5pdDtcbitcdHN0cnVjdCBrdm1fdm0gKnZtO1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuK1x0c3RydWN0IHVjYWxsIHVjO1xuK1xuK1x0aWYgKG1vZGUgIT0gVk1fTU9ERV9QNTJWNTJfNEsgXHUwMDI2XHUwMDI2XG4rXHQgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml8xNksgXHUwMDI2XHUwMDI2XG4rXHQgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml82NEspXG4rXHRcdHJldHVybjtcbitcbitcdHZtID0gX192bV9jcmVhdGUoVk1fU0hBUEUobW9kZSksIDEsIDApO1xuK1x0a3ZtX2dldF9kZWZhdWx0X3ZjcHVfdGFyZ2V0KHZtLCBcdTAwMjZpbml0KTtcbitcdHZjcHUgPSBhYXJjaDY0X3ZjcHVfYWRkKHZtLCAwLCBcdTAwMjZpbml0LCBndWVzdF9jb2RlKTtcbitcdGt2bV9hcmNoX3ZtX2ZpbmFsaXplX3ZjcHVzKHZtKTtcbitcbitcdHZtX2luaXRfZGVzY3JpcHRvcl90YWJsZXModm0pO1xuK1x0dmNwdV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHZjcHUpO1xuK1xuK1x0dTY0IGdwYV9hID0gdm1fcGh5X3BhZ2VzX2FsbG9jKHZtLCAxLCAwLCAwKTtcbitcdHU2NCBncGFfYiA9IHZtX3BoeV9wYWdlc19hbGxvYyh2bSwgMSwgMCwgMCk7XG4rXG4rXHR2aXJ0X3BnX21hcCh2bSwgTE9XX0dWQSwgZ3BhX2EpO1xuK1x0dmlydF9wZ19tYXAodm0sIEhJR0hfR1ZBLCBncGFfYSk7XG4rXG4rXHRmb3IgKDs7KSB7XG4rXHRcdHZjcHVfcnVuKHZjcHUpO1xuK1x0XHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcdTAwMjZ1YykpIHtcbitcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuK1x0XHRcdGdvdG8gZG9uZTtcbitcdFx0Y2FzZSBVQ0FMTF9BQk9SVDpcbitcdFx0XHRSRVBPUlRfR1VFU1RfQVNTRVJUKHVjKTtcbitcdFx0XHRicmVhaztcbitcdFx0Y2FzZSBVQ0FMTF9TWU5DOlxuK1x0XHRcdHN3aXRjaCAodWMuYXJnc1sxXSkge1xuK1x0XHRcdGNhc2UgMDpcbitcdFx0XHRcdFdSSVRFX09OQ0UoKnZpcnRfZ2V0X3B0ZV9odmEodm0sIEhJR0hfR1ZBKSwgMCk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIDE6XG4rXHRcdFx0XHR2aXJ0X3BnX21hcCh2bSwgSElHSF9HVkEsIGdwYV9iKTtcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdGRlZmF1bHQ6XG4rXHRcdFx0XHRURVNUX0ZBSUwoXCJVbmV4cGVjdGVkIHN5bmMgc3RhZ2U6ICVsdVxcblwiLCB1Yy5hcmdzWzFdKTtcbitcdFx0XHR9XG4rXHRcdFx0LyogQ29tcGxldGUgdGhlIGhvc3QncyBQVEUgc3RvcmUgYmVmb3JlIHJlc3VtaW5nIHRoZSBndWVzdC4gKi9cbitcdFx0XHRhc20gdm9sYXRpbGUoXCJkc2Igc3lcIiA6IDogOiBcIm1lbW9yeVwiKTtcbitcdFx0XHRicmVhaztcbitcdFx0ZGVmYXVsdDpcbitcdFx0XHRURVNUX0ZBSUwoXCJVbmhhbmRsZWQgdWNhbGw6ICVsZFxcblwiLCB1Yy5jbWQpO1xuK1x0XHR9XG4rXHR9XG4rXG4rZG9uZTpcbitcdGt2bV92bV9mcmVlKHZtKTtcbitcdCgqbnJfdGVzdHMpKys7XG4rfVxuK1xuK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbit7XG4rXHR1bnNpZ25lZCBpbnQgbnJfdGVzdHMgPSAwO1xuK1xuK1x0Zm9yX2VhY2hfZ3Vlc3RfbW9kZShydW5fdGVzdCwgXHUwMDI2bnJfdGVzdHMpO1xuK1x0aWYgKCFucl90ZXN0cylcbitcdFx0a3NmdF9leGl0X3NraXAoXCJObyBzdXBwb3J0ZWQgNTItYml0IFZBIGd1ZXN0IG1vZGU7IHNraXBwaW5nIHRlc3RcXG5cIik7XG4rXHRyZXR1cm4gMDtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvYXJtNjQvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaFxuaW5kZXggYjhhOTAyYmE4NTczZC4uNGFiMDBhN2U2ZWZiNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaFxuQEAgLTExMyw2ICsxMTMsNyBAQFxuIFxuICNkZWZpbmUgUFRFX1ZBTElEXHRcdEJJVCgwKVxuICNkZWZpbmUgUEdEX1RZUEVfVEFCTEVcdFx0QklUKDEpXG4rI2RlZmluZSBQNERfVFlQRV9UQUJMRVx0XHRCSVQoMSlcbiAjZGVmaW5lIFBVRF9UWVBFX1RBQkxFXHRcdEJJVCgxKVxuICNkZWZpbmUgUE1EX1RZUEVfVEFCTEVcdFx0QklUKDEpXG4gI2RlZmluZSBQVEVfVFlQRV9QQUdFXHRcdEJJVCgxKVxuQEAgLTE2OCw3ICsxNjksNyBAQCBlbnVtIHtcbiBcdFx0XHQgICAodikgPT0gVkVDVE9SX1NZTkNfTE9XRVJfMzIpXG4gXG4gdm9pZCBhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyh1MzIgaXBhLCB1MzIgKmlwYTRrLFxuLVx0XHRcdFx0ICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrKTtcbitcdFx0XHRcdCAgICAgIHUzMiAqaXBhMTZrLCB1MzIgKmlwYTY0aywgdTMyICp2YTY0ayk7XG4gXG4gdm9pZCB2bV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHN0cnVjdCBrdm1fdm0gKnZtKTtcbiB2b2lkIHZjcHVfaW5pdF9kZXNjcmlwdG9yX3RhYmxlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2t2bV91dGlsLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oXG5pbmRleCA1YTdhNDU1YjUzODc1Li4xYzI2OGZhOTk0YWE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaFxuQEAgLTE4NCw2ICsxODQsOSBAQCBlbnVtIHZtX2d1ZXN0X21vZGUge1xuIFx0Vk1fTU9ERV9QNTJWNDhfNEssXG4gXHRWTV9NT0RFX1A1MlY0OF8xNkssXG4gXHRWTV9NT0RFX1A1MlY0OF82NEssXG4rXHRWTV9NT0RFX1A1MlY1Ml80SyxcbitcdFZNX01PREVfUDUyVjUyXzE2SyxcbitcdFZNX01PREVfUDUyVjUyXzY0SyxcbiBcdFZNX01PREVfUDQ4VjQ4XzRLLFxuIFx0Vk1fTU9ERV9QNDhWNDhfMTZLLFxuIFx0Vk1fTU9ERV9QNDhWNDhfNjRLLFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jXG5pbmRleCAwMTMyNWJmNGQzNmZjLi45OTE1ZjI1ZjAyODc0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuY1xuQEAgLTI5LDEzICsyOSwyNSBAQCBzdGF0aWMgdTY0IHBnZF9pbmRleChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhKVxuIFx0cmV0dXJuIChndmEgXHUwMDNlXHUwMDNlIHNoaWZ0KSBcdTAwMjYgbWFzaztcbiB9XG4gXG4rc3RhdGljIHU2NCBwNGRfaW5kZXgoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSlcbit7XG4rXHR1bnNpZ25lZCBpbnQgc2hpZnQgPSAzICogKHZtLVx1MDAzZXBhZ2Vfc2hpZnQgLSAzKSArIHZtLVx1MDAzZXBhZ2Vfc2hpZnQ7XG4rXHR1NjQgbWFzayA9ICgxVUwgXHUwMDNjXHUwMDNjICh2bS1cdTAwM2VwYWdlX3NoaWZ0IC0gMykpIC0gMTtcbitcbitcdFRFU1RfQVNTRVJUKHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9PSA1LFxuK1x0XHQgICAgXCJNb2RlICVkIGRvZXMgbm90IGhhdmUgNSBwYWdlIHRhYmxlIGxldmVsc1wiLCB2bS1cdTAwM2Vtb2RlKTtcbitcbitcdHJldHVybiAoZ3ZhIFx1MDAzZVx1MDAzZSBzaGlmdCkgXHUwMDI2IG1hc2s7XG4rfVxuK1xuIHN0YXRpYyB1NjQgcHVkX2luZGV4KHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEpXG4ge1xuIFx0dW5zaWduZWQgaW50IHNoaWZ0ID0gMiAqICh2bS1cdTAwM2VwYWdlX3NoaWZ0IC0gMykgKyB2bS1cdTAwM2VwYWdlX3NoaWZ0O1xuIFx0dTY0IG1hc2sgPSAoMVVMIFx1MDAzY1x1MDAzYyAodm0tXHUwMDNlcGFnZV9zaGlmdCAtIDMpKSAtIDE7XG4gXG4tXHRURVNUX0FTU0VSVCh2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMgPT0gNCxcbi1cdFx0XCJNb2RlICVkIGRvZXMgbm90IGhhdmUgNCBwYWdlIHRhYmxlIGxldmVsc1wiLCB2bS1cdTAwM2Vtb2RlKTtcbitcdFRFU1RfQVNTRVJUKHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyBcdTAwM2U9IDQsXG4rXHRcdCAgICBcIk1vZGUgJWQgZG9lcyBub3QgaGF2ZSBcdTAwM2U9IDQgcGFnZSB0YWJsZSBsZXZlbHNcIixcbitcdFx0ICAgIHZtLVx1MDAzZW1vZGUpO1xuIFxuIFx0cmV0dXJuIChndmEgXHUwMDNlXHUwMDNlIHNoaWZ0KSBcdTAwMjYgbWFzaztcbiB9XG5AQCAtMTQ3LDYgKzE1OSwxMiBAQCBzdGF0aWMgdm9pZCBfdmlydF9wZ19tYXAoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgZ3BhX3QgZ3BhLFxuIFx0XHRcdFx0IFBHRF9UWVBFX1RBQkxFIHwgUFRFX1ZBTElEKTtcbiBcbiBcdHN3aXRjaCAodm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzKSB7XG4rXHRjYXNlIDU6XG4rXHRcdHB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHB0ZV9hZGRyKHZtLCAqcHRlcCkpICsgcDRkX2luZGV4KHZtLCBndmEpICogODtcbitcdFx0aWYgKCEqcHRlcClcbitcdFx0XHQqcHRlcCA9IGFkZHJfcHRlKHZtLCB2bV9hbGxvY19wYWdlX3RhYmxlKHZtKSxcbitcdFx0XHRcdFx0IFA0RF9UWVBFX1RBQkxFIHwgUFRFX1ZBTElEKTtcbitcdFx0LyogZmFsbCB0aHJvdWdoICovXG4gXHRjYXNlIDQ6XG4gXHRcdHB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHB0ZV9hZGRyKHZtLCAqcHRlcCkpICsgcHVkX2luZGV4KHZtLCBndmEpICogODtcbiBcdFx0aWYgKCEqcHRlcClcbkBAIC0xNjMsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgX3ZpcnRfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSxcbiBcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwdGVfaW5kZXgodm0sIGd2YSkgKiA4O1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4tXHRcdFRFU1RfRkFJTChcIlBhZ2UgdGFibGUgbGV2ZWxzIG11c3QgYmUgMiwgMywgb3IgNFwiKTtcbitcdFx0VEVTVF9GQUlMKFwiUGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCA0LCBvciA1XCIpO1xuIFx0fVxuIFxuIFx0cGdfYXR0ciA9IFBURV9BRiB8IFBURV9BVFRSSU5EWChhdHRyX2lkeCkgfCBQVEVfVFlQRV9QQUdFIHwgUFRFX1ZBTElEO1xuQEAgLTE4MiwxOCArMjAwLDM1IEBAIHZvaWQgdmlydF9hcmNoX3BnX21hcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhLCBncGFfdCBncGEpXG4gXG4gdTY0ICp2aXJ0X2dldF9wdGVfaHZhX2F0X2xldmVsKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGludCBsZXZlbClcbiB7XG4rXHRpbnQgc3RhcnRfbGV2ZWwgPSA0IC0gdm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzO1xuIFx0dTY0ICpwdGVwO1xuIFxuK1x0VEVTVF9BU1NFUlQobGV2ZWwgXHUwMDNlPSBzdGFydF9sZXZlbCBcdTAwMjZcdTAwMjYgbGV2ZWwgXHUwMDNjPSAzLFxuK1x0XHQgICAgXCJJbnZhbGlkIHRyYW5zbGF0aW9uIGxldmVsICVkLCB2YWxpZCByYW5nZSBpcyAlZC0zXCIsXG4rXHRcdCAgICBsZXZlbCwgc3RhcnRfbGV2ZWwpO1xuK1xuIFx0aWYgKCF2bS1cdTAwM2VtbXUucGdkX2NyZWF0ZWQpXG4gXHRcdGdvdG8gdW5tYXBwZWRfZ3ZhO1xuIFxuIFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgdm0tXHUwMDNlbW11LnBnZCkgKyBwZ2RfaW5kZXgodm0sIGd2YSkgKiA4O1xuIFx0aWYgKCFwdGVwKVxuIFx0XHRnb3RvIHVubWFwcGVkX2d2YTtcbi1cdGlmIChsZXZlbCA9PSAwKVxuK1x0LypcbitcdCAqIFN0YWdlLTEgdHJhbnNsYXRpb24gc3RhcnRzIGF0IGxldmVsIC0xIGZvciBhIGZpdmUtbGV2ZWwgcGFnZVxuK1x0ICogdGFibGUsIGFuZCBhdCBsZXZlbHMgMCwgMSwgb3IgMiBmb3IgZm91ci0sIHRocmVlLSwgb3IgdHdvLWxldmVsXG4rXHQgKiBwYWdlIHRhYmxlcywgcmVzcGVjdGl2ZWx5LlxuK1x0ICovXG4rXHRpZiAobGV2ZWwgPT0gc3RhcnRfbGV2ZWwpXG4gXHRcdHJldHVybiBwdGVwO1xuIFxuIFx0c3dpdGNoICh2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMpIHtcbitcdGNhc2UgNTpcbitcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwNGRfaW5kZXgodm0sIGd2YSkgKiA4O1xuK1x0XHRpZiAoIXB0ZXApXG4rXHRcdFx0Z290byB1bm1hcHBlZF9ndmE7XG4rXHRcdGlmIChsZXZlbCA9PSAwKVxuK1x0XHRcdGJyZWFrO1xuK1x0XHQvKiBmYWxsIHRocm91Z2ggKi9cbiBcdGNhc2UgNDpcbiBcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwdWRfaW5kZXgodm0sIGd2YSkgKiA4O1xuIFx0XHRpZiAoIXB0ZXApXG5AQCAtMjE0LDcgKzI0OSw3IEBAIHU2NCAqdmlydF9nZXRfcHRlX2h2YV9hdF9sZXZlbChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhLCBpbnQgbGV2ZWwpXG4gXHRcdFx0Z290byB1bm1hcHBlZF9ndmE7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbi1cdFx0VEVTVF9GQUlMKFwiUGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCBvciA0XCIpO1xuK1x0XHRURVNUX0ZBSUwoXCJQYWdlIHRhYmxlIGxldmVscyBtdXN0IGJlIDIsIDMsIDQsIG9yIDVcIik7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcHRlcDtcbkBAIC0zMjEsMTIgKzM1NiwxNCBAQCB2b2lkIGFhcmNoNjRfdmNwdV9zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fdmNwdV9pbml0ICppbml0KVxuIFx0Y2FzZSBWTV9NT0RFX1BYWFZZWV80SzpcbiBcdFx0VEVTVF9GQUlMKFwiQUFyY2g2NCBkb2VzIG5vdCBzdXBwb3J0IDRLIHNpemVkIHBhZ2VzIFwiXG4gXHRcdFx0ICBcIndpdGggQU5ZLWJpdCBwaHlzaWNhbCBhZGRyZXNzIHJhbmdlc1wiKTtcbitcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNjRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF82NEs6XG4gXHRjYXNlIFZNX01PREVfUDQ4VjQ4XzY0SzpcbiBcdGNhc2UgVk1fTU9ERV9QNDBWNDhfNjRLOlxuIFx0Y2FzZSBWTV9NT0RFX1AzNlY0OF82NEs6XG4gXHRcdHRjcl9lbDEgfD0gVENSX1RHMF82NEs7XG4gXHRcdGJyZWFrO1xuK1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml8xNks6XG4gXHRjYXNlIFZNX01PREVfUDUyVjQ4XzE2SzpcbiBcdGNhc2UgVk1fTU9ERV9QNDhWNDhfMTZLOlxuIFx0Y2FzZSBWTV9NT0RFX1A0MFY0OF8xNks6XG5AQCAtMzM0LDYgKzM3MSw3IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXG4gXHRjYXNlIFZNX01PREVfUDM2VjQ3XzE2SzpcbiBcdFx0dGNyX2VsMSB8PSBUQ1JfVEcwXzE2SztcbiBcdFx0YnJlYWs7XG4rXHRjYXNlIFZNX01PREVfUDUyVjUyXzRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF80SzpcbiBcdGNhc2UgVk1fTU9ERV9QNDhWNDhfNEs6XG4gXHRjYXNlIFZNX01PREVfUDQwVjQ4XzRLOlxuQEAgLTM0OCw2ICszODYsOSBAQCB2b2lkIGFhcmNoNjRfdmNwdV9zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fdmNwdV9pbml0ICppbml0KVxuIFxuIFx0LyogQ29uZmlndXJlIG91dHB1dCBzaXplICovXG4gXHRzd2l0Y2ggKHZtLVx1MDAzZW1vZGUpIHtcbitcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNEs6XG4rXHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcbitcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNjRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF80SzpcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfMTZLOlxuIFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF82NEs6XG5AQCAtNTc5LDcgKzYyMCw3IEBAIHN0YXRpYyB1MzIgbWF4X2lwYV9mb3JfcGFnZV9zaXplKHUzMiB2bV9pcGEsIHUzMiBncmFuLFxuIH1cbiBcbiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssXG4tXHRcdFx0XHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGspXG4rXHRcdFx0XHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGssIHUzMiAqdmE2NGspXG4ge1xuIFx0c3RydWN0IGt2bV92Y3B1X2luaXQgcHJlZmVycmVkX2luaXQ7XG4gXHRpbnQga3ZtX2ZkLCB2bV9mZCwgdmNwdV9mZCwgZXJyO1xuQEAgLTYxNyw2ICs2NTgsMTMgQEAgdm9pZCBhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyh1MzIgaXBhLCB1MzIgKmlwYTRrLFxuIFx0KmlwYTE2ayA9IG1heF9pcGFfZm9yX3BhZ2Vfc2l6ZShpcGEsIGdyYW4sIElEX0FBNjRNTUZSMF9FTDFfVEdSQU4xNl9OSSxcbiBcdFx0XHRcdFx0SURfQUE2NE1NRlIwX0VMMV9UR1JBTjE2XzUyX0JJVCk7XG4gXG4rXHRyZWcuaWQgPSBLVk1fQVJNNjRfU1lTX1JFRyhTWVNfSURfQUE2NE1NRlIyX0VMMSk7XG4rXHRlcnIgPSBpb2N0bCh2Y3B1X2ZkLCBLVk1fR0VUX09ORV9SRUcsIFx1MDAyNnJlZyk7XG4rXHRURVNUX0FTU0VSVChlcnIgPT0gMCwgS1ZNX0lPQ1RMX0VSUk9SKEtWTV9HRVRfT05FX1JFRywgZXJyKSk7XG4rXG4rXHQqdmE2NGsgPSBGSUVMRF9HRVQoSURfQUE2NE1NRlIyX0VMMV9WQVJhbmdlLCB2YWwpIFx1MDAzZT1cbitcdFx0SURfQUE2NE1NRlIyX0VMMV9WQVJhbmdlXzUyID8gNTIgOiA0ODtcbitcbiBcdGNsb3NlKHZjcHVfZmQpO1xuIFx0Y2xvc2Uodm1fZmQpO1xuIFx0Y2xvc2Uoa3ZtX2ZkKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmNcbmluZGV4IDdhOTZjNDNiNTcwNGQuLjhkMjc0ODE0NWY4ZjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuY1xuQEAgLTIwLDExICsyMCwxNCBAQCB2b2lkIGd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KHZvaWQpXG4gI2lmZGVmIF9fYWFyY2g2NF9fXG4gXHR7XG4gXHRcdHVuc2lnbmVkIGludCBsaW1pdCA9IGt2bV9jaGVja19jYXAoS1ZNX0NBUF9BUk1fVk1fSVBBX1NJWkUpO1xuLVx0XHR1MzIgaXBhNGssIGlwYTE2aywgaXBhNjRrO1xuK1x0XHR1MzIgaXBhNGssIGlwYTE2aywgaXBhNjRrLCB2YTY0aztcbiBcdFx0aW50IGk7XG4gXG4tXHRcdGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKGxpbWl0LCBcdTAwMjZpcGE0aywgXHUwMDI2aXBhMTZrLCBcdTAwMjZpcGE2NGspO1xuK1x0XHRhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyhsaW1pdCwgXHUwMDI2aXBhNGssIFx1MDAyNmlwYTE2aywgXHUwMDI2aXBhNjRrLCBcdTAwMjZ2YTY0ayk7XG4gXG4rXHRcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzRLLCBpcGE0ayBcdTAwM2U9IDUyKTtcbitcdFx0Z3Vlc3RfbW9kZV9hcHBlbmQoVk1fTU9ERV9QNTJWNTJfMTZLLCBpcGExNmsgXHUwMDNlPSA1Mik7XG4rXHRcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzY0SywgaXBhNjRrIFx1MDAzZT0gNTIgXHUwMDI2XHUwMDI2IHZhNjRrIFx1MDAzZT0gNTIpO1xuIFx0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF80SywgaXBhNGsgXHUwMDNlPSA1Mik7XG4gXHRcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjQ4XzE2SywgaXBhMTZrIFx1MDAzZT0gNTIpO1xuIFx0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF82NEssIGlwYTY0ayBcdTAwM2U9IDUyKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbmluZGV4IDlkZGMwNDdkNWMyNzUuLmJjM2VkMDM0ZTIwMzYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuQEAgLTIwMyw2ICsyMDMsOSBAQCBjb25zdCBjaGFyICp2bV9ndWVzdF9tb2RlX3N0cmluZyh1MzIgaSlcbiBcdFx0W1ZNX01PREVfUDUyVjQ4XzRLXVx0PSBcIlBBLWJpdHM6NTIsICBWQS1iaXRzOjQ4LCAgNEsgcGFnZXNcIixcbiBcdFx0W1ZNX01PREVfUDUyVjQ4XzE2S11cdD0gXCJQQS1iaXRzOjUyLCAgVkEtYml0czo0OCwgMTZLIHBhZ2VzXCIsXG4gXHRcdFtWTV9NT0RFX1A1MlY0OF82NEtdXHQ9IFwiUEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDY0SyBwYWdlc1wiLFxuK1x0XHRbVk1fTU9ERV9QNTJWNTJfNEtdXHQ9IFwiUEEtYml0czo1MiwgIFZBLWJpdHM6NTIsICA0SyBwYWdlc1wiLFxuK1x0XHRbVk1fTU9ERV9QNTJWNTJfMTZLXVx0PSBcIlBBLWJpdHM6NTIsICBWQS1iaXRzOjUyLCAxNksgcGFnZXNcIixcbitcdFx0W1ZNX01PREVfUDUyVjUyXzY0S11cdD0gXCJQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgNjRLIHBhZ2VzXCIsXG4gXHRcdFtWTV9NT0RFX1A0OFY0OF80S11cdD0gXCJQQS1iaXRzOjQ4LCAgVkEtYml0czo0OCwgIDRLIHBhZ2VzXCIsXG4gXHRcdFtWTV9NT0RFX1A0OFY0OF8xNktdXHQ9IFwiUEEtYml0czo0OCwgIFZBLWJpdHM6NDgsIDE2SyBwYWdlc1wiLFxuIFx0XHRbVk1fTU9ERV9QNDhWNDhfNjRLXVx0PSBcIlBBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCA2NEsgcGFnZXNcIixcbkBAIC0yMzksNiArMjQyLDkgQEAgY29uc3Qgc3RydWN0IHZtX2d1ZXN0X21vZGVfcGFyYW1zIHZtX2d1ZXN0X21vZGVfcGFyYW1zW10gPSB7XG4gXHRbVk1fTU9ERV9QNTJWNDhfNEtdXHQ9IHsgNTIsIDQ4LCAgMHgxMDAwLCAxMiB9LFxuIFx0W1ZNX01PREVfUDUyVjQ4XzE2S11cdD0geyA1MiwgNDgsICAweDQwMDAsIDE0IH0sXG4gXHRbVk1fTU9ERV9QNTJWNDhfNjRLXVx0PSB7IDUyLCA0OCwgMHgxMDAwMCwgMTYgfSxcbitcdFtWTV9NT0RFX1A1MlY1Ml80S11cdD0geyA1MiwgNTIsICAweDEwMDAsIDEyIH0sXG4rXHRbVk1fTU9ERV9QNTJWNTJfMTZLXVx0PSB7IDUyLCA1MiwgIDB4NDAwMCwgMTQgfSxcbitcdFtWTV9NT0RFX1A1MlY1Ml82NEtdXHQ9IHsgNTIsIDUyLCAweDEwMDAwLCAxNiB9LFxuIFx0W1ZNX01PREVfUDQ4VjQ4XzRLXVx0PSB7IDQ4LCA0OCwgIDB4MTAwMCwgMTIgfSxcbiBcdFtWTV9NT0RFX1A0OFY0OF8xNktdXHQ9IHsgNDgsIDQ4LCAgMHg0MDAwLCAxNCB9LFxuIFx0W1ZNX01PREVfUDQ4VjQ4XzY0S11cdD0geyA0OCwgNDgsIDB4MTAwMDAsIDE2IH0sXG5AQCAtMzA2LDEwICszMTIsMTQgQEAgc3RydWN0IGt2bV92bSAqX19fX3ZtX2NyZWF0ZShzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUpXG4gXG4gXHQvKiBTZXR1cCBtb2RlIHNwZWNpZmljIHRyYWl0cy4gKi9cbiBcdHN3aXRjaCAodm0tXHUwMDNlbW9kZSkge1xuK1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml80SzpcbitcdFx0dm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID0gNTtcbitcdFx0YnJlYWs7XG4gXHRjYXNlIFZNX01PREVfUDUyVjQ4XzRLOlxuIFx0XHR2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMgPSA0O1xuIFx0XHRicmVhaztcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNjRLOlxuK1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml82NEs6XG4gXHRcdHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9IDM7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBWTV9NT0RFX1A0OFY0OF80SzpcbkBAIC0zMzAsNiArMzQwLDcgQEAgc3RydWN0IGt2bV92bSAqX19fX3ZtX2NyZWF0ZShzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUpXG4gXHRjYXNlIFZNX01PREVfUDQ4VjQ4XzE2SzpcbiBcdGNhc2UgVk1fTU9ERV9QNDBWNDhfMTZLOlxuIFx0Y2FzZSBWTV9NT0RFX1AzNlY0OF8xNks6XG4rXHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcbiBcdFx0dm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID0gNDtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFZNX01PREVfUDQ3VjQ3XzE2SzpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA3OjQyOjU3LjIxMjU2NjMyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjc1NzI2MDkzMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoOiBXb3J0aEZ1enppbmcgPSBGYWxzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiAgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBtb2RpZmllZCBmaWxlcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCB3YXJyYW50cyBmdXp6aW5nLiAgSSd2ZSBjaGVja2VkIHRoZSBmaWxlIGxpc3Q6XG5cbiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bWBcbiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2xwYV90ZXN0LmNgXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmNgXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY2BcblxuQWxsIHRoZSBtb2RpZmllZCBmaWxlcyBhcmUgbmVhdGx5IGNvbnRhaW5lZCB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9gLiBUaGF0J3MgYSBodWdlIHJlZCBmbGFnIOKAkyBhIGdvb2Qgb25lISBUaGlzIGlzICp0ZXh0Ym9vayogc2VsZi10ZXN0IGNvZGUsIGFuZCB0aGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IGl0IGlzICpub3QqIGltcGFjdGluZyB0aGUga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuIEkgaW1tZWRpYXRlbHkgcmVmZXIgdG8gbXkgbWVudGFsIGNoZWNrbGlzdCBmb3IgdGhlc2Uga2luZHMgb2Ygc2NlbmFyaW9zLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgY2hhbmdlcyBsaW1pdGVkIHRvIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIGxpa2UgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzYCwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIGFyZSBhIG5lZ2F0aXZlIGluZGljYXRvciwgYW5kIHRoYXQgd2UgcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS5cblxuTGV0J3MgZG91YmxlLWNoZWNrLiBJIHNlZSBubyBpbmRpY2F0aW9uIG9mIGtlcm5lbCBmaWxlIG1vZGlmaWNhdGlvbnMuIFRoZSBwcm92aWRlZCBkaWZmIGFwcGVhcnMgY29tcHJlaGVuc2l2ZS4gSSBjYW4gcXVpY2tseSBjb25maXJtIHRoaXM7IHRoZSBsaXN0IG9mIGZpbGVzIGluIHRoZSBkaWZmIGlzIGFsbCB0aGF0IGlzIGNoYW5nZWQuIEkgYW0gY2VydGFpbiB0aGF0IHRoZSBLVk0gc2VsZnRlc3RzIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZS5cblxuRmluYWxseSwgY29uc2lkZXIgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0LiBUaGUgdGVzdCBjb2RlIGlzIGFybTY0LCBtZWFuaW5nIHRoYXQgdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgKm5vdCogZm9yIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiBUaGlzIGdpdmVzIHVzIGFub3RoZXIgcmVhc29uIHRvIGZsYWcgdGhpcyBhcyBXb3J0aEZ1enppbmcgPSBmYWxzZS5cblxuU28sIHN1bW1pbmcgaXQgdXAsIG15IGRlY2lzaW9uIGlzOlxuXG4qICAgV29ydGhGdXp6aW5nOiBmYWxzZVxuKiAgIEVuYWJsZUNvbmZpZ3M6IFxcWyBdXG4qICAgRm9jdXNTeW1ib2xzOiBcXFsgXVxuKiAgIFJlYXNvbmluZzogQWxsIGNoYW5nZXMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdXNlci1zcGFjZSBLVk0gc2VsZi10ZXN0cyBhbmQgYXJlIGZvciBhbiBhcmNoaXRlY3R1cmUgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cbiAgICBJdCdzIGFuIHVuYW1iaWd1b3VzIFwibm8gZ29cIiBmb3IgZnV6emluZy4gV2UncmUgZG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYzOSwiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwNzo0MzowNC43ODUxNzgyNzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmLXRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8gKHNwZWNpZmljYWxseSBhcm02NCBndWVzdCBzdXBwb3J0IGFuZCB0ZXN0aW5nKS4gVGhlc2UgdXNlci1zcGFjZSB0ZXN0IGZpbGVzIGRvIG5vdCBtb2RpZnkgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3IgYW55IGtlcm5lbCBtb2R1bGVzLCBtYWtpbmcgdGhlbSBub24ta2VybmVsIGNoYW5nZXMgdGhhdCBkbyBub3Qgd2FycmFudCBrZXJuZWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmLXRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8gKHNwZWNpZmljYWxseSBhcm02NCBndWVzdCBzdXBwb3J0IGFuZCB0ZXN0aW5nKS4gVGhlc2UgdXNlci1zcGFjZSB0ZXN0IGZpbGVzIGRvIG5vdCBtb2RpZnkgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3IgYW55IGtlcm5lbCBtb2R1bGVzLCBtYWtpbmcgdGhlbSBub24ta2VybmVsIGNoYW5nZXMgdGhhdCBkbyBub3Qgd2FycmFudCBrZXJuZWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA3OjQzOjA0Ljc4NTE5OTk4NloiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowsqcp5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-14 07:40:58 +0000 UTC FinishedAt: 2026-09-14 07:43:05 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDA3OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGYtdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyAoc3BlY2lmaWNhbGx5IGFybTY0IGd1ZXN0IHN1cHBvcnQgYW5kIHRlc3RpbmcpLiBUaGVzZSB1c2VyLXNwYWNlIHRlc3QgZmlsZXMgZG8gbm90IG1vZGlmeSB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBhbnkga2VybmVsIG1vZHVsZXMsIG1ha2luZyB0aGVtIG5vbi1rZXJuZWwgY2hhbmdlcyB0aGF0IGRvIG5vdCB3YXJyYW50IGtlcm5lbCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwNzo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJhMjZhMjhmZTkzZmZiOTg5MTIyMmYxNjM2MzVkOTYwYjk3OTljN2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAwNzo0Mjo1NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuaW5kZXggOTZiYWI3MDAyZDM5ZS4uMWU5ZDA1OWZmYjI0YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbkBAIC0xNzksNiAmIzQzOzE3OSw3IEBAIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9oZWxsb19lbDJcbiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvaG9zdF9zdmVcbiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvaHlwZXJjYWxsc1xuIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9leHRlcm5hbF9hYm9ydHNcbiYjNDM7VEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGFybTY0L2xwYV90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGFybTY0L21taW9fc2lnbl9leHRcbiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvcGFnZV9mYXVsdF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGFybTY0L3BzY2lfdGVzdFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9scGFfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2xwYV90ZXN0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZmU2ZjI1NGRiMjgyXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvbHBhX3Rlc3QuY1xuQEAgLTAsMCAmIzQzOzEsMTI0IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiYjNDM7LypcbiYjNDM7ICogSGlnaGVyIHZpcnR1YWwgYWRkcmVzc2VzIHJlYWQvd3JpdGUgdGVzdFxuJiM0MzsgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjdGVzdF91dGlsLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2t2bV9zeXNjYWxscy5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2t2bV91dGlsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dWNhbGxfY29tbW9uLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7Z3Vlc3RfbW9kZXMuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwcm9jZXNzb3IuaFwmIzM0O1xuJiM0MztcbiYjNDM7I2RlZmluZSBMT1dfR1ZBXHRcdDB4YzAwMDAwMDBcbiYjNDM7I2RlZmluZSBISUdIX0dWQSAoTE9XX0dWQSB8IEJJVCg0OCkpXG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBndWVzdF9jb2RlKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHR1NjQgKmxvdyA9ICh1NjQgKilMT1dfR1ZBO1xuJiM0MztcdHU2NCAqaGlnaCA9ICh1NjQgKilISUdIX0dWQTtcbiYjNDM7XG4mIzQzO1x0V1JJVEVfT05DRSgqbG93LCAxKTtcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpoaWdoKSwgMSk7XG4mIzQzO1x0V1JJVEVfT05DRSgqaGlnaCwgMik7XG4mIzQzO1x0R1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqbG93KSwgMik7XG4mIzQzO1xuJiM0MztcdEdVRVNUX1NZTkMoMCk7XG4mIzQzO1xuJiM0MztcdGFzbSB2b2xhdGlsZShcJiMzNDtkc2Igc3lcXG5cXHRcJiMzNDtcbiYjNDM7XHRcdCAgICAgXCYjMzQ7dGxiaSB2bWFsbGUxaXNcXG5cXHRcJiMzNDtcbiYjNDM7XHRcdCAgICAgXCYjMzQ7ZHNiIHN5XFxuXFx0XCYjMzQ7XG4mIzQzO1x0XHQgICAgIFwmIzM0O2lzYlwmIzM0O1xuJiM0MztcdFx0ICAgICA6IDogOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0MztcbiYjNDM7XHRHVUVTVF9TWU5DKDEpOyAvKiBIb3N0IGluc3RhbGxzIEhJR0hfR1ZBIC1cdTAwM2UgZ3BhX2IuICovXG4mIzQzO1xuJiM0MztcdGFzbSB2b2xhdGlsZShcJiMzNDtkc2Igc3lcXG5cXHRcJiMzNDtcbiYjNDM7XHRcdCAgICAgXCYjMzQ7aXNiXFxuXFx0XCYjMzQ7XG4mIzQzO1x0XHQgICAgIDogOiA6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdC8qIGxvdyBhbmQgaGlnaCBtYXAgdG8gZGlmZmVyZW50IEdQQXMuICovXG4mIzQzO1x0V1JJVEVfT05DRSgqbG93LCAgMSk7XG4mIzQzO1x0V1JJVEVfT05DRSgqaGlnaCwgMik7XG4mIzQzO1xuJiM0MztcdC8qIENoZWNrIGJvdGggYWZ0ZXIgYm90aCB3cml0ZXMgdG8gZGV0ZWN0IGFjY2lkZW50YWwgYWxpYXNpbmcuICovXG4mIzQzO1x0R1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqbG93KSwgIDEpO1xuJiM0MztcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmhpZ2gpLCAyKTtcbiYjNDM7XG4mIzQzO1x0LyogVXBkYXRpbmcgdGhlIGxvdyBtYXBwaW5nIG11c3Qgbm90IGNoYW5nZSB0aGUgaGlnaCBtYXBwaW5nLiAqL1xuJiM0MztcdFdSSVRFX09OQ0UoKmxvdywgMyk7XG4mIzQzO1xuJiM0MztcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksICAzKTtcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpoaWdoKSwgMik7XG4mIzQzO1xuJiM0MztcdEdVRVNUX0RPTkUoKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCAqbnJfdGVzdHMgPSBhcmc7XG4mIzQzO1x0c3RydWN0IGt2bV92Y3B1X2luaXQgaW5pdDtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4mIzQzO1x0c3RydWN0IHVjYWxsIHVjO1xuJiM0MztcbiYjNDM7XHRpZiAobW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml80SyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml8xNksgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIG1vZGUgIT0gVk1fTU9ERV9QNTJWNTJfNjRLKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHR2bSA9IF9fdm1fY3JlYXRlKFZNX1NIQVBFKG1vZGUpLCAxLCAwKTtcbiYjNDM7XHRrdm1fZ2V0X2RlZmF1bHRfdmNwdV90YXJnZXQodm0sIFx1MDAyNmluaXQpO1xuJiM0MztcdHZjcHUgPSBhYXJjaDY0X3ZjcHVfYWRkKHZtLCAwLCBcdTAwMjZpbml0LCBndWVzdF9jb2RlKTtcbiYjNDM7XHRrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7XG4mIzQzO1xuJiM0MztcdHZtX2luaXRfZGVzY3JpcHRvcl90YWJsZXModm0pO1xuJiM0MztcdHZjcHVfaW5pdF9kZXNjcmlwdG9yX3RhYmxlcyh2Y3B1KTtcbiYjNDM7XG4mIzQzO1x0dTY0IGdwYV9hID0gdm1fcGh5X3BhZ2VzX2FsbG9jKHZtLCAxLCAwLCAwKTtcbiYjNDM7XHR1NjQgZ3BhX2IgPSB2bV9waHlfcGFnZXNfYWxsb2Modm0sIDEsIDAsIDApO1xuJiM0MztcbiYjNDM7XHR2aXJ0X3BnX21hcCh2bSwgTE9XX0dWQSwgZ3BhX2EpO1xuJiM0MztcdHZpcnRfcGdfbWFwKHZtLCBISUdIX0dWQSwgZ3BhX2EpO1xuJiM0MztcbiYjNDM7XHRmb3IgKDs7KSB7XG4mIzQzO1x0XHR2Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XHRcdHN3aXRjaCAoZ2V0X3VjYWxsKHZjcHUsIFx1MDAyNnVjKSkge1xuJiM0MztcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuJiM0MztcdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHRjYXNlIFVDQUxMX0FCT1JUOlxuJiM0MztcdFx0XHRSRVBPUlRfR1VFU1RfQVNTRVJUKHVjKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIFVDQUxMX1NZTkM6XG4mIzQzO1x0XHRcdHN3aXRjaCAodWMuYXJnc1sxXSkge1xuJiM0MztcdFx0XHRjYXNlIDA6XG4mIzQzO1x0XHRcdFx0V1JJVEVfT05DRSgqdmlydF9nZXRfcHRlX2h2YSh2bSwgSElHSF9HVkEpLCAwKTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0Y2FzZSAxOlxuJiM0MztcdFx0XHRcdHZpcnRfcGdfbWFwKHZtLCBISUdIX0dWQSwgZ3BhX2IpO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRkZWZhdWx0OlxuJiM0MztcdFx0XHRcdFRFU1RfRkFJTChcJiMzNDtVbmV4cGVjdGVkIHN5bmMgc3RhZ2U6ICVsdVxcblwmIzM0OywgdWMuYXJnc1sxXSk7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0LyogQ29tcGxldGUgdGhlIGhvc3QmIzM5O3MgUFRFIHN0b3JlIGJlZm9yZSByZXN1bWluZyB0aGUgZ3Vlc3QuICovXG4mIzQzO1x0XHRcdGFzbSB2b2xhdGlsZShcJiMzNDtkc2Igc3lcJiMzNDsgOiA6IDogXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRkZWZhdWx0OlxuJiM0MztcdFx0XHRURVNUX0ZBSUwoXCYjMzQ7VW5oYW5kbGVkIHVjYWxsOiAlbGRcXG5cJiMzNDssIHVjLmNtZCk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7ZG9uZTpcbiYjNDM7XHRrdm1fdm1fZnJlZSh2bSk7XG4mIzQzO1x0KCpucl90ZXN0cykmIzQzOyYjNDM7O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgbnJfdGVzdHMgPSAwO1xuJiM0MztcbiYjNDM7XHRmb3JfZWFjaF9ndWVzdF9tb2RlKHJ1bl90ZXN0LCBcdTAwMjZucl90ZXN0cyk7XG4mIzQzO1x0aWYgKCFucl90ZXN0cylcbiYjNDM7XHRcdGtzZnRfZXhpdF9za2lwKFwmIzM0O05vIHN1cHBvcnRlZCA1Mi1iaXQgVkEgZ3Vlc3QgbW9kZTsgc2tpcHBpbmcgdGVzdFxcblwmIzM0Oyk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oXG5pbmRleCBiOGE5MDJiYTg1NzNkLi40YWIwMGE3ZTZlZmI1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvYXJtNjQvcHJvY2Vzc29yLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oXG5AQCAtMTEzLDYgJiM0MzsxMTMsNyBAQFxuIFxuICNkZWZpbmUgUFRFX1ZBTElEXHRcdEJJVCgwKVxuICNkZWZpbmUgUEdEX1RZUEVfVEFCTEVcdFx0QklUKDEpXG4mIzQzOyNkZWZpbmUgUDREX1RZUEVfVEFCTEVcdFx0QklUKDEpXG4gI2RlZmluZSBQVURfVFlQRV9UQUJMRVx0XHRCSVQoMSlcbiAjZGVmaW5lIFBNRF9UWVBFX1RBQkxFXHRcdEJJVCgxKVxuICNkZWZpbmUgUFRFX1RZUEVfUEFHRVx0XHRCSVQoMSlcbkBAIC0xNjgsNyAmIzQzOzE2OSw3IEBAIGVudW0ge1xuIFx0XHRcdCAgICh2KSA9PSBWRUNUT1JfU1lOQ19MT1dFUl8zMilcbiBcbiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssXG4tXHRcdFx0XHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGspO1xuJiM0MztcdFx0XHRcdCAgICAgIHUzMiAqaXBhMTZrLCB1MzIgKmlwYTY0aywgdTMyICp2YTY0ayk7XG4gXG4gdm9pZCB2bV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHN0cnVjdCBrdm1fdm0gKnZtKTtcbiB2b2lkIHZjcHVfaW5pdF9kZXNjcmlwdG9yX3RhYmxlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2t2bV91dGlsLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oXG5pbmRleCA1YTdhNDU1YjUzODc1Li4xYzI2OGZhOTk0YWE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaFxuQEAgLTE4NCw2ICYjNDM7MTg0LDkgQEAgZW51bSB2bV9ndWVzdF9tb2RlIHtcbiBcdFZNX01PREVfUDUyVjQ4XzRLLFxuIFx0Vk1fTU9ERV9QNTJWNDhfMTZLLFxuIFx0Vk1fTU9ERV9QNTJWNDhfNjRLLFxuJiM0MztcdFZNX01PREVfUDUyVjUyXzRLLFxuJiM0MztcdFZNX01PREVfUDUyVjUyXzE2SyxcbiYjNDM7XHRWTV9NT0RFX1A1MlY1Ml82NEssXG4gXHRWTV9NT0RFX1A0OFY0OF80SyxcbiBcdFZNX01PREVfUDQ4VjQ4XzE2SyxcbiBcdFZNX01PREVfUDQ4VjQ4XzY0SyxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuY1xuaW5kZXggMDEzMjViZjRkMzZmYy4uOTkxNWYyNWYwMjg3NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmNcbkBAIC0yOSwxMyAmIzQzOzI5LDI1IEBAIHN0YXRpYyB1NjQgcGdkX2luZGV4KHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEpXG4gXHRyZXR1cm4gKGd2YSBcdTAwM2VcdTAwM2Ugc2hpZnQpIFx1MDAyNiBtYXNrO1xuIH1cbiBcbiYjNDM7c3RhdGljIHU2NCBwNGRfaW5kZXgoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSlcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCBzaGlmdCA9IDMgKiAodm0tXHUwMDNlcGFnZV9zaGlmdCAtIDMpICYjNDM7IHZtLVx1MDAzZXBhZ2Vfc2hpZnQ7XG4mIzQzO1x0dTY0IG1hc2sgPSAoMVVMIFx1MDAzY1x1MDAzYyAodm0tXHUwMDNlcGFnZV9zaGlmdCAtIDMpKSAtIDE7XG4mIzQzO1xuJiM0MztcdFRFU1RfQVNTRVJUKHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9PSA1LFxuJiM0MztcdFx0ICAgIFwmIzM0O01vZGUgJWQgZG9lcyBub3QgaGF2ZSA1IHBhZ2UgdGFibGUgbGV2ZWxzXCYjMzQ7LCB2bS1cdTAwM2Vtb2RlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIChndmEgXHUwMDNlXHUwMDNlIHNoaWZ0KSBcdTAwMjYgbWFzaztcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTY0IHB1ZF9pbmRleChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhKVxuIHtcbiBcdHVuc2lnbmVkIGludCBzaGlmdCA9IDIgKiAodm0tXHUwMDNlcGFnZV9zaGlmdCAtIDMpICYjNDM7IHZtLVx1MDAzZXBhZ2Vfc2hpZnQ7XG4gXHR1NjQgbWFzayA9ICgxVUwgXHUwMDNjXHUwMDNjICh2bS1cdTAwM2VwYWdlX3NoaWZ0IC0gMykpIC0gMTtcbiBcbi1cdFRFU1RfQVNTRVJUKHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9PSA0LFxuLVx0XHRcJiMzNDtNb2RlICVkIGRvZXMgbm90IGhhdmUgNCBwYWdlIHRhYmxlIGxldmVsc1wmIzM0Oywgdm0tXHUwMDNlbW9kZSk7XG4mIzQzO1x0VEVTVF9BU1NFUlQodm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzIFx1MDAzZT0gNCxcbiYjNDM7XHRcdCAgICBcJiMzNDtNb2RlICVkIGRvZXMgbm90IGhhdmUgXHUwMDNlPSA0IHBhZ2UgdGFibGUgbGV2ZWxzXCYjMzQ7LFxuJiM0MztcdFx0ICAgIHZtLVx1MDAzZW1vZGUpO1xuIFxuIFx0cmV0dXJuIChndmEgXHUwMDNlXHUwMDNlIHNoaWZ0KSBcdTAwMjYgbWFzaztcbiB9XG5AQCAtMTQ3LDYgJiM0MzsxNTksMTIgQEAgc3RhdGljIHZvaWQgX3ZpcnRfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSxcbiBcdFx0XHRcdCBQR0RfVFlQRV9UQUJMRSB8IFBURV9WQUxJRCk7XG4gXG4gXHRzd2l0Y2ggKHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscykge1xuJiM0MztcdGNhc2UgNTpcbiYjNDM7XHRcdHB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHB0ZV9hZGRyKHZtLCAqcHRlcCkpICYjNDM7IHA0ZF9pbmRleCh2bSwgZ3ZhKSAqIDg7XG4mIzQzO1x0XHRpZiAoISpwdGVwKVxuJiM0MztcdFx0XHQqcHRlcCA9IGFkZHJfcHRlKHZtLCB2bV9hbGxvY19wYWdlX3RhYmxlKHZtKSxcbiYjNDM7XHRcdFx0XHRcdCBQNERfVFlQRV9UQUJMRSB8IFBURV9WQUxJRCk7XG4mIzQzO1x0XHQvKiBmYWxsIHRocm91Z2ggKi9cbiBcdGNhc2UgNDpcbiBcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcHVkX2luZGV4KHZtLCBndmEpICogODtcbiBcdFx0aWYgKCEqcHRlcClcbkBAIC0xNjMsNyAmIzQzOzE4MSw3IEBAIHN0YXRpYyB2b2lkIF92aXJ0X3BnX21hcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhLCBncGFfdCBncGEsXG4gXHRcdHB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHB0ZV9hZGRyKHZtLCAqcHRlcCkpICYjNDM7IHB0ZV9pbmRleCh2bSwgZ3ZhKSAqIDg7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbi1cdFx0VEVTVF9GQUlMKFwmIzM0O1BhZ2UgdGFibGUgbGV2ZWxzIG11c3QgYmUgMiwgMywgb3IgNFwmIzM0Oyk7XG4mIzQzO1x0XHRURVNUX0ZBSUwoXCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCA0LCBvciA1XCYjMzQ7KTtcbiBcdH1cbiBcbiBcdHBnX2F0dHIgPSBQVEVfQUYgfCBQVEVfQVRUUklORFgoYXR0cl9pZHgpIHwgUFRFX1RZUEVfUEFHRSB8IFBURV9WQUxJRDtcbkBAIC0xODIsMTggJiM0MzsyMDAsMzUgQEAgdm9pZCB2aXJ0X2FyY2hfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSlcbiBcbiB1NjQgKnZpcnRfZ2V0X3B0ZV9odmFfYXRfbGV2ZWwoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgaW50IGxldmVsKVxuIHtcbiYjNDM7XHRpbnQgc3RhcnRfbGV2ZWwgPSA0IC0gdm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzO1xuIFx0dTY0ICpwdGVwO1xuIFxuJiM0MztcdFRFU1RfQVNTRVJUKGxldmVsIFx1MDAzZT0gc3RhcnRfbGV2ZWwgXHUwMDI2XHUwMDI2IGxldmVsIFx1MDAzYz0gMyxcbiYjNDM7XHRcdCAgICBcJiMzNDtJbnZhbGlkIHRyYW5zbGF0aW9uIGxldmVsICVkLCB2YWxpZCByYW5nZSBpcyAlZC0zXCYjMzQ7LFxuJiM0MztcdFx0ICAgIGxldmVsLCBzdGFydF9sZXZlbCk7XG4mIzQzO1xuIFx0aWYgKCF2bS1cdTAwM2VtbXUucGdkX2NyZWF0ZWQpXG4gXHRcdGdvdG8gdW5tYXBwZWRfZ3ZhO1xuIFxuIFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgdm0tXHUwMDNlbW11LnBnZCkgJiM0MzsgcGdkX2luZGV4KHZtLCBndmEpICogODtcbiBcdGlmICghcHRlcClcbiBcdFx0Z290byB1bm1hcHBlZF9ndmE7XG4tXHRpZiAobGV2ZWwgPT0gMClcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFN0YWdlLTEgdHJhbnNsYXRpb24gc3RhcnRzIGF0IGxldmVsIC0xIGZvciBhIGZpdmUtbGV2ZWwgcGFnZVxuJiM0MztcdCAqIHRhYmxlLCBhbmQgYXQgbGV2ZWxzIDAsIDEsIG9yIDIgZm9yIGZvdXItLCB0aHJlZS0sIG9yIHR3by1sZXZlbFxuJiM0MztcdCAqIHBhZ2UgdGFibGVzLCByZXNwZWN0aXZlbHkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGxldmVsID09IHN0YXJ0X2xldmVsKVxuIFx0XHRyZXR1cm4gcHRlcDtcbiBcbiBcdHN3aXRjaCAodm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzKSB7XG4mIzQzO1x0Y2FzZSA1OlxuJiM0MztcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcDRkX2luZGV4KHZtLCBndmEpICogODtcbiYjNDM7XHRcdGlmICghcHRlcClcbiYjNDM7XHRcdFx0Z290byB1bm1hcHBlZF9ndmE7XG4mIzQzO1x0XHRpZiAobGV2ZWwgPT0gMClcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHQvKiBmYWxsIHRocm91Z2ggKi9cbiBcdGNhc2UgNDpcbiBcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcHVkX2luZGV4KHZtLCBndmEpICogODtcbiBcdFx0aWYgKCFwdGVwKVxuQEAgLTIxNCw3ICYjNDM7MjQ5LDcgQEAgdTY0ICp2aXJ0X2dldF9wdGVfaHZhX2F0X2xldmVsKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGludCBsZXZlbClcbiBcdFx0XHRnb3RvIHVubWFwcGVkX2d2YTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuLVx0XHRURVNUX0ZBSUwoXCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCBvciA0XCYjMzQ7KTtcbiYjNDM7XHRcdFRFU1RfRkFJTChcJiMzNDtQYWdlIHRhYmxlIGxldmVscyBtdXN0IGJlIDIsIDMsIDQsIG9yIDVcJiMzNDspO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHB0ZXA7XG5AQCAtMzIxLDEyICYjNDM7MzU2LDE0IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXG4gXHRjYXNlIFZNX01PREVfUFhYVllZXzRLOlxuIFx0XHRURVNUX0ZBSUwoXCYjMzQ7QUFyY2g2NCBkb2VzIG5vdCBzdXBwb3J0IDRLIHNpemVkIHBhZ2VzIFwmIzM0O1xuIFx0XHRcdCAgXCYjMzQ7d2l0aCBBTlktYml0IHBoeXNpY2FsIGFkZHJlc3MgcmFuZ2VzXCYjMzQ7KTtcbiYjNDM7XHRjYXNlIFZNX01PREVfUDUyVjUyXzY0SzpcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNjRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A0OFY0OF82NEs6XG4gXHRjYXNlIFZNX01PREVfUDQwVjQ4XzY0SzpcbiBcdGNhc2UgVk1fTU9ERV9QMzZWNDhfNjRLOlxuIFx0XHR0Y3JfZWwxIHw9IFRDUl9URzBfNjRLO1xuIFx0XHRicmVhaztcbiYjNDM7XHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfMTZLOlxuIFx0Y2FzZSBWTV9NT0RFX1A0OFY0OF8xNks6XG4gXHRjYXNlIFZNX01PREVfUDQwVjQ4XzE2SzpcbkBAIC0zMzQsNiAmIzQzOzM3MSw3IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXG4gXHRjYXNlIFZNX01PREVfUDM2VjQ3XzE2SzpcbiBcdFx0dGNyX2VsMSB8PSBUQ1JfVEcwXzE2SztcbiBcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml80SzpcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNEs6XG4gXHRjYXNlIFZNX01PREVfUDQ4VjQ4XzRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A0MFY0OF80SzpcbkBAIC0zNDgsNiAmIzQzOzM4Niw5IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXG4gXG4gXHQvKiBDb25maWd1cmUgb3V0cHV0IHNpemUgKi9cbiBcdHN3aXRjaCAodm0tXHUwMDNlbW9kZSkge1xuJiM0MztcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNEs6XG4mIzQzO1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml8xNks6XG4mIzQzO1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml82NEs6XG4gXHRjYXNlIFZNX01PREVfUDUyVjQ4XzRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF8xNks6XG4gXHRjYXNlIFZNX01PREVfUDUyVjQ4XzY0SzpcbkBAIC01NzksNyAmIzQzOzYyMCw3IEBAIHN0YXRpYyB1MzIgbWF4X2lwYV9mb3JfcGFnZV9zaXplKHUzMiB2bV9pcGEsIHUzMiBncmFuLFxuIH1cbiBcbiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssXG4tXHRcdFx0XHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGspXG4mIzQzO1x0XHRcdFx0ICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrLCB1MzIgKnZhNjRrKVxuIHtcbiBcdHN0cnVjdCBrdm1fdmNwdV9pbml0IHByZWZlcnJlZF9pbml0O1xuIFx0aW50IGt2bV9mZCwgdm1fZmQsIHZjcHVfZmQsIGVycjtcbkBAIC02MTcsNiAmIzQzOzY1OCwxMyBAQCB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssXG4gXHQqaXBhMTZrID0gbWF4X2lwYV9mb3JfcGFnZV9zaXplKGlwYSwgZ3JhbiwgSURfQUE2NE1NRlIwX0VMMV9UR1JBTjE2X05JLFxuIFx0XHRcdFx0XHRJRF9BQTY0TU1GUjBfRUwxX1RHUkFOMTZfNTJfQklUKTtcbiBcbiYjNDM7XHRyZWcuaWQgPSBLVk1fQVJNNjRfU1lTX1JFRyhTWVNfSURfQUE2NE1NRlIyX0VMMSk7XG4mIzQzO1x0ZXJyID0gaW9jdGwodmNwdV9mZCwgS1ZNX0dFVF9PTkVfUkVHLCBcdTAwMjZyZWcpO1xuJiM0MztcdFRFU1RfQVNTRVJUKGVyciA9PSAwLCBLVk1fSU9DVExfRVJST1IoS1ZNX0dFVF9PTkVfUkVHLCBlcnIpKTtcbiYjNDM7XG4mIzQzO1x0KnZhNjRrID0gRklFTERfR0VUKElEX0FBNjRNTUZSMl9FTDFfVkFSYW5nZSwgdmFsKSBcdTAwM2U9XG4mIzQzO1x0XHRJRF9BQTY0TU1GUjJfRUwxX1ZBUmFuZ2VfNTIgPyA1MiA6IDQ4O1xuJiM0MztcbiBcdGNsb3NlKHZjcHVfZmQpO1xuIFx0Y2xvc2Uodm1fZmQpO1xuIFx0Y2xvc2Uoa3ZtX2ZkKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmNcbmluZGV4IDdhOTZjNDNiNTcwNGQuLjhkMjc0ODE0NWY4ZjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuY1xuQEAgLTIwLDExICYjNDM7MjAsMTQgQEAgdm9pZCBndWVzdF9tb2Rlc19hcHBlbmRfZGVmYXVsdCh2b2lkKVxuICNpZmRlZiBfX2FhcmNoNjRfX1xuIFx0e1xuIFx0XHR1bnNpZ25lZCBpbnQgbGltaXQgPSBrdm1fY2hlY2tfY2FwKEtWTV9DQVBfQVJNX1ZNX0lQQV9TSVpFKTtcbi1cdFx0dTMyIGlwYTRrLCBpcGExNmssIGlwYTY0aztcbiYjNDM7XHRcdHUzMiBpcGE0aywgaXBhMTZrLCBpcGE2NGssIHZhNjRrO1xuIFx0XHRpbnQgaTtcbiBcbi1cdFx0YWFyY2g2NF9nZXRfc3VwcG9ydGVkX3BhZ2Vfc2l6ZXMobGltaXQsIFx1MDAyNmlwYTRrLCBcdTAwMjZpcGExNmssIFx1MDAyNmlwYTY0ayk7XG4mIzQzO1x0XHRhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyhsaW1pdCwgXHUwMDI2aXBhNGssIFx1MDAyNmlwYTE2aywgXHUwMDI2aXBhNjRrLCBcdTAwMjZ2YTY0ayk7XG4gXG4mIzQzO1x0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY1Ml80SywgaXBhNGsgXHUwMDNlPSA1Mik7XG4mIzQzO1x0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY1Ml8xNkssIGlwYTE2ayBcdTAwM2U9IDUyKTtcbiYjNDM7XHRcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzY0SywgaXBhNjRrIFx1MDAzZT0gNTIgXHUwMDI2XHUwMDI2IHZhNjRrIFx1MDAzZT0gNTIpO1xuIFx0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF80SywgaXBhNGsgXHUwMDNlPSA1Mik7XG4gXHRcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjQ4XzE2SywgaXBhMTZrIFx1MDAzZT0gNTIpO1xuIFx0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF82NEssIGlwYTY0ayBcdTAwM2U9IDUyKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbmluZGV4IDlkZGMwNDdkNWMyNzUuLmJjM2VkMDM0ZTIwMzYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuQEAgLTIwMyw2ICYjNDM7MjAzLDkgQEAgY29uc3QgY2hhciAqdm1fZ3Vlc3RfbW9kZV9zdHJpbmcodTMyIGkpXG4gXHRcdFtWTV9NT0RFX1A1MlY0OF80S11cdD0gXCYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsICA0SyBwYWdlc1wmIzM0OyxcbiBcdFx0W1ZNX01PREVfUDUyVjQ4XzE2S11cdD0gXCYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDE2SyBwYWdlc1wmIzM0OyxcbiBcdFx0W1ZNX01PREVfUDUyVjQ4XzY0S11cdD0gXCYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDY0SyBwYWdlc1wmIzM0OyxcbiYjNDM7XHRcdFtWTV9NT0RFX1A1MlY1Ml80S11cdD0gXCYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NTIsICA0SyBwYWdlc1wmIzM0OyxcbiYjNDM7XHRcdFtWTV9NT0RFX1A1MlY1Ml8xNktdXHQ9IFwmIzM0O1BBLWJpdHM6NTIsICBWQS1iaXRzOjUyLCAxNksgcGFnZXNcJiMzNDssXG4mIzQzO1x0XHRbVk1fTU9ERV9QNTJWNTJfNjRLXVx0PSBcJiMzNDtQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgNjRLIHBhZ2VzXCYjMzQ7LFxuIFx0XHRbVk1fTU9ERV9QNDhWNDhfNEtdXHQ9IFwmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAgNEsgcGFnZXNcJiMzNDssXG4gXHRcdFtWTV9NT0RFX1A0OFY0OF8xNktdXHQ9IFwmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAxNksgcGFnZXNcJiMzNDssXG4gXHRcdFtWTV9NT0RFX1A0OFY0OF82NEtdXHQ9IFwmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCA2NEsgcGFnZXNcJiMzNDssXG5AQCAtMjM5LDYgJiM0MzsyNDIsOSBAQCBjb25zdCBzdHJ1Y3Qgdm1fZ3Vlc3RfbW9kZV9wYXJhbXMgdm1fZ3Vlc3RfbW9kZV9wYXJhbXNbXSA9IHtcbiBcdFtWTV9NT0RFX1A1MlY0OF80S11cdD0geyA1MiwgNDgsICAweDEwMDAsIDEyIH0sXG4gXHRbVk1fTU9ERV9QNTJWNDhfMTZLXVx0PSB7IDUyLCA0OCwgIDB4NDAwMCwgMTQgfSxcbiBcdFtWTV9NT0RFX1A1MlY0OF82NEtdXHQ9IHsgNTIsIDQ4LCAweDEwMDAwLCAxNiB9LFxuJiM0MztcdFtWTV9NT0RFX1A1MlY1Ml80S11cdD0geyA1MiwgNTIsICAweDEwMDAsIDEyIH0sXG4mIzQzO1x0W1ZNX01PREVfUDUyVjUyXzE2S11cdD0geyA1MiwgNTIsICAweDQwMDAsIDE0IH0sXG4mIzQzO1x0W1ZNX01PREVfUDUyVjUyXzY0S11cdD0geyA1MiwgNTIsIDB4MTAwMDAsIDE2IH0sXG4gXHRbVk1fTU9ERV9QNDhWNDhfNEtdXHQ9IHsgNDgsIDQ4LCAgMHgxMDAwLCAxMiB9LFxuIFx0W1ZNX01PREVfUDQ4VjQ4XzE2S11cdD0geyA0OCwgNDgsICAweDQwMDAsIDE0IH0sXG4gXHRbVk1fTU9ERV9QNDhWNDhfNjRLXVx0PSB7IDQ4LCA0OCwgMHgxMDAwMCwgMTYgfSxcbkBAIC0zMDYsMTAgJiM0MzszMTIsMTQgQEAgc3RydWN0IGt2bV92bSAqX19fX3ZtX2NyZWF0ZShzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUpXG4gXG4gXHQvKiBTZXR1cCBtb2RlIHNwZWNpZmljIHRyYWl0cy4gKi9cbiBcdHN3aXRjaCAodm0tXHUwMDNlbW9kZSkge1xuJiM0MztcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNEs6XG4mIzQzO1x0XHR2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMgPSA1O1xuJiM0MztcdFx0YnJlYWs7XG4gXHRjYXNlIFZNX01PREVfUDUyVjQ4XzRLOlxuIFx0XHR2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMgPSA0O1xuIFx0XHRicmVhaztcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNjRLOlxuJiM0MztcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNjRLOlxuIFx0XHR2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMgPSAzO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgVk1fTU9ERV9QNDhWNDhfNEs6XG5AQCAtMzMwLDYgJiM0MzszNDAsNyBAQCBzdHJ1Y3Qga3ZtX3ZtICpfX19fdm1fY3JlYXRlKHN0cnVjdCB2bV9zaGFwZSBzaGFwZSlcbiBcdGNhc2UgVk1fTU9ERV9QNDhWNDhfMTZLOlxuIFx0Y2FzZSBWTV9NT0RFX1A0MFY0OF8xNks6XG4gXHRjYXNlIFZNX01PREVfUDM2VjQ4XzE2SzpcbiYjNDM7XHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcbiBcdFx0dm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID0gNDtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFZNX01PREVfUDQ3VjQ3XzE2SzpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwNzo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgb25seSBtb2RpZmllcyBLVk0gc2VsZi10ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIChzcGVjaWZpY2FsbHkgYXJtNjQgZ3Vlc3Qgc3VwcG9ydCBhbmQgdGVzdGluZykuIFRoZXNlIHVzZXItc3BhY2UgdGVzdCBmaWxlcyBkbyBub3QgbW9kaWZ5IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGFueSBrZXJuZWwgbW9kdWxlcywgbWFraW5nIHRoZW0gbm9uLWtlcm5lbCBjaGFuZ2VzIHRoYXQgZG8gbm90IHdhcnJhbnQga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmEyNmEyOGZlOTNmZmI5ODkxMjIyZjE2MzYzNWQ5NjBiOTc5OWM3ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDE0IDA3OjQyOjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KaW5kZXggOTZiYWI3MDAyZDM5ZS4uMWU5ZDA1OWZmYjI0YSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCkBAIC0xNzksNiAmIzQzOzE3OSw3IEBAIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9oZWxsb19lbDIKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9ob3N0X3N2ZQogVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGFybTY0L2h5cGVyY2FsbHMKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9leHRlcm5hbF9hYm9ydHMKJiM0MztURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvbHBhX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBhcm02NC9tbWlvX3NpZ25fZXh0CiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvcGFnZV9mYXVsdF90ZXN0CiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gYXJtNjQvcHNjaV90ZXN0CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvbHBhX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9scGFfdGVzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjhmZTZmMjU0ZGIyODIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvbHBhX3Rlc3QuYwpAQCAtMCwwICYjNDM7MSwxMjQgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiYjNDM7LyoKJiM0MzsgKiBIaWdoZXIgdmlydHVhbCBhZGRyZXNzZXMgcmVhZC93cml0ZSB0ZXN0CiYjNDM7ICovCiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfdXRpbC5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7a3ZtX3N5c2NhbGxzLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7a3ZtX3V0aWwuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDt1Y2FsbF9jb21tb24uaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtndWVzdF9tb2Rlcy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3Byb2Nlc3Nvci5oJiMzNDsKJiM0MzsKJiM0MzsjZGVmaW5lIExPV19HVkEJCTB4YzAwMDAwMDAKJiM0MzsjZGVmaW5lIEhJR0hfR1ZBIChMT1dfR1ZBIHwgQklUKDQ4KSkKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBndWVzdF9jb2RlKHZvaWQpCiYjNDM7ewomIzQzOwl1NjQgKmxvdyA9ICh1NjQgKilMT1dfR1ZBOwomIzQzOwl1NjQgKmhpZ2ggPSAodTY0ICopSElHSF9HVkE7CiYjNDM7CiYjNDM7CVdSSVRFX09OQ0UoKmxvdywgMSk7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmhpZ2gpLCAxKTsKJiM0MzsJV1JJVEVfT05DRSgqaGlnaCwgMik7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksIDIpOwomIzQzOwomIzQzOwlHVUVTVF9TWU5DKDApOwomIzQzOwomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDtkc2Igc3lcblx0JiMzNDsKJiM0MzsJCSAgICAgJiMzNDt0bGJpIHZtYWxsZTFpc1xuXHQmIzM0OwomIzQzOwkJICAgICAmIzM0O2RzYiBzeVxuXHQmIzM0OwomIzQzOwkJICAgICAmIzM0O2lzYiYjMzQ7CiYjNDM7CQkgICAgIDogOiA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwomIzQzOwlHVUVTVF9TWU5DKDEpOyAvKiBIb3N0IGluc3RhbGxzIEhJR0hfR1ZBIC0mZ3Q7IGdwYV9iLiAqLwomIzQzOwomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDtkc2Igc3lcblx0JiMzNDsKJiM0MzsJCSAgICAgJiMzNDtpc2Jcblx0JiMzNDsKJiM0MzsJCSAgICAgOiA6IDogJiMzNDttZW1vcnkmIzM0Oyk7CiYjNDM7CiYjNDM7CS8qIGxvdyBhbmQgaGlnaCBtYXAgdG8gZGlmZmVyZW50IEdQQXMuICovCiYjNDM7CVdSSVRFX09OQ0UoKmxvdywgIDEpOwomIzQzOwlXUklURV9PTkNFKCpoaWdoLCAyKTsKJiM0MzsKJiM0MzsJLyogQ2hlY2sgYm90aCBhZnRlciBib3RoIHdyaXRlcyB0byBkZXRlY3QgYWNjaWRlbnRhbCBhbGlhc2luZy4gKi8KJiM0MzsJR1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqbG93KSwgIDEpOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpoaWdoKSwgMik7CiYjNDM7CiYjNDM7CS8qIFVwZGF0aW5nIHRoZSBsb3cgbWFwcGluZyBtdXN0IG5vdCBjaGFuZ2UgdGhlIGhpZ2ggbWFwcGluZy4gKi8KJiM0MzsJV1JJVEVfT05DRSgqbG93LCAzKTsKJiM0MzsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqbG93KSwgIDMpOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpoaWdoKSwgMik7CiYjNDM7CiYjNDM7CUdVRVNUX0RPTkUoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCAqbnJfdGVzdHMgPSBhcmc7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdV9pbml0IGluaXQ7CiYjNDM7CXN0cnVjdCBrdm1fdm0gKnZtOwomIzQzOwlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7CiYjNDM7CXN0cnVjdCB1Y2FsbCB1YzsKJiM0MzsKJiM0MzsJaWYgKG1vZGUgIT0gVk1fTU9ERV9QNTJWNTJfNEsgJmFtcDsmYW1wOwomIzQzOwkgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml8xNksgJmFtcDsmYW1wOwomIzQzOwkgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml82NEspCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXZtID0gX192bV9jcmVhdGUoVk1fU0hBUEUobW9kZSksIDEsIDApOwomIzQzOwlrdm1fZ2V0X2RlZmF1bHRfdmNwdV90YXJnZXQodm0sICZhbXA7aW5pdCk7CiYjNDM7CXZjcHUgPSBhYXJjaDY0X3ZjcHVfYWRkKHZtLCAwLCAmYW1wO2luaXQsIGd1ZXN0X2NvZGUpOwomIzQzOwlrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7CiYjNDM7CiYjNDM7CXZtX2luaXRfZGVzY3JpcHRvcl90YWJsZXModm0pOwomIzQzOwl2Y3B1X2luaXRfZGVzY3JpcHRvcl90YWJsZXModmNwdSk7CiYjNDM7CiYjNDM7CXU2NCBncGFfYSA9IHZtX3BoeV9wYWdlc19hbGxvYyh2bSwgMSwgMCwgMCk7CiYjNDM7CXU2NCBncGFfYiA9IHZtX3BoeV9wYWdlc19hbGxvYyh2bSwgMSwgMCwgMCk7CiYjNDM7CiYjNDM7CXZpcnRfcGdfbWFwKHZtLCBMT1dfR1ZBLCBncGFfYSk7CiYjNDM7CXZpcnRfcGdfbWFwKHZtLCBISUdIX0dWQSwgZ3BhX2EpOwomIzQzOwomIzQzOwlmb3IgKDs7KSB7CiYjNDM7CQl2Y3B1X3J1bih2Y3B1KTsKJiM0MzsJCXN3aXRjaCAoZ2V0X3VjYWxsKHZjcHUsICZhbXA7dWMpKSB7CiYjNDM7CQljYXNlIFVDQUxMX0RPTkU6CiYjNDM7CQkJZ290byBkb25lOwomIzQzOwkJY2FzZSBVQ0FMTF9BQk9SVDoKJiM0MzsJCQlSRVBPUlRfR1VFU1RfQVNTRVJUKHVjKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCWNhc2UgVUNBTExfU1lOQzoKJiM0MzsJCQlzd2l0Y2ggKHVjLmFyZ3NbMV0pIHsKJiM0MzsJCQljYXNlIDA6CiYjNDM7CQkJCVdSSVRFX09OQ0UoKnZpcnRfZ2V0X3B0ZV9odmEodm0sIEhJR0hfR1ZBKSwgMCk7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWNhc2UgMToKJiM0MzsJCQkJdmlydF9wZ19tYXAodm0sIEhJR0hfR1ZBLCBncGFfYik7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWRlZmF1bHQ6CiYjNDM7CQkJCVRFU1RfRkFJTCgmIzM0O1VuZXhwZWN0ZWQgc3luYyBzdGFnZTogJWx1XG4mIzM0OywgdWMuYXJnc1sxXSk7CiYjNDM7CQkJfQomIzQzOwkJCS8qIENvbXBsZXRlIHRoZSBob3N0JiMzOTtzIFBURSBzdG9yZSBiZWZvcmUgcmVzdW1pbmcgdGhlIGd1ZXN0LiAqLwomIzQzOwkJCWFzbSB2b2xhdGlsZSgmIzM0O2RzYiBzeSYjMzQ7IDogOiA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJZGVmYXVsdDoKJiM0MzsJCQlURVNUX0ZBSUwoJiMzNDtVbmhhbmRsZWQgdWNhbGw6ICVsZFxuJiMzNDssIHVjLmNtZCk7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0Mztkb25lOgomIzQzOwlrdm1fdm1fZnJlZSh2bSk7CiYjNDM7CSgqbnJfdGVzdHMpJiM0MzsmIzQzOzsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQomIzQzO3sKJiM0MzsJdW5zaWduZWQgaW50IG5yX3Rlc3RzID0gMDsKJiM0MzsKJiM0MzsJZm9yX2VhY2hfZ3Vlc3RfbW9kZShydW5fdGVzdCwgJmFtcDtucl90ZXN0cyk7CiYjNDM7CWlmICghbnJfdGVzdHMpCiYjNDM7CQlrc2Z0X2V4aXRfc2tpcCgmIzM0O05vIHN1cHBvcnRlZCA1Mi1iaXQgVkEgZ3Vlc3QgbW9kZTsgc2tpcHBpbmcgdGVzdFxuJiMzNDspOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oCmluZGV4IGI4YTkwMmJhODU3M2QuLjRhYjAwYTdlNmVmYjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oCkBAIC0xMTMsNiAmIzQzOzExMyw3IEBACiAKICNkZWZpbmUgUFRFX1ZBTElECQlCSVQoMCkKICNkZWZpbmUgUEdEX1RZUEVfVEFCTEUJCUJJVCgxKQomIzQzOyNkZWZpbmUgUDREX1RZUEVfVEFCTEUJCUJJVCgxKQogI2RlZmluZSBQVURfVFlQRV9UQUJMRQkJQklUKDEpCiAjZGVmaW5lIFBNRF9UWVBFX1RBQkxFCQlCSVQoMSkKICNkZWZpbmUgUFRFX1RZUEVfUEFHRQkJQklUKDEpCkBAIC0xNjgsNyAmIzQzOzE2OSw3IEBAIGVudW0gewogCQkJICAgKHYpID09IFZFQ1RPUl9TWU5DX0xPV0VSXzMyKQogCiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssCi0JCQkJICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrKTsKJiM0MzsJCQkJICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrLCB1MzIgKnZhNjRrKTsKIAogdm9pZCB2bV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHN0cnVjdCBrdm1fdm0gKnZtKTsKIHZvaWQgdmNwdV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaAppbmRleCA1YTdhNDU1YjUzODc1Li4xYzI2OGZhOTk0YWE5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2t2bV91dGlsLmgKQEAgLTE4NCw2ICYjNDM7MTg0LDkgQEAgZW51bSB2bV9ndWVzdF9tb2RlIHsKIAlWTV9NT0RFX1A1MlY0OF80SywKIAlWTV9NT0RFX1A1MlY0OF8xNkssCiAJVk1fTU9ERV9QNTJWNDhfNjRLLAomIzQzOwlWTV9NT0RFX1A1MlY1Ml80SywKJiM0MzsJVk1fTU9ERV9QNTJWNTJfMTZLLAomIzQzOwlWTV9NT0RFX1A1MlY1Ml82NEssCiAJVk1fTU9ERV9QNDhWNDhfNEssCiAJVk1fTU9ERV9QNDhWNDhfMTZLLAogCVZNX01PREVfUDQ4VjQ4XzY0SywKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jCmluZGV4IDAxMzI1YmY0ZDM2ZmMuLjk5MTVmMjVmMDI4NzQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuYwpAQCAtMjksMTMgJiM0MzsyOSwyNSBAQCBzdGF0aWMgdTY0IHBnZF9pbmRleChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhKQogCXJldHVybiAoZ3ZhICZndDsmZ3Q7IHNoaWZ0KSAmYW1wOyBtYXNrOwogfQogCiYjNDM7c3RhdGljIHU2NCBwNGRfaW5kZXgoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBzaGlmdCA9IDMgKiAodm0tJmd0O3BhZ2Vfc2hpZnQgLSAzKSAmIzQzOyB2bS0mZ3Q7cGFnZV9zaGlmdDsKJiM0MzsJdTY0IG1hc2sgPSAoMVVMICZsdDsmbHQ7ICh2bS0mZ3Q7cGFnZV9zaGlmdCAtIDMpKSAtIDE7CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKHZtLSZndDttbXUucGd0YWJsZV9sZXZlbHMgPT0gNSwKJiM0MzsJCSAgICAmIzM0O01vZGUgJWQgZG9lcyBub3QgaGF2ZSA1IHBhZ2UgdGFibGUgbGV2ZWxzJiMzNDssIHZtLSZndDttb2RlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIChndmEgJmd0OyZndDsgc2hpZnQpICZhbXA7IG1hc2s7CiYjNDM7fQomIzQzOwogc3RhdGljIHU2NCBwdWRfaW5kZXgoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSkKIHsKIAl1bnNpZ25lZCBpbnQgc2hpZnQgPSAyICogKHZtLSZndDtwYWdlX3NoaWZ0IC0gMykgJiM0Mzsgdm0tJmd0O3BhZ2Vfc2hpZnQ7CiAJdTY0IG1hc2sgPSAoMVVMICZsdDsmbHQ7ICh2bS0mZ3Q7cGFnZV9zaGlmdCAtIDMpKSAtIDE7CiAKLQlURVNUX0FTU0VSVCh2bS0mZ3Q7bW11LnBndGFibGVfbGV2ZWxzID09IDQsCi0JCSYjMzQ7TW9kZSAlZCBkb2VzIG5vdCBoYXZlIDQgcGFnZSB0YWJsZSBsZXZlbHMmIzM0Oywgdm0tJmd0O21vZGUpOwomIzQzOwlURVNUX0FTU0VSVCh2bS0mZ3Q7bW11LnBndGFibGVfbGV2ZWxzICZndDs9IDQsCiYjNDM7CQkgICAgJiMzNDtNb2RlICVkIGRvZXMgbm90IGhhdmUgJmd0Oz0gNCBwYWdlIHRhYmxlIGxldmVscyYjMzQ7LAomIzQzOwkJICAgIHZtLSZndDttb2RlKTsKIAogCXJldHVybiAoZ3ZhICZndDsmZ3Q7IHNoaWZ0KSAmYW1wOyBtYXNrOwogfQpAQCAtMTQ3LDYgJiM0MzsxNTksMTIgQEAgc3RhdGljIHZvaWQgX3ZpcnRfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSwKIAkJCQkgUEdEX1RZUEVfVEFCTEUgfCBQVEVfVkFMSUQpOwogCiAJc3dpdGNoICh2bS0mZ3Q7bW11LnBndGFibGVfbGV2ZWxzKSB7CiYjNDM7CWNhc2UgNToKJiM0MzsJCXB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHB0ZV9hZGRyKHZtLCAqcHRlcCkpICYjNDM7IHA0ZF9pbmRleCh2bSwgZ3ZhKSAqIDg7CiYjNDM7CQlpZiAoISpwdGVwKQomIzQzOwkJCSpwdGVwID0gYWRkcl9wdGUodm0sIHZtX2FsbG9jX3BhZ2VfdGFibGUodm0pLAomIzQzOwkJCQkJIFA0RF9UWVBFX1RBQkxFIHwgUFRFX1ZBTElEKTsKJiM0MzsJCS8qIGZhbGwgdGhyb3VnaCAqLwogCWNhc2UgNDoKIAkJcHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcHVkX2luZGV4KHZtLCBndmEpICogODsKIAkJaWYgKCEqcHRlcCkKQEAgLTE2Myw3ICYjNDM7MTgxLDcgQEAgc3RhdGljIHZvaWQgX3ZpcnRfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSwKIAkJcHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcHRlX2luZGV4KHZtLCBndmEpICogODsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJVEVTVF9GQUlMKCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCBvciA0JiMzNDspOwomIzQzOwkJVEVTVF9GQUlMKCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCA0LCBvciA1JiMzNDspOwogCX0KIAogCXBnX2F0dHIgPSBQVEVfQUYgfCBQVEVfQVRUUklORFgoYXR0cl9pZHgpIHwgUFRFX1RZUEVfUEFHRSB8IFBURV9WQUxJRDsKQEAgLTE4MiwxOCAmIzQzOzIwMCwzNSBAQCB2b2lkIHZpcnRfYXJjaF9wZ19tYXAoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgZ3BhX3QgZ3BhKQogCiB1NjQgKnZpcnRfZ2V0X3B0ZV9odmFfYXRfbGV2ZWwoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgaW50IGxldmVsKQogewomIzQzOwlpbnQgc3RhcnRfbGV2ZWwgPSA0IC0gdm0tJmd0O21tdS5wZ3RhYmxlX2xldmVsczsKIAl1NjQgKnB0ZXA7CiAKJiM0MzsJVEVTVF9BU1NFUlQobGV2ZWwgJmd0Oz0gc3RhcnRfbGV2ZWwgJmFtcDsmYW1wOyBsZXZlbCAmbHQ7PSAzLAomIzQzOwkJICAgICYjMzQ7SW52YWxpZCB0cmFuc2xhdGlvbiBsZXZlbCAlZCwgdmFsaWQgcmFuZ2UgaXMgJWQtMyYjMzQ7LAomIzQzOwkJICAgIGxldmVsLCBzdGFydF9sZXZlbCk7CiYjNDM7CiAJaWYgKCF2bS0mZ3Q7bW11LnBnZF9jcmVhdGVkKQogCQlnb3RvIHVubWFwcGVkX2d2YTsKIAogCXB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHZtLSZndDttbXUucGdkKSAmIzQzOyBwZ2RfaW5kZXgodm0sIGd2YSkgKiA4OwogCWlmICghcHRlcCkKIAkJZ290byB1bm1hcHBlZF9ndmE7Ci0JaWYgKGxldmVsID09IDApCiYjNDM7CS8qCiYjNDM7CSAqIFN0YWdlLTEgdHJhbnNsYXRpb24gc3RhcnRzIGF0IGxldmVsIC0xIGZvciBhIGZpdmUtbGV2ZWwgcGFnZQomIzQzOwkgKiB0YWJsZSwgYW5kIGF0IGxldmVscyAwLCAxLCBvciAyIGZvciBmb3VyLSwgdGhyZWUtLCBvciB0d28tbGV2ZWwKJiM0MzsJICogcGFnZSB0YWJsZXMsIHJlc3BlY3RpdmVseS4KJiM0MzsJICovCiYjNDM7CWlmIChsZXZlbCA9PSBzdGFydF9sZXZlbCkKIAkJcmV0dXJuIHB0ZXA7CiAKIAlzd2l0Y2ggKHZtLSZndDttbXUucGd0YWJsZV9sZXZlbHMpIHsKJiM0MzsJY2FzZSA1OgomIzQzOwkJcHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgJiM0MzsgcDRkX2luZGV4KHZtLCBndmEpICogODsKJiM0MzsJCWlmICghcHRlcCkKJiM0MzsJCQlnb3RvIHVubWFwcGVkX2d2YTsKJiM0MzsJCWlmIChsZXZlbCA9PSAwKQomIzQzOwkJCWJyZWFrOwomIzQzOwkJLyogZmFsbCB0aHJvdWdoICovCiAJY2FzZSA0OgogCQlwdGVwID0gYWRkcl9ncGEyaHZhKHZtLCBwdGVfYWRkcih2bSwgKnB0ZXApKSAmIzQzOyBwdWRfaW5kZXgodm0sIGd2YSkgKiA4OwogCQlpZiAoIXB0ZXApCkBAIC0yMTQsNyAmIzQzOzI0OSw3IEBAIHU2NCAqdmlydF9nZXRfcHRlX2h2YV9hdF9sZXZlbChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhLCBpbnQgbGV2ZWwpCiAJCQlnb3RvIHVubWFwcGVkX2d2YTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJVEVTVF9GQUlMKCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCBvciA0JiMzNDspOwomIzQzOwkJVEVTVF9GQUlMKCYjMzQ7UGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCA0LCBvciA1JiMzNDspOwogCX0KIAogCXJldHVybiBwdGVwOwpAQCAtMzIxLDEyICYjNDM7MzU2LDE0IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpCiAJY2FzZSBWTV9NT0RFX1BYWFZZWV80SzoKIAkJVEVTVF9GQUlMKCYjMzQ7QUFyY2g2NCBkb2VzIG5vdCBzdXBwb3J0IDRLIHNpemVkIHBhZ2VzICYjMzQ7CiAJCQkgICYjMzQ7d2l0aCBBTlktYml0IHBoeXNpY2FsIGFkZHJlc3MgcmFuZ2VzJiMzNDspOwomIzQzOwljYXNlIFZNX01PREVfUDUyVjUyXzY0SzoKIAljYXNlIFZNX01PREVfUDUyVjQ4XzY0SzoKIAljYXNlIFZNX01PREVfUDQ4VjQ4XzY0SzoKIAljYXNlIFZNX01PREVfUDQwVjQ4XzY0SzoKIAljYXNlIFZNX01PREVfUDM2VjQ4XzY0SzoKIAkJdGNyX2VsMSB8PSBUQ1JfVEcwXzY0SzsKIAkJYnJlYWs7CiYjNDM7CWNhc2UgVk1fTU9ERV9QNTJWNTJfMTZLOgogCWNhc2UgVk1fTU9ERV9QNTJWNDhfMTZLOgogCWNhc2UgVk1fTU9ERV9QNDhWNDhfMTZLOgogCWNhc2UgVk1fTU9ERV9QNDBWNDhfMTZLOgpAQCAtMzM0LDYgJiM0MzszNzEsNyBAQCB2b2lkIGFhcmNoNjRfdmNwdV9zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fdmNwdV9pbml0ICppbml0KQogCWNhc2UgVk1fTU9ERV9QMzZWNDdfMTZLOgogCQl0Y3JfZWwxIHw9IFRDUl9URzBfMTZLOwogCQlicmVhazsKJiM0MzsJY2FzZSBWTV9NT0RFX1A1MlY1Ml80SzoKIAljYXNlIFZNX01PREVfUDUyVjQ4XzRLOgogCWNhc2UgVk1fTU9ERV9QNDhWNDhfNEs6CiAJY2FzZSBWTV9NT0RFX1A0MFY0OF80SzoKQEAgLTM0OCw2ICYjNDM7Mzg2LDkgQEAgdm9pZCBhYXJjaDY0X3ZjcHVfc2V0dXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCAqaW5pdCkKIAogCS8qIENvbmZpZ3VyZSBvdXRwdXQgc2l6ZSAqLwogCXN3aXRjaCAodm0tJmd0O21vZGUpIHsKJiM0MzsJY2FzZSBWTV9NT0RFX1A1MlY1Ml80SzoKJiM0MzsJY2FzZSBWTV9NT0RFX1A1MlY1Ml8xNks6CiYjNDM7CWNhc2UgVk1fTU9ERV9QNTJWNTJfNjRLOgogCWNhc2UgVk1fTU9ERV9QNTJWNDhfNEs6CiAJY2FzZSBWTV9NT0RFX1A1MlY0OF8xNks6CiAJY2FzZSBWTV9NT0RFX1A1MlY0OF82NEs6CkBAIC01NzksNyAmIzQzOzYyMCw3IEBAIHN0YXRpYyB1MzIgbWF4X2lwYV9mb3JfcGFnZV9zaXplKHUzMiB2bV9pcGEsIHUzMiBncmFuLAogfQogCiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssCi0JCQkJICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrKQomIzQzOwkJCQkgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGssIHUzMiAqdmE2NGspCiB7CiAJc3RydWN0IGt2bV92Y3B1X2luaXQgcHJlZmVycmVkX2luaXQ7CiAJaW50IGt2bV9mZCwgdm1fZmQsIHZjcHVfZmQsIGVycjsKQEAgLTYxNyw2ICYjNDM7NjU4LDEzIEBAIHZvaWQgYWFyY2g2NF9nZXRfc3VwcG9ydGVkX3BhZ2Vfc2l6ZXModTMyIGlwYSwgdTMyICppcGE0aywKIAkqaXBhMTZrID0gbWF4X2lwYV9mb3JfcGFnZV9zaXplKGlwYSwgZ3JhbiwgSURfQUE2NE1NRlIwX0VMMV9UR1JBTjE2X05JLAogCQkJCQlJRF9BQTY0TU1GUjBfRUwxX1RHUkFOMTZfNTJfQklUKTsKIAomIzQzOwlyZWcuaWQgPSBLVk1fQVJNNjRfU1lTX1JFRyhTWVNfSURfQUE2NE1NRlIyX0VMMSk7CiYjNDM7CWVyciA9IGlvY3RsKHZjcHVfZmQsIEtWTV9HRVRfT05FX1JFRywgJmFtcDtyZWcpOwomIzQzOwlURVNUX0FTU0VSVChlcnIgPT0gMCwgS1ZNX0lPQ1RMX0VSUk9SKEtWTV9HRVRfT05FX1JFRywgZXJyKSk7CiYjNDM7CiYjNDM7CSp2YTY0ayA9IEZJRUxEX0dFVChJRF9BQTY0TU1GUjJfRUwxX1ZBUmFuZ2UsIHZhbCkgJmd0Oz0KJiM0MzsJCUlEX0FBNjRNTUZSMl9FTDFfVkFSYW5nZV81MiA/IDUyIDogNDg7CiYjNDM7CiAJY2xvc2UodmNwdV9mZCk7CiAJY2xvc2Uodm1fZmQpOwogCWNsb3NlKGt2bV9mZCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmMKaW5kZXggN2E5NmM0M2I1NzA0ZC4uOGQyNzQ4MTQ1ZjhmOCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9ndWVzdF9tb2Rlcy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuYwpAQCAtMjAsMTEgJiM0MzsyMCwxNCBAQCB2b2lkIGd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KHZvaWQpCiAjaWZkZWYgX19hYXJjaDY0X18KIAl7CiAJCXVuc2lnbmVkIGludCBsaW1pdCA9IGt2bV9jaGVja19jYXAoS1ZNX0NBUF9BUk1fVk1fSVBBX1NJWkUpOwotCQl1MzIgaXBhNGssIGlwYTE2aywgaXBhNjRrOwomIzQzOwkJdTMyIGlwYTRrLCBpcGExNmssIGlwYTY0aywgdmE2NGs7CiAJCWludCBpOwogCi0JCWFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKGxpbWl0LCAmYW1wO2lwYTRrLCAmYW1wO2lwYTE2aywgJmFtcDtpcGE2NGspOwomIzQzOwkJYWFyY2g2NF9nZXRfc3VwcG9ydGVkX3BhZ2Vfc2l6ZXMobGltaXQsICZhbXA7aXBhNGssICZhbXA7aXBhMTZrLCAmYW1wO2lwYTY0aywgJmFtcDt2YTY0ayk7CiAKJiM0MzsJCWd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzRLLCBpcGE0ayAmZ3Q7PSA1Mik7CiYjNDM7CQlndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY1Ml8xNkssIGlwYTE2ayAmZ3Q7PSA1Mik7CiYjNDM7CQlndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY1Ml82NEssIGlwYTY0ayAmZ3Q7PSA1MiAmYW1wOyZhbXA7IHZhNjRrICZndDs9IDUyKTsKIAkJZ3Vlc3RfbW9kZV9hcHBlbmQoVk1fTU9ERV9QNTJWNDhfNEssIGlwYTRrICZndDs9IDUyKTsKIAkJZ3Vlc3RfbW9kZV9hcHBlbmQoVk1fTU9ERV9QNTJWNDhfMTZLLCBpcGExNmsgJmd0Oz0gNTIpOwogCQlndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF82NEssIGlwYTY0ayAmZ3Q7PSA1Mik7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMKaW5kZXggOWRkYzA0N2Q1YzI3NS4uYmMzZWQwMzRlMjAzNiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYwpAQCAtMjAzLDYgJiM0MzsyMDMsOSBAQCBjb25zdCBjaGFyICp2bV9ndWVzdF9tb2RlX3N0cmluZyh1MzIgaSkKIAkJW1ZNX01PREVfUDUyVjQ4XzRLXQk9ICYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsICA0SyBwYWdlcyYjMzQ7LAogCQlbVk1fTU9ERV9QNTJWNDhfMTZLXQk9ICYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDE2SyBwYWdlcyYjMzQ7LAogCQlbVk1fTU9ERV9QNTJWNDhfNjRLXQk9ICYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDY0SyBwYWdlcyYjMzQ7LAomIzQzOwkJW1ZNX01PREVfUDUyVjUyXzRLXQk9ICYjMzQ7UEEtYml0czo1MiwgIFZBLWJpdHM6NTIsICA0SyBwYWdlcyYjMzQ7LAomIzQzOwkJW1ZNX01PREVfUDUyVjUyXzE2S10JPSAmIzM0O1BBLWJpdHM6NTIsICBWQS1iaXRzOjUyLCAxNksgcGFnZXMmIzM0OywKJiM0MzsJCVtWTV9NT0RFX1A1MlY1Ml82NEtdCT0gJiMzNDtQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgNjRLIHBhZ2VzJiMzNDssCiAJCVtWTV9NT0RFX1A0OFY0OF80S10JPSAmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAgNEsgcGFnZXMmIzM0OywKIAkJW1ZNX01PREVfUDQ4VjQ4XzE2S10JPSAmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAxNksgcGFnZXMmIzM0OywKIAkJW1ZNX01PREVfUDQ4VjQ4XzY0S10JPSAmIzM0O1BBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCA2NEsgcGFnZXMmIzM0OywKQEAgLTIzOSw2ICYjNDM7MjQyLDkgQEAgY29uc3Qgc3RydWN0IHZtX2d1ZXN0X21vZGVfcGFyYW1zIHZtX2d1ZXN0X21vZGVfcGFyYW1zW10gPSB7CiAJW1ZNX01PREVfUDUyVjQ4XzRLXQk9IHsgNTIsIDQ4LCAgMHgxMDAwLCAxMiB9LAogCVtWTV9NT0RFX1A1MlY0OF8xNktdCT0geyA1MiwgNDgsICAweDQwMDAsIDE0IH0sCiAJW1ZNX01PREVfUDUyVjQ4XzY0S10JPSB7IDUyLCA0OCwgMHgxMDAwMCwgMTYgfSwKJiM0MzsJW1ZNX01PREVfUDUyVjUyXzRLXQk9IHsgNTIsIDUyLCAgMHgxMDAwLCAxMiB9LAomIzQzOwlbVk1fTU9ERV9QNTJWNTJfMTZLXQk9IHsgNTIsIDUyLCAgMHg0MDAwLCAxNCB9LAomIzQzOwlbVk1fTU9ERV9QNTJWNTJfNjRLXQk9IHsgNTIsIDUyLCAweDEwMDAwLCAxNiB9LAogCVtWTV9NT0RFX1A0OFY0OF80S10JPSB7IDQ4LCA0OCwgIDB4MTAwMCwgMTIgfSwKIAlbVk1fTU9ERV9QNDhWNDhfMTZLXQk9IHsgNDgsIDQ4LCAgMHg0MDAwLCAxNCB9LAogCVtWTV9NT0RFX1A0OFY0OF82NEtdCT0geyA0OCwgNDgsIDB4MTAwMDAsIDE2IH0sCkBAIC0zMDYsMTAgJiM0MzszMTIsMTQgQEAgc3RydWN0IGt2bV92bSAqX19fX3ZtX2NyZWF0ZShzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUpCiAKIAkvKiBTZXR1cCBtb2RlIHNwZWNpZmljIHRyYWl0cy4gKi8KIAlzd2l0Y2ggKHZtLSZndDttb2RlKSB7CiYjNDM7CWNhc2UgVk1fTU9ERV9QNTJWNTJfNEs6CiYjNDM7CQl2bS0mZ3Q7bW11LnBndGFibGVfbGV2ZWxzID0gNTsKJiM0MzsJCWJyZWFrOwogCWNhc2UgVk1fTU9ERV9QNTJWNDhfNEs6CiAJCXZtLSZndDttbXUucGd0YWJsZV9sZXZlbHMgPSA0OwogCQlicmVhazsKIAljYXNlIFZNX01PREVfUDUyVjQ4XzY0SzoKJiM0MzsJY2FzZSBWTV9NT0RFX1A1MlY1Ml82NEs6CiAJCXZtLSZndDttbXUucGd0YWJsZV9sZXZlbHMgPSAzOwogCQlicmVhazsKIAljYXNlIFZNX01PREVfUDQ4VjQ4XzRLOgpAQCAtMzMwLDYgJiM0MzszNDAsNyBAQCBzdHJ1Y3Qga3ZtX3ZtICpfX19fdm1fY3JlYXRlKHN0cnVjdCB2bV9zaGFwZSBzaGFwZSkKIAljYXNlIFZNX01PREVfUDQ4VjQ4XzE2SzoKIAljYXNlIFZNX01PREVfUDQwVjQ4XzE2SzoKIAljYXNlIFZNX01PREVfUDM2VjQ4XzE2SzoKJiM0MzsJY2FzZSBWTV9NT0RFX1A1MlY1Ml8xNks6CiAJCXZtLSZndDttbXUucGd0YWJsZV9sZXZlbHMgPSA0OwogCQlicmVhazsKIAljYXNlIFZNX01PREVfUDQ3VjQ3XzE2SzoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTYzOQoJCQkJCQkJb3V0cHV0OiAxMDAKCQkJCQkJCXRob3VnaHRzOiA3NTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoOiBXb3J0aEZ1enppbmcgPSBGYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQuICBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcuICBJJiMzOTt2ZSBjaGVja2VkIHRoZSBmaWxlIGxpc3Q6CgoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1gCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2xwYV90ZXN0LmNgCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvYXJtNjQvcHJvY2Vzc29yLmhgCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaGAKKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jYAoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuY2AKKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNgCgpBbGwgdGhlIG1vZGlmaWVkIGZpbGVzIGFyZSBuZWF0bHkgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2AuIFRoYXQmIzM5O3MgYSBodWdlIHJlZCBmbGFnIOKAkyBhIGdvb2Qgb25lISBUaGlzIGlzICp0ZXh0Ym9vayogc2VsZi10ZXN0IGNvZGUsIGFuZCB0aGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IGl0IGlzICpub3QqIGltcGFjdGluZyB0aGUga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuIEkgaW1tZWRpYXRlbHkgcmVmZXIgdG8gbXkgbWVudGFsIGNoZWNrbGlzdCBmb3IgdGhlc2Uga2luZHMgb2Ygc2NlbmFyaW9zLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgY2hhbmdlcyBsaW1pdGVkIHRvIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIGxpa2UgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzYCwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIGFyZSBhIG5lZ2F0aXZlIGluZGljYXRvciwgYW5kIHRoYXQgd2UgcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2suIEkgc2VlIG5vIGluZGljYXRpb24gb2Yga2VybmVsIGZpbGUgbW9kaWZpY2F0aW9ucy4gVGhlIHByb3ZpZGVkIGRpZmYgYXBwZWFycyBjb21wcmVoZW5zaXZlLiBJIGNhbiBxdWlja2x5IGNvbmZpcm0gdGhpczsgdGhlIGxpc3Qgb2YgZmlsZXMgaW4gdGhlIGRpZmYgaXMgYWxsIHRoYXQgaXMgY2hhbmdlZC4gSSBhbSBjZXJ0YWluIHRoYXQgdGhlIEtWTSBzZWxmdGVzdHMgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlLgoKRmluYWxseSwgY29uc2lkZXIgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0LiBUaGUgdGVzdCBjb2RlIGlzIGFybTY0LCBtZWFuaW5nIHRoYXQgdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgKm5vdCogZm9yIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiBUaGlzIGdpdmVzIHVzIGFub3RoZXIgcmVhc29uIHRvIGZsYWcgdGhpcyBhcyBXb3J0aEZ1enppbmcgPSBmYWxzZS4KClNvLCBzdW1taW5nIGl0IHVwLCBteSBkZWNpc2lvbiBpczoKCiogICBXb3J0aEZ1enppbmc6IGZhbHNlCiogICBFbmFibGVDb25maWdzOiBcWyBdCiogICBGb2N1c1N5bWJvbHM6IFxbIF0KKiAgIFJlYXNvbmluZzogQWxsIGNoYW5nZXMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdXNlci1zcGFjZSBLVk0gc2VsZi10ZXN0cyBhbmQgYXJlIGZvciBhbiBhcmNoaXRlY3R1cmUgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KICAgIEl0JiMzOTtzIGFuIHVuYW1iaWd1b3VzICYjMzQ7bm8gZ28mIzM0OyBmb3IgZnV6emluZy4gV2UmIzM5O3JlIGRvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgb25seSBtb2RpZmllcyBLVk0gc2VsZi10ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIChzcGVjaWZpY2FsbHkgYXJtNjQgZ3Vlc3Qgc3VwcG9ydCBhbmQgdGVzdGluZykuIFRoZXNlIHVzZXItc3BhY2UgdGVzdCBmaWxlcyBkbyBub3QgbW9kaWZ5IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGFueSBrZXJuZWwgbW9kdWxlcywgbWFraW5nIHRoZW0gbm9uLWtlcm5lbCBjaGFuZ2VzIHRoYXQgZG8gbm90IHdhcnJhbnQga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgb25seSBtb2RpZmllcyBLVk0gc2VsZi10ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vIChzcGVjaWZpY2FsbHkgYXJtNjQgZ3Vlc3Qgc3VwcG9ydCBhbmQgdGVzdGluZykuIFRoZXNlIHVzZXItc3BhY2UgdGVzdCBmaWxlcyBkbyBub3QgbW9kaWZ5IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGFueSBrZXJuZWwgbW9kdWxlcywgbWFraW5nIHRoZW0gbm9uLWtlcm5lbCBjaGFuZ2VzIHRoYXQgZG8gbm90IHdhcnJhbnQga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA3OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwNzo0Mjo1Ni43MDU3MzQ5NDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDc5NDc0NzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGYtdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyAoc3BlY2lmaWNhbGx5IGFybTY0IGd1ZXN0IHN1cHBvcnQgYW5kIHRlc3RpbmcpLiBUaGVzZSB1c2VyLXNwYWNlIHRlc3QgZmlsZXMgZG8gbm90IG1vZGlmeSB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBhbnkga2VybmVsIG1vZHVsZXMsIG1ha2luZyB0aGVtIG5vbi1rZXJuZWwgY2hhbmdlcyB0aGF0IGRvIG5vdCB3YXJyYW50IGtlcm5lbCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDc6NDI6NTYuNzA1NzM5MTcxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDU5NzkzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiYTI2YTI4ZmU5M2ZmYjk4OTEyMjJmMTYzNjM1ZDk2MGI5Nzk5YzdmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDE0IDA3OjQyOjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuaW5kZXggOTZiYWI3MDAyZDM5ZS4uMWU5ZDA1OWZmYjI0YSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxcbkBAIC0xNzksNiArMTc5LDcgQEAgVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gYXJtNjQvaGVsbG9fZWwyXFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2hvc3Rfc3ZlXFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2h5cGVyY2FsbHNcXG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gYXJtNjQvZXh0ZXJuYWxfYWJvcnRzXFxuK1RFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2xwYV90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L21taW9fc2lnbl9leHRcXG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gYXJtNjQvcGFnZV9mYXVsdF90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L3BzY2lfdGVzdFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvbHBhX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9scGFfdGVzdC5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZmU2ZjI1NGRiMjgyXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9scGFfdGVzdC5jXFxuQEAgLTAsMCArMSwxMjQgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbisvKlxcbisgKiBIaWdoZXIgdmlydHVhbCBhZGRyZXNzZXMgcmVhZC93cml0ZSB0ZXN0XFxuKyAqL1xcbisjaW5jbHVkZSBcXHUwMDNjdGVzdF91dGlsLmhcXHUwMDNlXFxuK1xcbisjaW5jbHVkZSBcXFwia3ZtX3N5c2NhbGxzLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJrdm1fdXRpbC5oXFxcIlxcbisjaW5jbHVkZSBcXFwidWNhbGxfY29tbW9uLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJndWVzdF9tb2Rlcy5oXFxcIlxcbisjaW5jbHVkZSBcXFwicHJvY2Vzc29yLmhcXFwiXFxuK1xcbisjZGVmaW5lIExPV19HVkFcXHRcXHQweGMwMDAwMDAwXFxuKyNkZWZpbmUgSElHSF9HVkEgKExPV19HVkEgfCBCSVQoNDgpKVxcbitcXG4rc3RhdGljIHZvaWQgZ3Vlc3RfY29kZSh2b2lkKVxcbit7XFxuK1xcdHU2NCAqbG93ID0gKHU2NCAqKUxPV19HVkE7XFxuK1xcdHU2NCAqaGlnaCA9ICh1NjQgKilISUdIX0dWQTtcXG4rXFxuK1xcdFdSSVRFX09OQ0UoKmxvdywgMSk7XFxuK1xcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmhpZ2gpLCAxKTtcXG4rXFx0V1JJVEVfT05DRSgqaGlnaCwgMik7XFxuK1xcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksIDIpO1xcbitcXG4rXFx0R1VFU1RfU1lOQygwKTtcXG4rXFxuK1xcdGFzbSB2b2xhdGlsZShcXFwiZHNiIHN5XFxcXG5cXFxcdFxcXCJcXG4rXFx0XFx0ICAgICBcXFwidGxiaSB2bWFsbGUxaXNcXFxcblxcXFx0XFxcIlxcbitcXHRcXHQgICAgIFxcXCJkc2Igc3lcXFxcblxcXFx0XFxcIlxcbitcXHRcXHQgICAgIFxcXCJpc2JcXFwiXFxuK1xcdFxcdCAgICAgOiA6IDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXG4rXFx0R1VFU1RfU1lOQygxKTsgLyogSG9zdCBpbnN0YWxscyBISUdIX0dWQSAtXFx1MDAzZSBncGFfYi4gKi9cXG4rXFxuK1xcdGFzbSB2b2xhdGlsZShcXFwiZHNiIHN5XFxcXG5cXFxcdFxcXCJcXG4rXFx0XFx0ICAgICBcXFwiaXNiXFxcXG5cXFxcdFxcXCJcXG4rXFx0XFx0ICAgICA6IDogOiBcXFwibWVtb3J5XFxcIik7XFxuK1xcbitcXHQvKiBsb3cgYW5kIGhpZ2ggbWFwIHRvIGRpZmZlcmVudCBHUEFzLiAqL1xcbitcXHRXUklURV9PTkNFKCpsb3csICAxKTtcXG4rXFx0V1JJVEVfT05DRSgqaGlnaCwgMik7XFxuK1xcbitcXHQvKiBDaGVjayBib3RoIGFmdGVyIGJvdGggd3JpdGVzIHRvIGRldGVjdCBhY2NpZGVudGFsIGFsaWFzaW5nLiAqL1xcbitcXHRHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpsb3cpLCAgMSk7XFxuK1xcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmhpZ2gpLCAyKTtcXG4rXFxuK1xcdC8qIFVwZGF0aW5nIHRoZSBsb3cgbWFwcGluZyBtdXN0IG5vdCBjaGFuZ2UgdGhlIGhpZ2ggbWFwcGluZy4gKi9cXG4rXFx0V1JJVEVfT05DRSgqbG93LCAzKTtcXG4rXFxuK1xcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksICAzKTtcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqaGlnaCksIDIpO1xcbitcXG4rXFx0R1VFU1RfRE9ORSgpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCAqbnJfdGVzdHMgPSBhcmc7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9pbml0IGluaXQ7XFxuK1xcdHN0cnVjdCBrdm1fdm0gKnZtO1xcbitcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuK1xcdHN0cnVjdCB1Y2FsbCB1YztcXG4rXFxuK1xcdGlmIChtb2RlICE9IFZNX01PREVfUDUyVjUyXzRLIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBtb2RlICE9IFZNX01PREVfUDUyVjUyXzE2SyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml82NEspXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdHZtID0gX192bV9jcmVhdGUoVk1fU0hBUEUobW9kZSksIDEsIDApO1xcbitcXHRrdm1fZ2V0X2RlZmF1bHRfdmNwdV90YXJnZXQodm0sIFxcdTAwMjZpbml0KTtcXG4rXFx0dmNwdSA9IGFhcmNoNjRfdmNwdV9hZGQodm0sIDAsIFxcdTAwMjZpbml0LCBndWVzdF9jb2RlKTtcXG4rXFx0a3ZtX2FyY2hfdm1fZmluYWxpemVfdmNwdXModm0pO1xcbitcXG4rXFx0dm1faW5pdF9kZXNjcmlwdG9yX3RhYmxlcyh2bSk7XFxuK1xcdHZjcHVfaW5pdF9kZXNjcmlwdG9yX3RhYmxlcyh2Y3B1KTtcXG4rXFxuK1xcdHU2NCBncGFfYSA9IHZtX3BoeV9wYWdlc19hbGxvYyh2bSwgMSwgMCwgMCk7XFxuK1xcdHU2NCBncGFfYiA9IHZtX3BoeV9wYWdlc19hbGxvYyh2bSwgMSwgMCwgMCk7XFxuK1xcbitcXHR2aXJ0X3BnX21hcCh2bSwgTE9XX0dWQSwgZ3BhX2EpO1xcbitcXHR2aXJ0X3BnX21hcCh2bSwgSElHSF9HVkEsIGdwYV9hKTtcXG4rXFxuK1xcdGZvciAoOzspIHtcXG4rXFx0XFx0dmNwdV9ydW4odmNwdSk7XFxuK1xcdFxcdHN3aXRjaCAoZ2V0X3VjYWxsKHZjcHUsIFxcdTAwMjZ1YykpIHtcXG4rXFx0XFx0Y2FzZSBVQ0FMTF9ET05FOlxcbitcXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdFxcdGNhc2UgVUNBTExfQUJPUlQ6XFxuK1xcdFxcdFxcdFJFUE9SVF9HVUVTVF9BU1NFUlQodWMpO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSBVQ0FMTF9TWU5DOlxcbitcXHRcXHRcXHRzd2l0Y2ggKHVjLmFyZ3NbMV0pIHtcXG4rXFx0XFx0XFx0Y2FzZSAwOlxcbitcXHRcXHRcXHRcXHRXUklURV9PTkNFKCp2aXJ0X2dldF9wdGVfaHZhKHZtLCBISUdIX0dWQSksIDApO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0Y2FzZSAxOlxcbitcXHRcXHRcXHRcXHR2aXJ0X3BnX21hcCh2bSwgSElHSF9HVkEsIGdwYV9iKTtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGRlZmF1bHQ6XFxuK1xcdFxcdFxcdFxcdFRFU1RfRkFJTChcXFwiVW5leHBlY3RlZCBzeW5jIHN0YWdlOiAlbHVcXFxcblxcXCIsIHVjLmFyZ3NbMV0pO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdC8qIENvbXBsZXRlIHRoZSBob3N0J3MgUFRFIHN0b3JlIGJlZm9yZSByZXN1bWluZyB0aGUgZ3Vlc3QuICovXFxuK1xcdFxcdFxcdGFzbSB2b2xhdGlsZShcXFwiZHNiIHN5XFxcIiA6IDogOiBcXFwibWVtb3J5XFxcIik7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRkZWZhdWx0OlxcbitcXHRcXHRcXHRURVNUX0ZBSUwoXFxcIlVuaGFuZGxlZCB1Y2FsbDogJWxkXFxcXG5cXFwiLCB1Yy5jbWQpO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK2RvbmU6XFxuK1xcdGt2bV92bV9mcmVlKHZtKTtcXG4rXFx0KCpucl90ZXN0cykrKztcXG4rfVxcbitcXG4raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBucl90ZXN0cyA9IDA7XFxuK1xcbitcXHRmb3JfZWFjaF9ndWVzdF9tb2RlKHJ1bl90ZXN0LCBcXHUwMDI2bnJfdGVzdHMpO1xcbitcXHRpZiAoIW5yX3Rlc3RzKVxcbitcXHRcXHRrc2Z0X2V4aXRfc2tpcChcXFwiTm8gc3VwcG9ydGVkIDUyLWJpdCBWQSBndWVzdCBtb2RlOyBza2lwcGluZyB0ZXN0XFxcXG5cXFwiKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvYXJtNjQvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaFxcbmluZGV4IGI4YTkwMmJhODU3M2QuLjRhYjAwYTdlNmVmYjUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvYXJtNjQvcHJvY2Vzc29yLmhcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaFxcbkBAIC0xMTMsNiArMTEzLDcgQEBcXG4gXFxuICNkZWZpbmUgUFRFX1ZBTElEXFx0XFx0QklUKDApXFxuICNkZWZpbmUgUEdEX1RZUEVfVEFCTEVcXHRcXHRCSVQoMSlcXG4rI2RlZmluZSBQNERfVFlQRV9UQUJMRVxcdFxcdEJJVCgxKVxcbiAjZGVmaW5lIFBVRF9UWVBFX1RBQkxFXFx0XFx0QklUKDEpXFxuICNkZWZpbmUgUE1EX1RZUEVfVEFCTEVcXHRcXHRCSVQoMSlcXG4gI2RlZmluZSBQVEVfVFlQRV9QQUdFXFx0XFx0QklUKDEpXFxuQEAgLTE2OCw3ICsxNjksNyBAQCBlbnVtIHtcXG4gXFx0XFx0XFx0ICAgKHYpID09IFZFQ1RPUl9TWU5DX0xPV0VSXzMyKVxcbiBcXG4gdm9pZCBhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyh1MzIgaXBhLCB1MzIgKmlwYTRrLFxcbi1cXHRcXHRcXHRcXHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGspO1xcbitcXHRcXHRcXHRcXHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGssIHUzMiAqdmE2NGspO1xcbiBcXG4gdm9pZCB2bV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHN0cnVjdCBrdm1fdm0gKnZtKTtcXG4gdm9pZCB2Y3B1X2luaXRfZGVzY3JpcHRvcl90YWJsZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2t2bV91dGlsLmhcXG5pbmRleCA1YTdhNDU1YjUzODc1Li4xYzI2OGZhOTk0YWE5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2t2bV91dGlsLmhcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oXFxuQEAgLTE4NCw2ICsxODQsOSBAQCBlbnVtIHZtX2d1ZXN0X21vZGUge1xcbiBcXHRWTV9NT0RFX1A1MlY0OF80SyxcXG4gXFx0Vk1fTU9ERV9QNTJWNDhfMTZLLFxcbiBcXHRWTV9NT0RFX1A1MlY0OF82NEssXFxuK1xcdFZNX01PREVfUDUyVjUyXzRLLFxcbitcXHRWTV9NT0RFX1A1MlY1Ml8xNkssXFxuK1xcdFZNX01PREVfUDUyVjUyXzY0SyxcXG4gXFx0Vk1fTU9ERV9QNDhWNDhfNEssXFxuIFxcdFZNX01PREVfUDQ4VjQ4XzE2SyxcXG4gXFx0Vk1fTU9ERV9QNDhWNDhfNjRLLFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuY1xcbmluZGV4IDAxMzI1YmY0ZDM2ZmMuLjk5MTVmMjVmMDI4NzQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmNcXG5AQCAtMjksMTMgKzI5LDI1IEBAIHN0YXRpYyB1NjQgcGdkX2luZGV4KHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEpXFxuIFxcdHJldHVybiAoZ3ZhIFxcdTAwM2VcXHUwMDNlIHNoaWZ0KSBcXHUwMDI2IG1hc2s7XFxuIH1cXG4gXFxuK3N0YXRpYyB1NjQgcDRkX2luZGV4KHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IHNoaWZ0ID0gMyAqICh2bS1cXHUwMDNlcGFnZV9zaGlmdCAtIDMpICsgdm0tXFx1MDAzZXBhZ2Vfc2hpZnQ7XFxuK1xcdHU2NCBtYXNrID0gKDFVTCBcXHUwMDNjXFx1MDAzYyAodm0tXFx1MDAzZXBhZ2Vfc2hpZnQgLSAzKSkgLSAxO1xcbitcXG4rXFx0VEVTVF9BU1NFUlQodm0tXFx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9PSA1LFxcbitcXHRcXHQgICAgXFxcIk1vZGUgJWQgZG9lcyBub3QgaGF2ZSA1IHBhZ2UgdGFibGUgbGV2ZWxzXFxcIiwgdm0tXFx1MDAzZW1vZGUpO1xcbitcXG4rXFx0cmV0dXJuIChndmEgXFx1MDAzZVxcdTAwM2Ugc2hpZnQpIFxcdTAwMjYgbWFzaztcXG4rfVxcbitcXG4gc3RhdGljIHU2NCBwdWRfaW5kZXgoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSlcXG4ge1xcbiBcXHR1bnNpZ25lZCBpbnQgc2hpZnQgPSAyICogKHZtLVxcdTAwM2VwYWdlX3NoaWZ0IC0gMykgKyB2bS1cXHUwMDNlcGFnZV9zaGlmdDtcXG4gXFx0dTY0IG1hc2sgPSAoMVVMIFxcdTAwM2NcXHUwMDNjICh2bS1cXHUwMDNlcGFnZV9zaGlmdCAtIDMpKSAtIDE7XFxuIFxcbi1cXHRURVNUX0FTU0VSVCh2bS1cXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID09IDQsXFxuLVxcdFxcdFxcXCJNb2RlICVkIGRvZXMgbm90IGhhdmUgNCBwYWdlIHRhYmxlIGxldmVsc1xcXCIsIHZtLVxcdTAwM2Vtb2RlKTtcXG4rXFx0VEVTVF9BU1NFUlQodm0tXFx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyBcXHUwMDNlPSA0LFxcbitcXHRcXHQgICAgXFxcIk1vZGUgJWQgZG9lcyBub3QgaGF2ZSBcXHUwMDNlPSA0IHBhZ2UgdGFibGUgbGV2ZWxzXFxcIixcXG4rXFx0XFx0ICAgIHZtLVxcdTAwM2Vtb2RlKTtcXG4gXFxuIFxcdHJldHVybiAoZ3ZhIFxcdTAwM2VcXHUwMDNlIHNoaWZ0KSBcXHUwMDI2IG1hc2s7XFxuIH1cXG5AQCAtMTQ3LDYgKzE1OSwxMiBAQCBzdGF0aWMgdm9pZCBfdmlydF9wZ19tYXAoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgZ3BhX3QgZ3BhLFxcbiBcXHRcXHRcXHRcXHQgUEdEX1RZUEVfVEFCTEUgfCBQVEVfVkFMSUQpO1xcbiBcXG4gXFx0c3dpdGNoICh2bS1cXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzKSB7XFxuK1xcdGNhc2UgNTpcXG4rXFx0XFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwNGRfaW5kZXgodm0sIGd2YSkgKiA4O1xcbitcXHRcXHRpZiAoISpwdGVwKVxcbitcXHRcXHRcXHQqcHRlcCA9IGFkZHJfcHRlKHZtLCB2bV9hbGxvY19wYWdlX3RhYmxlKHZtKSxcXG4rXFx0XFx0XFx0XFx0XFx0IFA0RF9UWVBFX1RBQkxFIHwgUFRFX1ZBTElEKTtcXG4rXFx0XFx0LyogZmFsbCB0aHJvdWdoICovXFxuIFxcdGNhc2UgNDpcXG4gXFx0XFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwdWRfaW5kZXgodm0sIGd2YSkgKiA4O1xcbiBcXHRcXHRpZiAoISpwdGVwKVxcbkBAIC0xNjMsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgX3ZpcnRfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSxcXG4gXFx0XFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwdGVfaW5kZXgodm0sIGd2YSkgKiA4O1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4tXFx0XFx0VEVTVF9GQUlMKFxcXCJQYWdlIHRhYmxlIGxldmVscyBtdXN0IGJlIDIsIDMsIG9yIDRcXFwiKTtcXG4rXFx0XFx0VEVTVF9GQUlMKFxcXCJQYWdlIHRhYmxlIGxldmVscyBtdXN0IGJlIDIsIDMsIDQsIG9yIDVcXFwiKTtcXG4gXFx0fVxcbiBcXG4gXFx0cGdfYXR0ciA9IFBURV9BRiB8IFBURV9BVFRSSU5EWChhdHRyX2lkeCkgfCBQVEVfVFlQRV9QQUdFIHwgUFRFX1ZBTElEO1xcbkBAIC0xODIsMTggKzIwMCwzNSBAQCB2b2lkIHZpcnRfYXJjaF9wZ19tYXAoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgZ3BhX3QgZ3BhKVxcbiBcXG4gdTY0ICp2aXJ0X2dldF9wdGVfaHZhX2F0X2xldmVsKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGludCBsZXZlbClcXG4ge1xcbitcXHRpbnQgc3RhcnRfbGV2ZWwgPSA0IC0gdm0tXFx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscztcXG4gXFx0dTY0ICpwdGVwO1xcbiBcXG4rXFx0VEVTVF9BU1NFUlQobGV2ZWwgXFx1MDAzZT0gc3RhcnRfbGV2ZWwgXFx1MDAyNlxcdTAwMjYgbGV2ZWwgXFx1MDAzYz0gMyxcXG4rXFx0XFx0ICAgIFxcXCJJbnZhbGlkIHRyYW5zbGF0aW9uIGxldmVsICVkLCB2YWxpZCByYW5nZSBpcyAlZC0zXFxcIixcXG4rXFx0XFx0ICAgIGxldmVsLCBzdGFydF9sZXZlbCk7XFxuK1xcbiBcXHRpZiAoIXZtLVxcdTAwM2VtbXUucGdkX2NyZWF0ZWQpXFxuIFxcdFxcdGdvdG8gdW5tYXBwZWRfZ3ZhO1xcbiBcXG4gXFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgdm0tXFx1MDAzZW1tdS5wZ2QpICsgcGdkX2luZGV4KHZtLCBndmEpICogODtcXG4gXFx0aWYgKCFwdGVwKVxcbiBcXHRcXHRnb3RvIHVubWFwcGVkX2d2YTtcXG4tXFx0aWYgKGxldmVsID09IDApXFxuK1xcdC8qXFxuK1xcdCAqIFN0YWdlLTEgdHJhbnNsYXRpb24gc3RhcnRzIGF0IGxldmVsIC0xIGZvciBhIGZpdmUtbGV2ZWwgcGFnZVxcbitcXHQgKiB0YWJsZSwgYW5kIGF0IGxldmVscyAwLCAxLCBvciAyIGZvciBmb3VyLSwgdGhyZWUtLCBvciB0d28tbGV2ZWxcXG4rXFx0ICogcGFnZSB0YWJsZXMsIHJlc3BlY3RpdmVseS5cXG4rXFx0ICovXFxuK1xcdGlmIChsZXZlbCA9PSBzdGFydF9sZXZlbClcXG4gXFx0XFx0cmV0dXJuIHB0ZXA7XFxuIFxcbiBcXHRzd2l0Y2ggKHZtLVxcdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMpIHtcXG4rXFx0Y2FzZSA1OlxcbitcXHRcXHRwdGVwID0gYWRkcl9ncGEyaHZhKHZtLCBwdGVfYWRkcih2bSwgKnB0ZXApKSArIHA0ZF9pbmRleCh2bSwgZ3ZhKSAqIDg7XFxuK1xcdFxcdGlmICghcHRlcClcXG4rXFx0XFx0XFx0Z290byB1bm1hcHBlZF9ndmE7XFxuK1xcdFxcdGlmIChsZXZlbCA9PSAwKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0LyogZmFsbCB0aHJvdWdoICovXFxuIFxcdGNhc2UgNDpcXG4gXFx0XFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwdWRfaW5kZXgodm0sIGd2YSkgKiA4O1xcbiBcXHRcXHRpZiAoIXB0ZXApXFxuQEAgLTIxNCw3ICsyNDksNyBAQCB1NjQgKnZpcnRfZ2V0X3B0ZV9odmFfYXRfbGV2ZWwoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgaW50IGxldmVsKVxcbiBcXHRcXHRcXHRnb3RvIHVubWFwcGVkX2d2YTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuLVxcdFxcdFRFU1RfRkFJTChcXFwiUGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCBvciA0XFxcIik7XFxuK1xcdFxcdFRFU1RfRkFJTChcXFwiUGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCA0LCBvciA1XFxcIik7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBwdGVwO1xcbkBAIC0zMjEsMTIgKzM1NiwxNCBAQCB2b2lkIGFhcmNoNjRfdmNwdV9zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fdmNwdV9pbml0ICppbml0KVxcbiBcXHRjYXNlIFZNX01PREVfUFhYVllZXzRLOlxcbiBcXHRcXHRURVNUX0ZBSUwoXFxcIkFBcmNoNjQgZG9lcyBub3Qgc3VwcG9ydCA0SyBzaXplZCBwYWdlcyBcXFwiXFxuIFxcdFxcdFxcdCAgXFxcIndpdGggQU5ZLWJpdCBwaHlzaWNhbCBhZGRyZXNzIHJhbmdlc1xcXCIpO1xcbitcXHRjYXNlIFZNX01PREVfUDUyVjUyXzY0SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF82NEs6XFxuIFxcdGNhc2UgVk1fTU9ERV9QNDhWNDhfNjRLOlxcbiBcXHRjYXNlIFZNX01PREVfUDQwVjQ4XzY0SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1AzNlY0OF82NEs6XFxuIFxcdFxcdHRjcl9lbDEgfD0gVENSX1RHMF82NEs7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF8xNks6XFxuIFxcdGNhc2UgVk1fTU9ERV9QNDhWNDhfMTZLOlxcbiBcXHRjYXNlIFZNX01PREVfUDQwVjQ4XzE2SzpcXG5AQCAtMzM0LDYgKzM3MSw3IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXFxuIFxcdGNhc2UgVk1fTU9ERV9QMzZWNDdfMTZLOlxcbiBcXHRcXHR0Y3JfZWwxIHw9IFRDUl9URzBfMTZLO1xcbiBcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBWTV9NT0RFX1A1MlY1Ml80SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF80SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1A0OFY0OF80SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1A0MFY0OF80SzpcXG5AQCAtMzQ4LDYgKzM4Niw5IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXFxuIFxcbiBcXHQvKiBDb25maWd1cmUgb3V0cHV0IHNpemUgKi9cXG4gXFx0c3dpdGNoICh2bS1cXHUwMDNlbW9kZSkge1xcbitcXHRjYXNlIFZNX01PREVfUDUyVjUyXzRLOlxcbitcXHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcXG4rXFx0Y2FzZSBWTV9NT0RFX1A1MlY1Ml82NEs6XFxuIFxcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNEs6XFxuIFxcdGNhc2UgVk1fTU9ERV9QNTJWNDhfMTZLOlxcbiBcXHRjYXNlIFZNX01PREVfUDUyVjQ4XzY0SzpcXG5AQCAtNTc5LDcgKzYyMCw3IEBAIHN0YXRpYyB1MzIgbWF4X2lwYV9mb3JfcGFnZV9zaXplKHUzMiB2bV9pcGEsIHUzMiBncmFuLFxcbiB9XFxuIFxcbiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssXFxuLVxcdFxcdFxcdFxcdCAgICAgIHUzMiAqaXBhMTZrLCB1MzIgKmlwYTY0aylcXG4rXFx0XFx0XFx0XFx0ICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrLCB1MzIgKnZhNjRrKVxcbiB7XFxuIFxcdHN0cnVjdCBrdm1fdmNwdV9pbml0IHByZWZlcnJlZF9pbml0O1xcbiBcXHRpbnQga3ZtX2ZkLCB2bV9mZCwgdmNwdV9mZCwgZXJyO1xcbkBAIC02MTcsNiArNjU4LDEzIEBAIHZvaWQgYWFyY2g2NF9nZXRfc3VwcG9ydGVkX3BhZ2Vfc2l6ZXModTMyIGlwYSwgdTMyICppcGE0ayxcXG4gXFx0KmlwYTE2ayA9IG1heF9pcGFfZm9yX3BhZ2Vfc2l6ZShpcGEsIGdyYW4sIElEX0FBNjRNTUZSMF9FTDFfVEdSQU4xNl9OSSxcXG4gXFx0XFx0XFx0XFx0XFx0SURfQUE2NE1NRlIwX0VMMV9UR1JBTjE2XzUyX0JJVCk7XFxuIFxcbitcXHRyZWcuaWQgPSBLVk1fQVJNNjRfU1lTX1JFRyhTWVNfSURfQUE2NE1NRlIyX0VMMSk7XFxuK1xcdGVyciA9IGlvY3RsKHZjcHVfZmQsIEtWTV9HRVRfT05FX1JFRywgXFx1MDAyNnJlZyk7XFxuK1xcdFRFU1RfQVNTRVJUKGVyciA9PSAwLCBLVk1fSU9DVExfRVJST1IoS1ZNX0dFVF9PTkVfUkVHLCBlcnIpKTtcXG4rXFxuK1xcdCp2YTY0ayA9IEZJRUxEX0dFVChJRF9BQTY0TU1GUjJfRUwxX1ZBUmFuZ2UsIHZhbCkgXFx1MDAzZT1cXG4rXFx0XFx0SURfQUE2NE1NRlIyX0VMMV9WQVJhbmdlXzUyID8gNTIgOiA0ODtcXG4rXFxuIFxcdGNsb3NlKHZjcHVfZmQpO1xcbiBcXHRjbG9zZSh2bV9mZCk7XFxuIFxcdGNsb3NlKGt2bV9mZCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuY1xcbmluZGV4IDdhOTZjNDNiNTcwNGQuLjhkMjc0ODE0NWY4ZjggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9ndWVzdF9tb2Rlcy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9ndWVzdF9tb2Rlcy5jXFxuQEAgLTIwLDExICsyMCwxNCBAQCB2b2lkIGd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KHZvaWQpXFxuICNpZmRlZiBfX2FhcmNoNjRfX1xcbiBcXHR7XFxuIFxcdFxcdHVuc2lnbmVkIGludCBsaW1pdCA9IGt2bV9jaGVja19jYXAoS1ZNX0NBUF9BUk1fVk1fSVBBX1NJWkUpO1xcbi1cXHRcXHR1MzIgaXBhNGssIGlwYTE2aywgaXBhNjRrO1xcbitcXHRcXHR1MzIgaXBhNGssIGlwYTE2aywgaXBhNjRrLCB2YTY0aztcXG4gXFx0XFx0aW50IGk7XFxuIFxcbi1cXHRcXHRhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyhsaW1pdCwgXFx1MDAyNmlwYTRrLCBcXHUwMDI2aXBhMTZrLCBcXHUwMDI2aXBhNjRrKTtcXG4rXFx0XFx0YWFyY2g2NF9nZXRfc3VwcG9ydGVkX3BhZ2Vfc2l6ZXMobGltaXQsIFxcdTAwMjZpcGE0aywgXFx1MDAyNmlwYTE2aywgXFx1MDAyNmlwYTY0aywgXFx1MDAyNnZhNjRrKTtcXG4gXFxuK1xcdFxcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzRLLCBpcGE0ayBcXHUwMDNlPSA1Mik7XFxuK1xcdFxcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzE2SywgaXBhMTZrIFxcdTAwM2U9IDUyKTtcXG4rXFx0XFx0Z3Vlc3RfbW9kZV9hcHBlbmQoVk1fTU9ERV9QNTJWNTJfNjRLLCBpcGE2NGsgXFx1MDAzZT0gNTIgXFx1MDAyNlxcdTAwMjYgdmE2NGsgXFx1MDAzZT0gNTIpO1xcbiBcXHRcXHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF80SywgaXBhNGsgXFx1MDAzZT0gNTIpO1xcbiBcXHRcXHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF8xNkssIGlwYTE2ayBcXHUwMDNlPSA1Mik7XFxuIFxcdFxcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjQ4XzY0SywgaXBhNjRrIFxcdTAwM2U9IDUyKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXFxuaW5kZXggOWRkYzA0N2Q1YzI3NS4uYmMzZWQwMzRlMjAzNiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcXG5AQCAtMjAzLDYgKzIwMyw5IEBAIGNvbnN0IGNoYXIgKnZtX2d1ZXN0X21vZGVfc3RyaW5nKHUzMiBpKVxcbiBcXHRcXHRbVk1fTU9ERV9QNTJWNDhfNEtdXFx0PSBcXFwiUEEtYml0czo1MiwgIFZBLWJpdHM6NDgsICA0SyBwYWdlc1xcXCIsXFxuIFxcdFxcdFtWTV9NT0RFX1A1MlY0OF8xNktdXFx0PSBcXFwiUEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDE2SyBwYWdlc1xcXCIsXFxuIFxcdFxcdFtWTV9NT0RFX1A1MlY0OF82NEtdXFx0PSBcXFwiUEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDY0SyBwYWdlc1xcXCIsXFxuK1xcdFxcdFtWTV9NT0RFX1A1MlY1Ml80S11cXHQ9IFxcXCJQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgIDRLIHBhZ2VzXFxcIixcXG4rXFx0XFx0W1ZNX01PREVfUDUyVjUyXzE2S11cXHQ9IFxcXCJQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgMTZLIHBhZ2VzXFxcIixcXG4rXFx0XFx0W1ZNX01PREVfUDUyVjUyXzY0S11cXHQ9IFxcXCJQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgNjRLIHBhZ2VzXFxcIixcXG4gXFx0XFx0W1ZNX01PREVfUDQ4VjQ4XzRLXVxcdD0gXFxcIlBBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAgNEsgcGFnZXNcXFwiLFxcbiBcXHRcXHRbVk1fTU9ERV9QNDhWNDhfMTZLXVxcdD0gXFxcIlBBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCAxNksgcGFnZXNcXFwiLFxcbiBcXHRcXHRbVk1fTU9ERV9QNDhWNDhfNjRLXVxcdD0gXFxcIlBBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCA2NEsgcGFnZXNcXFwiLFxcbkBAIC0yMzksNiArMjQyLDkgQEAgY29uc3Qgc3RydWN0IHZtX2d1ZXN0X21vZGVfcGFyYW1zIHZtX2d1ZXN0X21vZGVfcGFyYW1zW10gPSB7XFxuIFxcdFtWTV9NT0RFX1A1MlY0OF80S11cXHQ9IHsgNTIsIDQ4LCAgMHgxMDAwLCAxMiB9LFxcbiBcXHRbVk1fTU9ERV9QNTJWNDhfMTZLXVxcdD0geyA1MiwgNDgsICAweDQwMDAsIDE0IH0sXFxuIFxcdFtWTV9NT0RFX1A1MlY0OF82NEtdXFx0PSB7IDUyLCA0OCwgMHgxMDAwMCwgMTYgfSxcXG4rXFx0W1ZNX01PREVfUDUyVjUyXzRLXVxcdD0geyA1MiwgNTIsICAweDEwMDAsIDEyIH0sXFxuK1xcdFtWTV9NT0RFX1A1MlY1Ml8xNktdXFx0PSB7IDUyLCA1MiwgIDB4NDAwMCwgMTQgfSxcXG4rXFx0W1ZNX01PREVfUDUyVjUyXzY0S11cXHQ9IHsgNTIsIDUyLCAweDEwMDAwLCAxNiB9LFxcbiBcXHRbVk1fTU9ERV9QNDhWNDhfNEtdXFx0PSB7IDQ4LCA0OCwgIDB4MTAwMCwgMTIgfSxcXG4gXFx0W1ZNX01PREVfUDQ4VjQ4XzE2S11cXHQ9IHsgNDgsIDQ4LCAgMHg0MDAwLCAxNCB9LFxcbiBcXHRbVk1fTU9ERV9QNDhWNDhfNjRLXVxcdD0geyA0OCwgNDgsIDB4MTAwMDAsIDE2IH0sXFxuQEAgLTMwNiwxMCArMzEyLDE0IEBAIHN0cnVjdCBrdm1fdm0gKl9fX192bV9jcmVhdGUoc3RydWN0IHZtX3NoYXBlIHNoYXBlKVxcbiBcXG4gXFx0LyogU2V0dXAgbW9kZSBzcGVjaWZpYyB0cmFpdHMuICovXFxuIFxcdHN3aXRjaCAodm0tXFx1MDAzZW1vZGUpIHtcXG4rXFx0Y2FzZSBWTV9NT0RFX1A1MlY1Ml80SzpcXG4rXFx0XFx0dm0tXFx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9IDU7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFZNX01PREVfUDUyVjQ4XzRLOlxcbiBcXHRcXHR2bS1cXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID0gNDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNjRLOlxcbitcXHRjYXNlIFZNX01PREVfUDUyVjUyXzY0SzpcXG4gXFx0XFx0dm0tXFx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9IDM7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFZNX01PREVfUDQ4VjQ4XzRLOlxcbkBAIC0zMzAsNiArMzQwLDcgQEAgc3RydWN0IGt2bV92bSAqX19fX3ZtX2NyZWF0ZShzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUpXFxuIFxcdGNhc2UgVk1fTU9ERV9QNDhWNDhfMTZLOlxcbiBcXHRjYXNlIFZNX01PREVfUDQwVjQ4XzE2SzpcXG4gXFx0Y2FzZSBWTV9NT0RFX1AzNlY0OF8xNks6XFxuK1xcdGNhc2UgVk1fTU9ERV9QNTJWNTJfMTZLOlxcbiBcXHRcXHR2bS1cXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID0gNDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgVk1fTU9ERV9QNDdWNDdfMTZLOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwNzo0Mjo1Ny4yMTI1NjQxNzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjc1NzI2MzM5NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmLXRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8gKHNwZWNpZmljYWxseSBhcm02NCBndWVzdCBzdXBwb3J0IGFuZCB0ZXN0aW5nKS4gVGhlc2UgdXNlci1zcGFjZSB0ZXN0IGZpbGVzIGRvIG5vdCBtb2RpZnkgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3IgYW55IGtlcm5lbCBtb2R1bGVzLCBtYWtpbmcgdGhlbSBub24ta2VybmVsIGNoYW5nZXMgdGhhdCBkbyBub3Qgd2FycmFudCBrZXJuZWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYmEyNmEyOGZlOTNmZmI5ODkxMjIyZjE2MzYzNWQ5NjBiOTc5OWM3ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDE0IDA3OjQyOjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbmluZGV4IDk2YmFiNzAwMmQzOWUuLjFlOWQwNTlmZmIyNGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG5AQCAtMTc5LDYgKzE3OSw3IEBAIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2hlbGxvX2VsMlxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2hvc3Rfc3ZlXG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gYXJtNjQvaHlwZXJjYWxsc1xuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2V4dGVybmFsX2Fib3J0c1xuK1RFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L2xwYV90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gYXJtNjQvbW1pb19zaWduX2V4dFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L3BhZ2VfZmF1bHRfdGVzdFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGFybTY0L3BzY2lfdGVzdFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9scGFfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2xwYV90ZXN0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZmU2ZjI1NGRiMjgyXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvbHBhX3Rlc3QuY1xuQEAgLTAsMCArMSwxMjQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4rLypcbisgKiBIaWdoZXIgdmlydHVhbCBhZGRyZXNzZXMgcmVhZC93cml0ZSB0ZXN0XG4rICovXG4rI2luY2x1ZGUgXHUwMDNjdGVzdF91dGlsLmhcdTAwM2VcbitcbisjaW5jbHVkZSBcImt2bV9zeXNjYWxscy5oXCJcbisjaW5jbHVkZSBcImt2bV91dGlsLmhcIlxuKyNpbmNsdWRlIFwidWNhbGxfY29tbW9uLmhcIlxuKyNpbmNsdWRlIFwiZ3Vlc3RfbW9kZXMuaFwiXG4rI2luY2x1ZGUgXCJwcm9jZXNzb3IuaFwiXG4rXG4rI2RlZmluZSBMT1dfR1ZBXHRcdDB4YzAwMDAwMDBcbisjZGVmaW5lIEhJR0hfR1ZBIChMT1dfR1ZBIHwgQklUKDQ4KSlcbitcbitzdGF0aWMgdm9pZCBndWVzdF9jb2RlKHZvaWQpXG4re1xuK1x0dTY0ICpsb3cgPSAodTY0ICopTE9XX0dWQTtcbitcdHU2NCAqaGlnaCA9ICh1NjQgKilISUdIX0dWQTtcbitcbitcdFdSSVRFX09OQ0UoKmxvdywgMSk7XG4rXHRHVUVTVF9BU1NFUlRfRVEoUkVBRF9PTkNFKCpoaWdoKSwgMSk7XG4rXHRXUklURV9PTkNFKCpoaWdoLCAyKTtcbitcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksIDIpO1xuK1xuK1x0R1VFU1RfU1lOQygwKTtcbitcbitcdGFzbSB2b2xhdGlsZShcImRzYiBzeVxcblxcdFwiXG4rXHRcdCAgICAgXCJ0bGJpIHZtYWxsZTFpc1xcblxcdFwiXG4rXHRcdCAgICAgXCJkc2Igc3lcXG5cXHRcIlxuK1x0XHQgICAgIFwiaXNiXCJcbitcdFx0ICAgICA6IDogOiBcIm1lbW9yeVwiKTtcbitcbitcdEdVRVNUX1NZTkMoMSk7IC8qIEhvc3QgaW5zdGFsbHMgSElHSF9HVkEgLVx1MDAzZSBncGFfYi4gKi9cbitcbitcdGFzbSB2b2xhdGlsZShcImRzYiBzeVxcblxcdFwiXG4rXHRcdCAgICAgXCJpc2JcXG5cXHRcIlxuK1x0XHQgICAgIDogOiA6IFwibWVtb3J5XCIpO1xuK1xuK1x0LyogbG93IGFuZCBoaWdoIG1hcCB0byBkaWZmZXJlbnQgR1BBcy4gKi9cbitcdFdSSVRFX09OQ0UoKmxvdywgIDEpO1xuK1x0V1JJVEVfT05DRSgqaGlnaCwgMik7XG4rXG4rXHQvKiBDaGVjayBib3RoIGFmdGVyIGJvdGggd3JpdGVzIHRvIGRldGVjdCBhY2NpZGVudGFsIGFsaWFzaW5nLiAqL1xuK1x0R1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqbG93KSwgIDEpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKFJFQURfT05DRSgqaGlnaCksIDIpO1xuK1xuK1x0LyogVXBkYXRpbmcgdGhlIGxvdyBtYXBwaW5nIG11c3Qgbm90IGNoYW5nZSB0aGUgaGlnaCBtYXBwaW5nLiAqL1xuK1x0V1JJVEVfT05DRSgqbG93LCAzKTtcbitcbitcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmxvdyksICAzKTtcbitcdEdVRVNUX0FTU0VSVF9FUShSRUFEX09OQ0UoKmhpZ2gpLCAyKTtcbitcbitcdEdVRVNUX0RPTkUoKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbit7XG4rXHR1bnNpZ25lZCBpbnQgKm5yX3Rlc3RzID0gYXJnO1xuK1x0c3RydWN0IGt2bV92Y3B1X2luaXQgaW5pdDtcbitcdHN0cnVjdCBrdm1fdm0gKnZtO1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuK1x0c3RydWN0IHVjYWxsIHVjO1xuK1xuK1x0aWYgKG1vZGUgIT0gVk1fTU9ERV9QNTJWNTJfNEsgXHUwMDI2XHUwMDI2XG4rXHQgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml8xNksgXHUwMDI2XHUwMDI2XG4rXHQgICAgbW9kZSAhPSBWTV9NT0RFX1A1MlY1Ml82NEspXG4rXHRcdHJldHVybjtcbitcbitcdHZtID0gX192bV9jcmVhdGUoVk1fU0hBUEUobW9kZSksIDEsIDApO1xuK1x0a3ZtX2dldF9kZWZhdWx0X3ZjcHVfdGFyZ2V0KHZtLCBcdTAwMjZpbml0KTtcbitcdHZjcHUgPSBhYXJjaDY0X3ZjcHVfYWRkKHZtLCAwLCBcdTAwMjZpbml0LCBndWVzdF9jb2RlKTtcbitcdGt2bV9hcmNoX3ZtX2ZpbmFsaXplX3ZjcHVzKHZtKTtcbitcbitcdHZtX2luaXRfZGVzY3JpcHRvcl90YWJsZXModm0pO1xuK1x0dmNwdV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHZjcHUpO1xuK1xuK1x0dTY0IGdwYV9hID0gdm1fcGh5X3BhZ2VzX2FsbG9jKHZtLCAxLCAwLCAwKTtcbitcdHU2NCBncGFfYiA9IHZtX3BoeV9wYWdlc19hbGxvYyh2bSwgMSwgMCwgMCk7XG4rXG4rXHR2aXJ0X3BnX21hcCh2bSwgTE9XX0dWQSwgZ3BhX2EpO1xuK1x0dmlydF9wZ19tYXAodm0sIEhJR0hfR1ZBLCBncGFfYSk7XG4rXG4rXHRmb3IgKDs7KSB7XG4rXHRcdHZjcHVfcnVuKHZjcHUpO1xuK1x0XHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcdTAwMjZ1YykpIHtcbitcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuK1x0XHRcdGdvdG8gZG9uZTtcbitcdFx0Y2FzZSBVQ0FMTF9BQk9SVDpcbitcdFx0XHRSRVBPUlRfR1VFU1RfQVNTRVJUKHVjKTtcbitcdFx0XHRicmVhaztcbitcdFx0Y2FzZSBVQ0FMTF9TWU5DOlxuK1x0XHRcdHN3aXRjaCAodWMuYXJnc1sxXSkge1xuK1x0XHRcdGNhc2UgMDpcbitcdFx0XHRcdFdSSVRFX09OQ0UoKnZpcnRfZ2V0X3B0ZV9odmEodm0sIEhJR0hfR1ZBKSwgMCk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIDE6XG4rXHRcdFx0XHR2aXJ0X3BnX21hcCh2bSwgSElHSF9HVkEsIGdwYV9iKTtcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdGRlZmF1bHQ6XG4rXHRcdFx0XHRURVNUX0ZBSUwoXCJVbmV4cGVjdGVkIHN5bmMgc3RhZ2U6ICVsdVxcblwiLCB1Yy5hcmdzWzFdKTtcbitcdFx0XHR9XG4rXHRcdFx0LyogQ29tcGxldGUgdGhlIGhvc3QncyBQVEUgc3RvcmUgYmVmb3JlIHJlc3VtaW5nIHRoZSBndWVzdC4gKi9cbitcdFx0XHRhc20gdm9sYXRpbGUoXCJkc2Igc3lcIiA6IDogOiBcIm1lbW9yeVwiKTtcbitcdFx0XHRicmVhaztcbitcdFx0ZGVmYXVsdDpcbitcdFx0XHRURVNUX0ZBSUwoXCJVbmhhbmRsZWQgdWNhbGw6ICVsZFxcblwiLCB1Yy5jbWQpO1xuK1x0XHR9XG4rXHR9XG4rXG4rZG9uZTpcbitcdGt2bV92bV9mcmVlKHZtKTtcbitcdCgqbnJfdGVzdHMpKys7XG4rfVxuK1xuK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbit7XG4rXHR1bnNpZ25lZCBpbnQgbnJfdGVzdHMgPSAwO1xuK1xuK1x0Zm9yX2VhY2hfZ3Vlc3RfbW9kZShydW5fdGVzdCwgXHUwMDI2bnJfdGVzdHMpO1xuK1x0aWYgKCFucl90ZXN0cylcbitcdFx0a3NmdF9leGl0X3NraXAoXCJObyBzdXBwb3J0ZWQgNTItYml0IFZBIGd1ZXN0IG1vZGU7IHNraXBwaW5nIHRlc3RcXG5cIik7XG4rXHRyZXR1cm4gMDtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvYXJtNjQvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaFxuaW5kZXggYjhhOTAyYmE4NTczZC4uNGFiMDBhN2U2ZWZiNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9hcm02NC9wcm9jZXNzb3IuaFxuQEAgLTExMyw2ICsxMTMsNyBAQFxuIFxuICNkZWZpbmUgUFRFX1ZBTElEXHRcdEJJVCgwKVxuICNkZWZpbmUgUEdEX1RZUEVfVEFCTEVcdFx0QklUKDEpXG4rI2RlZmluZSBQNERfVFlQRV9UQUJMRVx0XHRCSVQoMSlcbiAjZGVmaW5lIFBVRF9UWVBFX1RBQkxFXHRcdEJJVCgxKVxuICNkZWZpbmUgUE1EX1RZUEVfVEFCTEVcdFx0QklUKDEpXG4gI2RlZmluZSBQVEVfVFlQRV9QQUdFXHRcdEJJVCgxKVxuQEAgLTE2OCw3ICsxNjksNyBAQCBlbnVtIHtcbiBcdFx0XHQgICAodikgPT0gVkVDVE9SX1NZTkNfTE9XRVJfMzIpXG4gXG4gdm9pZCBhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyh1MzIgaXBhLCB1MzIgKmlwYTRrLFxuLVx0XHRcdFx0ICAgICAgdTMyICppcGExNmssIHUzMiAqaXBhNjRrKTtcbitcdFx0XHRcdCAgICAgIHUzMiAqaXBhMTZrLCB1MzIgKmlwYTY0aywgdTMyICp2YTY0ayk7XG4gXG4gdm9pZCB2bV9pbml0X2Rlc2NyaXB0b3JfdGFibGVzKHN0cnVjdCBrdm1fdm0gKnZtKTtcbiB2b2lkIHZjcHVfaW5pdF9kZXNjcmlwdG9yX3RhYmxlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2t2bV91dGlsLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oXG5pbmRleCA1YTdhNDU1YjUzODc1Li4xYzI2OGZhOTk0YWE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUva3ZtX3V0aWwuaFxuQEAgLTE4NCw2ICsxODQsOSBAQCBlbnVtIHZtX2d1ZXN0X21vZGUge1xuIFx0Vk1fTU9ERV9QNTJWNDhfNEssXG4gXHRWTV9NT0RFX1A1MlY0OF8xNkssXG4gXHRWTV9NT0RFX1A1MlY0OF82NEssXG4rXHRWTV9NT0RFX1A1MlY1Ml80SyxcbitcdFZNX01PREVfUDUyVjUyXzE2SyxcbitcdFZNX01PREVfUDUyVjUyXzY0SyxcbiBcdFZNX01PREVfUDQ4VjQ4XzRLLFxuIFx0Vk1fTU9ERV9QNDhWNDhfMTZLLFxuIFx0Vk1fTU9ERV9QNDhWNDhfNjRLLFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvYXJtNjQvcHJvY2Vzc29yLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jXG5pbmRleCAwMTMyNWJmNGQzNmZjLi45OTE1ZjI1ZjAyODc0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9hcm02NC9wcm9jZXNzb3IuY1xuQEAgLTI5LDEzICsyOSwyNSBAQCBzdGF0aWMgdTY0IHBnZF9pbmRleChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhKVxuIFx0cmV0dXJuIChndmEgXHUwMDNlXHUwMDNlIHNoaWZ0KSBcdTAwMjYgbWFzaztcbiB9XG4gXG4rc3RhdGljIHU2NCBwNGRfaW5kZXgoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSlcbit7XG4rXHR1bnNpZ25lZCBpbnQgc2hpZnQgPSAzICogKHZtLVx1MDAzZXBhZ2Vfc2hpZnQgLSAzKSArIHZtLVx1MDAzZXBhZ2Vfc2hpZnQ7XG4rXHR1NjQgbWFzayA9ICgxVUwgXHUwMDNjXHUwMDNjICh2bS1cdTAwM2VwYWdlX3NoaWZ0IC0gMykpIC0gMTtcbitcbitcdFRFU1RfQVNTRVJUKHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9PSA1LFxuK1x0XHQgICAgXCJNb2RlICVkIGRvZXMgbm90IGhhdmUgNSBwYWdlIHRhYmxlIGxldmVsc1wiLCB2bS1cdTAwM2Vtb2RlKTtcbitcbitcdHJldHVybiAoZ3ZhIFx1MDAzZVx1MDAzZSBzaGlmdCkgXHUwMDI2IG1hc2s7XG4rfVxuK1xuIHN0YXRpYyB1NjQgcHVkX2luZGV4KHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEpXG4ge1xuIFx0dW5zaWduZWQgaW50IHNoaWZ0ID0gMiAqICh2bS1cdTAwM2VwYWdlX3NoaWZ0IC0gMykgKyB2bS1cdTAwM2VwYWdlX3NoaWZ0O1xuIFx0dTY0IG1hc2sgPSAoMVVMIFx1MDAzY1x1MDAzYyAodm0tXHUwMDNlcGFnZV9zaGlmdCAtIDMpKSAtIDE7XG4gXG4tXHRURVNUX0FTU0VSVCh2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMgPT0gNCxcbi1cdFx0XCJNb2RlICVkIGRvZXMgbm90IGhhdmUgNCBwYWdlIHRhYmxlIGxldmVsc1wiLCB2bS1cdTAwM2Vtb2RlKTtcbitcdFRFU1RfQVNTRVJUKHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyBcdTAwM2U9IDQsXG4rXHRcdCAgICBcIk1vZGUgJWQgZG9lcyBub3QgaGF2ZSBcdTAwM2U9IDQgcGFnZSB0YWJsZSBsZXZlbHNcIixcbitcdFx0ICAgIHZtLVx1MDAzZW1vZGUpO1xuIFxuIFx0cmV0dXJuIChndmEgXHUwMDNlXHUwMDNlIHNoaWZ0KSBcdTAwMjYgbWFzaztcbiB9XG5AQCAtMTQ3LDYgKzE1OSwxMiBAQCBzdGF0aWMgdm9pZCBfdmlydF9wZ19tYXAoc3RydWN0IGt2bV92bSAqdm0sIGd2YV90IGd2YSwgZ3BhX3QgZ3BhLFxuIFx0XHRcdFx0IFBHRF9UWVBFX1RBQkxFIHwgUFRFX1ZBTElEKTtcbiBcbiBcdHN3aXRjaCAodm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzKSB7XG4rXHRjYXNlIDU6XG4rXHRcdHB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHB0ZV9hZGRyKHZtLCAqcHRlcCkpICsgcDRkX2luZGV4KHZtLCBndmEpICogODtcbitcdFx0aWYgKCEqcHRlcClcbitcdFx0XHQqcHRlcCA9IGFkZHJfcHRlKHZtLCB2bV9hbGxvY19wYWdlX3RhYmxlKHZtKSxcbitcdFx0XHRcdFx0IFA0RF9UWVBFX1RBQkxFIHwgUFRFX1ZBTElEKTtcbitcdFx0LyogZmFsbCB0aHJvdWdoICovXG4gXHRjYXNlIDQ6XG4gXHRcdHB0ZXAgPSBhZGRyX2dwYTJodmEodm0sIHB0ZV9hZGRyKHZtLCAqcHRlcCkpICsgcHVkX2luZGV4KHZtLCBndmEpICogODtcbiBcdFx0aWYgKCEqcHRlcClcbkBAIC0xNjMsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgX3ZpcnRfcGdfbWFwKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGdwYV90IGdwYSxcbiBcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwdGVfaW5kZXgodm0sIGd2YSkgKiA4O1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4tXHRcdFRFU1RfRkFJTChcIlBhZ2UgdGFibGUgbGV2ZWxzIG11c3QgYmUgMiwgMywgb3IgNFwiKTtcbitcdFx0VEVTVF9GQUlMKFwiUGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCA0LCBvciA1XCIpO1xuIFx0fVxuIFxuIFx0cGdfYXR0ciA9IFBURV9BRiB8IFBURV9BVFRSSU5EWChhdHRyX2lkeCkgfCBQVEVfVFlQRV9QQUdFIHwgUFRFX1ZBTElEO1xuQEAgLTE4MiwxOCArMjAwLDM1IEBAIHZvaWQgdmlydF9hcmNoX3BnX21hcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhLCBncGFfdCBncGEpXG4gXG4gdTY0ICp2aXJ0X2dldF9wdGVfaHZhX2F0X2xldmVsKHN0cnVjdCBrdm1fdm0gKnZtLCBndmFfdCBndmEsIGludCBsZXZlbClcbiB7XG4rXHRpbnQgc3RhcnRfbGV2ZWwgPSA0IC0gdm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzO1xuIFx0dTY0ICpwdGVwO1xuIFxuK1x0VEVTVF9BU1NFUlQobGV2ZWwgXHUwMDNlPSBzdGFydF9sZXZlbCBcdTAwMjZcdTAwMjYgbGV2ZWwgXHUwMDNjPSAzLFxuK1x0XHQgICAgXCJJbnZhbGlkIHRyYW5zbGF0aW9uIGxldmVsICVkLCB2YWxpZCByYW5nZSBpcyAlZC0zXCIsXG4rXHRcdCAgICBsZXZlbCwgc3RhcnRfbGV2ZWwpO1xuK1xuIFx0aWYgKCF2bS1cdTAwM2VtbXUucGdkX2NyZWF0ZWQpXG4gXHRcdGdvdG8gdW5tYXBwZWRfZ3ZhO1xuIFxuIFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgdm0tXHUwMDNlbW11LnBnZCkgKyBwZ2RfaW5kZXgodm0sIGd2YSkgKiA4O1xuIFx0aWYgKCFwdGVwKVxuIFx0XHRnb3RvIHVubWFwcGVkX2d2YTtcbi1cdGlmIChsZXZlbCA9PSAwKVxuK1x0LypcbitcdCAqIFN0YWdlLTEgdHJhbnNsYXRpb24gc3RhcnRzIGF0IGxldmVsIC0xIGZvciBhIGZpdmUtbGV2ZWwgcGFnZVxuK1x0ICogdGFibGUsIGFuZCBhdCBsZXZlbHMgMCwgMSwgb3IgMiBmb3IgZm91ci0sIHRocmVlLSwgb3IgdHdvLWxldmVsXG4rXHQgKiBwYWdlIHRhYmxlcywgcmVzcGVjdGl2ZWx5LlxuK1x0ICovXG4rXHRpZiAobGV2ZWwgPT0gc3RhcnRfbGV2ZWwpXG4gXHRcdHJldHVybiBwdGVwO1xuIFxuIFx0c3dpdGNoICh2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMpIHtcbitcdGNhc2UgNTpcbitcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwNGRfaW5kZXgodm0sIGd2YSkgKiA4O1xuK1x0XHRpZiAoIXB0ZXApXG4rXHRcdFx0Z290byB1bm1hcHBlZF9ndmE7XG4rXHRcdGlmIChsZXZlbCA9PSAwKVxuK1x0XHRcdGJyZWFrO1xuK1x0XHQvKiBmYWxsIHRocm91Z2ggKi9cbiBcdGNhc2UgNDpcbiBcdFx0cHRlcCA9IGFkZHJfZ3BhMmh2YSh2bSwgcHRlX2FkZHIodm0sICpwdGVwKSkgKyBwdWRfaW5kZXgodm0sIGd2YSkgKiA4O1xuIFx0XHRpZiAoIXB0ZXApXG5AQCAtMjE0LDcgKzI0OSw3IEBAIHU2NCAqdmlydF9nZXRfcHRlX2h2YV9hdF9sZXZlbChzdHJ1Y3Qga3ZtX3ZtICp2bSwgZ3ZhX3QgZ3ZhLCBpbnQgbGV2ZWwpXG4gXHRcdFx0Z290byB1bm1hcHBlZF9ndmE7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbi1cdFx0VEVTVF9GQUlMKFwiUGFnZSB0YWJsZSBsZXZlbHMgbXVzdCBiZSAyLCAzLCBvciA0XCIpO1xuK1x0XHRURVNUX0ZBSUwoXCJQYWdlIHRhYmxlIGxldmVscyBtdXN0IGJlIDIsIDMsIDQsIG9yIDVcIik7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcHRlcDtcbkBAIC0zMjEsMTIgKzM1NiwxNCBAQCB2b2lkIGFhcmNoNjRfdmNwdV9zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fdmNwdV9pbml0ICppbml0KVxuIFx0Y2FzZSBWTV9NT0RFX1BYWFZZWV80SzpcbiBcdFx0VEVTVF9GQUlMKFwiQUFyY2g2NCBkb2VzIG5vdCBzdXBwb3J0IDRLIHNpemVkIHBhZ2VzIFwiXG4gXHRcdFx0ICBcIndpdGggQU5ZLWJpdCBwaHlzaWNhbCBhZGRyZXNzIHJhbmdlc1wiKTtcbitcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNjRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF82NEs6XG4gXHRjYXNlIFZNX01PREVfUDQ4VjQ4XzY0SzpcbiBcdGNhc2UgVk1fTU9ERV9QNDBWNDhfNjRLOlxuIFx0Y2FzZSBWTV9NT0RFX1AzNlY0OF82NEs6XG4gXHRcdHRjcl9lbDEgfD0gVENSX1RHMF82NEs7XG4gXHRcdGJyZWFrO1xuK1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml8xNks6XG4gXHRjYXNlIFZNX01PREVfUDUyVjQ4XzE2SzpcbiBcdGNhc2UgVk1fTU9ERV9QNDhWNDhfMTZLOlxuIFx0Y2FzZSBWTV9NT0RFX1A0MFY0OF8xNks6XG5AQCAtMzM0LDYgKzM3MSw3IEBAIHZvaWQgYWFyY2g2NF92Y3B1X3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXG4gXHRjYXNlIFZNX01PREVfUDM2VjQ3XzE2SzpcbiBcdFx0dGNyX2VsMSB8PSBUQ1JfVEcwXzE2SztcbiBcdFx0YnJlYWs7XG4rXHRjYXNlIFZNX01PREVfUDUyVjUyXzRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF80SzpcbiBcdGNhc2UgVk1fTU9ERV9QNDhWNDhfNEs6XG4gXHRjYXNlIFZNX01PREVfUDQwVjQ4XzRLOlxuQEAgLTM0OCw2ICszODYsOSBAQCB2b2lkIGFhcmNoNjRfdmNwdV9zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fdmNwdV9pbml0ICppbml0KVxuIFxuIFx0LyogQ29uZmlndXJlIG91dHB1dCBzaXplICovXG4gXHRzd2l0Y2ggKHZtLVx1MDAzZW1vZGUpIHtcbitcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNEs6XG4rXHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcbitcdGNhc2UgVk1fTU9ERV9QNTJWNTJfNjRLOlxuIFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF80SzpcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfMTZLOlxuIFx0Y2FzZSBWTV9NT0RFX1A1MlY0OF82NEs6XG5AQCAtNTc5LDcgKzYyMCw3IEBAIHN0YXRpYyB1MzIgbWF4X2lwYV9mb3JfcGFnZV9zaXplKHUzMiB2bV9pcGEsIHUzMiBncmFuLFxuIH1cbiBcbiB2b2lkIGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKHUzMiBpcGEsIHUzMiAqaXBhNGssXG4tXHRcdFx0XHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGspXG4rXHRcdFx0XHQgICAgICB1MzIgKmlwYTE2aywgdTMyICppcGE2NGssIHUzMiAqdmE2NGspXG4ge1xuIFx0c3RydWN0IGt2bV92Y3B1X2luaXQgcHJlZmVycmVkX2luaXQ7XG4gXHRpbnQga3ZtX2ZkLCB2bV9mZCwgdmNwdV9mZCwgZXJyO1xuQEAgLTYxNyw2ICs2NTgsMTMgQEAgdm9pZCBhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyh1MzIgaXBhLCB1MzIgKmlwYTRrLFxuIFx0KmlwYTE2ayA9IG1heF9pcGFfZm9yX3BhZ2Vfc2l6ZShpcGEsIGdyYW4sIElEX0FBNjRNTUZSMF9FTDFfVEdSQU4xNl9OSSxcbiBcdFx0XHRcdFx0SURfQUE2NE1NRlIwX0VMMV9UR1JBTjE2XzUyX0JJVCk7XG4gXG4rXHRyZWcuaWQgPSBLVk1fQVJNNjRfU1lTX1JFRyhTWVNfSURfQUE2NE1NRlIyX0VMMSk7XG4rXHRlcnIgPSBpb2N0bCh2Y3B1X2ZkLCBLVk1fR0VUX09ORV9SRUcsIFx1MDAyNnJlZyk7XG4rXHRURVNUX0FTU0VSVChlcnIgPT0gMCwgS1ZNX0lPQ1RMX0VSUk9SKEtWTV9HRVRfT05FX1JFRywgZXJyKSk7XG4rXG4rXHQqdmE2NGsgPSBGSUVMRF9HRVQoSURfQUE2NE1NRlIyX0VMMV9WQVJhbmdlLCB2YWwpIFx1MDAzZT1cbitcdFx0SURfQUE2NE1NRlIyX0VMMV9WQVJhbmdlXzUyID8gNTIgOiA0ODtcbitcbiBcdGNsb3NlKHZjcHVfZmQpO1xuIFx0Y2xvc2Uodm1fZmQpO1xuIFx0Y2xvc2Uoa3ZtX2ZkKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmNcbmluZGV4IDdhOTZjNDNiNTcwNGQuLjhkMjc0ODE0NWY4ZjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvZ3Vlc3RfbW9kZXMuY1xuQEAgLTIwLDExICsyMCwxNCBAQCB2b2lkIGd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KHZvaWQpXG4gI2lmZGVmIF9fYWFyY2g2NF9fXG4gXHR7XG4gXHRcdHVuc2lnbmVkIGludCBsaW1pdCA9IGt2bV9jaGVja19jYXAoS1ZNX0NBUF9BUk1fVk1fSVBBX1NJWkUpO1xuLVx0XHR1MzIgaXBhNGssIGlwYTE2aywgaXBhNjRrO1xuK1x0XHR1MzIgaXBhNGssIGlwYTE2aywgaXBhNjRrLCB2YTY0aztcbiBcdFx0aW50IGk7XG4gXG4tXHRcdGFhcmNoNjRfZ2V0X3N1cHBvcnRlZF9wYWdlX3NpemVzKGxpbWl0LCBcdTAwMjZpcGE0aywgXHUwMDI2aXBhMTZrLCBcdTAwMjZpcGE2NGspO1xuK1x0XHRhYXJjaDY0X2dldF9zdXBwb3J0ZWRfcGFnZV9zaXplcyhsaW1pdCwgXHUwMDI2aXBhNGssIFx1MDAyNmlwYTE2aywgXHUwMDI2aXBhNjRrLCBcdTAwMjZ2YTY0ayk7XG4gXG4rXHRcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzRLLCBpcGE0ayBcdTAwM2U9IDUyKTtcbitcdFx0Z3Vlc3RfbW9kZV9hcHBlbmQoVk1fTU9ERV9QNTJWNTJfMTZLLCBpcGExNmsgXHUwMDNlPSA1Mik7XG4rXHRcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjUyXzY0SywgaXBhNjRrIFx1MDAzZT0gNTIgXHUwMDI2XHUwMDI2IHZhNjRrIFx1MDAzZT0gNTIpO1xuIFx0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF80SywgaXBhNGsgXHUwMDNlPSA1Mik7XG4gXHRcdGd1ZXN0X21vZGVfYXBwZW5kKFZNX01PREVfUDUyVjQ4XzE2SywgaXBhMTZrIFx1MDAzZT0gNTIpO1xuIFx0XHRndWVzdF9tb2RlX2FwcGVuZChWTV9NT0RFX1A1MlY0OF82NEssIGlwYTY0ayBcdTAwM2U9IDUyKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbmluZGV4IDlkZGMwNDdkNWMyNzUuLmJjM2VkMDM0ZTIwMzYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuQEAgLTIwMyw2ICsyMDMsOSBAQCBjb25zdCBjaGFyICp2bV9ndWVzdF9tb2RlX3N0cmluZyh1MzIgaSlcbiBcdFx0W1ZNX01PREVfUDUyVjQ4XzRLXVx0PSBcIlBBLWJpdHM6NTIsICBWQS1iaXRzOjQ4LCAgNEsgcGFnZXNcIixcbiBcdFx0W1ZNX01PREVfUDUyVjQ4XzE2S11cdD0gXCJQQS1iaXRzOjUyLCAgVkEtYml0czo0OCwgMTZLIHBhZ2VzXCIsXG4gXHRcdFtWTV9NT0RFX1A1MlY0OF82NEtdXHQ9IFwiUEEtYml0czo1MiwgIFZBLWJpdHM6NDgsIDY0SyBwYWdlc1wiLFxuK1x0XHRbVk1fTU9ERV9QNTJWNTJfNEtdXHQ9IFwiUEEtYml0czo1MiwgIFZBLWJpdHM6NTIsICA0SyBwYWdlc1wiLFxuK1x0XHRbVk1fTU9ERV9QNTJWNTJfMTZLXVx0PSBcIlBBLWJpdHM6NTIsICBWQS1iaXRzOjUyLCAxNksgcGFnZXNcIixcbitcdFx0W1ZNX01PREVfUDUyVjUyXzY0S11cdD0gXCJQQS1iaXRzOjUyLCAgVkEtYml0czo1MiwgNjRLIHBhZ2VzXCIsXG4gXHRcdFtWTV9NT0RFX1A0OFY0OF80S11cdD0gXCJQQS1iaXRzOjQ4LCAgVkEtYml0czo0OCwgIDRLIHBhZ2VzXCIsXG4gXHRcdFtWTV9NT0RFX1A0OFY0OF8xNktdXHQ9IFwiUEEtYml0czo0OCwgIFZBLWJpdHM6NDgsIDE2SyBwYWdlc1wiLFxuIFx0XHRbVk1fTU9ERV9QNDhWNDhfNjRLXVx0PSBcIlBBLWJpdHM6NDgsICBWQS1iaXRzOjQ4LCA2NEsgcGFnZXNcIixcbkBAIC0yMzksNiArMjQyLDkgQEAgY29uc3Qgc3RydWN0IHZtX2d1ZXN0X21vZGVfcGFyYW1zIHZtX2d1ZXN0X21vZGVfcGFyYW1zW10gPSB7XG4gXHRbVk1fTU9ERV9QNTJWNDhfNEtdXHQ9IHsgNTIsIDQ4LCAgMHgxMDAwLCAxMiB9LFxuIFx0W1ZNX01PREVfUDUyVjQ4XzE2S11cdD0geyA1MiwgNDgsICAweDQwMDAsIDE0IH0sXG4gXHRbVk1fTU9ERV9QNTJWNDhfNjRLXVx0PSB7IDUyLCA0OCwgMHgxMDAwMCwgMTYgfSxcbitcdFtWTV9NT0RFX1A1MlY1Ml80S11cdD0geyA1MiwgNTIsICAweDEwMDAsIDEyIH0sXG4rXHRbVk1fTU9ERV9QNTJWNTJfMTZLXVx0PSB7IDUyLCA1MiwgIDB4NDAwMCwgMTQgfSxcbitcdFtWTV9NT0RFX1A1MlY1Ml82NEtdXHQ9IHsgNTIsIDUyLCAweDEwMDAwLCAxNiB9LFxuIFx0W1ZNX01PREVfUDQ4VjQ4XzRLXVx0PSB7IDQ4LCA0OCwgIDB4MTAwMCwgMTIgfSxcbiBcdFtWTV9NT0RFX1A0OFY0OF8xNktdXHQ9IHsgNDgsIDQ4LCAgMHg0MDAwLCAxNCB9LFxuIFx0W1ZNX01PREVfUDQ4VjQ4XzY0S11cdD0geyA0OCwgNDgsIDB4MTAwMDAsIDE2IH0sXG5AQCAtMzA2LDEwICszMTIsMTQgQEAgc3RydWN0IGt2bV92bSAqX19fX3ZtX2NyZWF0ZShzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUpXG4gXG4gXHQvKiBTZXR1cCBtb2RlIHNwZWNpZmljIHRyYWl0cy4gKi9cbiBcdHN3aXRjaCAodm0tXHUwMDNlbW9kZSkge1xuK1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml80SzpcbitcdFx0dm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID0gNTtcbitcdFx0YnJlYWs7XG4gXHRjYXNlIFZNX01PREVfUDUyVjQ4XzRLOlxuIFx0XHR2bS1cdTAwM2VtbXUucGd0YWJsZV9sZXZlbHMgPSA0O1xuIFx0XHRicmVhaztcbiBcdGNhc2UgVk1fTU9ERV9QNTJWNDhfNjRLOlxuK1x0Y2FzZSBWTV9NT0RFX1A1MlY1Ml82NEs6XG4gXHRcdHZtLVx1MDAzZW1tdS5wZ3RhYmxlX2xldmVscyA9IDM7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBWTV9NT0RFX1A0OFY0OF80SzpcbkBAIC0zMzAsNiArMzQwLDcgQEAgc3RydWN0IGt2bV92bSAqX19fX3ZtX2NyZWF0ZShzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUpXG4gXHRjYXNlIFZNX01PREVfUDQ4VjQ4XzE2SzpcbiBcdGNhc2UgVk1fTU9ERV9QNDBWNDhfMTZLOlxuIFx0Y2FzZSBWTV9NT0RFX1AzNlY0OF8xNks6XG4rXHRjYXNlIFZNX01PREVfUDUyVjUyXzE2SzpcbiBcdFx0dm0tXHUwMDNlbW11LnBndGFibGVfbGV2ZWxzID0gNDtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFZNX01PREVfUDQ3VjQ3XzE2SzpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA3OjQyOjU3LjIxMjU2NjMyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjc1NzI2MDkzMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoOiBXb3J0aEZ1enppbmcgPSBGYWxzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiAgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBtb2RpZmllZCBmaWxlcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCB3YXJyYW50cyBmdXp6aW5nLiAgSSd2ZSBjaGVja2VkIHRoZSBmaWxlIGxpc3Q6XG5cbiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bWBcbiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2xwYV90ZXN0LmNgXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL2FybTY0L3Byb2Nlc3Nvci5oYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9rdm1fdXRpbC5oYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2FybTY0L3Byb2Nlc3Nvci5jYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2d1ZXN0X21vZGVzLmNgXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY2BcblxuQWxsIHRoZSBtb2RpZmllZCBmaWxlcyBhcmUgbmVhdGx5IGNvbnRhaW5lZCB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9gLiBUaGF0J3MgYSBodWdlIHJlZCBmbGFnIOKAkyBhIGdvb2Qgb25lISBUaGlzIGlzICp0ZXh0Ym9vayogc2VsZi10ZXN0IGNvZGUsIGFuZCB0aGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IGl0IGlzICpub3QqIGltcGFjdGluZyB0aGUga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuIEkgaW1tZWRpYXRlbHkgcmVmZXIgdG8gbXkgbWVudGFsIGNoZWNrbGlzdCBmb3IgdGhlc2Uga2luZHMgb2Ygc2NlbmFyaW9zLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgY2hhbmdlcyBsaW1pdGVkIHRvIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIGxpa2UgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzYCwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIGFyZSBhIG5lZ2F0aXZlIGluZGljYXRvciwgYW5kIHRoYXQgd2UgcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS5cblxuTGV0J3MgZG91YmxlLWNoZWNrLiBJIHNlZSBubyBpbmRpY2F0aW9uIG9mIGtlcm5lbCBmaWxlIG1vZGlmaWNhdGlvbnMuIFRoZSBwcm92aWRlZCBkaWZmIGFwcGVhcnMgY29tcHJlaGVuc2l2ZS4gSSBjYW4gcXVpY2tseSBjb25maXJtIHRoaXM7IHRoZSBsaXN0IG9mIGZpbGVzIGluIHRoZSBkaWZmIGlzIGFsbCB0aGF0IGlzIGNoYW5nZWQuIEkgYW0gY2VydGFpbiB0aGF0IHRoZSBLVk0gc2VsZnRlc3RzIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZS5cblxuRmluYWxseSwgY29uc2lkZXIgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0LiBUaGUgdGVzdCBjb2RlIGlzIGFybTY0LCBtZWFuaW5nIHRoYXQgdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgKm5vdCogZm9yIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiBUaGlzIGdpdmVzIHVzIGFub3RoZXIgcmVhc29uIHRvIGZsYWcgdGhpcyBhcyBXb3J0aEZ1enppbmcgPSBmYWxzZS5cblxuU28sIHN1bW1pbmcgaXQgdXAsIG15IGRlY2lzaW9uIGlzOlxuXG4qICAgV29ydGhGdXp6aW5nOiBmYWxzZVxuKiAgIEVuYWJsZUNvbmZpZ3M6IFxcWyBdXG4qICAgRm9jdXNTeW1ib2xzOiBcXFsgXVxuKiAgIFJlYXNvbmluZzogQWxsIGNoYW5nZXMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdXNlci1zcGFjZSBLVk0gc2VsZi10ZXN0cyBhbmQgYXJlIGZvciBhbiBhcmNoaXRlY3R1cmUgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cbiAgICBJdCdzIGFuIHVuYW1iaWd1b3VzIFwibm8gZ29cIiBmb3IgZnV6emluZy4gV2UncmUgZG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYzOSwiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwNzo0MzowNC43ODUxNzgyNzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmLXRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8gKHNwZWNpZmljYWxseSBhcm02NCBndWVzdCBzdXBwb3J0IGFuZCB0ZXN0aW5nKS4gVGhlc2UgdXNlci1zcGFjZSB0ZXN0IGZpbGVzIGRvIG5vdCBtb2RpZnkgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3IgYW55IGtlcm5lbCBtb2R1bGVzLCBtYWtpbmcgdGhlbSBub24ta2VybmVsIGNoYW5nZXMgdGhhdCBkbyBub3Qgd2FycmFudCBrZXJuZWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmLXRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8gKHNwZWNpZmljYWxseSBhcm02NCBndWVzdCBzdXBwb3J0IGFuZCB0ZXN0aW5nKS4gVGhlc2UgdXNlci1zcGFjZSB0ZXN0IGZpbGVzIGRvIG5vdCBtb2RpZnkgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3IgYW55IGtlcm5lbCBtb2R1bGVzLCBtYWtpbmcgdGhlbSBub24ta2VybmVsIGNoYW5nZXMgdGhhdCBkbyBub3Qgd2FycmFudCBrZXJuZWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA3OjQzOjA0Ljc4NTE5OTk4NloiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowsqcp5[1] Phase: Running StartedAt: 2026-09-14 07:43:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqcp5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-14 07:43:15 +0000 UTC FinishedAt: 2026-09-14 07:43:19 +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,}