Name: series-workflow5nfpj Phase: Succeeded StartedAt: 2026-07-01 06:23:08 +0000 UTC FinishedAt: 2026-07-01 10:29:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[0] Phase: Succeeded StartedAt: 2026-07-01 06:23:08 +0000 UTC FinishedAt: 2026-07-01 06:30:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 06:23:08 +0000 UTC FinishedAt: 2026-07-01 06:30:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD", "KVM_INTEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD", "KVM_INTEL" ], "series_id": "1229b696-eb9f-4e63-9b58-953460e9cf67" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_valid_efer", "set_efer", "kvm_is_valid_sregs", "__set_sregs_common" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDssCiAgICAmIzM0O3NldF9lZmVyJiMzNDssCiAgICAmIzM0O2t2bV9pc192YWxpZF9zcmVncyYjMzQ7LAogICAgJiMzNDtfX3NldF9zcmVnc19jb21tb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIHg4NiBFRkVSIE1TUiBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGhvdyBzdXBwb3J0ZWQgRUZFUiBiaXRzIGFyZSBjaGVja2VkIGFuZCBzZXQuIEl0IHJlcGxhY2VzIGBlZmVyX3Jlc2VydmVkX2JpdHNgIHdpdGggYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgIGFuZCBpbnRyb2R1Y2VzIGBzZXR1cF9lZmVyX2NhcHNgIHRvIGBrdm1feDg2X29wc2AuIFRoaXMgYWZmZWN0cyBga3ZtX3ZhbGlkX2VmZXJgLCBgc2V0X2VmZXJgLCBhbmQgYGt2bV9pc192YWxpZF9zcmVnc2AsIHdoaWNoIGFyZSByZWFjaGFibGUgZHVyaW5nIFZNIGV4ZWN1dGlvbiBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIEtWTSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJhYTU2M2M4NjM1ZTZmMTdkMjM5ODcyZWYzYWMzNDE3MmYwYzg1ZmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA2OjI4OjQ5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG5pbmRleCA4M2RjNTA4NjEzOGIzOS4uZDU4NzI0MmRjYWI1NjEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG5AQCAtNDUsNiAmIzQzOzQ1LDcgQEAgS1ZNX1g4Nl9PUF9PUFRJT05BTChwb3N0X3NldF9jcjMpXG4gS1ZNX1g4Nl9PUChpc192YWxpZF9jcjQpXG4gS1ZNX1g4Nl9PUChzZXRfY3I0KVxuIEtWTV9YODZfT1Aoc2V0X2VmZXIpXG4mIzQzO0tWTV9YODZfT1BfT1BUSU9OQUwoc2V0dXBfZWZlcl9jYXBzKVxuIEtWTV9YODZfT1AoZ2V0X2lkdClcbiBLVk1fWDg2X09QKHNldF9pZHQpXG4gS1ZNX1g4Nl9PUChnZXRfZ2R0KVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCBkODcwMGViODQ4YjQ1Mi4uNDBiZTM5ZmVhMzliOWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMzI5LDYgJiM0MzszMjksOCBAQCBzdHJ1Y3Qga3ZtX2NhcHMge1xuIFx0dTY0IHN1cHBvcnRlZF94c3M7XG4gXHR1NjQgc3VwcG9ydGVkX3BlcmZfY2FwO1xuIFxuJiM0MztcdHU2NCBzdXBwb3J0ZWRfZWZlcl9iaXRzO1xuJiM0MztcbiBcdHU2NCBzdXBwb3J0ZWRfcXVpcmtzO1xuIFx0dTY0IGluYXBwbGljYWJsZV9xdWlya3M7XG4gfTtcbkBAIC0xNzMwLDYgJiM0MzsxNzMyLDcgQEAgc3RydWN0IGt2bV94ODZfb3BzIHtcbiBcdGJvb2wgKCppc192YWxpZF9jcjQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpO1xuIFx0dm9pZCAoKnNldF9jcjQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpO1xuIFx0aW50ICgqc2V0X2VmZXIpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xuJiM0MztcdHZvaWQgKCpzZXR1cF9lZmVyX2NhcHMpKHZvaWQpO1xuIFx0dm9pZCAoKmdldF9pZHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGRlc2NfcHRyICpkdCk7XG4gXHR2b2lkICgqc2V0X2lkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTtcbiBcdHZvaWQgKCpnZXRfZ2R0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tc3JzLmMgYi9hcmNoL3g4Ni9rdm0vbXNycy5jXG5pbmRleCBjMjMwYjE4ZDg3ZTM4ZS4uYTM5YzczMDg4ZjFmYjIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbXNycy5jXG5AQCAtMTksMTcgJiM0MzsxOSw2IEBAIGJvb2wgX19yZWFkX21vc3RseSByZXBvcnRfaWdub3JlZF9tc3JzID0gdHJ1ZTtcbiBtb2R1bGVfcGFyYW0ocmVwb3J0X2lnbm9yZWRfbXNycywgYm9vbCwgMDY0NCk7XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xuIFxuLS8qIEVGRVIgZGVmYXVsdHM6XG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cbi0gKiAtIGVuYWJsZSBMTUUgYW5kIExNQSBwZXIgZGVmYXVsdCBvbiA2NCBiaXQgS1ZNXG4tICovXG4tI2lmZGVmIENPTkZJR19YODZfNjRcbi1zdGF0aWNcbi11NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpKEVGRVJfU0NFIHwgRUZFUl9MTUUgfCBFRkVSX0xNQSkpO1xuLSNlbHNlXG4tc3RhdGljIHU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NClFRkVSX1NDRSk7XG4tI2VuZGlmXG4tXG4gI2RlZmluZSBNQVhfSU9fTVNSUyAyNTZcbiBcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XG5AQCAtNjE0LDcgJiM0Mzs2MDMsNyBAQCBzdGF0aWMgYm9vbCBfX2t2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG4gfVxuIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbiB7XG4tXHRpZiAoZWZlciBcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxuJiM0MztcdGlmICghKGVmZXIgXHUwMDI2IGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRyZXR1cm4gX19rdm1fdmFsaWRfZWZlcih2Y3B1LCBlZmVyKTtcbkBAIC02MjcsNyAmIzQzOzYxNiw3IEBAIHN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuIFx0dTY0IGVmZXIgPSBtc3JfaW5mby1cdTAwM2VkYXRhO1xuIFx0aW50IHI7XG4gXG4tXHRpZiAoZWZlciBcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxuJiM0MztcdGlmICghKGVmZXIgXHUwMDI2IGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpKVxuIFx0XHRyZXR1cm4gMTtcbiBcbiBcdGlmICghbXNyX2luZm8tXHUwMDNlaG9zdF9pbml0aWF0ZWQpIHtcbkBAIC02NTgsMTIgJiM0Mzs2NDcsNiBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbiBcdHJldHVybiAwO1xuIH1cbiBcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCBtYXNrKVxuLXtcbi0gICAgICAgZWZlcl9yZXNlcnZlZF9iaXRzIFx1MDAyNj0gfm1hc2s7XG4tfVxuLUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fZW5hYmxlX2VmZXJfYml0cyk7XG4tXG4gYm9vbCBrdm1fbXNyX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHUzMiB0eXBlKVxuIHtcbiBcdHN0cnVjdCBrdm1feDg2X21zcl9maWx0ZXIgKm1zcl9maWx0ZXI7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmhcbmluZGV4IGI2OTg5ODNlMzdmYjYxLi44OWYxMDQ0N2NkZGRmOSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9tc3JzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tc3JzLmhcbkBAIC01OSw2ICYjNDM7NTksNyBAQCBpbnQga3ZtX2dldF9yZWdfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRcdCAgICAgc3RydWN0IGt2bV9yZWdfbGlzdCBfX3VzZXIgKnVzZXJfbGlzdCk7XG4gXG4gdm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQpO1xuJiM0Mzt2b2lkIGt2bV9kaXNhYmxlX2VmZXJfYml0cyh1NjQpO1xuIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG4gaW50IGt2bV9lbXVsYXRlX21zcl9yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1NjQgKmRhdGEpO1xuIGludCBrdm1fZW11bGF0ZV9tc3Jfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHU2NCBkYXRhKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcmVncy5jIGIvYXJjaC94ODYva3ZtL3JlZ3MuY1xuaW5kZXggZDJjYWY1YTY3ZGJhNDAuLjk0YzRlNGU0MTg2OGZjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3JlZ3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3JlZ3MuY1xuQEAgLTU2Myw3ICYjNDM7NTYzLDggQEAgc3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4gXHR9XG4gXG4gXHRyZXR1cm4ga3ZtX2lzX3ZhbGlkX2NyNCh2Y3B1LCBzcmVncy1cdTAwM2VjcjQpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtXHUwMDNlY3IwKTtcbiYjNDM7XHQgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy1cdTAwM2VjcjApIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgICBrdm1fdmFsaWRfZWZlcih2Y3B1LCBzcmVncy1cdTAwM2VlZmVyKTtcbiB9XG4gXG4gc3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuaW5kZXggZWY2OWE1MWFiMjdmOTguLmU3NTVmNDNmNDM3NmVlIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuQEAgLTI3NCw2ICYjNDM7Mjc0LDE1IEBAIGludCBzdm1fc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgc3ZtX3NldHVwX2VmZXJfY2Fwcyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKG5lc3RlZCkge1xuJiM0MztcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX1NWTUU7XG4mIzQzO1x0XHRpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9FRkVSX0xNU0xFX01CWikpXG4mIzQzO1x0XHRcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9MTVNMRTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHUzMiBzdm1fZ2V0X2ludGVycnVwdF9zaGFkb3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtID0gdG9fc3ZtKHZjcHUpO1xuQEAgLTUzNjQsNiAmIzQzOzUzNzMsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbiBcdC5pc192YWxpZF9jcjQgPSBzdm1faXNfdmFsaWRfY3I0LFxuIFx0LnNldF9jcjQgPSBzdm1fc2V0X2NyNCxcbiBcdC5zZXRfZWZlciA9IHN2bV9zZXRfZWZlcixcbiYjNDM7XHQuc2V0dXBfZWZlcl9jYXBzID0gc3ZtX3NldHVwX2VmZXJfY2FwcyxcbiBcdC5nZXRfaWR0ID0gc3ZtX2dldF9pZHQsXG4gXHQuc2V0X2lkdCA9IHN2bV9zZXRfaWR0LFxuIFx0LmdldF9nZHQgPSBzdm1fZ2V0X2dkdCxcbkBAIC01NjM4LDEwICYjNDM7NTY0OCw2IEBAIHN0YXRpYyBfX2luaXQgaW50IHN2bV9oYXJkd2FyZV9zZXR1cCh2b2lkKVxuIFxuIFx0aWYgKG5lc3RlZCkge1xuIFx0XHRwcl9pbmZvKFwmIzM0O05lc3RlZCBWaXJ0dWFsaXphdGlvbiBlbmFibGVkXFxuXCYjMzQ7KTtcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9TVk1FKTtcbi1cdFx0aWYgKCFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfRUZFUl9MTVNMRV9NQlopKVxuLVx0XHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfTE1TTEUpO1xuLVxuIFx0XHRyID0gbmVzdGVkX3N2bV9pbml0X21zcnBtX21lcmdlX29mZnNldHMoKTtcbiBcdFx0aWYgKHIpXG4gXHRcdFx0cmV0dXJuIHI7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5pbmRleCA4ZGJjMGZhMzAyYThiNS4uNWNlZGFhODQwOWY4ZGYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuY1xuQEAgLTY4OTIsMTQgJiM0Mzs2ODkyLDIyIEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2V0dXBfeHNzX2NhcHMpO1xuIFxuIHN0YXRpYyB2b2lkIGt2bV9zZXR1cF9lZmVyX2NhcHModm9pZClcbiB7XG4mIzQzO1x0LyogRW5hYmxlIHN5c2NhbGwgYnkgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk0gKi9cbiYjNDM7XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzID0gKHU2NClFRkVSX1NDRTtcbiYjNDM7XG4mIzQzO1x0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9MTSkpXG4mIzQzO1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IChFRkVSX0xNRSB8IEVGRVJfTE1BKTtcbiYjNDM7XG4gXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX05YKSlcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9OWCk7XG4mIzQzO1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTlg7XG4gXG4gXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0ZYU1JfT1BUKSlcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9GRlhTUik7XG4mIzQzO1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfRkZYU1I7XG4gXG4gXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9BVVRPSUJSUyk7XG4mIzQzO1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfQVVUT0lCUlM7XG4mIzQzO1xuJiM0MztcdGt2bV94ODZfY2FsbChzZXR1cF9lZmVyX2NhcHMpKCk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fb3BzX3VwZGF0ZShzdHJ1Y3Qga3ZtX3g4Nl9pbml0X29wcyAqb3BzKVxuQEAgLTcwMzgsMTMgJiM0Mzs3MDQ2LDEzIEBAIGludCBrdm1feDg2X3ZlbmRvcl9pbml0KHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXG4gXHRpZiAociAhPSAwKVxuIFx0XHRnb3RvIG91dF9tbXVfZXhpdDtcbiBcbi1cdGt2bV9zZXR1cF9lZmVyX2NhcHMoKTtcbi1cbiBcdGVuYWJsZV9kZXZpY2VfcG9zdGVkX2lycXMgXHUwMDI2PSBlbmFibGVfYXBpY3YgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQgICAgIGlycV9yZW1hcHBpbmdfY2FwKElSUV9QT1NUSU5HX0NBUCk7XG4gXG4gXHRrdm1fb3BzX3VwZGF0ZShvcHMpO1xuIFxuJiM0MztcdGt2bV9zZXR1cF9lZmVyX2NhcHMoKTtcbiYjNDM7XG4gXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xuIFx0XHRzbXBfY2FsbF9mdW5jdGlvbl9zaW5nbGUoY3B1LCBrdm1feDg2X2NoZWNrX2NwdV9jb21wYXQsIFx1MDAyNnIsIDEpO1xuIFx0XHRpZiAociBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbmluZGV4IDdkM2EyN2JjMGQ4NDJhLi5iMTYxMTc0ZWNlNDUzMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5AQCAtMjA4LDYgJiM0MzsyMDgsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9OQlx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVDWCwgMjQpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9MTENcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI4KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX05YXHRcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDIwKVxuJiM0MzsjZGVmaW5lXHRYODZfRkVBVFVSRV9GWFNSX09QVFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjUpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfR0JQQUdFU1x0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjYpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUkRUU0NQXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNylcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9MTVx0XHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyOSlcbkBAIC0yMjYsNiAmIzQzOzIyNyw3IEBAIHN0cnVjdCBrdm1feDg2X2NwdV9mZWF0dXJlIHtcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVlx0XHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAxRiwgMCwgRUFYLCAxKVxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX0VTXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAxRiwgMCwgRUFYLCAzKVxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX1NOUFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgNClcbiYjNDM7I2RlZmluZVx0WDg2X0ZFQVRVUkVfQVVUT0lCUlNcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDgpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfR1BfT05fVVNFUl9DUFVJRFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDE3KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZNT05fVjJcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIyLCAwLCBFQVgsIDApXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfTEJSX1BNQ19GUkVFWkVcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMiwgMCwgRUFYLCAyKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xuaW5kZXggOGU2NTRjYzlhYjE2ODcuLjU2MmFmYWIzNzhkMTFlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcbkBAIC0yMSwyMCAmIzQzOzIxLDIwIEBAXG4gI2luY2x1ZGUgXCYjMzQ7a3ZtX3V0aWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Byb2Nlc3Nvci5oXCYjMzQ7XG4gXG4tI2RlZmluZSBURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyLCBvcmlnLCBiaXQpXHRcdFx0XHRcXFxuJiM0MzsjZGVmaW5lIFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCByZWcsIG9yaWcsIGJpdClcdFx0XHRcdFxcXG4gZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHN0cnVjdCBrdm1fc3JlZ3MgbmV3O1x0XHRcdFx0XHRcdFx0XFxcbiBcdGludCByYztcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdC8qIFNraXAgdGhlIHN1Yi10ZXN0LCB0aGUgZmVhdHVyZS9iaXQgaXMgc3VwcG9ydGVkLiAqL1x0XHRcdFxcXG4tXHRpZiAob3JpZy5jciBcdTAwMjYgYml0KVx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRpZiAob3JpZy5yZWcgXHUwMDI2IGJpdClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdGJyZWFrO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdG1lbWNweShcdTAwMjZuZXcsIFx1MDAyNm9yaWcsIHNpemVvZihzcmVncykpO1x0XHRcdFx0XHRcXFxuLVx0bmV3LmNyIHw9IGJpdDtcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRtZW1jcHkoXHUwMDI2bmV3LCBcdTAwMjZvcmlnLCBzaXplb2YobmV3KSk7XHRcdFx0XHRcdFxcXG4mIzQzO1x0bmV3LnJlZyB8PSBiaXQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0cmMgPSBfdmNwdV9zcmVnc19zZXQodmNwdSwgXHUwMDI2bmV3KTtcdFx0XHRcdFx0XFxcbi1cdFRFU1RfQVNTRVJUKHJjLCBcJiMzNDtLVk0gYWxsb3dlZCBpbnZhbGlkIFwmIzM0OyAjY3IgXCYjMzQ7IGJpdCAoMHglbHgpXCYjMzQ7LCBiaXQpO1x0XFxcbiYjNDM7XHRURVNUX0FTU0VSVChyYywgXCYjMzQ7S1ZNIGFsbG93ZWQgaW52YWxpZCBcJiMzNDsgI3JlZyBcJiMzNDsgYml0ICgweCVsbHgpXCYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKWJpdCk7IFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0LyogU2FuaXR5IGNoZWNrIHRoYXQgS1ZNIGRpZG4mIzM5O3QgY2hhbmdlIGFueXRoaW5nLiAqL1x0XHRcdFxcXG4gXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcdTAwMjZuZXcpO1x0XHRcdFx0XHRcdFxcXG5AQCAtNDYsNiAmIzQzOzQ2LDggQEAgZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFg4Nl9DUjRfTUNFIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8XHRcXFxuIFx0XHRcdFx0WDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X09TWE1NRVhDUFQpXG4gXG4mIzQzOyNkZWZpbmUgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIgRUZFUl9TQ0VcbiYjNDM7XG4gc3RhdGljIHU2NCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKHZvaWQpXG4ge1xuIFx0dTY0IGNyNCA9IEtWTV9BTFdBWVNfQUxMT1dFRF9DUjQ7XG5AQCAtNzQsNiAmIzQzOzc2LDI0IEBAIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKVxuIFx0cmV0dXJuIGNyNDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfZWZlcl9mZWF0dXJlX2JpdHModm9pZClcbiYjNDM7e1xuJiM0MztcdHU2NCBlZmVyID0gS1ZNX0FMV0FZU19BTExPV0VEX0VGRVI7XG4mIzQzO1xuJiM0MztcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9MTSkpXG4mIzQzO1x0XHRlZmVyIHw9IChFRkVSX0xNRSB8IEVGRVJfTE1BKTtcbiYjNDM7XHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTlgpKVxuJiM0MztcdFx0ZWZlciB8PSBFRkVSX05YO1xuJiM0MztcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKVxuJiM0MztcdFx0ZWZlciB8PSBFRkVSX1NWTUU7XG4mIzQzO1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0ZYU1JfT1BUKSlcbiYjNDM7XHRcdGVmZXIgfD0gRUZFUl9GRlhTUjtcbiYjNDM7XHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKVxuJiM0MztcdFx0ZWZlciB8PSBFRkVSX0FVVE9JQlJTO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gZWZlcjtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCB0ZXN0X2NyX2JpdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgY3I0KVxuIHtcbiBcdHN0cnVjdCBrdm1fc3JlZ3Mgc3JlZ3M7XG5AQCAtOTYsMjYgJiM0MzsxMTYsNDUgQEAgc3RhdGljIHZvaWQgdGVzdF9jcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGNyNClcbiBcdFx0ICAgIChzcmVncy5jcjQgXHUwMDI2IFg4Nl9DUjRfUEtFKSA/IFwmIzM0O3NldFwmIzM0OyA6IFwmIzM0O2NsZWFyXCYjMzQ7KTtcbiBcbiBcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnNyZWdzKTtcbi1cdFRFU1RfQVNTRVJUKHNyZWdzLmNyNCA9PSBjcjQsIFwmIzM0O3NyZWdzLkNSNCAoMHglbGx4KSAhPSBDUjQgKDB4JWx4KVwmIzM0Oyxcbi1cdFx0ICAgIHNyZWdzLmNyNCwgY3I0KTtcbi1cbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9WTVhFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUENJREUpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNQVApO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XG4mIzQzO1x0VEVTVF9BU1NFUlRfRVEoc3JlZ3MuY3I0LCBjcjQpO1xuJiM0MztcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9WTVhFKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUENJREUpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNQVApO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XG4gXG4gXHRmb3IgKGkgPSAzMjsgaSBcdTAwM2MgNjQ7IGkmIzQzOyYjNDM7KVxuLVx0XHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIEJJVChpKSk7XG4mIzQzO1x0XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTtcbiBcbiBcdC8qIE5XIHdpdGhvdXQgQ0QgaXMgaWxsZWdhbCwgYXMgaXMgUEcgd2l0aG91dCBQRS4gKi9cbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfUEcpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX05XKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9QRyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfZWZlcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzO1xuJiM0MztcdGludCByYztcbiYjNDM7XG4mIzQzO1x0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuJiM0MztcdHNyZWdzLmVmZXIgfD0gZWZlcjtcbiYjNDM7XHRyYyA9IF92Y3B1X3NyZWdzX3NldCh2Y3B1LCBcdTAwMjZzcmVncyk7XG4mIzQzO1x0VEVTVF9BU1NFUlQoIXJjLCBcJiMzNDtGYWlsZWQgdG8gc2V0IHN1cHBvcnRlZCBFRkVSIGJpdHMgKDB4JWxseClcJiMzNDssIHNyZWdzLmVmZXIpO1xuJiM0MztcbiYjNDM7XHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcdTAwMjZzcmVncyk7XG4mIzQzO1x0VEVTVF9BU1NFUlRfRVEoc3JlZ3MuZWZlciwgZWZlcik7XG4mIzQzO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9MTUUpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9OWCk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX1NWTUUpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9GRlhTUik7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0FVVE9JQlJTKTtcbiB9XG4gXG4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbkBAIC0xMzIsNiAmIzQzOzE3MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHQgKi9cbiBcdHZtID0gdm1fY3JlYXRlX2JhcmVib25lcygpO1xuIFx0dmNwdSA9IF9fdm1fdmNwdV9hZGQodm0sIDApO1xuJiM0MztcdHRlc3RfZWZlcl9iaXRzKHZjcHUsIEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSKTtcbiBcdHRlc3RfY3JfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0KTtcbiBcdGt2bV92bV9mcmVlKHZtKTtcbiBcbkBAIC0xNTEsNiAmIzQzOzE5MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdCAgICBzcmVncy5hcGljX2Jhc2UpO1xuIFxuIFx0dGVzdF9jcl9iaXRzKHZjcHUsIGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHMoKSk7XG4mIzQzO1x0dGVzdF9lZmVyX2JpdHModmNwdSwgY2FsY19zdXBwb3J0ZWRfZWZlcl9mZWF0dXJlX2JpdHMoKSk7XG4gXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9BTUQmIzM0OywKICAgICYjMzQ7S1ZNX0lOVEVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3ZhbGlkX2VmZXImIzM0OywKICAgICYjMzQ7c2V0X2VmZXImIzM0OywKICAgICYjMzQ7a3ZtX2lzX3ZhbGlkX3NyZWdzJiMzNDssCiAgICAmIzM0O19fc2V0X3NyZWdzX2NvbW1vbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0geDg2IEVGRVIgTVNSIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgaG93IHN1cHBvcnRlZCBFRkVSIGJpdHMgYXJlIGNoZWNrZWQgYW5kIHNldC4gSXQgcmVwbGFjZXMgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AgYW5kIGludHJvZHVjZXMgYHNldHVwX2VmZXJfY2Fwc2AgdG8gYGt2bV94ODZfb3BzYC4gVGhpcyBhZmZlY3RzIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGFuZCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFuZCBzdGF0ZSByZXN0b3JhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiYWE1NjNjODYzNWU2ZjE3ZDIzOTg3MmVmM2FjMzQxNzJmMGM4NWZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAwNjoyODo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oCmluZGV4IDgzZGM1MDg2MTM4YjM5Li5kNTg3MjQyZGNhYjU2MSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oCkBAIC00NSw2ICYjNDM7NDUsNyBAQCBLVk1fWDg2X09QX09QVElPTkFMKHBvc3Rfc2V0X2NyMykKIEtWTV9YODZfT1AoaXNfdmFsaWRfY3I0KQogS1ZNX1g4Nl9PUChzZXRfY3I0KQogS1ZNX1g4Nl9PUChzZXRfZWZlcikKJiM0MztLVk1fWDg2X09QX09QVElPTkFMKHNldHVwX2VmZXJfY2FwcykKIEtWTV9YODZfT1AoZ2V0X2lkdCkKIEtWTV9YODZfT1Aoc2V0X2lkdCkKIEtWTV9YODZfT1AoZ2V0X2dkdCkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCmluZGV4IGQ4NzAwZWI4NDhiNDUyLi40MGJlMzlmZWEzOWI5YyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC0zMjksNiAmIzQzOzMyOSw4IEBAIHN0cnVjdCBrdm1fY2FwcyB7CiAJdTY0IHN1cHBvcnRlZF94c3M7CiAJdTY0IHN1cHBvcnRlZF9wZXJmX2NhcDsKIAomIzQzOwl1NjQgc3VwcG9ydGVkX2VmZXJfYml0czsKJiM0MzsKIAl1NjQgc3VwcG9ydGVkX3F1aXJrczsKIAl1NjQgaW5hcHBsaWNhYmxlX3F1aXJrczsKIH07CkBAIC0xNzMwLDYgJiM0MzsxNzMyLDcgQEAgc3RydWN0IGt2bV94ODZfb3BzIHsKIAlib29sICgqaXNfdmFsaWRfY3I0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3I0KTsKIAl2b2lkICgqc2V0X2NyNCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCk7CiAJaW50ICgqc2V0X2VmZXIpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpOwomIzQzOwl2b2lkICgqc2V0dXBfZWZlcl9jYXBzKSh2b2lkKTsKIAl2b2lkICgqZ2V0X2lkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTsKIAl2b2lkICgqc2V0X2lkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTsKIAl2b2lkICgqZ2V0X2dkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tc3JzLmMgYi9hcmNoL3g4Ni9rdm0vbXNycy5jCmluZGV4IGMyMzBiMThkODdlMzhlLi5hMzljNzMwODhmMWZiMiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbXNycy5jCkBAIC0xOSwxNyAmIzQzOzE5LDYgQEAgYm9vbCBfX3JlYWRfbW9zdGx5IHJlcG9ydF9pZ25vcmVkX21zcnMgPSB0cnVlOwogbW9kdWxlX3BhcmFtKHJlcG9ydF9pZ25vcmVkX21zcnMsIGJvb2wsIDA2NDQpOwogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpOwogCi0vKiBFRkVSIGRlZmF1bHRzOgotICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk0KLSAqIC0gZW5hYmxlIExNRSBhbmQgTE1BIHBlciBkZWZhdWx0IG9uIDY0IGJpdCBLVk0KLSAqLwotI2lmZGVmIENPTkZJR19YODZfNjQKLXN0YXRpYwotdTY0IF9fcmVhZF9tb3N0bHkgZWZlcl9yZXNlcnZlZF9iaXRzID0gfigodTY0KShFRkVSX1NDRSB8IEVGRVJfTE1FIHwgRUZFUl9MTUEpKTsKLSNlbHNlCi1zdGF0aWMgdTY0IF9fcmVhZF9tb3N0bHkgZWZlcl9yZXNlcnZlZF9iaXRzID0gfigodTY0KUVGRVJfU0NFKTsKLSNlbmRpZgotCiAjZGVmaW5lIE1BWF9JT19NU1JTIDI1NgogCiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7CkBAIC02MTQsNyAmIzQzOzYwMyw3IEBAIHN0YXRpYyBib29sIF9fa3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcikKIH0KIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcikKIHsKLQlpZiAoZWZlciAmYW1wOyBlZmVyX3Jlc2VydmVkX2JpdHMpCiYjNDM7CWlmICghKGVmZXIgJmFtcDsga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cykpCiAJCXJldHVybiBmYWxzZTsKIAogCXJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpOwpAQCAtNjI3LDcgJiM0Mzs2MTYsNyBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbykKIAl1NjQgZWZlciA9IG1zcl9pbmZvLSZndDtkYXRhOwogCWludCByOwogCi0JaWYgKGVmZXIgJmFtcDsgZWZlcl9yZXNlcnZlZF9iaXRzKQomIzQzOwlpZiAoIShlZmVyICZhbXA7IGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpKQogCQlyZXR1cm4gMTsKIAogCWlmICghbXNyX2luZm8tJmd0O2hvc3RfaW5pdGlhdGVkKSB7CkBAIC02NTgsMTIgJiM0Mzs2NDcsNiBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbykKIAlyZXR1cm4gMDsKIH0KIAotdm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQgbWFzaykKLXsKLSAgICAgICBlZmVyX3Jlc2VydmVkX2JpdHMgJmFtcDs9IH5tYXNrOwotfQotRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9lbmFibGVfZWZlcl9iaXRzKTsKLQogYm9vbCBrdm1fbXNyX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHUzMiB0eXBlKQogewogCXN0cnVjdCBrdm1feDg2X21zcl9maWx0ZXIgKm1zcl9maWx0ZXI7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5oIGIvYXJjaC94ODYva3ZtL21zcnMuaAppbmRleCBiNjk4OTgzZTM3ZmI2MS4uODlmMTA0NDdjZGRkZjkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9tc3JzLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL21zcnMuaApAQCAtNTksNiAmIzQzOzU5LDcgQEAgaW50IGt2bV9nZXRfcmVnX2xpc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkgICAgIHN0cnVjdCBrdm1fcmVnX2xpc3QgX191c2VyICp1c2VyX2xpc3QpOwogCiB2b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7CiYjNDM7dm9pZCBrdm1fZGlzYWJsZV9lZmVyX2JpdHModTY0KTsKIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7CiBpbnQga3ZtX2VtdWxhdGVfbXNyX3JlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHU2NCAqZGF0YSk7CiBpbnQga3ZtX2VtdWxhdGVfbXNyX3dyaXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1NjQgZGF0YSk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcmVncy5jIGIvYXJjaC94ODYva3ZtL3JlZ3MuYwppbmRleCBkMmNhZjVhNjdkYmE0MC4uOTRjNGU0ZTQxODY4ZmMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9yZWdzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3JlZ3MuYwpAQCAtNTYzLDcgJiM0Mzs1NjMsOCBAQCBzdGF0aWMgYm9vbCBrdm1faXNfdmFsaWRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncykKIAl9CiAKIAlyZXR1cm4ga3ZtX2lzX3ZhbGlkX2NyNCh2Y3B1LCBzcmVncy0mZ3Q7Y3I0KSAmYW1wOyZhbXA7Ci0JICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtJmd0O2NyMCk7CiYjNDM7CSAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLSZndDtjcjApICZhbXA7JmFtcDsKJiM0MzsJICAgICAgIGt2bV92YWxpZF9lZmVyKHZjcHUsIHNyZWdzLSZndDtlZmVyKTsKIH0KIAogc3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncywKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCmluZGV4IGVmNjlhNTFhYjI3Zjk4Li5lNzU1ZjQzZjQzNzZlZSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCkBAIC0yNzQsNiAmIzQzOzI3NCwxNSBAQCBpbnQgc3ZtX3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBzdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpCiYjNDM7ewomIzQzOwlpZiAobmVzdGVkKSB7CiYjNDM7CQlrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfU1ZNRTsKJiM0MzsJCWlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSkKJiM0MzsJCQlrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTMyIHN2bV9nZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJc3RydWN0IHZjcHVfc3ZtICpzdm0gPSB0b19zdm0odmNwdSk7CkBAIC01MzY0LDYgJiM0Mzs1MzczLDcgQEAgc3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7CiAJLmlzX3ZhbGlkX2NyNCA9IHN2bV9pc192YWxpZF9jcjQsCiAJLnNldF9jcjQgPSBzdm1fc2V0X2NyNCwKIAkuc2V0X2VmZXIgPSBzdm1fc2V0X2VmZXIsCiYjNDM7CS5zZXR1cF9lZmVyX2NhcHMgPSBzdm1fc2V0dXBfZWZlcl9jYXBzLAogCS5nZXRfaWR0ID0gc3ZtX2dldF9pZHQsCiAJLnNldF9pZHQgPSBzdm1fc2V0X2lkdCwKIAkuZ2V0X2dkdCA9IHN2bV9nZXRfZ2R0LApAQCAtNTYzOCwxMCAmIzQzOzU2NDgsNiBAQCBzdGF0aWMgX19pbml0IGludCBzdm1faGFyZHdhcmVfc2V0dXAodm9pZCkKIAogCWlmIChuZXN0ZWQpIHsKIAkJcHJfaW5mbygmIzM0O05lc3RlZCBWaXJ0dWFsaXphdGlvbiBlbmFibGVkXG4mIzM0Oyk7Ci0JCWt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfU1ZNRSk7Ci0JCWlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSkKLQkJCWt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfTE1TTEUpOwotCiAJCXIgPSBuZXN0ZWRfc3ZtX2luaXRfbXNycG1fbWVyZ2Vfb2Zmc2V0cygpOwogCQlpZiAocikKIAkJCXJldHVybiByOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDhkYmMwZmEzMDJhOGI1Li41Y2VkYWE4NDA5ZjhkZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtNjg5MiwxNCAmIzQzOzY4OTIsMjIgQEAgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXR1cF94c3NfY2Fwcyk7CiAKIHN0YXRpYyB2b2lkIGt2bV9zZXR1cF9lZmVyX2NhcHModm9pZCkKIHsKJiM0MzsJLyogRW5hYmxlIHN5c2NhbGwgYnkgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk0gKi8KJiM0MzsJa3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyA9ICh1NjQpRUZFUl9TQ0U7CiYjNDM7CiYjNDM7CWlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfTE0pKQomIzQzOwkJa3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7CiYjNDM7CiAJaWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9OWCkpCi0JCWt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfTlgpOwomIzQzOwkJa3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX05YOwogCiAJaWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpCi0JCWt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfRkZYU1IpOwomIzQzOwkJa3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0ZGWFNSOwogCiAJaWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpCi0JCWt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfQVVUT0lCUlMpOwomIzQzOwkJa3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0FVVE9JQlJTOwomIzQzOwomIzQzOwlrdm1feDg2X2NhbGwoc2V0dXBfZWZlcl9jYXBzKSgpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX29wc191cGRhdGUoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcykKQEAgLTcwMzgsMTMgJiM0Mzs3MDQ2LDEzIEBAIGludCBrdm1feDg2X3ZlbmRvcl9pbml0KHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpCiAJaWYgKHIgIT0gMCkKIAkJZ290byBvdXRfbW11X2V4aXQ7CiAKLQlrdm1fc2V0dXBfZWZlcl9jYXBzKCk7Ci0KIAllbmFibGVfZGV2aWNlX3Bvc3RlZF9pcnFzICZhbXA7PSBlbmFibGVfYXBpY3YgJmFtcDsmYW1wOwogCQkJCSAgICAgaXJxX3JlbWFwcGluZ19jYXAoSVJRX1BPU1RJTkdfQ0FQKTsKIAogCWt2bV9vcHNfdXBkYXRlKG9wcyk7CiAKJiM0MzsJa3ZtX3NldHVwX2VmZXJfY2FwcygpOwomIzQzOwogCWZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7CiAJCXNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZShjcHUsIGt2bV94ODZfY2hlY2tfY3B1X2NvbXBhdCwgJmFtcDtyLCAxKTsKIAkJaWYgKHIgJmx0OyAwKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCmluZGV4IDdkM2EyN2JjMGQ4NDJhLi5iMTYxMTc0ZWNlNDUzMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaApAQCAtMjA4LDYgJiM0MzsyMDgsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7CiAjZGVmaW5lCVg4Nl9GRUFUVVJFX1BFUkZDVFJfTkIJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyNCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfUEVSRkNUUl9MTEMJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyOCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfTlgJCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjApCiYjNDM7I2RlZmluZQlYODZfRkVBVFVSRV9GWFNSX09QVAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI1KQogI2RlZmluZQlYODZfRkVBVFVSRV9HQlBBR0VTCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjYpCiAjZGVmaW5lCVg4Nl9GRUFUVVJFX1JEVFNDUAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI3KQogI2RlZmluZQlYODZfRkVBVFVSRV9MTQkJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyOSkKQEAgLTIyNiw2ICYjNDM7MjI3LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUgewogI2RlZmluZSBYODZfRkVBVFVSRV9TRVYJCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMSkKICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX0VTCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMykKICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX1NOUAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDQpCiYjNDM7I2RlZmluZQlYODZfRkVBVFVSRV9BVVRPSUJSUwkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDgpCiAjZGVmaW5lCVg4Nl9GRUFUVVJFX0dQX09OX1VTRVJfQ1BVSUQJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDE3KQogI2RlZmluZQlYODZfRkVBVFVSRV9QRVJGTU9OX1YyCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfTEJSX1BNQ19GUkVFWkUJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIyLCAwLCBFQVgsIDIpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMKaW5kZXggOGU2NTRjYzlhYjE2ODcuLjU2MmFmYWIzNzhkMTFlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jCkBAIC0yMSwyMCAmIzQzOzIxLDIwIEBACiAjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtwcm9jZXNzb3IuaCYjMzQ7CiAKLSNkZWZpbmUgVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjciwgb3JpZywgYml0KQkJCQlcCiYjNDM7I2RlZmluZSBURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgcmVnLCBvcmlnLCBiaXQpCQkJCVwKIGRvIHsJCQkJCQkJCQkJXAogCXN0cnVjdCBrdm1fc3JlZ3MgbmV3OwkJCQkJCQlcCiAJaW50IHJjOwkJCQkJCQkJCVwKIAkJCQkJCQkJCQlcCiAJLyogU2tpcCB0aGUgc3ViLXRlc3QsIHRoZSBmZWF0dXJlL2JpdCBpcyBzdXBwb3J0ZWQuICovCQkJXAotCWlmIChvcmlnLmNyICZhbXA7IGJpdCkJCQkJCQkJXAomIzQzOwlpZiAob3JpZy5yZWcgJmFtcDsgYml0KQkJCQkJCQlcCiAJCWJyZWFrOwkJCQkJCQkJXAogCQkJCQkJCQkJCVwKLQltZW1jcHkoJmFtcDtuZXcsICZhbXA7b3JpZywgc2l6ZW9mKHNyZWdzKSk7CQkJCQlcCi0JbmV3LmNyIHw9IGJpdDsJCQkJCQkJCVwKJiM0MzsJbWVtY3B5KCZhbXA7bmV3LCAmYW1wO29yaWcsIHNpemVvZihuZXcpKTsJCQkJCVwKJiM0MzsJbmV3LnJlZyB8PSBiaXQ7CQkJCQkJCQlcCiAJCQkJCQkJCQkJXAogCXJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsICZhbXA7bmV3KTsJCQkJCVwKLQlURVNUX0FTU0VSVChyYywgJiMzNDtLVk0gYWxsb3dlZCBpbnZhbGlkICYjMzQ7ICNjciAmIzM0OyBiaXQgKDB4JWx4KSYjMzQ7LCBiaXQpOwlcCiYjNDM7CVRFU1RfQVNTRVJUKHJjLCAmIzM0O0tWTSBhbGxvd2VkIGludmFsaWQgJiMzNDsgI3JlZyAmIzM0OyBiaXQgKDB4JWxseCkmIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZyliaXQpOyBcCiAJCQkJCQkJCQkJXAogCS8qIFNhbml0eSBjaGVjayB0aGF0IEtWTSBkaWRuJiMzOTt0IGNoYW5nZSBhbnl0aGluZy4gKi8JCQlcCiAJdmNwdV9zcmVnc19nZXQodmNwdSwgJmFtcDtuZXcpOwkJCQkJCVwKQEAgLTQ2LDYgJiM0Mzs0Niw4IEBAIGRvIHsJCQkJCQkJCQkJXAogCQkJCVg4Nl9DUjRfTUNFIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8CVwKIAkJCQlYODZfQ1I0X09TRlhTUiB8IFg4Nl9DUjRfT1NYTU1FWENQVCkKIAomIzQzOyNkZWZpbmUgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIgRUZFUl9TQ0UKJiM0MzsKIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKQogewogCXU2NCBjcjQgPSBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0OwpAQCAtNzQsNiAmIzQzOzc2LDI0IEBAIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKQogCXJldHVybiBjcjQ7CiB9CiAKJiM0MztzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKHZvaWQpCiYjNDM7ewomIzQzOwl1NjQgZWZlciA9IEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSOwomIzQzOwomIzQzOwlpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTE0pKQomIzQzOwkJZWZlciB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9OWCkpCiYjNDM7CQllZmVyIHw9IEVGRVJfTlg7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKQomIzQzOwkJZWZlciB8PSBFRkVSX1NWTUU7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpCiYjNDM7CQllZmVyIHw9IEVGRVJfRkZYU1I7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpCiYjNDM7CQllZmVyIHw9IEVGRVJfQVVUT0lCUlM7CiYjNDM7CiYjNDM7CXJldHVybiBlZmVyOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpCiB7CiAJc3RydWN0IGt2bV9zcmVncyBzcmVnczsKQEAgLTk2LDI2ICYjNDM7MTE2LDQ1IEBAIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpCiAJCSAgICAoc3JlZ3MuY3I0ICZhbXA7IFg4Nl9DUjRfUEtFKSA/ICYjMzQ7c2V0JiMzNDsgOiAmIzM0O2NsZWFyJiMzNDspOwogCiAJdmNwdV9zcmVnc19nZXQodmNwdSwgJmFtcDtzcmVncyk7Ci0JVEVTVF9BU1NFUlQoc3JlZ3MuY3I0ID09IGNyNCwgJiMzNDtzcmVncy5DUjQgKDB4JWxseCkgIT0gQ1I0ICgweCVseCkmIzM0OywKLQkJICAgIHNyZWdzLmNyNCwgY3I0KTsKLQotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1ZNWEUpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QQ0lERSk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01BUCk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7CiYjNDM7CVRFU1RfQVNTRVJUX0VRKHNyZWdzLmNyNCwgY3I0KTsKJiM0MzsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0xBNTcpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9WTVhFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0ZTR1NCQVNFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUENJREUpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01FUCk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNQVApOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpOwogCiAJZm9yIChpID0gMzI7IGkgJmx0OyA2NDsgaSYjNDM7JiM0MzspCi0JCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTsKJiM0MzsJCVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBCSVQoaSkpOwogCiAJLyogTlcgd2l0aG91dCBDRCBpcyBpbGxlZ2FsLCBhcyBpcyBQRyB3aXRob3V0IFBFLiAqLwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9QRyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfZWZlcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzOwomIzQzOwlpbnQgcmM7CiYjNDM7CiYjNDM7CXZjcHVfc3JlZ3NfZ2V0KHZjcHUsICZhbXA7c3JlZ3MpOwomIzQzOwlzcmVncy5lZmVyIHw9IGVmZXI7CiYjNDM7CXJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsICZhbXA7c3JlZ3MpOwomIzQzOwlURVNUX0FTU0VSVCghcmMsICYjMzQ7RmFpbGVkIHRvIHNldCBzdXBwb3J0ZWQgRUZFUiBiaXRzICgweCVsbHgpJiMzNDssIHNyZWdzLmVmZXIpOwomIzQzOwomIzQzOwl2Y3B1X3NyZWdzX2dldCh2Y3B1LCAmYW1wO3NyZWdzKTsKJiM0MzsJVEVTVF9BU1NFUlRfRVEoc3JlZ3MuZWZlciwgZWZlcik7CiYjNDM7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9MTUUpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTlgpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfU1ZNRSk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9GRlhTUik7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9BVVRPSUJSUyk7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCkBAIC0xMzIsNiAmIzQzOzE3MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJdm0gPSB2bV9jcmVhdGVfYmFyZWJvbmVzKCk7CiAJdmNwdSA9IF9fdm1fdmNwdV9hZGQodm0sIDApOwomIzQzOwl0ZXN0X2VmZXJfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUik7CiAJdGVzdF9jcl9iaXRzKHZjcHUsIEtWTV9BTFdBWVNfQUxMT1dFRF9DUjQpOwogCWt2bV92bV9mcmVlKHZtKTsKIApAQCAtMTUxLDYgJiM0MzsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkgICAgc3JlZ3MuYXBpY19iYXNlKTsKIAogCXRlc3RfY3JfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKCkpOwomIzQzOwl0ZXN0X2VmZXJfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9lZmVyX2ZlYXR1cmVfYml0cygpKTsKIAogCWt2bV92bV9mcmVlKHZtKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjUyCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIHg4NiBFRkVSIE1TUiBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsbHkgY2hhbmdpbmcgaG93IEtWTSB4ODYgaGFuZGxlcyB0aGUgRUZFUiBNU1IgYW5kIHNyZWdzLiBJdCYjMzk7cyB0b3VjaGluZyBhIGZldyBrZXkgYXJlYXMsIGFuZCBteSBleHBlcnQgaW50dWl0aW9uIGlzIHNjcmVhbWluZyAmIzM0O2Z1enppbmcgb3Bwb3J0dW5pdHkuJiMzNDsgV2UmIzM5O3ZlIGdvdCBhIG5ldyBgc2V0dXBfZWZlcl9jYXBzYCBmdW5jdGlvbiBpbiBga3ZtX3g4Nl9vcHNgLCBsZXZlcmFnaW5nIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYCBpbnN0ZWFkIG9mIGBlZmVyX3Jlc2VydmVkX2JpdHNgIOKAkyB0aGF0JiMzOTtzIGEgc2lnbmFsLiBUaGUgY2hhbmdlcyBhcmUgaW1wYWN0aW5nIGBrdm1fdmFsaWRfZWZlcmAgYW5kIGBzZXRfZWZlcmAgaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLCBhbmQgYWxzbyBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AgdG8gaW5jbHVkZSBhIGNoZWNrIGZvciBga3ZtX3ZhbGlkX2VmZXJgLiBGdXJ0aGVybW9yZSwgd2UgaGF2ZSBhZGRpdGlvbnMgb2YgYHN2bV9zZXR1cF9lZmVyX2NhcHNgIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYCwgYW5kIGEgbW9kaWZpY2F0aW9uIGluIGBrdm1fc2V0dXBfZWZlcl9jYXBzYCBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZXNlIGZ1bmN0aW9ucyBmb3IgZnV6emluZyBjYW1wYWlnbnM6IGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCBgc3ZtX3NldHVwX2VmZXJfY2Fwc2AsIGFuZCBga3ZtX3NldHVwX2VmZXJfY2Fwc2AuIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyBgX19zZXRfc3JlZ3NfY29tbW9uYCBhcyBhIHBvdGVudGlhbCBhcmVhIHRvIGludmVzdGlnYXRlLCBqdXN0IHRvIGJlIHRob3JvdWdoLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgY2FsbCBjaGFpbnMsIGFuZCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW4gdGhlIHJlbGV2YW50IGNvZGUgZmlsZXMuIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCBgYXJjaC94ODYva3ZtL21zcnMuY2AgYW5kIGZvdW5kIGBzZXRfZWZlcmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGFuZCBga3ZtX3ZhbGlkX2VmZXJgIGlzIGdsb2JhbC4gU28sIGBzZXRfZWZlcmAgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGluc2lkZSBvZiB0aGUgYG1zcnMuY2AgZmlsZSBhbmQgb25seSBjYWxsYWJsZSBmcm9tIGluc2lkZSBpdC4gSSBhbHNvIGNvbmZpcm1lZCB3aXRoIGBncmVwcGVyYCB0aGF0IGBrdm1faXNfdmFsaWRfc3JlZ3NgIGlzIHN0YXRpYyBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AsIGFuZCBgc3ZtX3NldHVwX2VmZXJfY2Fwc2AgaXMgc3RhdGljIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYCwgYW5kIHRoYXQgYGt2bV9zZXR1cF9lZmVyX2NhcHNgIGlzIHN0YXRpYyBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4KClVzaW5nIGBncmVwcGVyYCwgSSYjMzk7bSBjb25maXJtaW5nIHRoZSBjYWxsIHJlbGF0aW9uc2hpcHMuIGBrdm1fdmFsaWRfZWZlcmAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBhbmQgYHNldF9lZmVyYC4gQW5kIGZyb20gaW5zcGVjdGlvbiwgYHNldF9lZmVyYCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGBrdm1fc2V0X21zcl9jb21tb25gIHdoZW4gZGVhbGluZyB3aXRoIGBNU1JfRUZFUmAuCgpGaW5hbGx5LCBhIHF1aWNrIEtjb25maWcgY2hlY2sgdGVsbHMgbWUgdGhhdCBDT05GSUdfS1ZNIGlzIGEgaGFyZCByZXF1aXJlbWVudCwgYW5kIHdlJiMzOTtsbCBuZWVkIGVpdGhlciBDT05GSUdfS1ZNX0FNRCBvciBDT05GSUdfS1ZNX0lOVEVMIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBDUFUuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgbm93IHV0aWxpemUgYGdyZXBwZXJgIHRvIGZpbmQgZXhhY3RseSB3aGVyZSBga3ZtX3ZhbGlkX2VmZXJgIGlzIGRlZmluZWQuIFRoaXMmIzM5O2xsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgZXhhY3Qgc2NvcGUgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgbGFyZ2VyIEtWTSB4ODYgY29udGV4dC4gVGhpcyBzZWVtcyBsaWtlIGEgcHJvbWlzaW5nIHBhdGggdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3ZhbGlkX2VmZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL21zcnMuYz01Nzc9c3RhdGljIGludCBkb19nZXRfZmVhdHVyZV9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbmRleCwgdTY0ICpkYXRhKVxuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmMtNTgyLVxuYXJjaC94ODYva3ZtL21zcnMuYzo1ODM6c3RhdGljIGJvb2wgX19rdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuYXJjaC94ODYva3ZtL21zcnMuYy01ODQte1xuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmMtNjAzLX1cbmFyY2gveDg2L2t2bS9tc3JzLmM6NjA0OmJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjA1LXtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYwOC1cbmFyY2gveDg2L2t2bS9tc3JzLmM6NjA5Olx0cmV0dXJuIF9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcik7XG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYxMC19XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYxMTpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3ZhbGlkX2VmZXIpO1xuYXJjaC94ODYva3ZtL21zcnMuYy02MTItXG5hcmNoL3g4Ni9rdm0vbXNycy5jPTYxMz1zdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYyMi1cdGlmICghbXNyX2luZm8tXHUwMDNlaG9zdF9pbml0aWF0ZWQpIHtcbmFyY2gveDg2L2t2bS9tc3JzLmM6NjIzOlx0XHRpZiAoIV9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcikpXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYyNC1cdFx0XHRyZXR1cm4gMTtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5oPTYyPXZvaWQga3ZtX2Rpc2FibGVfZWZlcl9iaXRzKHU2NCk7XG5hcmNoL3g4Ni9rdm0vbXNycy5oOjYzOmJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG5hcmNoL3g4Ni9rdm0vbXNycy5oLTY0LWludCBrdm1fZW11bGF0ZV9tc3JfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0ICpkYXRhKTtcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU0ND1zdGF0aWMgYm9vbCBrdm1faXNfdmFsaWRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU2Ni1cdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVx1MDAzZWNyMCkgXHUwMDI2XHUwMDI2XG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU2NzpcdCAgICAgICBrdm1fdmFsaWRfZWZlcih2Y3B1LCBzcmVncy1cdTAwM2VlZmVyKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTY4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTQzOT1zdGF0aWMgYm9vbCBuZXN0ZWRfdm1jYl9jaGVja19zYXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ3Mi1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDczOlx0aWYgKENDKCFrdm1fdmFsaWRfZWZlcih2Y3B1LCBzYXZlLVx1MDAzZWVmZXIpKSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDc0LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yNzQ2PXN0YXRpYyBpbnQgZWZlcl90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NTItXHQgKiBDbGVhciB0aGUgRUZFUl9TVk1FIGJpdCBmcm9tIEVGRVIuIFRoZSBTVk0gY29kZSBhbHdheXMgc2V0cyB0aGlzXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjI3NTM6XHQgKiBiaXQgaW4gc3ZtX3NldF9lZmVyKCksIGJ1dCBfX2t2bV92YWxpZF9lZmVyKCkgY2hlY2tzIGl0IGFnYWluc3RcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjc1NC1cdCAqIHdoZXRoZXIgdGhlIGd1ZXN0IGhhcyBYODZfRkVBVFVSRV9TVk0gLSB0aGlzIGF2b2lkcyBhIGZhaWx1cmUgaWZcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMxNzI9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2hvc3Rfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzIzNC1cdGlmICh2bWNzMTItXHUwMDNldm1fZXhpdF9jb250cm9scyBcdTAwMjYgVk1fRVhJVF9MT0FEX0lBMzJfRUZFUikge1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozMjM1Olx0XHRpZiAoQ0MoIWt2bV92YWxpZF9lZmVyKHZjcHUsIHZtY3MxMi1cdTAwM2Vob3N0X2lhMzJfZWZlcikpIHx8XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMyMzYtXHRcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXHUwMDNlaG9zdF9pYTMyX2VmZXIgXHUwMDI2IEVGRVJfTE1BKSkgfHxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMzMDg9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2d1ZXN0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMzNzMtXHQgICAgKHZtY3MxMi1cdTAwM2V2bV9lbnRyeV9jb250cm9scyBcdTAwMjYgVk1fRU5UUllfTE9BRF9JQTMyX0VGRVIpKSB7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjMzNzQ6XHRcdGlmIChDQygha3ZtX3ZhbGlkX2VmZXIodmNwdSwgdm1jczEyLVx1MDAzZWd1ZXN0X2lhMzJfZWZlcikpIHx8XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMzNzUtXHRcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXHUwMDNlZ3Vlc3RfaWEzMl9lZmVyIFx1MDAyNiBFRkVSX0xNQSkpIHx8XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNDIKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFRkVSIE1TUiBNb2RpZmljYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyB0b3VjaGluZyBNU1IgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBFRkVSLiBJIHNlZSBjaGFuZ2VzIGluIGBrdm1fdmFsaWRfZWZlcmAgYW5kIGBzZXRfZWZlcmAgd2l0aGluIGBhcmNoL3g4Ni9rdm0vbXNycy5jYC4gVGhhdCYjMzk7cyBhIGtleSBhcmVhIHRvIHplcm8gaW4gb24uIFRoZSBwYXRjaCBhbHNvIGFkZHMgdGhlc2UgYF9zZXR1cF9lZmVyX2NhcHNgIGZ1bmN0aW9ucywgb25lIGluIHRoZSBTVk0gZGlyZWN0b3J5IGFuZCB0aGUgb3RoZXIgaW4gdGhlIHg4NiBkaXJlY3RvcnkuIEJ1dCB0aG9zZSBsb29rIGxpa2UgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zLCB3aGljaCBtYWtlcyB0aGVtIGxlc3MgaW50ZXJlc3RpbmcgZm9yIG15IHB1cnBvc2VzIOKAkyBmdXp6aW5nLCBtb3N0bHkuCgpOb3csIGBzZXRfZWZlcmAuLi4gdGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0ICppcyogY2FsbGVkIHRocm91Z2ggc29tZSBvdGhlciBtZWNoYW5pc20gbGlrZSBga3ZtX3NldF9tc3JfY29tbW9uYCwgc28gdGhhdCYjMzk7cyBzb21ldGhpbmcgdG8gY29uc2lkZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGZsb3cuCgpJJiMzOTttIHRoaW5raW5nLCBga3ZtX3ZhbGlkX2VmZXJgIGlzIGRlZmluaXRlbHkgYSBnb29kIHRhcmdldCBmb3IgZGVlcGVyIGFuYWx5c2lzLiBUaGF0IHNlZW1zIGxpa2UgYSBwcmltZSBhcmVhIGZvciB2YWxpZGF0aW5nIHRoZSBNU1IgdmFsdWUgYmVmb3JlIHNldHRpbmcgaXQuIEFuZCwgd2hpbGUgSSYjMzk7bSBhdCBpdCwgSSBzaG91bGQgYWxzbyBsb29rIGF0IGBrdm1faXNfdmFsaWRfc3JlZ3NgLiBUaG9zZSBjaGVja3MgYXJlIG9mdGVuIGdvbGRtaW5lcyBmb3Igc3VidGxlIGJ1Z3MuIEkgc2hvdWxkIGFsc28gbm90ZSB0aGF0IGBzZXRfZWZlcmAgY291bGQgYmUgYSBrZXkgcGxhY2UgdG8gZXhwbG9yZSB0b28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0X2VmZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD00Nj1LVk1fWDg2X09QKHNldF9jcjQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ3OktWTV9YODZfT1Aoc2V0X2VmZXIpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTQ4LUtWTV9YODZfT1BfT1BUSU9OQUwoc2V0dXBfZWZlcl9jYXBzKVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTY4ND1zdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTczMy1cdHZvaWQgKCpzZXRfY3I0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3I0KTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTczNDpcdGludCAoKnNldF9lZmVyKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTczNS1cdHZvaWQgKCpzZXR1cF9lZmVyX2NhcHMpKHZvaWQpO1xuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmM9NjExPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmFsaWRfZWZlcik7XG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYxMi1cbmFyY2gveDg2L2t2bS9tc3JzLmM6NjEzOnN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuYXJjaC94ODYva3ZtL21zcnMuYy02MTQte1xuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmMtNjMzLVxuYXJjaC94ODYva3ZtL21zcnMuYzo2MzQ6XHRyID0ga3ZtX3g4Nl9jYWxsKHNldF9lZmVyKSh2Y3B1LCBlZmVyKTtcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjM1LVx0aWYgKHIpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jPTE0NDI9aW50IGt2bV9zZXRfbXNyX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYy0xNTM5LVx0Y2FzZSBNU1JfRUZFUjpcbmFyY2gveDg2L2t2bS9tc3JzLmM6MTU0MDpcdFx0cmV0dXJuIHNldF9lZmVyKHZjcHUsIG1zcl9pbmZvKTtcbmFyY2gveDg2L2t2bS9tc3JzLmMtMTU0MS1cdGNhc2UgTVNSX0s3X0hXQ1I6IHtcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU3MD1zdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNTk4LVx0Km1tdV9yZXNldF9uZWVkZWQgfD0gdmNwdS1cdTAwM2VhcmNoLmVmZXIgIT0gc3JlZ3MtXHUwMDNlZWZlcjtcbmFyY2gveDg2L2t2bS9yZWdzLmM6NTk5Olx0a3ZtX3g4Nl9jYWxsKHNldF9lZmVyKSh2Y3B1LCBzcmVncy1cdTAwM2VlZmVyKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjAwLVxuLS1cbmFyY2gveDg2L2t2bS9zbW0uYz0yNzk9dm9pZCBlbnRlcl9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zbW0uYy0zNjEtXHRpZiAoZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfTE0pKVxuYXJjaC94ODYva3ZtL3NtbS5jOjM2MjpcdFx0aWYgKGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgMCkpXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYzLVx0XHRcdGdvdG8gZXJyb3I7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz03NDU9c3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy03OTItXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjc5MzpcdHN2bV9zZXRfZWZlcih2Y3B1LCBzdm0tXHUwMDNlbmVzdGVkLnNhdmUuZWZlcik7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTc5NC1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEzMjI9dm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0MjctXHRrdm1fc2V0X3JmbGFncyh2Y3B1LCB2bWNiMDEtXHUwMDNlc2F2ZS5yZmxhZ3MpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNDI4Olx0c3ZtX3NldF9lZmVyKHZjcHUsIHZtY2IwMS1cdTAwM2VzYXZlLmVmZXIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDI5LVx0c3ZtX3NldF9jcjAodmNwdSwgdm1jYjAxLVx1MDAzZXNhdmUuY3IwIHwgWDg2X0NSMF9QRSk7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yMDE9c3RhdGljIGludCBnZXRfbnB0X2xldmVsKHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMDktXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIxMDppbnQgc3ZtX3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIxMS17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yNzQ2PXN0YXRpYyBpbnQgZWZlcl90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NTItXHQgKiBDbGVhciB0aGUgRUZFUl9TVk1FIGJpdCBmcm9tIEVGRVIuIFRoZSBTVk0gY29kZSBhbHdheXMgc2V0cyB0aGlzXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjI3NTM6XHQgKiBiaXQgaW4gc3ZtX3NldF9lZmVyKCksIGJ1dCBfX2t2bV92YWxpZF9lZmVyKCkgY2hlY2tzIGl0IGFnYWluc3RcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjc1NC1cdCAqIHdoZXRoZXIgdGhlIGd1ZXN0IGhhcyBYODZfRkVBVFVSRV9TVk0gLSB0aGlzIGF2b2lkcyBhIGZhaWx1cmUgaWZcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMzQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01Mzc0LVx0LnNldF9jcjQgPSBzdm1fc2V0X2NyNCxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTM3NTpcdC5zZXRfZWZlciA9IHN2bV9zZXRfZWZlcixcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTM3Ni1cdC5zZXR1cF9lZmVyX2NhcHMgPSBzdm1fc2V0dXBfZWZlcl9jYXBzLFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9ODA5PXZvaWQgc3ZtX3VwZGF0ZV9sYnJ2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTgxMC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6ODExOmludCBzdm1fc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTgxMi12b2lkIHN2bV9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjApO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTQxMz1zdGF0aWMgdm9pZCB2dF9zZXRfY3I0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDIwLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDIxOnN0YXRpYyBpbnQgdnRfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyMi17XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDI1LVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDI2Olx0cmV0dXJuIHZteF9zZXRfZWZlcih2Y3B1LCBlZmVyKTtcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyNy19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTI0LVx0LnNldF9jcjQgPSB2dF9vcChzZXRfY3I0KSxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjkyNTpcdC5zZXRfZWZlciA9IHZ0X29wKHNldF9lZmVyKSxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTkyNi1cdC5nZXRfaWR0ID0gdnRfb3AoZ2V0X2lkdCksXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yMzk2PXN0YXRpYyB2b2lkIHByZXBhcmVfdm1jczAyX2Vhcmx5KHN0cnVjdCB2Y3B1X3ZteCAqdm14LCBzdHJ1Y3QgbG9hZGVkX3ZtY3MgKnZtY3MwMSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1MDktXHQgKiB2bWNzMTImIzM5O3MgVk1fe0VOVFJZLEVYSVR9X0xPQURfSUEzMl9FRkVSIGFuZCBWTV9FTlRSWV9JQTMyRV9NT0RFXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1MTA6XHQgKiBhcmUgZW11bGF0ZWQgYnkgdm14X3NldF9lZmVyKCkgaW4gcHJlcGFyZV92bWNzMDIoKSwgYnV0IHNwZWN1bGF0ZVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTExLVx0ICogb24gdGhlIHJlbGF0ZWQgYml0cyAoaWYgc3VwcG9ydGVkIGJ5IHRoZSBDUFUpIGluIHRoZSBob3BlIHRoYXRcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjUxMjpcdCAqIHdlIGNhbiBhdm9pZCBWTVdyaXRlcyBkdXJpbmcgdm14X3NldF9lZmVyKCkuXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1MTMtXHQgKlxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjUzNC1cdCAqIHdlIHNob3VsZCB1c2UgaXRzIGV4aXQgY29udHJvbHMuIE5vdGUgdGhhdCBWTV9FWElUX0xPQURfSUEzMl9FRkVSXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1MzU6XHQgKiBiaXRzIG1heSBiZSBtb2RpZmllZCBieSB2bXhfc2V0X2VmZXIoKSBpbiBwcmVwYXJlX3ZtY3MwMigpLlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTM2LVx0ICovXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNzI1PXN0YXRpYyBpbnQgcHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yODA4LVx0LyogTm90ZTogbWF5IG1vZGlmeSBWTV9FTlRSWS9FWElUX0NPTlRST0xTIGFuZCBHVUVTVC9IT1NUX0lBMzJfRUZFUiAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyODA5Olx0dm14X3NldF9lZmVyKHZjcHUsIHZjcHUtXHUwMDNlYXJjaC5lZmVyKTtcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjgxMC1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTQ3OTU9c3RhdGljIHZvaWQgbG9hZF92bWNzMTJfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00ODA2LVx0XHR2Y3B1LVx1MDAzZWFyY2guZWZlciBcdTAwMjY9IH4oRUZFUl9MTUEgfCBFRkVSX0xNRSk7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ4MDc6XHR2bXhfc2V0X2VmZXIodmNwdSwgdmNwdS1cdTAwM2VhcmNoLmVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00ODA4LVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9NDk1NT1zdGF0aWMgdm9pZCBuZXN0ZWRfdm14X3Jlc3RvcmVfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00OTg0LVx0ICovXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ5ODU6XHR2bXhfc2V0X2VmZXIodmNwdSwgbmVzdGVkX3ZteF9nZXRfdm1jczAxX2d1ZXN0X2VmZXIodm14KSk7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTQ5ODYtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjAxPXN0YXRpYyB2b2lkIGVudGVyX3Jtb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyNDgtXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMyNDk6aW50IHZteF9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjUwLXtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMyNzQ9c3RhdGljIHZvaWQgZW50ZXJfbG1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4Ny1cdH1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI4ODpcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guZWZlciB8IEVGRVJfTE1BKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4OS19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjkxPXN0YXRpYyB2b2lkIGV4aXRfbG1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjkyLXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI5MzpcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guZWZlciBcdTAwMjYgfkVGRVJfTE1BKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI5NC19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguaD0zNTA9dm9pZCB2bXhfc2V0X2ludGVycnVwdF9zaGFkb3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgbWFzayk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5oOjM1MTppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguaC0zNTItdm9pZCB2bXhfc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaD03MT1ib29sIHZteF9pc192YWxpZF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCk7XG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaDo3MjppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtNzMtdm9pZCB2bXhfZ2V0X2lkdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz05NDc5PXZvaWQga3ZtX3ZjcHVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGluaXRfZXZlbnQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTk1ODUtXHRrdm1feDg2X2NhbGwoc2V0X2NyNCkodmNwdSwgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6OTU4NjpcdGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtOTU4Ny1cdGt2bV94ODZfY2FsbCh1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcCkodmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2ODAKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA1MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMgaW4gS1ZNL3g4NiBNU1IgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBsb29rIGF0IGBzZXRfZWZlcmAgaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgIGJlY2F1c2UgdGhlIHBhdGNoIG1vZGlmaWVzIGl0LiBXYWl0LCBgc2V0X2VmZXJgIGlzICpzdGF0aWMqIHdpdGhpbiBgbXNycy5jYC4gSG1tLCB0aGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBJIGtub3cgYGt2bV9zZXRfbXNyX2NvbW1vbmAgY2FsbHMgYHNldF9lZmVyYCwgYnV0IHRoYXQmIzM5O3MgYSBoZWF2aWx5IHVzZWQgaG90IHBhdGgsIGEgYml0IHRvbyBicm9hZCBmb3IgZm9jdXNlZCBmdXp6aW5nLgoKTXkgbmV4dCB0aG91Z2h0OiBldmVuIHRob3VnaCBgc2V0X2VmZXJgIGlzIHN0YXRpYywgU3l6a2FsbGVyICpjYW4qIGZ1enogc3RhdGljIGZ1bmN0aW9ucyAqaWYqIHRoZXkmIzM5O3JlIGluIHRoZSBjb3ZlcmFnZSwgb3IsIG1vcmUgcmVsZXZhbnRseSwgaWYgdGhleSYjMzk7cmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gV2UgYWxzbyB1c2UgYEZvY3VzU3ltYm9sc2AgdG8gZ3VpZGUgdGhlIGZ1enplciwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgYSBnb29kIHN5bWJvbCwgc28gSSYjMzk7bGwgZ28gd2l0aCBgc2V0X2VmZXJgLgoKVGhlbiBJIHJlbWVtYmVyIGBrdm1fdmFsaWRfZWZlcmAgaXMgZXhwb3J0ZWQgYW5kIGdsb2JhbC4gUGVyZmVjdC4gSSBhbHNvIHNlZSB0aGF0IGBrdm1faXNfdmFsaWRfc3JlZ3NgIGlzIHN0YXRpYyB3aXRoaW4gYHJlZ3MuY2AgYW5kIGBfX3NldF9zcmVnc19jb21tb25gIGlzIHN0YXRpYyBpbiBgcmVncy5jYCwgc28gSSYjMzk7bGwgYWRkIHRob3NlLiBTbyB0aGUgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIG9uIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCBhbmQgYF9fc2V0X3NyZWdzX2NvbW1vbmAuCgpKdXN0IHRvIGJlIHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgIGFuZCBgYXJjaC94ODYva3ZtL3g4Ni5jYCBmb3IgYW55IHJlbGF0ZWQgZnVuY3Rpb25zLCBsaWtlIGBzdm1fc2V0dXBfZWZlcl9jYXBzYCBhbmQgYGt2bV9zZXR1cF9lZmVyX2NhcHNgLiBBaCwgYm90aCBhcmUgaW5pdCBmdW5jdGlvbnMsIGNhbGxlZCBvbmx5IGR1cmluZyBzZXR1cCDigJMgbm90IHJlbGV2YW50IGZvciAqcnVudGltZSogZnV6emluZy4KClRoZXJlZm9yZSwgdGhlIG1haW4gZnVuY3Rpb25hbCBjaGFuZ2VzIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFyZTogYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCAoaW4gbXNycy5jKSwgYW5kIGBrdm1faXNfdmFsaWRfc3JlZ3NgLiBXZSYjMzk7bGwgaWdub3JlIGBfX3NldF9zcmVnc19jb21tb25gIGZvciBub3cuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBzZWFyY2ggdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSB0b3VjaGVkLiBSaWdodCwgdGhlIHBhdGNoICphbHNvKiB0b3VjaGVzIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNgLCBidXQgdGhhdCYjMzk7cyBqdXN0IGEgdGVzdCwgbm90IGNvZGUgdGhhdCBleGVjdXRlcyBkdXJpbmcgdGhlIFZNJiMzOTtzIG5vcm1hbCBvcGVyYXRpb24uCgpGaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuIEkmIzM5O2xsIHNlYXJjaCBmb3IgYEtWTWAsIGBLVk1fQU1EYCwgYW5kIGBLVk1fSU5URUxgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gRUZFUiBvciBzaW1pbGFyIHNldHRpbmdzLiBUaGF0IG1pZ2h0IGdpdmUgbWUgYSBicm9hZGVyIHBpY3R1cmUgb2Ygd2hlcmUgdGhlc2Ugc2V0dGluZ3MgYXJlIGJlaW5nIHVzZWQgYW5kIGFueSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyMDptZW51Y29uZmlnIEtWTVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTY9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xNy1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MzE6Y29uZmlnIEtWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7TWFpbnRhaW4gY291bnRlcnMgZm9yIENPUDAgYWNjZXNzZXNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI2OmNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzAtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM0OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzg6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zOS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00My1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0NTpjb25maWcgS1ZNX0JPT0szU18zMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9CT09LM1NfNjRcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc182NCBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTc4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODAtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTAxLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTI2OmNvbmZpZyBLVk1fQk9PSzNTX0hWX0VYSVRfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMwLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTYtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTU3OmNvbmZpZyBLVk1fQk9PSzNTX0hWX05FU1RFRF9QTVVfV09SS0FST1VORFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cdGJvb2wgXCYjMzQ7TmVzdGVkIEwwIGhvc3Qgd29ya2Fyb3VuZCBmb3IgTDEgS1ZNIGhvc3QgUE1VIGhhbmRsaW5nIGJ1Z1wmIzM0OyBpZiBFWFBFUlRcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTcxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODQ6Y29uZmlnIEtWTV9CT09LRV9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4NS1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg3OmNvbmZpZyBLVk1fRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0RldGFpbGVkIGV4aXQgdGltaW5nXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTktXHRib29sIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTM6Y29uZmlnIEtWTV9FNTAwTUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTQtXHRib29sIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9NUElDXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVx0Ym9vbCBcJiMzNDtLVk0gaW4ta2VybmVsIE1QSUMgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0MC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQyLVx0Ym9vbCBcJiMzNDtLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTE6Y29uZmlnIEtWTV9YSVZFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUyLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZz0yMj1zb3VyY2UgXCYjMzQ7YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1wmIzM0O1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTIzLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7S1ZNIEd1ZXN0IHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnPTE3PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTIwLVx0ZGVmX3RyaXN0YXRlIHlcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDYtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXHRib29sIFwmIzM0O1VzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTgzOT1zb3VyY2UgXCYjMzQ7YXJjaC94ODYveGVuL0tjb25maWdcJiMzNDtcbmFyY2gveDg2L0tjb25maWctODQwLVxuYXJjaC94ODYvS2NvbmZpZzo4NDE6Y29uZmlnIEtWTV9HVUVTVFxuYXJjaC94ODYvS2NvbmZpZy04NDItXHRib29sIFwmIzM0O0tWTSBHdWVzdCBzdXBwb3J0IChpbmNsdWRpbmcga3ZtY2xvY2spXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4tLVxudmlydC9rdm0vS2NvbmZpZy0zLVxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXG4tLVxudmlydC9rdm0vS2NvbmZpZy00Mi1cbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTQ1LVxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXG52aXJ0L2t2bS9LY29uZmlnLTUxLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuLS1cbnZpcnQva3ZtL0tjb25maWctNjEtXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xudmlydC9rdm0vS2NvbmZpZy02My0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuLS1cbnZpcnQva3ZtL0tjb25maWctNjctXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbnZpcnQva3ZtL0tjb25maWctNjktICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzAtXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXG52aXJ0L2t2bS9LY29uZmlnLTcyLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTczLVxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxudmlydC9rdm0vS2NvbmZpZy03NS0gICAgICAgZGVmX2Jvb2wgeVxuLS1cbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXG4tLVxudmlydC9rdm0vS2NvbmZpZy05My1cbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG52aXJ0L2t2bS9LY29uZmlnLTk1LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xudmlydC9rdm0vS2NvbmZpZy05OC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy05OS1cbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXG52aXJ0L2t2bS9LY29uZmlnLTEwMS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy0xMDItXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcbnZpcnQva3ZtL0tjb25maWctMTA0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcbnZpcnQva3ZtL0tjb25maWctMTA3LSAgICAgICBzZWxlY3QgWEFSUkFZX01VTFRJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExNTIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBFRkVSIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBLVk0gY29uZmlndXJhdGlvbnM6IGBLVk1gLCBgS1ZNX0lOVEVMYCwgYW5kIGBLVk1fQU1EYC4gSG1tLCBgS1ZNYCBpcyBhIHRyaXN0YXRlLCBzbyBsZXQmIzM5O3MganVzdCB1c2UgdGhlIGJhc2UgYEtWTWAgb3B0aW9uLCB0aGF0JiMzOTtzIHRoZSBtb3N0IGdlbmVyYWwuCgpOb3csIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBga3ZtX3ZhbGlkX2VmZXJgIGFuZCBgc2V0X2VmZXJgIHdpdGhpbiBgYXJjaC94ODYva3ZtL21zcnMuY2AuIFRoYXQmIzM5O3MgdGhlIGNvcmUgYXJlYSBvZiBpbnRlcmVzdCBmb3IgRUZFUiBtb2RpZmljYXRpb25zLiBga3ZtX3ZhbGlkX2VmZXJgIGlzIGNhbGxlZCBieSBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AsIHdoaWNoIGdpdmVzIHVzIGEgZ29vZCBwaWN0dXJlIG9mIHdoZXJlIHRoZSB2YWxpZGF0aW9uIHRha2VzIHBsYWNlLiBBbmQgYHNldF9lZmVyYCBpcyBjYWxsZWQgZnJvbSBga3ZtX3NldF9tc3JfY29tbW9uYCwgYWxzbyBpbiBgYXJjaC94ODYva3ZtL21zcnMuY2AuIERpZ2dpbmcgZGVlcGVyLCBgX19zZXRfc3JlZ3NfY29tbW9uYCBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AgYWxzbyBjYWxscyBgc2V0X2VmZXJgLCBzbyBpdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudC4KClRoZXJlZm9yZSwgdGhlIGtleSBzeW1ib2xzIHRoYXQgd2FycmFudCBjbG9zZXIgZXhhbWluYXRpb24gYXJlIGNsZWFybHk6CiogICBga3ZtX3ZhbGlkX2VmZXJgCiogICBgc2V0X2VmZXJgCiogICBga3ZtX2lzX3ZhbGlkX3NyZWdzYAoqICAgYF9fc2V0X3NyZWdzX2NvbW1vbmAKCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIHRoZSBuYW1lcyB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZW0gcmlnaHQuLi55ZXMsIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zLiBTbyBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgY2hlY2sgdGhhdCBgX19zZXRfc3JlZ3NfY29tbW9uYCBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fc2V0X3NyZWdzX2NvbW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vcmVncy5jPTU0ND1zdGF0aWMgYm9vbCBrdm1faXNfdmFsaWRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU2OS1cbmFyY2gveDg2L2t2bS9yZWdzLmM6NTcwOnN0YXRpYyBpbnQgX19zZXRfc3JlZ3NfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3MS1cdFx0XHQgICAgICBpbnQgKm1tdV9yZXNldF9uZWVkZWQsIGJvb2wgdXBkYXRlX3BkcHRycylcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTYzNz1zdGF0aWMgaW50IF9fc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy02NDAtXHRpbnQgbW11X3Jlc2V0X25lZWRlZCA9IDA7XG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY0MTpcdGludCByZXQgPSBfX3NldF9zcmVnc19jb21tb24odmNwdSwgc3JlZ3MsIFx1MDAyNm1tdV9yZXNldF9uZWVkZWQsIHRydWUpO1xuYXJjaC94ODYva3ZtL3JlZ3MuYy02NDItXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYz02Nzg9aW50IGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTY5Mi1cbmFyY2gveDg2L2t2bS9yZWdzLmM6NjkzOlx0cmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIChzdHJ1Y3Qga3ZtX3NyZWdzICopc3JlZ3MyLFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTQtXHRcdFx0XHQgXHUwMDI2bW11X3Jlc2V0X25lZWRlZCwgIXZhbGlkX3BkcHRycyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzMxCgkJCQkJCQlvdXRwdXQ6IDIxNAoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0geDg2IEVGRVIgTVNSIEhhbmRsaW5nIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggaXMgZm9jdXNpbmcgb24gYF9fc2V0X3NyZWdzX2NvbW1vbmAg4oCTIHRoYXQgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSBob3cgaXQgaW1wYWN0cyB0aGUgeDg2IEVGRVIgTVNSIGhhbmRsaW5nIHdpdGhpbiBLVk0uCgpSaWdodCwgYHNldF9lZmVyYCBpcyB3aGF0IEkgbmVlZCB0byBsb29rIGF0LiBBbmQgeWVzLCB0aGVyZSBpdCBpcyBpbiBgYXJjaC94ODYva3ZtL21zcnMuY2AuIEl0JiMzOTtzIHN0YXRpYywgYnV0IGFzIGV4cGVjdGVkLCBga3ZtX3NldF9tc3JfY29tbW9uYCBjYWxscyBpdCBmb3IgYE1TUl9FRkVSYCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbi4gSSBhbHNvIHNlZSB0aGF0IGBrdm1fdmFsaWRfZWZlcmAgaXMgZXhwb3J0ZWQuCgpTbywgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlOgoKKiAgIGBrdm1fdmFsaWRfZWZlcmAKKiAgIGBzZXRfZWZlcmAKKiAgIGBrdm1faXNfdmFsaWRfc3JlZ3NgCiogICBgX19zZXRfc3JlZ3NfY29tbW9uYAoKVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIG5lZWQgY2xvc2Ugc2NydXRpbnkuCgpUaGUgY2hhbmdlcyBpbnZvbHZlIGFsdGVyaW5nIGhvdyBzdXBwb3J0ZWQgRUZFUiBiaXRzIGFyZSBjaGVja2VkIGFuZCBzZXQuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIHJlcGxhY2VzIGBlZmVyX3Jlc2VydmVkX2JpdHNgIHdpdGggYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgLiBUaGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGBzZXR1cF9lZmVyX2NhcHNgIHRvIGBrdm1feDg2X29wc2AuIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCwgYW5kIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCB3aGljaCBhcmUgYWxsIHJlYWNoZWQgZHVyaW5nIFZNIGV4ZWN1dGlvbiBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gbG9naWMsIGFuZCB0aGF0IG1lYW5zIHdlICphYnNvbHV0ZWx5KiBuZWVkIHRvIGluY2x1ZGUgdGhpcyBpbiB0aGUgZnV6emluZyBzdHJhdGVneS4KCk9uZSBtb3JlIHRoaW5nLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgY292ZXJlZCB0aGUgY29uZmlncy4gVGhlIHBhdGNoIGlzIGNsZWFybHkgYWZmZWN0aW5nIHg4Niwgc28gYEtWTWAsIGBLVk1fQU1EYCwgYW5kIGBLVk1fSU5URUxgIGFyZSB1c3VhbGx5IG5lZWRlZCB0byBydW4gS1ZNIG9uIHg4Niwgc28gSSYjMzk7bGwgaW5jbHVkZSB0aGVtLgoKTGV0JiMzOTtzIGxvZyB0aGUgZmluZGluZ3MgYW5kIGdldCB0aGlzIHNldCB1cCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDssCiAgICAmIzM0O3NldF9lZmVyJiMzNDssCiAgICAmIzM0O2t2bV9pc192YWxpZF9zcmVncyYjMzQ7LAogICAgJiMzNDtfX3NldF9zcmVnc19jb21tb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIHg4NiBFRkVSIE1TUiBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGhvdyBzdXBwb3J0ZWQgRUZFUiBiaXRzIGFyZSBjaGVja2VkIGFuZCBzZXQuIEl0IHJlcGxhY2VzIGBlZmVyX3Jlc2VydmVkX2JpdHNgIHdpdGggYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgIGFuZCBpbnRyb2R1Y2VzIGBzZXR1cF9lZmVyX2NhcHNgIHRvIGBrdm1feDg2X29wc2AuIFRoaXMgYWZmZWN0cyBga3ZtX3ZhbGlkX2VmZXJgLCBgc2V0X2VmZXJgLCBhbmQgYGt2bV9pc192YWxpZF9zcmVnc2AsIHdoaWNoIGFyZSByZWFjaGFibGUgZHVyaW5nIFZNIGV4ZWN1dGlvbiBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIEtWTSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9BTUQmIzM0OywKICAgICYjMzQ7S1ZNX0lOVEVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3ZhbGlkX2VmZXImIzM0OywKICAgICYjMzQ7c2V0X2VmZXImIzM0OywKICAgICYjMzQ7a3ZtX2lzX3ZhbGlkX3NyZWdzJiMzNDssCiAgICAmIzM0O19fc2V0X3NyZWdzX2NvbW1vbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0geDg2IEVGRVIgTVNSIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgaG93IHN1cHBvcnRlZCBFRkVSIGJpdHMgYXJlIGNoZWNrZWQgYW5kIHNldC4gSXQgcmVwbGFjZXMgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AgYW5kIGludHJvZHVjZXMgYHNldHVwX2VmZXJfY2Fwc2AgdG8gYGt2bV94ODZfb3BzYC4gVGhpcyBhZmZlY3RzIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGFuZCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFuZCBzdGF0ZSByZXN0b3JhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6Mjg6NTAuMjI3NjE2Njk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM5NTI5NTgxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fdmFsaWRfZWZlclwiLFxuICAgIFwic2V0X2VmZXJcIixcbiAgICBcImt2bV9pc192YWxpZF9zcmVnc1wiLFxuICAgIFwiX19zZXRfc3JlZ3NfY29tbW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIHg4NiBFRkVSIE1TUiBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGhvdyBzdXBwb3J0ZWQgRUZFUiBiaXRzIGFyZSBjaGVja2VkIGFuZCBzZXQuIEl0IHJlcGxhY2VzIGBlZmVyX3Jlc2VydmVkX2JpdHNgIHdpdGggYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgIGFuZCBpbnRyb2R1Y2VzIGBzZXR1cF9lZmVyX2NhcHNgIHRvIGBrdm1feDg2X29wc2AuIFRoaXMgYWZmZWN0cyBga3ZtX3ZhbGlkX2VmZXJgLCBgc2V0X2VmZXJgLCBhbmQgYGt2bV9pc192YWxpZF9zcmVnc2AsIHdoaWNoIGFyZSByZWFjaGFibGUgZHVyaW5nIFZNIGV4ZWN1dGlvbiBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIEtWTSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6Mjg6NTAuMjI3NjIxODI1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMzNDMzNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiYWE1NjNjODYzNWU2ZjE3ZDIzOTg3MmVmM2FjMzQxNzJmMGM4NWZkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDEgMDY6Mjg6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcXG5pbmRleCA4M2RjNTA4NjEzOGIzOS4uZDU4NzI0MmRjYWI1NjEgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaFxcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcXG5AQCAtNDUsNiArNDUsNyBAQCBLVk1fWDg2X09QX09QVElPTkFMKHBvc3Rfc2V0X2NyMylcXG4gS1ZNX1g4Nl9PUChpc192YWxpZF9jcjQpXFxuIEtWTV9YODZfT1Aoc2V0X2NyNClcXG4gS1ZNX1g4Nl9PUChzZXRfZWZlcilcXG4rS1ZNX1g4Nl9PUF9PUFRJT05BTChzZXR1cF9lZmVyX2NhcHMpXFxuIEtWTV9YODZfT1AoZ2V0X2lkdClcXG4gS1ZNX1g4Nl9PUChzZXRfaWR0KVxcbiBLVk1fWDg2X09QKGdldF9nZHQpXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuaW5kZXggZDg3MDBlYjg0OGI0NTIuLjQwYmUzOWZlYTM5YjljIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTMyOSw2ICszMjksOCBAQCBzdHJ1Y3Qga3ZtX2NhcHMge1xcbiBcXHR1NjQgc3VwcG9ydGVkX3hzcztcXG4gXFx0dTY0IHN1cHBvcnRlZF9wZXJmX2NhcDtcXG4gXFxuK1xcdHU2NCBzdXBwb3J0ZWRfZWZlcl9iaXRzO1xcbitcXG4gXFx0dTY0IHN1cHBvcnRlZF9xdWlya3M7XFxuIFxcdHU2NCBpbmFwcGxpY2FibGVfcXVpcmtzO1xcbiB9O1xcbkBAIC0xNzMwLDYgKzE3MzIsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xcbiBcXHRib29sICgqaXNfdmFsaWRfY3I0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3I0KTtcXG4gXFx0dm9pZCAoKnNldF9jcjQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpO1xcbiBcXHRpbnQgKCpzZXRfZWZlcikoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuK1xcdHZvaWQgKCpzZXR1cF9lZmVyX2NhcHMpKHZvaWQpO1xcbiBcXHR2b2lkICgqZ2V0X2lkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTtcXG4gXFx0dm9pZCAoKnNldF9pZHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGRlc2NfcHRyICpkdCk7XFxuIFxcdHZvaWQgKCpnZXRfZ2R0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5jIGIvYXJjaC94ODYva3ZtL21zcnMuY1xcbmluZGV4IGMyMzBiMThkODdlMzhlLi5hMzljNzMwODhmMWZiMiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5jXFxuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuY1xcbkBAIC0xOSwxNyArMTksNiBAQCBib29sIF9fcmVhZF9tb3N0bHkgcmVwb3J0X2lnbm9yZWRfbXNycyA9IHRydWU7XFxuIG1vZHVsZV9wYXJhbShyZXBvcnRfaWdub3JlZF9tc3JzLCBib29sLCAwNjQ0KTtcXG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xcbiBcXG4tLyogRUZFUiBkZWZhdWx0czpcXG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cXG4tICogLSBlbmFibGUgTE1FIGFuZCBMTUEgcGVyIGRlZmF1bHQgb24gNjQgYml0IEtWTVxcbi0gKi9cXG4tI2lmZGVmIENPTkZJR19YODZfNjRcXG4tc3RhdGljXFxuLXU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NCkoRUZFUl9TQ0UgfCBFRkVSX0xNRSB8IEVGRVJfTE1BKSk7XFxuLSNlbHNlXFxuLXN0YXRpYyB1NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpRUZFUl9TQ0UpO1xcbi0jZW5kaWZcXG4tXFxuICNkZWZpbmUgTUFYX0lPX01TUlMgMjU2XFxuIFxcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XFxuQEAgLTYxNCw3ICs2MDMsNyBAQCBzdGF0aWMgYm9vbCBfX2t2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXFxuIH1cXG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbiB7XFxuLVxcdGlmIChlZmVyIFxcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxcbitcXHRpZiAoIShlZmVyIFxcdTAwMjYga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cykpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdHJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpO1xcbkBAIC02MjcsNyArNjE2LDcgQEAgc3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXFxuIFxcdHU2NCBlZmVyID0gbXNyX2luZm8tXFx1MDAzZWRhdGE7XFxuIFxcdGludCByO1xcbiBcXG4tXFx0aWYgKGVmZXIgXFx1MDAyNiBlZmVyX3Jlc2VydmVkX2JpdHMpXFxuK1xcdGlmICghKGVmZXIgXFx1MDAyNiBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzKSlcXG4gXFx0XFx0cmV0dXJuIDE7XFxuIFxcbiBcXHRpZiAoIW1zcl9pbmZvLVxcdTAwM2Vob3N0X2luaXRpYXRlZCkge1xcbkBAIC02NTgsMTIgKzY0Nyw2IEBAIHN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tdm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQgbWFzaylcXG4te1xcbi0gICAgICAgZWZlcl9yZXNlcnZlZF9iaXRzIFxcdTAwMjY9IH5tYXNrO1xcbi19XFxuLUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fZW5hYmxlX2VmZXJfYml0cyk7XFxuLVxcbiBib29sIGt2bV9tc3JfYWxsb3dlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTMyIHR5cGUpXFxuIHtcXG4gXFx0c3RydWN0IGt2bV94ODZfbXNyX2ZpbHRlciAqbXNyX2ZpbHRlcjtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmhcXG5pbmRleCBiNjk4OTgzZTM3ZmI2MS4uODlmMTA0NDdjZGRkZjkgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuaFxcbisrKyBiL2FyY2gveDg2L2t2bS9tc3JzLmhcXG5AQCAtNTksNiArNTksNyBAQCBpbnQga3ZtX2dldF9yZWdfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdCAgICAgc3RydWN0IGt2bV9yZWdfbGlzdCBfX3VzZXIgKnVzZXJfbGlzdCk7XFxuIFxcbiB2b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7XFxuK3ZvaWQga3ZtX2Rpc2FibGVfZWZlcl9iaXRzKHU2NCk7XFxuIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuIGludCBrdm1fZW11bGF0ZV9tc3JfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0ICpkYXRhKTtcXG4gaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcmVncy5jIGIvYXJjaC94ODYva3ZtL3JlZ3MuY1xcbmluZGV4IGQyY2FmNWE2N2RiYTQwLi45NGM0ZTRlNDE4NjhmYyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vcmVncy5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3JlZ3MuY1xcbkBAIC01NjMsNyArNTYzLDggQEAgc3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBrdm1faXNfdmFsaWRfY3I0KHZjcHUsIHNyZWdzLVxcdTAwM2VjcjQpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVxcdTAwM2VjcjApO1xcbitcXHQgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy1cXHUwMDNlY3IwKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtXFx1MDAzZWVmZXIpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbmluZGV4IGVmNjlhNTFhYjI3Zjk4Li5lNzU1ZjQzZjQzNzZlZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbkBAIC0yNzQsNiArMjc0LDE1IEBAIGludCBzdm1fc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHN2bV9zZXR1cF9lZmVyX2NhcHModm9pZClcXG4re1xcbitcXHRpZiAobmVzdGVkKSB7XFxuK1xcdFxcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9TVk1FO1xcbitcXHRcXHRpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9FRkVSX0xNU0xFX01CWikpXFxuK1xcdFxcdFxcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9MTVNMRTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdTMyIHN2bV9nZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4gXFx0c3RydWN0IHZjcHVfc3ZtICpzdm0gPSB0b19zdm0odmNwdSk7XFxuQEAgLTUzNjQsNiArNTM3Myw3IEBAIHN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbiBcXHQuaXNfdmFsaWRfY3I0ID0gc3ZtX2lzX3ZhbGlkX2NyNCxcXG4gXFx0LnNldF9jcjQgPSBzdm1fc2V0X2NyNCxcXG4gXFx0LnNldF9lZmVyID0gc3ZtX3NldF9lZmVyLFxcbitcXHQuc2V0dXBfZWZlcl9jYXBzID0gc3ZtX3NldHVwX2VmZXJfY2FwcyxcXG4gXFx0LmdldF9pZHQgPSBzdm1fZ2V0X2lkdCxcXG4gXFx0LnNldF9pZHQgPSBzdm1fc2V0X2lkdCxcXG4gXFx0LmdldF9nZHQgPSBzdm1fZ2V0X2dkdCxcXG5AQCAtNTYzOCwxMCArNTY0OCw2IEBAIHN0YXRpYyBfX2luaXQgaW50IHN2bV9oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbiBcXG4gXFx0aWYgKG5lc3RlZCkge1xcbiBcXHRcXHRwcl9pbmZvKFxcXCJOZXN0ZWQgVmlydHVhbGl6YXRpb24gZW5hYmxlZFxcXFxuXFxcIik7XFxuLVxcdFxcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfU1ZNRSk7XFxuLVxcdFxcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSlcXG4tXFx0XFx0XFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9MTVNMRSk7XFxuLVxcbiBcXHRcXHRyID0gbmVzdGVkX3N2bV9pbml0X21zcnBtX21lcmdlX29mZnNldHMoKTtcXG4gXFx0XFx0aWYgKHIpXFxuIFxcdFxcdFxcdHJldHVybiByO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCA4ZGJjMGZhMzAyYThiNS4uNWNlZGFhODQwOWY4ZGYgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuQEAgLTY4OTIsMTQgKzY4OTIsMjIgQEAgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXR1cF94c3NfY2Fwcyk7XFxuIFxcbiBzdGF0aWMgdm9pZCBrdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpXFxuIHtcXG4rXFx0LyogRW5hYmxlIHN5c2NhbGwgYnkgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk0gKi9cXG4rXFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyA9ICh1NjQpRUZFUl9TQ0U7XFxuK1xcbitcXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0xNKSlcXG4rXFx0XFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XFxuK1xcbiBcXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX05YKSlcXG4tXFx0XFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9OWCk7XFxuK1xcdFxcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9OWDtcXG4gXFxuIFxcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfRlhTUl9PUFQpKVxcbi1cXHRcXHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0ZGWFNSKTtcXG4rXFx0XFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0ZGWFNSO1xcbiBcXG4gXFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpXFxuLVxcdFxcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfQVVUT0lCUlMpO1xcbitcXHRcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfQVVUT0lCUlM7XFxuK1xcbitcXHRrdm1feDg2X2NhbGwoc2V0dXBfZWZlcl9jYXBzKSgpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX29wc191cGRhdGUoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcXG5AQCAtNzAzOCwxMyArNzA0NiwxMyBAQCBpbnQga3ZtX3g4Nl92ZW5kb3JfaW5pdChzdHJ1Y3Qga3ZtX3g4Nl9pbml0X29wcyAqb3BzKVxcbiBcXHRpZiAociAhPSAwKVxcbiBcXHRcXHRnb3RvIG91dF9tbXVfZXhpdDtcXG4gXFxuLVxcdGt2bV9zZXR1cF9lZmVyX2NhcHMoKTtcXG4tXFxuIFxcdGVuYWJsZV9kZXZpY2VfcG9zdGVkX2lycXMgXFx1MDAyNj0gZW5hYmxlX2FwaWN2IFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdFxcdCAgICAgaXJxX3JlbWFwcGluZ19jYXAoSVJRX1BPU1RJTkdfQ0FQKTtcXG4gXFxuIFxcdGt2bV9vcHNfdXBkYXRlKG9wcyk7XFxuIFxcbitcXHRrdm1fc2V0dXBfZWZlcl9jYXBzKCk7XFxuK1xcbiBcXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xcbiBcXHRcXHRzbXBfY2FsbF9mdW5jdGlvbl9zaW5nbGUoY3B1LCBrdm1feDg2X2NoZWNrX2NwdV9jb21wYXQsIFxcdTAwMjZyLCAxKTtcXG4gXFx0XFx0aWYgKHIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcXG5pbmRleCA3ZDNhMjdiYzBkODQyYS4uYjE2MTE3NGVjZTQ1MzEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXFxuQEAgLTIwOCw2ICsyMDgsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XFxuICNkZWZpbmVcXHRYODZfRkVBVFVSRV9QRVJGQ1RSX05CXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI0KVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9MTENcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVDWCwgMjgpXFxuICNkZWZpbmVcXHRYODZfRkVBVFVSRV9OWFxcdFxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyMClcXG4rI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0ZYU1JfT1BUXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI1KVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfR0JQQUdFU1xcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNilcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX1JEVFNDUFxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNylcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0xNXFx0XFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI5KVxcbkBAIC0yMjYsNiArMjI3LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUge1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVlxcdFxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAxRiwgMCwgRUFYLCAxKVxcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9FU1xcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAxRiwgMCwgRUFYLCAzKVxcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9TTlBcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgNClcXG4rI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0FVVE9JQlJTXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDgpXFxuICNkZWZpbmVcXHRYODZfRkVBVFVSRV9HUF9PTl9VU0VSX0NQVUlEXFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDE3KVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfUEVSRk1PTl9WMlxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMiwgMCwgRUFYLCAwKVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfTEJSX1BNQ19GUkVFWkVcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMilcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jXFxuaW5kZXggOGU2NTRjYzlhYjE2ODcuLjU2MmFmYWIzNzhkMTFlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xcbkBAIC0yMSwyMCArMjEsMjAgQEBcXG4gI2luY2x1ZGUgXFxcImt2bV91dGlsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJwcm9jZXNzb3IuaFxcXCJcXG4gXFxuLSNkZWZpbmUgVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjciwgb3JpZywgYml0KVxcdFxcdFxcdFxcdFxcXFxcXG4rI2RlZmluZSBURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgcmVnLCBvcmlnLCBiaXQpXFx0XFx0XFx0XFx0XFxcXFxcbiBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRzdHJ1Y3Qga3ZtX3NyZWdzIG5ldztcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGludCByYztcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0LyogU2tpcCB0aGUgc3ViLXRlc3QsIHRoZSBmZWF0dXJlL2JpdCBpcyBzdXBwb3J0ZWQuICovXFx0XFx0XFx0XFxcXFxcbi1cXHRpZiAob3JpZy5jciBcXHUwMDI2IGJpdClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmIChvcmlnLnJlZyBcXHUwMDI2IGJpdClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdGJyZWFrO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRtZW1jcHkoXFx1MDAyNm5ldywgXFx1MDAyNm9yaWcsIHNpemVvZihzcmVncykpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0bmV3LmNyIHw9IGJpdDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG1lbWNweShcXHUwMDI2bmV3LCBcXHUwMDI2b3JpZywgc2l6ZW9mKG5ldykpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0bmV3LnJlZyB8PSBiaXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsIFxcdTAwMjZuZXcpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0VEVTVF9BU1NFUlQocmMsIFxcXCJLVk0gYWxsb3dlZCBpbnZhbGlkIFxcXCIgI2NyIFxcXCIgYml0ICgweCVseClcXFwiLCBiaXQpO1xcdFxcXFxcXG4rXFx0VEVTVF9BU1NFUlQocmMsIFxcXCJLVk0gYWxsb3dlZCBpbnZhbGlkIFxcXCIgI3JlZyBcXFwiIGJpdCAoMHglbGx4KVxcXCIsICh1bnNpZ25lZCBsb25nIGxvbmcpYml0KTsgXFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdC8qIFNhbml0eSBjaGVjayB0aGF0IEtWTSBkaWRuJ3QgY2hhbmdlIGFueXRoaW5nLiAqL1xcdFxcdFxcdFxcXFxcXG4gXFx0dmNwdV9zcmVnc19nZXQodmNwdSwgXFx1MDAyNm5ldyk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbkBAIC00Niw2ICs0Niw4IEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFg4Nl9DUjRfTUNFIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRYODZfQ1I0X09TRlhTUiB8IFg4Nl9DUjRfT1NYTU1FWENQVClcXG4gXFxuKyNkZWZpbmUgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIgRUZFUl9TQ0VcXG4rXFxuIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKVxcbiB7XFxuIFxcdHU2NCBjcjQgPSBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0O1xcbkBAIC03NCw2ICs3NiwyNCBAQCBzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHModm9pZClcXG4gXFx0cmV0dXJuIGNyNDtcXG4gfVxcbiBcXG4rc3RhdGljIHU2NCBjYWxjX3N1cHBvcnRlZF9lZmVyX2ZlYXR1cmVfYml0cyh2b2lkKVxcbit7XFxuK1xcdHU2NCBlZmVyID0gS1ZNX0FMV0FZU19BTExPV0VEX0VGRVI7XFxuK1xcbitcXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTE0pKVxcbitcXHRcXHRlZmVyIHw9IChFRkVSX0xNRSB8IEVGRVJfTE1BKTtcXG4rXFx0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX05YKSlcXG4rXFx0XFx0ZWZlciB8PSBFRkVSX05YO1xcbitcXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSlcXG4rXFx0XFx0ZWZlciB8PSBFRkVSX1NWTUU7XFxuK1xcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpXFxuK1xcdFxcdGVmZXIgfD0gRUZFUl9GRlhTUjtcXG4rXFx0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcXG4rXFx0XFx0ZWZlciB8PSBFRkVSX0FVVE9JQlJTO1xcbitcXG4rXFx0cmV0dXJuIGVmZXI7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpXFxuIHtcXG4gXFx0c3RydWN0IGt2bV9zcmVncyBzcmVncztcXG5AQCAtOTYsMjYgKzExNiw0NSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2NyX2JpdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgY3I0KVxcbiBcXHRcXHQgICAgKHNyZWdzLmNyNCBcXHUwMDI2IFg4Nl9DUjRfUEtFKSA/IFxcXCJzZXRcXFwiIDogXFxcImNsZWFyXFxcIik7XFxuIFxcbiBcXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcXHUwMDI2c3JlZ3MpO1xcbi1cXHRURVNUX0FTU0VSVChzcmVncy5jcjQgPT0gY3I0LCBcXFwic3JlZ3MuQ1I0ICgweCVsbHgpICE9IENSNCAoMHglbHgpXFxcIixcXG4tXFx0XFx0ICAgIHNyZWdzLmNyNCwgY3I0KTtcXG4tXFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0xBNTcpO1xcbi1cXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0ZTR1NCQVNFKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xcbi1cXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01FUCk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XFxuK1xcdFRFU1RfQVNTRVJUX0VRKHNyZWdzLmNyNCwgY3I0KTtcXG4rXFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1VNSVApO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNWEUpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfT1NYU0FWRSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUEtFKTtcXG4gXFxuIFxcdGZvciAoaSA9IDMyOyBpIFxcdTAwM2MgNjQ7IGkrKylcXG4tXFx0XFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBCSVQoaSkpO1xcbitcXHRcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTtcXG4gXFxuIFxcdC8qIE5XIHdpdGhvdXQgQ0QgaXMgaWxsZWdhbCwgYXMgaXMgUEcgd2l0aG91dCBQRS4gKi9cXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX05XKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9QRyk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfZWZlcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXFxuK3tcXG4rXFx0c3RydWN0IGt2bV9zcmVncyBzcmVncztcXG4rXFx0aW50IHJjO1xcbitcXG4rXFx0dmNwdV9zcmVnc19nZXQodmNwdSwgXFx1MDAyNnNyZWdzKTtcXG4rXFx0c3JlZ3MuZWZlciB8PSBlZmVyO1xcbitcXHRyYyA9IF92Y3B1X3NyZWdzX3NldCh2Y3B1LCBcXHUwMDI2c3JlZ3MpO1xcbitcXHRURVNUX0FTU0VSVCghcmMsIFxcXCJGYWlsZWQgdG8gc2V0IHN1cHBvcnRlZCBFRkVSIGJpdHMgKDB4JWxseClcXFwiLCBzcmVncy5lZmVyKTtcXG4rXFxuK1xcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFxcdTAwMjZzcmVncyk7XFxuK1xcdFRFU1RfQVNTRVJUX0VRKHNyZWdzLmVmZXIsIGVmZXIpO1xcbitcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0xNRSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9OWCk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9TVk1FKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0ZGWFNSKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0FVVE9JQlJTKTtcXG4gfVxcbiBcXG4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG5AQCAtMTMyLDYgKzE3MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuIFxcdCAqL1xcbiBcXHR2bSA9IHZtX2NyZWF0ZV9iYXJlYm9uZXMoKTtcXG4gXFx0dmNwdSA9IF9fdm1fdmNwdV9hZGQodm0sIDApO1xcbitcXHR0ZXN0X2VmZXJfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUik7XFxuIFxcdHRlc3RfY3JfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0KTtcXG4gXFx0a3ZtX3ZtX2ZyZWUodm0pO1xcbiBcXG5AQCAtMTUxLDYgKzE5MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuIFxcdFxcdCAgICBzcmVncy5hcGljX2Jhc2UpO1xcbiBcXG4gXFx0dGVzdF9jcl9iaXRzKHZjcHUsIGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHMoKSk7XFxuK1xcdHRlc3RfZWZlcl9iaXRzKHZjcHUsIGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKCkpO1xcbiBcXG4gXFx0a3ZtX3ZtX2ZyZWUodm0pO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6Mjg6NTAuNzAxNzM1MTk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQ3ODgzMDYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92YWxpZF9lZmVyXCIsXG4gICAgXCJzZXRfZWZlclwiLFxuICAgIFwia3ZtX2lzX3ZhbGlkX3NyZWdzXCIsXG4gICAgXCJfX3NldF9zcmVnc19jb21tb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0geDg2IEVGRVIgTVNSIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgaG93IHN1cHBvcnRlZCBFRkVSIGJpdHMgYXJlIGNoZWNrZWQgYW5kIHNldC4gSXQgcmVwbGFjZXMgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AgYW5kIGludHJvZHVjZXMgYHNldHVwX2VmZXJfY2Fwc2AgdG8gYGt2bV94ODZfb3BzYC4gVGhpcyBhZmZlY3RzIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGFuZCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFuZCBzdGF0ZSByZXN0b3JhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJhYTU2M2M4NjM1ZTZmMTdkMjM5ODcyZWYzYWMzNDE3MmYwYzg1ZmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA2OjI4OjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcbmluZGV4IDgzZGM1MDg2MTM4YjM5Li5kNTg3MjQyZGNhYjU2MSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcbkBAIC00NSw2ICs0NSw3IEBAIEtWTV9YODZfT1BfT1BUSU9OQUwocG9zdF9zZXRfY3IzKVxuIEtWTV9YODZfT1AoaXNfdmFsaWRfY3I0KVxuIEtWTV9YODZfT1Aoc2V0X2NyNClcbiBLVk1fWDg2X09QKHNldF9lZmVyKVxuK0tWTV9YODZfT1BfT1BUSU9OQUwoc2V0dXBfZWZlcl9jYXBzKVxuIEtWTV9YODZfT1AoZ2V0X2lkdClcbiBLVk1fWDg2X09QKHNldF9pZHQpXG4gS1ZNX1g4Nl9PUChnZXRfZ2R0KVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCBkODcwMGViODQ4YjQ1Mi4uNDBiZTM5ZmVhMzliOWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMzI5LDYgKzMyOSw4IEBAIHN0cnVjdCBrdm1fY2FwcyB7XG4gXHR1NjQgc3VwcG9ydGVkX3hzcztcbiBcdHU2NCBzdXBwb3J0ZWRfcGVyZl9jYXA7XG4gXG4rXHR1NjQgc3VwcG9ydGVkX2VmZXJfYml0cztcbitcbiBcdHU2NCBzdXBwb3J0ZWRfcXVpcmtzO1xuIFx0dTY0IGluYXBwbGljYWJsZV9xdWlya3M7XG4gfTtcbkBAIC0xNzMwLDYgKzE3MzIsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xuIFx0Ym9vbCAoKmlzX3ZhbGlkX2NyNCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCk7XG4gXHR2b2lkICgqc2V0X2NyNCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCk7XG4gXHRpbnQgKCpzZXRfZWZlcikoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG4rXHR2b2lkICgqc2V0dXBfZWZlcl9jYXBzKSh2b2lkKTtcbiBcdHZvaWQgKCpnZXRfaWR0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xuIFx0dm9pZCAoKnNldF9pZHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGRlc2NfcHRyICpkdCk7XG4gXHR2b2lkICgqZ2V0X2dkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5jIGIvYXJjaC94ODYva3ZtL21zcnMuY1xuaW5kZXggYzIzMGIxOGQ4N2UzOGUuLmEzOWM3MzA4OGYxZmIyIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuY1xuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuY1xuQEAgLTE5LDE3ICsxOSw2IEBAIGJvb2wgX19yZWFkX21vc3RseSByZXBvcnRfaWdub3JlZF9tc3JzID0gdHJ1ZTtcbiBtb2R1bGVfcGFyYW0ocmVwb3J0X2lnbm9yZWRfbXNycywgYm9vbCwgMDY0NCk7XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xuIFxuLS8qIEVGRVIgZGVmYXVsdHM6XG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cbi0gKiAtIGVuYWJsZSBMTUUgYW5kIExNQSBwZXIgZGVmYXVsdCBvbiA2NCBiaXQgS1ZNXG4tICovXG4tI2lmZGVmIENPTkZJR19YODZfNjRcbi1zdGF0aWNcbi11NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpKEVGRVJfU0NFIHwgRUZFUl9MTUUgfCBFRkVSX0xNQSkpO1xuLSNlbHNlXG4tc3RhdGljIHU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NClFRkVSX1NDRSk7XG4tI2VuZGlmXG4tXG4gI2RlZmluZSBNQVhfSU9fTVNSUyAyNTZcbiBcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XG5AQCAtNjE0LDcgKzYwMyw3IEBAIHN0YXRpYyBib29sIF9fa3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbiB9XG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuIHtcbi1cdGlmIChlZmVyIFx1MDAyNiBlZmVyX3Jlc2VydmVkX2JpdHMpXG4rXHRpZiAoIShlZmVyIFx1MDAyNiBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0cmV0dXJuIF9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcik7XG5AQCAtNjI3LDcgKzYxNiw3IEBAIHN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuIFx0dTY0IGVmZXIgPSBtc3JfaW5mby1cdTAwM2VkYXRhO1xuIFx0aW50IHI7XG4gXG4tXHRpZiAoZWZlciBcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxuK1x0aWYgKCEoZWZlciBcdTAwMjYga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cykpXG4gXHRcdHJldHVybiAxO1xuIFxuIFx0aWYgKCFtc3JfaW5mby1cdTAwM2Vob3N0X2luaXRpYXRlZCkge1xuQEAgLTY1OCwxMiArNjQ3LDYgQEAgc3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tdm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQgbWFzaylcbi17XG4tICAgICAgIGVmZXJfcmVzZXJ2ZWRfYml0cyBcdTAwMjY9IH5tYXNrO1xuLX1cbi1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2VuYWJsZV9lZmVyX2JpdHMpO1xuLVxuIGJvb2wga3ZtX21zcl9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1MzIgdHlwZSlcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3g4Nl9tc3JfZmlsdGVyICptc3JfZmlsdGVyO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tc3JzLmggYi9hcmNoL3g4Ni9rdm0vbXNycy5oXG5pbmRleCBiNjk4OTgzZTM3ZmI2MS4uODlmMTA0NDdjZGRkZjkgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5oXG4rKysgYi9hcmNoL3g4Ni9rdm0vbXNycy5oXG5AQCAtNTksNiArNTksNyBAQCBpbnQga3ZtX2dldF9yZWdfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRcdCAgICAgc3RydWN0IGt2bV9yZWdfbGlzdCBfX3VzZXIgKnVzZXJfbGlzdCk7XG4gXG4gdm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQpO1xuK3ZvaWQga3ZtX2Rpc2FibGVfZWZlcl9iaXRzKHU2NCk7XG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcbiBpbnQga3ZtX2VtdWxhdGVfbXNyX3JlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHU2NCAqZGF0YSk7XG4gaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9yZWdzLmMgYi9hcmNoL3g4Ni9rdm0vcmVncy5jXG5pbmRleCBkMmNhZjVhNjdkYmE0MC4uOTRjNGU0ZTQxODY4ZmMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vcmVncy5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vcmVncy5jXG5AQCAtNTYzLDcgKzU2Myw4IEBAIHN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuIFx0fVxuIFxuIFx0cmV0dXJuIGt2bV9pc192YWxpZF9jcjQodmNwdSwgc3JlZ3MtXHUwMDNlY3I0KSBcdTAwMjZcdTAwMjZcbi1cdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVx1MDAzZWNyMCk7XG4rXHQgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy1cdTAwM2VjcjApIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgIGt2bV92YWxpZF9lZmVyKHZjcHUsIHNyZWdzLVx1MDAzZWVmZXIpO1xuIH1cbiBcbiBzdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCBlZjY5YTUxYWIyN2Y5OC4uZTc1NWY0M2Y0Mzc2ZWUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtMjc0LDYgKzI3NCwxNSBAQCBpbnQgc3ZtX3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgc3ZtX3NldHVwX2VmZXJfY2Fwcyh2b2lkKVxuK3tcbitcdGlmIChuZXN0ZWQpIHtcbitcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX1NWTUU7XG4rXHRcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSlcbitcdFx0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyB1MzIgc3ZtX2dldF9pbnRlcnJ1cHRfc2hhZG93KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTtcbkBAIC01MzY0LDYgKzUzNzMsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbiBcdC5pc192YWxpZF9jcjQgPSBzdm1faXNfdmFsaWRfY3I0LFxuIFx0LnNldF9jcjQgPSBzdm1fc2V0X2NyNCxcbiBcdC5zZXRfZWZlciA9IHN2bV9zZXRfZWZlcixcbitcdC5zZXR1cF9lZmVyX2NhcHMgPSBzdm1fc2V0dXBfZWZlcl9jYXBzLFxuIFx0LmdldF9pZHQgPSBzdm1fZ2V0X2lkdCxcbiBcdC5zZXRfaWR0ID0gc3ZtX3NldF9pZHQsXG4gXHQuZ2V0X2dkdCA9IHN2bV9nZXRfZ2R0LFxuQEAgLTU2MzgsMTAgKzU2NDgsNiBAQCBzdGF0aWMgX19pbml0IGludCBzdm1faGFyZHdhcmVfc2V0dXAodm9pZClcbiBcbiBcdGlmIChuZXN0ZWQpIHtcbiBcdFx0cHJfaW5mbyhcIk5lc3RlZCBWaXJ0dWFsaXphdGlvbiBlbmFibGVkXFxuXCIpO1xuLVx0XHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX1NWTUUpO1xuLVx0XHRpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9FRkVSX0xNU0xFX01CWikpXG4tXHRcdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9MTVNMRSk7XG4tXG4gXHRcdHIgPSBuZXN0ZWRfc3ZtX2luaXRfbXNycG1fbWVyZ2Vfb2Zmc2V0cygpO1xuIFx0XHRpZiAocilcbiBcdFx0XHRyZXR1cm4gcjtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IDhkYmMwZmEzMDJhOGI1Li41Y2VkYWE4NDA5ZjhkZiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtNjg5MiwxNCArNjg5MiwyMiBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NldHVwX3hzc19jYXBzKTtcbiBcbiBzdGF0aWMgdm9pZCBrdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpXG4ge1xuK1x0LyogRW5hYmxlIHN5c2NhbGwgYnkgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk0gKi9cbitcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgPSAodTY0KUVGRVJfU0NFO1xuK1xuK1x0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9MTSkpXG4rXHRcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gKEVGRVJfTE1FIHwgRUZFUl9MTUEpO1xuK1xuIFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9OWCkpXG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfTlgpO1xuK1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTlg7XG4gXG4gXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0ZYU1JfT1BUKSlcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9GRlhTUik7XG4rXHRcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9GRlhTUjtcbiBcbiBcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKVxuLVx0XHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0FVVE9JQlJTKTtcbitcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0FVVE9JQlJTO1xuK1xuK1x0a3ZtX3g4Nl9jYWxsKHNldHVwX2VmZXJfY2FwcykoKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV9vcHNfdXBkYXRlKHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXG5AQCAtNzAzOCwxMyArNzA0NiwxMyBAQCBpbnQga3ZtX3g4Nl92ZW5kb3JfaW5pdChzdHJ1Y3Qga3ZtX3g4Nl9pbml0X29wcyAqb3BzKVxuIFx0aWYgKHIgIT0gMClcbiBcdFx0Z290byBvdXRfbW11X2V4aXQ7XG4gXG4tXHRrdm1fc2V0dXBfZWZlcl9jYXBzKCk7XG4tXG4gXHRlbmFibGVfZGV2aWNlX3Bvc3RlZF9pcnFzIFx1MDAyNj0gZW5hYmxlX2FwaWN2IFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgICBpcnFfcmVtYXBwaW5nX2NhcChJUlFfUE9TVElOR19DQVApO1xuIFxuIFx0a3ZtX29wc191cGRhdGUob3BzKTtcbiBcbitcdGt2bV9zZXR1cF9lZmVyX2NhcHMoKTtcbitcbiBcdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XG4gXHRcdHNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZShjcHUsIGt2bV94ODZfY2hlY2tfY3B1X2NvbXBhdCwgXHUwMDI2ciwgMSk7XG4gXHRcdGlmIChyIFx1MDAzYyAwKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuaW5kZXggN2QzYTI3YmMwZDg0MmEuLmIxNjExNzRlY2U0NTMxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbkBAIC0yMDgsNiArMjA4LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUge1xuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZDVFJfTkJcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI0KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZDVFJfTExDXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyOClcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9OWFx0XHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyMClcbisjZGVmaW5lXHRYODZfRkVBVFVSRV9GWFNSX09QVFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjUpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfR0JQQUdFU1x0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjYpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUkRUU0NQXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNylcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9MTVx0XHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyOSlcbkBAIC0yMjYsNiArMjI3LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUge1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWXHRcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDEpXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZfRVNcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDMpXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZfU05QXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAxRiwgMCwgRUFYLCA0KVxuKyNkZWZpbmVcdFg4Nl9GRUFUVVJFX0FVVE9JQlJTXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCA4KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0dQX09OX1VTRVJfQ1BVSURcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCAxNylcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9QRVJGTU9OX1YyXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMiwgMCwgRUFYLCAwKVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0xCUl9QTUNfRlJFRVpFXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcbmluZGV4IDhlNjU0Y2M5YWIxNjg3Li41NjJhZmFiMzc4ZDExZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jXG5AQCAtMjEsMjAgKzIxLDIwIEBAXG4gI2luY2x1ZGUgXCJrdm1fdXRpbC5oXCJcbiAjaW5jbHVkZSBcInByb2Nlc3Nvci5oXCJcbiBcbi0jZGVmaW5lIFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IsIG9yaWcsIGJpdClcdFx0XHRcdFxcXG4rI2RlZmluZSBURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgcmVnLCBvcmlnLCBiaXQpXHRcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3Qga3ZtX3NyZWdzIG5ldztcdFx0XHRcdFx0XHRcdFxcXG4gXHRpbnQgcmM7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHQvKiBTa2lwIHRoZSBzdWItdGVzdCwgdGhlIGZlYXR1cmUvYml0IGlzIHN1cHBvcnRlZC4gKi9cdFx0XHRcXFxuLVx0aWYgKG9yaWcuY3IgXHUwMDI2IGJpdClcdFx0XHRcdFx0XHRcdFxcXG4rXHRpZiAob3JpZy5yZWcgXHUwMDI2IGJpdClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdGJyZWFrO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdG1lbWNweShcdTAwMjZuZXcsIFx1MDAyNm9yaWcsIHNpemVvZihzcmVncykpO1x0XHRcdFx0XHRcXFxuLVx0bmV3LmNyIHw9IGJpdDtcdFx0XHRcdFx0XHRcdFx0XFxcbitcdG1lbWNweShcdTAwMjZuZXcsIFx1MDAyNm9yaWcsIHNpemVvZihuZXcpKTtcdFx0XHRcdFx0XFxcbitcdG5ldy5yZWcgfD0gYml0O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsIFx1MDAyNm5ldyk7XHRcdFx0XHRcdFxcXG4tXHRURVNUX0FTU0VSVChyYywgXCJLVk0gYWxsb3dlZCBpbnZhbGlkIFwiICNjciBcIiBiaXQgKDB4JWx4KVwiLCBiaXQpO1x0XFxcbitcdFRFU1RfQVNTRVJUKHJjLCBcIktWTSBhbGxvd2VkIGludmFsaWQgXCIgI3JlZyBcIiBiaXQgKDB4JWxseClcIiwgKHVuc2lnbmVkIGxvbmcgbG9uZyliaXQpOyBcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdC8qIFNhbml0eSBjaGVjayB0aGF0IEtWTSBkaWRuJ3QgY2hhbmdlIGFueXRoaW5nLiAqL1x0XHRcdFxcXG4gXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcdTAwMjZuZXcpO1x0XHRcdFx0XHRcdFxcXG5AQCAtNDYsNiArNDYsOCBAQCBkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0WDg2X0NSNF9NQ0UgfCBYODZfQ1I0X1BHRSB8IFg4Nl9DUjRfUENFIHxcdFxcXG4gXHRcdFx0XHRYODZfQ1I0X09TRlhTUiB8IFg4Nl9DUjRfT1NYTU1FWENQVClcbiBcbisjZGVmaW5lIEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSIEVGRVJfU0NFXG4rXG4gc3RhdGljIHU2NCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKHZvaWQpXG4ge1xuIFx0dTY0IGNyNCA9IEtWTV9BTFdBWVNfQUxMT1dFRF9DUjQ7XG5AQCAtNzQsNiArNzYsMjQgQEAgc3RhdGljIHU2NCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKHZvaWQpXG4gXHRyZXR1cm4gY3I0O1xuIH1cbiBcbitzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKHZvaWQpXG4re1xuK1x0dTY0IGVmZXIgPSBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUjtcbitcbitcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9MTSkpXG4rXHRcdGVmZXIgfD0gKEVGRVJfTE1FIHwgRUZFUl9MTUEpO1xuK1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX05YKSlcbitcdFx0ZWZlciB8PSBFRkVSX05YO1xuK1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpXG4rXHRcdGVmZXIgfD0gRUZFUl9TVk1FO1xuK1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0ZYU1JfT1BUKSlcbitcdFx0ZWZlciB8PSBFRkVSX0ZGWFNSO1xuK1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcbitcdFx0ZWZlciB8PSBFRkVSX0FVVE9JQlJTO1xuK1xuK1x0cmV0dXJuIGVmZXI7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpXG4ge1xuIFx0c3RydWN0IGt2bV9zcmVncyBzcmVncztcbkBAIC05NiwyNiArMTE2LDQ1IEBAIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpXG4gXHRcdCAgICAoc3JlZ3MuY3I0IFx1MDAyNiBYODZfQ1I0X1BLRSkgPyBcInNldFwiIDogXCJjbGVhclwiKTtcbiBcbiBcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnNyZWdzKTtcbi1cdFRFU1RfQVNTRVJUKHNyZWdzLmNyNCA9PSBjcjQsIFwic3JlZ3MuQ1I0ICgweCVsbHgpICE9IENSNCAoMHglbHgpXCIsXG4tXHRcdCAgICBzcmVncy5jcjQsIGNyNCk7XG4tXG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpO1xuK1x0VEVTVF9BU1NFUlRfRVEoc3JlZ3MuY3I0LCBjcjQpO1xuK1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1ZNWEUpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QQ0lERSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01BUCk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpO1xuIFxuIFx0Zm9yIChpID0gMzI7IGkgXHUwMDNjIDY0OyBpKyspXG4tXHRcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTtcbitcdFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIEJJVChpKSk7XG4gXG4gXHQvKiBOVyB3aXRob3V0IENEIGlzIGlsbGVnYWwsIGFzIGlzIFBHIHdpdGhvdXQgUEUuICovXG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX05XKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9lZmVyX2JpdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbit7XG4rXHRzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzO1xuK1x0aW50IHJjO1xuK1xuK1x0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuK1x0c3JlZ3MuZWZlciB8PSBlZmVyO1xuK1x0cmMgPSBfdmNwdV9zcmVnc19zZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuK1x0VEVTVF9BU1NFUlQoIXJjLCBcIkZhaWxlZCB0byBzZXQgc3VwcG9ydGVkIEVGRVIgYml0cyAoMHglbGx4KVwiLCBzcmVncy5lZmVyKTtcbitcbitcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnNyZWdzKTtcbitcdFRFU1RfQVNTRVJUX0VRKHNyZWdzLmVmZXIsIGVmZXIpO1xuK1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0xNRSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTlgpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX1NWTUUpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0ZGWFNSKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9BVVRPSUJSUyk7XG4gfVxuIFxuIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG5AQCAtMTMyLDYgKzE3MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHQgKi9cbiBcdHZtID0gdm1fY3JlYXRlX2JhcmVib25lcygpO1xuIFx0dmNwdSA9IF9fdm1fdmNwdV9hZGQodm0sIDApO1xuK1x0dGVzdF9lZmVyX2JpdHModmNwdSwgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIpO1xuIFx0dGVzdF9jcl9iaXRzKHZjcHUsIEtWTV9BTFdBWVNfQUxMT1dFRF9DUjQpO1xuIFx0a3ZtX3ZtX2ZyZWUodm0pO1xuIFxuQEAgLTE1MSw2ICsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHQgICAgc3JlZ3MuYXBpY19iYXNlKTtcbiBcbiBcdHRlc3RfY3JfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKCkpO1xuK1x0dGVzdF9lZmVyX2JpdHModmNwdSwgY2FsY19zdXBwb3J0ZWRfZWZlcl9mZWF0dXJlX2JpdHMoKSk7XG4gXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjoyODo1MC43MDE3MzY1MzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTE1MTY0OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIHg4NiBFRkVSIE1TUiBQYXRjaCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIGZ1bmRhbWVudGFsbHkgY2hhbmdpbmcgaG93IEtWTSB4ODYgaGFuZGxlcyB0aGUgRUZFUiBNU1IgYW5kIHNyZWdzLiBJdCdzIHRvdWNoaW5nIGEgZmV3IGtleSBhcmVhcywgYW5kIG15IGV4cGVydCBpbnR1aXRpb24gaXMgc2NyZWFtaW5nIFwiZnV6emluZyBvcHBvcnR1bml0eS5cIiBXZSd2ZSBnb3QgYSBuZXcgYHNldHVwX2VmZXJfY2Fwc2AgZnVuY3Rpb24gaW4gYGt2bV94ODZfb3BzYCwgbGV2ZXJhZ2luZyBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AgaW5zdGVhZCBvZiBgZWZlcl9yZXNlcnZlZF9iaXRzYCDigJMgdGhhdCdzIGEgc2lnbmFsLiBUaGUgY2hhbmdlcyBhcmUgaW1wYWN0aW5nIGBrdm1fdmFsaWRfZWZlcmAgYW5kIGBzZXRfZWZlcmAgaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLCBhbmQgYWxzbyBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AgdG8gaW5jbHVkZSBhIGNoZWNrIGZvciBga3ZtX3ZhbGlkX2VmZXJgLiBGdXJ0aGVybW9yZSwgd2UgaGF2ZSBhZGRpdGlvbnMgb2YgYHN2bV9zZXR1cF9lZmVyX2NhcHNgIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYCwgYW5kIGEgbW9kaWZpY2F0aW9uIGluIGBrdm1fc2V0dXBfZWZlcl9jYXBzYCBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlc2UgZnVuY3Rpb25zIGZvciBmdXp6aW5nIGNhbXBhaWduczogYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCwgYGt2bV9pc192YWxpZF9zcmVnc2AsIGBzdm1fc2V0dXBfZWZlcl9jYXBzYCwgYW5kIGBrdm1fc2V0dXBfZWZlcl9jYXBzYC4gSSdtIGFsc28gY29uc2lkZXJpbmcgYF9fc2V0X3NyZWdzX2NvbW1vbmAgYXMgYSBwb3RlbnRpYWwgYXJlYSB0byBpbnZlc3RpZ2F0ZSwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuTm93LCBsZXQncyBjb25maXJtIHRoZSBjYWxsIGNoYWlucywgYW5kIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiB0aGUgcmVsZXZhbnQgY29kZSBmaWxlcy4gSSdtIHRha2luZyBhIGxvb2sgYXQgYGFyY2gveDg2L2t2bS9tc3JzLmNgIGFuZCBmb3VuZCBgc2V0X2VmZXJgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBhbmQgYGt2bV92YWxpZF9lZmVyYCBpcyBnbG9iYWwuIFNvLCBgc2V0X2VmZXJgIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBpbnNpZGUgb2YgdGhlIGBtc3JzLmNgIGZpbGUgYW5kIG9ubHkgY2FsbGFibGUgZnJvbSBpbnNpZGUgaXQuIEkgYWxzbyBjb25maXJtZWQgd2l0aCBgZ3JlcHBlcmAgdGhhdCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpcyBzdGF0aWMgaW4gYGFyY2gveDg2L2t2bS9yZWdzLmNgLCBhbmQgYHN2bV9zZXR1cF9lZmVyX2NhcHNgIGlzIHN0YXRpYyBpbiBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AsIGFuZCB0aGF0IGBrdm1fc2V0dXBfZWZlcl9jYXBzYCBpcyBzdGF0aWMgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuXG5cblVzaW5nIGBncmVwcGVyYCwgSSdtIGNvbmZpcm1pbmcgdGhlIGNhbGwgcmVsYXRpb25zaGlwcy4gYGt2bV92YWxpZF9lZmVyYCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIGBrdm1faXNfdmFsaWRfc3JlZ3NgIGFuZCBgc2V0X2VmZXJgLiBBbmQgZnJvbSBpbnNwZWN0aW9uLCBgc2V0X2VmZXJgIGl0c2VsZiBpcyBjYWxsZWQgYnkgYGt2bV9zZXRfbXNyX2NvbW1vbmAgd2hlbiBkZWFsaW5nIHdpdGggYE1TUl9FRkVSYC5cblxuRmluYWxseSwgYSBxdWljayBLY29uZmlnIGNoZWNrIHRlbGxzIG1lIHRoYXQgQ09ORklHX0tWTSBpcyBhIGhhcmQgcmVxdWlyZW1lbnQsIGFuZCB3ZSdsbCBuZWVkIGVpdGhlciBDT05GSUdfS1ZNX0FNRCBvciBDT05GSUdfS1ZNX0lOVEVMIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBDUFUuXG5cbkFscmlnaHQsIGxldCdzIG5vdyB1dGlsaXplIGBncmVwcGVyYCB0byBmaW5kIGV4YWN0bHkgd2hlcmUgYGt2bV92YWxpZF9lZmVyYCBpcyBkZWZpbmVkLiBUaGlzJ2xsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgZXhhY3Qgc2NvcGUgYW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBsYXJnZXIgS1ZNIHg4NiBjb250ZXh0LiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgcGF0aCB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI1MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjI4OjU5LjgxNjkwMzM3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzYxOTE1NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV92YWxpZF9lZmVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9tc3JzLmM9NTc3PXN0YXRpYyBpbnQgZG9fZ2V0X2ZlYXR1cmVfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW5kZXgsIHU2NCAqZGF0YSlcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtNTgyLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM6NTgzOnN0YXRpYyBib29sIF9fa3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTU4NC17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYwMy19XFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MDQ6Ym9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjA1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjA4LVxcbmFyY2gveDg2L2t2bS9tc3JzLmM6NjA5OlxcdHJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpO1xcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjEwLX1cXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYxMTpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3ZhbGlkX2VmZXIpO1xcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjEyLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9NjEzPXN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MjItXFx0aWYgKCFtc3JfaW5mby1cXHUwMDNlaG9zdF9pbml0aWF0ZWQpIHtcXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYyMzpcXHRcXHRpZiAoIV9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcikpXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MjQtXFx0XFx0XFx0cmV0dXJuIDE7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbXNycy5oPTYyPXZvaWQga3ZtX2Rpc2FibGVfZWZlcl9iaXRzKHU2NCk7XFxuYXJjaC94ODYva3ZtL21zcnMuaDo2Mzpib29sIGt2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xcbmFyY2gveDg2L2t2bS9tc3JzLmgtNjQtaW50IGt2bV9lbXVsYXRlX21zcl9yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1NjQgKmRhdGEpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYz01NDQ9c3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU2Ni1cXHQgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy1cXHUwMDNlY3IwKSBcXHUwMDI2XFx1MDAyNlxcbmFyY2gveDg2L2t2bS9yZWdzLmM6NTY3OlxcdCAgICAgICBrdm1fdmFsaWRfZWZlcih2Y3B1LCBzcmVncy1cXHUwMDNlZWZlcik7XFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NjgtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz00Mzk9c3RhdGljIGJvb2wgbmVzdGVkX3ZtY2JfY2hlY2tfc2F2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ3Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjQ3MzpcXHRpZiAoQ0MoIWt2bV92YWxpZF9lZmVyKHZjcHUsIHNhdmUtXFx1MDAzZWVmZXIpKSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ3NC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTI3NDY9c3RhdGljIGludCBlZmVyX3RyYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yNzUyLVxcdCAqIENsZWFyIHRoZSBFRkVSX1NWTUUgYml0IGZyb20gRUZFUi4gVGhlIFNWTSBjb2RlIGFsd2F5cyBzZXRzIHRoaXNcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjI3NTM6XFx0ICogYml0IGluIHN2bV9zZXRfZWZlcigpLCBidXQgX19rdm1fdmFsaWRfZWZlcigpIGNoZWNrcyBpdCBhZ2FpbnN0XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yNzU0LVxcdCAqIHdoZXRoZXIgdGhlIGd1ZXN0IGhhcyBYODZfRkVBVFVSRV9TVk0gLSB0aGlzIGF2b2lkcyBhIGZhaWx1cmUgaWZcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MzE3Mj1zdGF0aWMgaW50IG5lc3RlZF92bXhfY2hlY2tfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMyMzQtXFx0aWYgKHZtY3MxMi1cXHUwMDNldm1fZXhpdF9jb250cm9scyBcXHUwMDI2IFZNX0VYSVRfTE9BRF9JQTMyX0VGRVIpIHtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjMyMzU6XFx0XFx0aWYgKENDKCFrdm1fdmFsaWRfZWZlcih2Y3B1LCB2bWNzMTItXFx1MDAzZWhvc3RfaWEzMl9lZmVyKSkgfHxcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMyMzYtXFx0XFx0ICAgIENDKGlhMzJlICE9ICEhKHZtY3MxMi1cXHUwMDNlaG9zdF9pYTMyX2VmZXIgXFx1MDAyNiBFRkVSX0xNQSkpIHx8XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMzMDg9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2d1ZXN0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzM3My1cXHQgICAgKHZtY3MxMi1cXHUwMDNldm1fZW50cnlfY29udHJvbHMgXFx1MDAyNiBWTV9FTlRSWV9MT0FEX0lBMzJfRUZFUikpIHtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjMzNzQ6XFx0XFx0aWYgKENDKCFrdm1fdmFsaWRfZWZlcih2Y3B1LCB2bWNzMTItXFx1MDAzZWd1ZXN0X2lhMzJfZWZlcikpIHx8XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zMzc1LVxcdFxcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXFx1MDAzZWd1ZXN0X2lhMzJfZWZlciBcXHUwMDI2IEVGRVJfTE1BKSkgfHxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6Mjk6MDIuMTc4ODI0NDY5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkyMTIxMDA4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVGRVIgTVNSIE1vZGlmaWNhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgaXQgbG9va3MgbGlrZSBpdCdzIHRvdWNoaW5nIE1TUiBoYW5kbGluZywgc3BlY2lmaWNhbGx5IEVGRVIuIEkgc2VlIGNoYW5nZXMgaW4gYGt2bV92YWxpZF9lZmVyYCBhbmQgYHNldF9lZmVyYCB3aXRoaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLiBUaGF0J3MgYSBrZXkgYXJlYSB0byB6ZXJvIGluIG9uLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIHRoZXNlIGBfc2V0dXBfZWZlcl9jYXBzYCBmdW5jdGlvbnMsIG9uZSBpbiB0aGUgU1ZNIGRpcmVjdG9yeSBhbmQgdGhlIG90aGVyIGluIHRoZSB4ODYgZGlyZWN0b3J5LiBCdXQgdGhvc2UgbG9vayBsaWtlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucywgd2hpY2ggbWFrZXMgdGhlbSBsZXNzIGludGVyZXN0aW5nIGZvciBteSBwdXJwb3NlcyDigJMgZnV6emluZywgbW9zdGx5LlxuXG5Ob3csIGBzZXRfZWZlcmAuLi4gdGhhdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQgKmlzKiBjYWxsZWQgdGhyb3VnaCBzb21lIG90aGVyIG1lY2hhbmlzbSBsaWtlIGBrdm1fc2V0X21zcl9jb21tb25gLCBzbyB0aGF0J3Mgc29tZXRoaW5nIHRvIGNvbnNpZGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBmbG93LlxuXG5JJ20gdGhpbmtpbmcsIGBrdm1fdmFsaWRfZWZlcmAgaXMgZGVmaW5pdGVseSBhIGdvb2QgdGFyZ2V0IGZvciBkZWVwZXIgYW5hbHlzaXMuIFRoYXQgc2VlbXMgbGlrZSBhIHByaW1lIGFyZWEgZm9yIHZhbGlkYXRpbmcgdGhlIE1TUiB2YWx1ZSBiZWZvcmUgc2V0dGluZyBpdC4gQW5kLCB3aGlsZSBJJ20gYXQgaXQsIEkgc2hvdWxkIGFsc28gbG9vayBhdCBga3ZtX2lzX3ZhbGlkX3NyZWdzYC4gVGhvc2UgY2hlY2tzIGFyZSBvZnRlbiBnb2xkbWluZXMgZm9yIHN1YnRsZSBidWdzLiBJIHNob3VsZCBhbHNvIG5vdGUgdGhhdCBgc2V0X2VmZXJgIGNvdWxkIGJlIGEga2V5IHBsYWNlIHRvIGV4cGxvcmUgdG9vLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE0MiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjoyOTowNy4xMDAwMzY5NDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyOTc0OTk1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXRfZWZlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTQ2PUtWTV9YODZfT1Aoc2V0X2NyNClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ3OktWTV9YODZfT1Aoc2V0X2VmZXIpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC00OC1LVk1fWDg2X09QX09QVElPTkFMKHNldHVwX2VmZXJfY2FwcylcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTY4ND1zdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNzMzLVxcdHZvaWQgKCpzZXRfY3I0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3I0KTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjE3MzQ6XFx0aW50ICgqc2V0X2VmZXIpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTczNS1cXHR2b2lkICgqc2V0dXBfZWZlcl9jYXBzKSh2b2lkKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9NjExPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmFsaWRfZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTItXFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MTM6c3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTQte1xcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MzMtXFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MzQ6XFx0ciA9IGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MzUtXFx0aWYgKHIpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9MTQ0Mj1pbnQga3ZtX3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMTUzOS1cXHRjYXNlIE1TUl9FRkVSOlxcbmFyY2gveDg2L2t2bS9tc3JzLmM6MTU0MDpcXHRcXHRyZXR1cm4gc2V0X2VmZXIodmNwdSwgbXNyX2luZm8pO1xcbmFyY2gveDg2L2t2bS9tc3JzLmMtMTU0MS1cXHRjYXNlIE1TUl9LN19IV0NSOiB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU3MD1zdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01OTgtXFx0Km1tdV9yZXNldF9uZWVkZWQgfD0gdmNwdS1cXHUwMDNlYXJjaC5lZmVyICE9IHNyZWdzLVxcdTAwM2VlZmVyO1xcbmFyY2gveDg2L2t2bS9yZWdzLmM6NTk5OlxcdGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgc3JlZ3MtXFx1MDAzZWVmZXIpO1xcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjAwLVxcbi0tXFxuYXJjaC94ODYva3ZtL3NtbS5jPTI3OT12b2lkIGVudGVyX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYxLVxcdGlmIChndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9MTSkpXFxuYXJjaC94ODYva3ZtL3NtbS5jOjM2MjpcXHRcXHRpZiAoa3ZtX3g4Nl9jYWxsKHNldF9lZmVyKSh2Y3B1LCAwKSlcXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYzLVxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTc0NT1zdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzkyLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NzkzOlxcdHN2bV9zZXRfZWZlcih2Y3B1LCBzdm0tXFx1MDAzZW5lc3RlZC5zYXZlLmVmZXIpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzk0LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMzIyPXZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0MjctXFx0a3ZtX3NldF9yZmxhZ3ModmNwdSwgdm1jYjAxLVxcdTAwM2VzYXZlLnJmbGFncyk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNDI4OlxcdHN2bV9zZXRfZWZlcih2Y3B1LCB2bWNiMDEtXFx1MDAzZXNhdmUuZWZlcik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDI5LVxcdHN2bV9zZXRfY3IwKHZjcHUsIHZtY2IwMS1cXHUwMDNlc2F2ZS5jcjAgfCBYODZfQ1IwX1BFKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjAxPXN0YXRpYyBpbnQgZ2V0X25wdF9sZXZlbCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMDktXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMTA6aW50IHN2bV9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjExLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9Mjc0Nj1zdGF0aWMgaW50IGVmZXJfdHJhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NTItXFx0ICogQ2xlYXIgdGhlIEVGRVJfU1ZNRSBiaXQgZnJvbSBFRkVSLiBUaGUgU1ZNIGNvZGUgYWx3YXlzIHNldHMgdGhpc1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6Mjc1MzpcXHQgKiBiaXQgaW4gc3ZtX3NldF9lZmVyKCksIGJ1dCBfX2t2bV92YWxpZF9lZmVyKCkgY2hlY2tzIGl0IGFnYWluc3RcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NTQtXFx0ICogd2hldGhlciB0aGUgZ3Vlc3QgaGFzIFg4Nl9GRUFUVVJFX1NWTSAtIHRoaXMgYXZvaWRzIGEgZmFpbHVyZSBpZlxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzM0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01Mzc0LVxcdC5zZXRfY3I0ID0gc3ZtX3NldF9jcjQsXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1Mzc1OlxcdC5zZXRfZWZlciA9IHN2bV9zZXRfZWZlcixcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzNzYtXFx0LnNldHVwX2VmZXJfY2FwcyA9IHN2bV9zZXR1cF9lZmVyX2NhcHMsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTgwOT12b2lkIHN2bV91cGRhdGVfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODEwLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6ODExOmludCBzdm1fc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC04MTItdm9pZCBzdm1fc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTQxMz1zdGF0aWMgdm9pZCB2dF9zZXRfY3I0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy00MjAtXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDIxOnN0YXRpYyBpbnQgdnRfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy00MjIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDI1LVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjQyNjpcXHRyZXR1cm4gdm14X3NldF9lZmVyKHZjcHUsIGVmZXIpO1xcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyNy19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz04ODA9c3RydWN0IGt2bV94ODZfb3BzIHZ0X3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTkyNC1cXHQuc2V0X2NyNCA9IHZ0X29wKHNldF9jcjQpLFxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjkyNTpcXHQuc2V0X2VmZXIgPSB2dF9vcChzZXRfZWZlciksXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTI2LVxcdC5nZXRfaWR0ID0gdnRfb3AoZ2V0X2lkdCksXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTIzOTY9c3RhdGljIHZvaWQgcHJlcGFyZV92bWNzMDJfZWFybHkoc3RydWN0IHZjcHVfdm14ICp2bXgsIHN0cnVjdCBsb2FkZWRfdm1jcyAqdm1jczAxLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTA5LVxcdCAqIHZtY3MxMidzIFZNX3tFTlRSWSxFWElUfV9MT0FEX0lBMzJfRUZFUiBhbmQgVk1fRU5UUllfSUEzMkVfTU9ERVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjUxMDpcXHQgKiBhcmUgZW11bGF0ZWQgYnkgdm14X3NldF9lZmVyKCkgaW4gcHJlcGFyZV92bWNzMDIoKSwgYnV0IHNwZWN1bGF0ZVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjUxMS1cXHQgKiBvbiB0aGUgcmVsYXRlZCBiaXRzIChpZiBzdXBwb3J0ZWQgYnkgdGhlIENQVSkgaW4gdGhlIGhvcGUgdGhhdFxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjUxMjpcXHQgKiB3ZSBjYW4gYXZvaWQgVk1Xcml0ZXMgZHVyaW5nIHZteF9zZXRfZWZlcigpLlxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjUxMy1cXHQgKlxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTM0LVxcdCAqIHdlIHNob3VsZCB1c2UgaXRzIGV4aXQgY29udHJvbHMuIE5vdGUgdGhhdCBWTV9FWElUX0xPQURfSUEzMl9FRkVSXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyNTM1OlxcdCAqIGJpdHMgbWF5IGJlIG1vZGlmaWVkIGJ5IHZteF9zZXRfZWZlcigpIGluIHByZXBhcmVfdm1jczAyKCkuXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTM2LVxcdCAqL1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNzI1PXN0YXRpYyBpbnQgcHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI4MDgtXFx0LyogTm90ZTogbWF5IG1vZGlmeSBWTV9FTlRSWS9FWElUX0NPTlRST0xTIGFuZCBHVUVTVC9IT1NUX0lBMzJfRUZFUiAqL1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjgwOTpcXHR2bXhfc2V0X2VmZXIodmNwdSwgdmNwdS1cXHUwMDNlYXJjaC5lZmVyKTtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI4MTAtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTQ3OTU9c3RhdGljIHZvaWQgbG9hZF92bWNzMTJfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTQ4MDYtXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5lZmVyIFxcdTAwMjY9IH4oRUZFUl9MTUEgfCBFRkVSX0xNRSk7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzo0ODA3OlxcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVxcdTAwM2VhcmNoLmVmZXIpO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtNDgwOC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9NDk1NT1zdGF0aWMgdm9pZCBuZXN0ZWRfdm14X3Jlc3RvcmVfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTQ5ODQtXFx0ICovXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzo0OTg1OlxcdHZteF9zZXRfZWZlcih2Y3B1LCBuZXN0ZWRfdm14X2dldF92bWNzMDFfZ3Vlc3RfZWZlcih2bXgpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTQ5ODYtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMyMDE9c3RhdGljIHZvaWQgZW50ZXJfcm1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjQ4LVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI0OTppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjUwLXtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzI3ND1zdGF0aWMgdm9pZCBlbnRlcl9sbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyODctXFx0fVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI4ODpcXHR2bXhfc2V0X2VmZXIodmNwdSwgdmNwdS1cXHUwMDNlYXJjaC5lZmVyIHwgRUZFUl9MTUEpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4OS19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMyOTE9c3RhdGljIHZvaWQgZXhpdF9sbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjkyLXtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMyOTM6XFx0dm14X3NldF9lZmVyKHZjcHUsIHZjcHUtXFx1MDAzZWFyY2guZWZlciBcXHUwMDI2IH5FRkVSX0xNQSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjk0LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14Lmg9MzUwPXZvaWQgdm14X3NldF9pbnRlcnJ1cHRfc2hhZG93KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IG1hc2spO1xcbmFyY2gveDg2L2t2bS92bXgvdm14Lmg6MzUxOmludCB2bXhfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguaC0zNTItdm9pZCB2bXhfc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oPTcxPWJvb2wgdm14X2lzX3ZhbGlkX2NyNChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3I0KTtcXG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaDo3MjppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oLTczLXZvaWQgdm14X2dldF9pZHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz05NDc5PXZvaWQga3ZtX3ZjcHVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGluaXRfZXZlbnQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTU4NS1cXHRrdm1feDg2X2NhbGwoc2V0X2NyNCkodmNwdSwgMCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjk1ODY6XFx0a3ZtX3g4Nl9jYWxsKHNldF9lZmVyKSh2Y3B1LCAwKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTU4Ny1cXHRrdm1feDg2X2NhbGwodXBkYXRlX2V4Y2VwdGlvbl9iaXRtYXApKHZjcHUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjoyOTowOC45Mjk3OTI1N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxOTAzNTY3ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMgaW4gS1ZNL3g4NiBNU1IgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gbG9vayBhdCBgc2V0X2VmZXJgIGluIGBhcmNoL3g4Ni9rdm0vbXNycy5jYCBiZWNhdXNlIHRoZSBwYXRjaCBtb2RpZmllcyBpdC4gV2FpdCwgYHNldF9lZmVyYCBpcyAqc3RhdGljKiB3aXRoaW4gYG1zcnMuY2AuIEhtbSwgdGhhdCBjaGFuZ2VzIHRoaW5ncyBhIGJpdC4gSSBrbm93IGBrdm1fc2V0X21zcl9jb21tb25gIGNhbGxzIGBzZXRfZWZlcmAsIGJ1dCB0aGF0J3MgYSBoZWF2aWx5IHVzZWQgaG90IHBhdGgsIGEgYml0IHRvbyBicm9hZCBmb3IgZm9jdXNlZCBmdXp6aW5nLlxuXG5NeSBuZXh0IHRob3VnaHQ6IGV2ZW4gdGhvdWdoIGBzZXRfZWZlcmAgaXMgc3RhdGljLCBTeXprYWxsZXIgKmNhbiogZnV6eiBzdGF0aWMgZnVuY3Rpb25zICppZiogdGhleSdyZSBpbiB0aGUgY292ZXJhZ2UsIG9yLCBtb3JlIHJlbGV2YW50bHksIGlmIHRoZXkncmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gV2UgYWxzbyB1c2UgYEZvY3VzU3ltYm9sc2AgdG8gZ3VpZGUgdGhlIGZ1enplciwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgYSBnb29kIHN5bWJvbCwgc28gSSdsbCBnbyB3aXRoIGBzZXRfZWZlcmAuXG5cblRoZW4gSSByZW1lbWJlciBga3ZtX3ZhbGlkX2VmZXJgIGlzIGV4cG9ydGVkIGFuZCBnbG9iYWwuIFBlcmZlY3QuIEkgYWxzbyBzZWUgdGhhdCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpcyBzdGF0aWMgd2l0aGluIGByZWdzLmNgIGFuZCBgX19zZXRfc3JlZ3NfY29tbW9uYCBpcyBzdGF0aWMgaW4gYHJlZ3MuY2AsIHNvIEknbGwgYWRkIHRob3NlLiBTbyB0aGUgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIG9uIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCBhbmQgYF9fc2V0X3NyZWdzX2NvbW1vbmAuXG5cbkp1c3QgdG8gYmUgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYCBhbmQgYGFyY2gveDg2L2t2bS94ODYuY2AgZm9yIGFueSByZWxhdGVkIGZ1bmN0aW9ucywgbGlrZSBgc3ZtX3NldHVwX2VmZXJfY2Fwc2AgYW5kIGBrdm1fc2V0dXBfZWZlcl9jYXBzYC4gQWgsIGJvdGggYXJlIGluaXQgZnVuY3Rpb25zLCBjYWxsZWQgb25seSBkdXJpbmcgc2V0dXAg4oCTIG5vdCByZWxldmFudCBmb3IgKnJ1bnRpbWUqIGZ1enppbmcuXG5cblRoZXJlZm9yZSwgdGhlIG1haW4gZnVuY3Rpb25hbCBjaGFuZ2VzIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFyZTogYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCAoaW4gbXNycy5jKSwgYW5kIGBrdm1faXNfdmFsaWRfc3JlZ3NgLiBXZSdsbCBpZ25vcmUgYF9fc2V0X3NyZWdzX2NvbW1vbmAgZm9yIG5vdy5cblxuTGV0J3MgZG8gYSBxdWljayBzZWFyY2ggdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHRvdWNoZWQuIFJpZ2h0LCB0aGUgcGF0Y2ggKmFsc28qIHRvdWNoZXMgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY2AsIGJ1dCB0aGF0J3MganVzdCBhIHRlc3QsIG5vdCBjb2RlIHRoYXQgZXhlY3V0ZXMgZHVyaW5nIHRoZSBWTSdzIG5vcm1hbCBvcGVyYXRpb24uXG5cbkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gSSdsbCBzZWFyY2ggZm9yIGBLVk1gLCBgS1ZNX0FNRGAsIGFuZCBgS1ZNX0lOVEVMYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIEVGRVIgb3Igc2ltaWxhciBzZXR0aW5ncy4gVGhhdCBtaWdodCBnaXZlIG1lIGEgYnJvYWRlciBwaWN0dXJlIG9mIHdoZXJlIHRoZXNlIHNldHRpbmdzIGFyZSBiZWluZyB1c2VkIGFuZCBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTY4MCwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjoyOToxNy4xMjAxNTE1MjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MDA4NjI1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTY9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTctXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjE4OmNvbmZpZyBLVk1cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMC1cXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MzE6Y29uZmlnIEtWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzItXFx0Ym9vbCBcXFwiTWFpbnRhaW4gY291bnRlcnMgZm9yIENPUDAgYWNjZXNzZXNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNjpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI3LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI5OmNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzAtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMzLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNDpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM1LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzg6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzktXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00My1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ0LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0NTpjb25maWcgS1ZNX0JPT0szU18zMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fQk9PSzNTXzY0XFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Nzk6Y29uZmlnIEtWTV9CT09LM1NfNjRfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODAtXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy05OS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjUtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyNjpjb25maWcgS1ZNX0JPT0szU19IVl9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjctXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyOTpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMwLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE1Nzpjb25maWcgS1ZNX0JPT0szU19IVl9ORVNURURfUE1VX1dPUktBUk9VTkRcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIk5lc3RlZCBMMCBob3N0IHdvcmthcm91bmQgZm9yIEwxIEtWTSBob3N0IFBNVSBoYW5kbGluZyBidWdcXFwiIGlmIEVYUEVSVFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkh5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTgzLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODQ6Y29uZmlnIEtWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODUtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4Nzpjb25maWcgS1ZNX0VYSVRfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJEZXRhaWxlZCBleGl0IHRpbWluZ1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5ODpjb25maWcgS1ZNX0U1MDBWMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTktXFx0Ym9vbCBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEyLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTM6Y29uZmlnIEtWTV9FNTAwTUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjE0LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fTVBJQ1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbCBcXFwiS1ZNIGluLWtlcm5lbCBNUElDIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDAtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0MTpjb25maWcgS1ZNX1hJQ1NcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQyLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUwLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTE6Y29uZmlnIEtWTV9YSVZFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1Mi1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc9MjI9c291cmNlIFxcXCJhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21pY3Jvd2F0dC9LY29uZmlnXFxcIlxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yMy1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc6MjQ6Y29uZmlnIEtWTV9HVUVTVFxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZz0xNz1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0yMC1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ2LVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1xcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9ODM5PXNvdXJjZSBcXFwiYXJjaC94ODYveGVuL0tjb25maWdcXFwiXFxuYXJjaC94ODYvS2NvbmZpZy04NDAtXFxuYXJjaC94ODYvS2NvbmZpZzo4NDE6Y29uZmlnIEtWTV9HVUVTVFxcbmFyY2gveDg2L0tjb25maWctODQyLVxcdGJvb2wgXFxcIktWTSBHdWVzdCBzdXBwb3J0IChpbmNsdWRpbmcga3ZtY2xvY2spXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctMy1cXG52aXJ0L2t2bS9LY29uZmlnOjQ6Y29uZmlnIEtWTV9DT01NT05cXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9Mzk9Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNDItXFxudmlydC9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX01NSU9cXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy00NS1cXG52aXJ0L2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQVNZTkNfUEZcXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQ5LSMgVG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpcmVjdCBub3RpZmljYXRpb24gYW5kIGJhdGNoIGpvYlxcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXFxudmlydC9rdm0vS2NvbmZpZy01MS0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02MS1cXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xcbnZpcnQva3ZtL0tjb25maWctNjMtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02Ny1cXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG52aXJ0L2t2bS9LY29uZmlnLTY5LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy03MC1cXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxudmlydC9rdm0vS2NvbmZpZy03Mi0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzMtXFxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxcbnZpcnQva3ZtL0tjb25maWctNzUtICAgICAgIGRlZl9ib29sIHlcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTkzLVxcbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXFxudmlydC9rdm0vS2NvbmZpZy05NS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctOTYtXFxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xcbnZpcnQva3ZtL0tjb25maWctOTgtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk5LVxcbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXFxudmlydC9rdm0vS2NvbmZpZy0xMDEtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwMi1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcXG52aXJ0L2t2bS9LY29uZmlnLTEwNC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctMTA1LVxcbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcXG52aXJ0L2t2bS9LY29uZmlnLTEwNy0gICAgICAgc2VsZWN0IFhBUlJBWV9NVUxUSVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjoyOToxOC43OTAyNDI2MThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjA3NTk5NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0gRUZFUiBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIEtWTSBjb25maWd1cmF0aW9uczogYEtWTWAsIGBLVk1fSU5URUxgLCBhbmQgYEtWTV9BTURgLiBIbW0sIGBLVk1gIGlzIGEgdHJpc3RhdGUsIHNvIGxldCdzIGp1c3QgdXNlIHRoZSBiYXNlIGBLVk1gIG9wdGlvbiwgdGhhdCdzIHRoZSBtb3N0IGdlbmVyYWwuXG5cbk5vdywgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBrdm1fdmFsaWRfZWZlcmAgYW5kIGBzZXRfZWZlcmAgd2l0aGluIGBhcmNoL3g4Ni9rdm0vbXNycy5jYC4gVGhhdCdzIHRoZSBjb3JlIGFyZWEgb2YgaW50ZXJlc3QgZm9yIEVGRVIgbW9kaWZpY2F0aW9ucy4gYGt2bV92YWxpZF9lZmVyYCBpcyBjYWxsZWQgYnkgYGt2bV9pc192YWxpZF9zcmVnc2AgaW4gYGFyY2gveDg2L2t2bS9yZWdzLmNgLCB3aGljaCBnaXZlcyB1cyBhIGdvb2QgcGljdHVyZSBvZiB3aGVyZSB0aGUgdmFsaWRhdGlvbiB0YWtlcyBwbGFjZS4gQW5kIGBzZXRfZWZlcmAgaXMgY2FsbGVkIGZyb20gYGt2bV9zZXRfbXNyX2NvbW1vbmAsIGFsc28gaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLiBEaWdnaW5nIGRlZXBlciwgYF9fc2V0X3NyZWdzX2NvbW1vbmAgaW4gYGFyY2gveDg2L2t2bS9yZWdzLmNgIGFsc28gY2FsbHMgYHNldF9lZmVyYCwgc28gaXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudC5cblxuVGhlcmVmb3JlLCB0aGUga2V5IHN5bWJvbHMgdGhhdCB3YXJyYW50IGNsb3NlciBleGFtaW5hdGlvbiBhcmUgY2xlYXJseTpcbiogICBga3ZtX3ZhbGlkX2VmZXJgXG4qICAgYHNldF9lZmVyYFxuKiAgIGBrdm1faXNfdmFsaWRfc3JlZ3NgXG4qICAgYF9fc2V0X3NyZWdzX2NvbW1vbmBcblxuSSdtIGRvdWJsZS1jaGVja2luZyB0aGUgbmFtZXMgdG8gbWFrZSBzdXJlIEkndmUgZ290IHRoZW0gcmlnaHQuLi55ZXMsIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zLiBTbyBJJ2xsIGdvIGFoZWFkIGFuZCBjaGVjayB0aGF0IGBfX3NldF9zcmVnc19jb21tb25gIGluIGBhcmNoL3g4Ni9rdm0vcmVncy5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExNTIsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6Mjk6MjQuMzk3ODQ1MjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODUwNTk0OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19zZXRfc3JlZ3NfY29tbW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9yZWdzLmM9NTQ0PXN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NjktXFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo1NzA6c3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3MS1cXHRcXHRcXHQgICAgICBpbnQgKm1tdV9yZXNldF9uZWVkZWQsIGJvb2wgdXBkYXRlX3BkcHRycylcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmM9NjM3PXN0YXRpYyBpbnQgX19zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQwLVxcdGludCBtbXVfcmVzZXRfbmVlZGVkID0gMDtcXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY0MTpcXHRpbnQgcmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIHNyZWdzLCBcXHUwMDI2bW11X3Jlc2V0X25lZWRlZCwgdHJ1ZSk7XFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02NDItXFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTY3OD1pbnQga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTItXFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo2OTM6XFx0cmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIChzdHJ1Y3Qga3ZtX3NyZWdzICopc3JlZ3MyLFxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjk0LVxcdFxcdFxcdFxcdCBcXHUwMDI2bW11X3Jlc2V0X25lZWRlZCwgIXZhbGlkX3BkcHRycyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjI5OjI2LjA4MjkxMzc2NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDI3OTM5OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSB4ODYgRUZFUiBNU1IgSGFuZGxpbmcgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIGZvY3VzaW5nIG9uIGBfX3NldF9zcmVnc19jb21tb25gIOKAkyB0aGF0IHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBkaWcgaW4gYW5kIHNlZSBob3cgaXQgaW1wYWN0cyB0aGUgeDg2IEVGRVIgTVNSIGhhbmRsaW5nIHdpdGhpbiBLVk0uXG5cblJpZ2h0LCBgc2V0X2VmZXJgIGlzIHdoYXQgSSBuZWVkIHRvIGxvb2sgYXQuIEFuZCB5ZXMsIHRoZXJlIGl0IGlzIGluIGBhcmNoL3g4Ni9rdm0vbXNycy5jYC4gSXQncyBzdGF0aWMsIGJ1dCBhcyBleHBlY3RlZCwgYGt2bV9zZXRfbXNyX2NvbW1vbmAgY2FsbHMgaXQgZm9yIGBNU1JfRUZFUmAsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJ20gaW50ZXJlc3RlZCBpbi4gSSBhbHNvIHNlZSB0aGF0IGBrdm1fdmFsaWRfZWZlcmAgaXMgZXhwb3J0ZWQuXG5cblNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmU6XG5cbiogICBga3ZtX3ZhbGlkX2VmZXJgXG4qICAgYHNldF9lZmVyYFxuKiAgIGBrdm1faXNfdmFsaWRfc3JlZ3NgXG4qICAgYF9fc2V0X3NyZWdzX2NvbW1vbmBcblxuVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIG5lZWQgY2xvc2Ugc2NydXRpbnkuXG5cblRoZSBjaGFuZ2VzIGludm9sdmUgYWx0ZXJpbmcgaG93IHN1cHBvcnRlZCBFRkVSIGJpdHMgYXJlIGNoZWNrZWQgYW5kIHNldC4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggcmVwbGFjZXMgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYHNldHVwX2VmZXJfY2Fwc2AgdG8gYGt2bV94ODZfb3BzYC4gVGhpcyBoYXMgaW1wbGljYXRpb25zIGZvciBga3ZtX3ZhbGlkX2VmZXJgLCBgc2V0X2VmZXJgLCBhbmQgYGt2bV9pc192YWxpZF9zcmVnc2AsIHdoaWNoIGFyZSBhbGwgcmVhY2hlZCBkdXJpbmcgVk0gZXhlY3V0aW9uIGFuZCBzdGF0ZSByZXN0b3JhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEtWTSBsb2dpYywgYW5kIHRoYXQgbWVhbnMgd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gaW5jbHVkZSB0aGlzIGluIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LlxuXG5PbmUgbW9yZSB0aGluZy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UndmUgY292ZXJlZCB0aGUgY29uZmlncy4gVGhlIHBhdGNoIGlzIGNsZWFybHkgYWZmZWN0aW5nIHg4Niwgc28gYEtWTWAsIGBLVk1fQU1EYCwgYW5kIGBLVk1fSU5URUxgIGFyZSB1c3VhbGx5IG5lZWRlZCB0byBydW4gS1ZNIG9uIHg4Niwgc28gSSdsbCBpbmNsdWRlIHRoZW0uXG5cbkxldCdzIGxvZyB0aGUgZmluZGluZ3MgYW5kIGdldCB0aGlzIHNldCB1cCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzMzEsIk91dHB1dFRva2VucyI6MjE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjI5OjM0LjExMDg1NzE1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NzA0NzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92YWxpZF9lZmVyXCIsXG4gICAgXCJzZXRfZWZlclwiLFxuICAgIFwia3ZtX2lzX3ZhbGlkX3NyZWdzXCIsXG4gICAgXCJfX3NldF9zcmVnc19jb21tb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0geDg2IEVGRVIgTVNSIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgaG93IHN1cHBvcnRlZCBFRkVSIGJpdHMgYXJlIGNoZWNrZWQgYW5kIHNldC4gSXQgcmVwbGFjZXMgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AgYW5kIGludHJvZHVjZXMgYHNldHVwX2VmZXJfY2Fwc2AgdG8gYGt2bV94ODZfb3BzYC4gVGhpcyBhZmZlY3RzIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGFuZCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFuZCBzdGF0ZSByZXN0b3JhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0FNRFwiLFxuICAgIFwiS1ZNX0lOVEVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3ZhbGlkX2VmZXJcIixcbiAgICBcInNldF9lZmVyXCIsXG4gICAgXCJrdm1faXNfdmFsaWRfc3JlZ3NcIixcbiAgICBcIl9fc2V0X3NyZWdzX2NvbW1vblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSB4ODYgRUZFUiBNU1IgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBob3cgc3VwcG9ydGVkIEVGRVIgYml0cyBhcmUgY2hlY2tlZCBhbmQgc2V0LiBJdCByZXBsYWNlcyBgZWZlcl9yZXNlcnZlZF9iaXRzYCB3aXRoIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYCBhbmQgaW50cm9kdWNlcyBgc2V0dXBfZWZlcl9jYXBzYCB0byBga3ZtX3g4Nl9vcHNgLiBUaGlzIGFmZmVjdHMgYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCwgYW5kIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCB3aGljaCBhcmUgcmVhY2hhYmxlIGR1cmluZyBWTSBleGVjdXRpb24gYW5kIHN0YXRlIHJlc3RvcmF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBLVk0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow5nfpj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 06:23:08 +0000 UTC FinishedAt: 2026-07-01 06:29:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD", "KVM_INTEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD", "KVM_INTEL" ], "series_id": "1229b696-eb9f-4e63-9b58-953460e9cf67" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_valid_efer", "set_efer", "kvm_is_valid_sregs", "__set_sregs_common" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDssCiAgICAmIzM0O3NldF9lZmVyJiMzNDssCiAgICAmIzM0O2t2bV9pc192YWxpZF9zcmVncyYjMzQ7LAogICAgJiMzNDtfX3NldF9zcmVnc19jb21tb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIHg4NiBFRkVSIE1TUiBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGhvdyBzdXBwb3J0ZWQgRUZFUiBiaXRzIGFyZSBjaGVja2VkIGFuZCBzZXQuIEl0IHJlcGxhY2VzIGBlZmVyX3Jlc2VydmVkX2JpdHNgIHdpdGggYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgIGFuZCBpbnRyb2R1Y2VzIGBzZXR1cF9lZmVyX2NhcHNgIHRvIGBrdm1feDg2X29wc2AuIFRoaXMgYWZmZWN0cyBga3ZtX3ZhbGlkX2VmZXJgLCBgc2V0X2VmZXJgLCBhbmQgYGt2bV9pc192YWxpZF9zcmVnc2AsIHdoaWNoIGFyZSByZWFjaGFibGUgZHVyaW5nIFZNIGV4ZWN1dGlvbiBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIEtWTSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJhYTU2M2M4NjM1ZTZmMTdkMjM5ODcyZWYzYWMzNDE3MmYwYzg1ZmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA2OjI4OjQ5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG5pbmRleCA4M2RjNTA4NjEzOGIzOS4uZDU4NzI0MmRjYWI1NjEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG5AQCAtNDUsNiAmIzQzOzQ1LDcgQEAgS1ZNX1g4Nl9PUF9PUFRJT05BTChwb3N0X3NldF9jcjMpXG4gS1ZNX1g4Nl9PUChpc192YWxpZF9jcjQpXG4gS1ZNX1g4Nl9PUChzZXRfY3I0KVxuIEtWTV9YODZfT1Aoc2V0X2VmZXIpXG4mIzQzO0tWTV9YODZfT1BfT1BUSU9OQUwoc2V0dXBfZWZlcl9jYXBzKVxuIEtWTV9YODZfT1AoZ2V0X2lkdClcbiBLVk1fWDg2X09QKHNldF9pZHQpXG4gS1ZNX1g4Nl9PUChnZXRfZ2R0KVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCBkODcwMGViODQ4YjQ1Mi4uNDBiZTM5ZmVhMzliOWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMzI5LDYgJiM0MzszMjksOCBAQCBzdHJ1Y3Qga3ZtX2NhcHMge1xuIFx0dTY0IHN1cHBvcnRlZF94c3M7XG4gXHR1NjQgc3VwcG9ydGVkX3BlcmZfY2FwO1xuIFxuJiM0MztcdHU2NCBzdXBwb3J0ZWRfZWZlcl9iaXRzO1xuJiM0MztcbiBcdHU2NCBzdXBwb3J0ZWRfcXVpcmtzO1xuIFx0dTY0IGluYXBwbGljYWJsZV9xdWlya3M7XG4gfTtcbkBAIC0xNzMwLDYgJiM0MzsxNzMyLDcgQEAgc3RydWN0IGt2bV94ODZfb3BzIHtcbiBcdGJvb2wgKCppc192YWxpZF9jcjQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpO1xuIFx0dm9pZCAoKnNldF9jcjQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpO1xuIFx0aW50ICgqc2V0X2VmZXIpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xuJiM0MztcdHZvaWQgKCpzZXR1cF9lZmVyX2NhcHMpKHZvaWQpO1xuIFx0dm9pZCAoKmdldF9pZHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGRlc2NfcHRyICpkdCk7XG4gXHR2b2lkICgqc2V0X2lkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTtcbiBcdHZvaWQgKCpnZXRfZ2R0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tc3JzLmMgYi9hcmNoL3g4Ni9rdm0vbXNycy5jXG5pbmRleCBjMjMwYjE4ZDg3ZTM4ZS4uYTM5YzczMDg4ZjFmYjIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbXNycy5jXG5AQCAtMTksMTcgJiM0MzsxOSw2IEBAIGJvb2wgX19yZWFkX21vc3RseSByZXBvcnRfaWdub3JlZF9tc3JzID0gdHJ1ZTtcbiBtb2R1bGVfcGFyYW0ocmVwb3J0X2lnbm9yZWRfbXNycywgYm9vbCwgMDY0NCk7XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xuIFxuLS8qIEVGRVIgZGVmYXVsdHM6XG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cbi0gKiAtIGVuYWJsZSBMTUUgYW5kIExNQSBwZXIgZGVmYXVsdCBvbiA2NCBiaXQgS1ZNXG4tICovXG4tI2lmZGVmIENPTkZJR19YODZfNjRcbi1zdGF0aWNcbi11NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpKEVGRVJfU0NFIHwgRUZFUl9MTUUgfCBFRkVSX0xNQSkpO1xuLSNlbHNlXG4tc3RhdGljIHU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NClFRkVSX1NDRSk7XG4tI2VuZGlmXG4tXG4gI2RlZmluZSBNQVhfSU9fTVNSUyAyNTZcbiBcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XG5AQCAtNjE0LDcgJiM0Mzs2MDMsNyBAQCBzdGF0aWMgYm9vbCBfX2t2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG4gfVxuIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbiB7XG4tXHRpZiAoZWZlciBcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxuJiM0MztcdGlmICghKGVmZXIgXHUwMDI2IGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRyZXR1cm4gX19rdm1fdmFsaWRfZWZlcih2Y3B1LCBlZmVyKTtcbkBAIC02MjcsNyAmIzQzOzYxNiw3IEBAIHN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuIFx0dTY0IGVmZXIgPSBtc3JfaW5mby1cdTAwM2VkYXRhO1xuIFx0aW50IHI7XG4gXG4tXHRpZiAoZWZlciBcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxuJiM0MztcdGlmICghKGVmZXIgXHUwMDI2IGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpKVxuIFx0XHRyZXR1cm4gMTtcbiBcbiBcdGlmICghbXNyX2luZm8tXHUwMDNlaG9zdF9pbml0aWF0ZWQpIHtcbkBAIC02NTgsMTIgJiM0Mzs2NDcsNiBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbiBcdHJldHVybiAwO1xuIH1cbiBcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCBtYXNrKVxuLXtcbi0gICAgICAgZWZlcl9yZXNlcnZlZF9iaXRzIFx1MDAyNj0gfm1hc2s7XG4tfVxuLUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fZW5hYmxlX2VmZXJfYml0cyk7XG4tXG4gYm9vbCBrdm1fbXNyX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHUzMiB0eXBlKVxuIHtcbiBcdHN0cnVjdCBrdm1feDg2X21zcl9maWx0ZXIgKm1zcl9maWx0ZXI7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmhcbmluZGV4IGI2OTg5ODNlMzdmYjYxLi44OWYxMDQ0N2NkZGRmOSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9tc3JzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tc3JzLmhcbkBAIC01OSw2ICYjNDM7NTksNyBAQCBpbnQga3ZtX2dldF9yZWdfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRcdCAgICAgc3RydWN0IGt2bV9yZWdfbGlzdCBfX3VzZXIgKnVzZXJfbGlzdCk7XG4gXG4gdm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQpO1xuJiM0Mzt2b2lkIGt2bV9kaXNhYmxlX2VmZXJfYml0cyh1NjQpO1xuIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG4gaW50IGt2bV9lbXVsYXRlX21zcl9yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1NjQgKmRhdGEpO1xuIGludCBrdm1fZW11bGF0ZV9tc3Jfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHU2NCBkYXRhKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcmVncy5jIGIvYXJjaC94ODYva3ZtL3JlZ3MuY1xuaW5kZXggZDJjYWY1YTY3ZGJhNDAuLjk0YzRlNGU0MTg2OGZjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3JlZ3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3JlZ3MuY1xuQEAgLTU2Myw3ICYjNDM7NTYzLDggQEAgc3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4gXHR9XG4gXG4gXHRyZXR1cm4ga3ZtX2lzX3ZhbGlkX2NyNCh2Y3B1LCBzcmVncy1cdTAwM2VjcjQpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtXHUwMDNlY3IwKTtcbiYjNDM7XHQgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy1cdTAwM2VjcjApIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgICBrdm1fdmFsaWRfZWZlcih2Y3B1LCBzcmVncy1cdTAwM2VlZmVyKTtcbiB9XG4gXG4gc3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuaW5kZXggZWY2OWE1MWFiMjdmOTguLmU3NTVmNDNmNDM3NmVlIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuQEAgLTI3NCw2ICYjNDM7Mjc0LDE1IEBAIGludCBzdm1fc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgc3ZtX3NldHVwX2VmZXJfY2Fwcyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKG5lc3RlZCkge1xuJiM0MztcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX1NWTUU7XG4mIzQzO1x0XHRpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9FRkVSX0xNU0xFX01CWikpXG4mIzQzO1x0XHRcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9MTVNMRTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHUzMiBzdm1fZ2V0X2ludGVycnVwdF9zaGFkb3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtID0gdG9fc3ZtKHZjcHUpO1xuQEAgLTUzNjQsNiAmIzQzOzUzNzMsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbiBcdC5pc192YWxpZF9jcjQgPSBzdm1faXNfdmFsaWRfY3I0LFxuIFx0LnNldF9jcjQgPSBzdm1fc2V0X2NyNCxcbiBcdC5zZXRfZWZlciA9IHN2bV9zZXRfZWZlcixcbiYjNDM7XHQuc2V0dXBfZWZlcl9jYXBzID0gc3ZtX3NldHVwX2VmZXJfY2FwcyxcbiBcdC5nZXRfaWR0ID0gc3ZtX2dldF9pZHQsXG4gXHQuc2V0X2lkdCA9IHN2bV9zZXRfaWR0LFxuIFx0LmdldF9nZHQgPSBzdm1fZ2V0X2dkdCxcbkBAIC01NjM4LDEwICYjNDM7NTY0OCw2IEBAIHN0YXRpYyBfX2luaXQgaW50IHN2bV9oYXJkd2FyZV9zZXR1cCh2b2lkKVxuIFxuIFx0aWYgKG5lc3RlZCkge1xuIFx0XHRwcl9pbmZvKFwmIzM0O05lc3RlZCBWaXJ0dWFsaXphdGlvbiBlbmFibGVkXFxuXCYjMzQ7KTtcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9TVk1FKTtcbi1cdFx0aWYgKCFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfRUZFUl9MTVNMRV9NQlopKVxuLVx0XHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfTE1TTEUpO1xuLVxuIFx0XHRyID0gbmVzdGVkX3N2bV9pbml0X21zcnBtX21lcmdlX29mZnNldHMoKTtcbiBcdFx0aWYgKHIpXG4gXHRcdFx0cmV0dXJuIHI7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5pbmRleCA4ZGJjMGZhMzAyYThiNS4uNWNlZGFhODQwOWY4ZGYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuY1xuQEAgLTY4OTIsMTQgJiM0Mzs2ODkyLDIyIEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2V0dXBfeHNzX2NhcHMpO1xuIFxuIHN0YXRpYyB2b2lkIGt2bV9zZXR1cF9lZmVyX2NhcHModm9pZClcbiB7XG4mIzQzO1x0LyogRW5hYmxlIHN5c2NhbGwgYnkgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk0gKi9cbiYjNDM7XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzID0gKHU2NClFRkVSX1NDRTtcbiYjNDM7XG4mIzQzO1x0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9MTSkpXG4mIzQzO1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IChFRkVSX0xNRSB8IEVGRVJfTE1BKTtcbiYjNDM7XG4gXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX05YKSlcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9OWCk7XG4mIzQzO1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTlg7XG4gXG4gXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0ZYU1JfT1BUKSlcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9GRlhTUik7XG4mIzQzO1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfRkZYU1I7XG4gXG4gXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9BVVRPSUJSUyk7XG4mIzQzO1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfQVVUT0lCUlM7XG4mIzQzO1xuJiM0MztcdGt2bV94ODZfY2FsbChzZXR1cF9lZmVyX2NhcHMpKCk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fb3BzX3VwZGF0ZShzdHJ1Y3Qga3ZtX3g4Nl9pbml0X29wcyAqb3BzKVxuQEAgLTcwMzgsMTMgJiM0Mzs3MDQ2LDEzIEBAIGludCBrdm1feDg2X3ZlbmRvcl9pbml0KHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXG4gXHRpZiAociAhPSAwKVxuIFx0XHRnb3RvIG91dF9tbXVfZXhpdDtcbiBcbi1cdGt2bV9zZXR1cF9lZmVyX2NhcHMoKTtcbi1cbiBcdGVuYWJsZV9kZXZpY2VfcG9zdGVkX2lycXMgXHUwMDI2PSBlbmFibGVfYXBpY3YgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQgICAgIGlycV9yZW1hcHBpbmdfY2FwKElSUV9QT1NUSU5HX0NBUCk7XG4gXG4gXHRrdm1fb3BzX3VwZGF0ZShvcHMpO1xuIFxuJiM0MztcdGt2bV9zZXR1cF9lZmVyX2NhcHMoKTtcbiYjNDM7XG4gXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xuIFx0XHRzbXBfY2FsbF9mdW5jdGlvbl9zaW5nbGUoY3B1LCBrdm1feDg2X2NoZWNrX2NwdV9jb21wYXQsIFx1MDAyNnIsIDEpO1xuIFx0XHRpZiAociBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbmluZGV4IDdkM2EyN2JjMGQ4NDJhLi5iMTYxMTc0ZWNlNDUzMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5AQCAtMjA4LDYgJiM0MzsyMDgsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9OQlx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVDWCwgMjQpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9MTENcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI4KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX05YXHRcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDIwKVxuJiM0MzsjZGVmaW5lXHRYODZfRkVBVFVSRV9GWFNSX09QVFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjUpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfR0JQQUdFU1x0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjYpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUkRUU0NQXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNylcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9MTVx0XHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyOSlcbkBAIC0yMjYsNiAmIzQzOzIyNyw3IEBAIHN0cnVjdCBrdm1feDg2X2NwdV9mZWF0dXJlIHtcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVlx0XHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAxRiwgMCwgRUFYLCAxKVxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX0VTXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAxRiwgMCwgRUFYLCAzKVxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX1NOUFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgNClcbiYjNDM7I2RlZmluZVx0WDg2X0ZFQVRVUkVfQVVUT0lCUlNcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDgpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfR1BfT05fVVNFUl9DUFVJRFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDE3KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZNT05fVjJcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIyLCAwLCBFQVgsIDApXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfTEJSX1BNQ19GUkVFWkVcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMiwgMCwgRUFYLCAyKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xuaW5kZXggOGU2NTRjYzlhYjE2ODcuLjU2MmFmYWIzNzhkMTFlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcbkBAIC0yMSwyMCAmIzQzOzIxLDIwIEBAXG4gI2luY2x1ZGUgXCYjMzQ7a3ZtX3V0aWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Byb2Nlc3Nvci5oXCYjMzQ7XG4gXG4tI2RlZmluZSBURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyLCBvcmlnLCBiaXQpXHRcdFx0XHRcXFxuJiM0MzsjZGVmaW5lIFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCByZWcsIG9yaWcsIGJpdClcdFx0XHRcdFxcXG4gZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHN0cnVjdCBrdm1fc3JlZ3MgbmV3O1x0XHRcdFx0XHRcdFx0XFxcbiBcdGludCByYztcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdC8qIFNraXAgdGhlIHN1Yi10ZXN0LCB0aGUgZmVhdHVyZS9iaXQgaXMgc3VwcG9ydGVkLiAqL1x0XHRcdFxcXG4tXHRpZiAob3JpZy5jciBcdTAwMjYgYml0KVx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRpZiAob3JpZy5yZWcgXHUwMDI2IGJpdClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdGJyZWFrO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdG1lbWNweShcdTAwMjZuZXcsIFx1MDAyNm9yaWcsIHNpemVvZihzcmVncykpO1x0XHRcdFx0XHRcXFxuLVx0bmV3LmNyIHw9IGJpdDtcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRtZW1jcHkoXHUwMDI2bmV3LCBcdTAwMjZvcmlnLCBzaXplb2YobmV3KSk7XHRcdFx0XHRcdFxcXG4mIzQzO1x0bmV3LnJlZyB8PSBiaXQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0cmMgPSBfdmNwdV9zcmVnc19zZXQodmNwdSwgXHUwMDI2bmV3KTtcdFx0XHRcdFx0XFxcbi1cdFRFU1RfQVNTRVJUKHJjLCBcJiMzNDtLVk0gYWxsb3dlZCBpbnZhbGlkIFwmIzM0OyAjY3IgXCYjMzQ7IGJpdCAoMHglbHgpXCYjMzQ7LCBiaXQpO1x0XFxcbiYjNDM7XHRURVNUX0FTU0VSVChyYywgXCYjMzQ7S1ZNIGFsbG93ZWQgaW52YWxpZCBcJiMzNDsgI3JlZyBcJiMzNDsgYml0ICgweCVsbHgpXCYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKWJpdCk7IFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0LyogU2FuaXR5IGNoZWNrIHRoYXQgS1ZNIGRpZG4mIzM5O3QgY2hhbmdlIGFueXRoaW5nLiAqL1x0XHRcdFxcXG4gXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcdTAwMjZuZXcpO1x0XHRcdFx0XHRcdFxcXG5AQCAtNDYsNiAmIzQzOzQ2LDggQEAgZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFg4Nl9DUjRfTUNFIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8XHRcXFxuIFx0XHRcdFx0WDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X09TWE1NRVhDUFQpXG4gXG4mIzQzOyNkZWZpbmUgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIgRUZFUl9TQ0VcbiYjNDM7XG4gc3RhdGljIHU2NCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKHZvaWQpXG4ge1xuIFx0dTY0IGNyNCA9IEtWTV9BTFdBWVNfQUxMT1dFRF9DUjQ7XG5AQCAtNzQsNiAmIzQzOzc2LDI0IEBAIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKVxuIFx0cmV0dXJuIGNyNDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfZWZlcl9mZWF0dXJlX2JpdHModm9pZClcbiYjNDM7e1xuJiM0MztcdHU2NCBlZmVyID0gS1ZNX0FMV0FZU19BTExPV0VEX0VGRVI7XG4mIzQzO1xuJiM0MztcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9MTSkpXG4mIzQzO1x0XHRlZmVyIHw9IChFRkVSX0xNRSB8IEVGRVJfTE1BKTtcbiYjNDM7XHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTlgpKVxuJiM0MztcdFx0ZWZlciB8PSBFRkVSX05YO1xuJiM0MztcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKVxuJiM0MztcdFx0ZWZlciB8PSBFRkVSX1NWTUU7XG4mIzQzO1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0ZYU1JfT1BUKSlcbiYjNDM7XHRcdGVmZXIgfD0gRUZFUl9GRlhTUjtcbiYjNDM7XHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKVxuJiM0MztcdFx0ZWZlciB8PSBFRkVSX0FVVE9JQlJTO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gZWZlcjtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCB0ZXN0X2NyX2JpdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgY3I0KVxuIHtcbiBcdHN0cnVjdCBrdm1fc3JlZ3Mgc3JlZ3M7XG5AQCAtOTYsMjYgJiM0MzsxMTYsNDUgQEAgc3RhdGljIHZvaWQgdGVzdF9jcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGNyNClcbiBcdFx0ICAgIChzcmVncy5jcjQgXHUwMDI2IFg4Nl9DUjRfUEtFKSA/IFwmIzM0O3NldFwmIzM0OyA6IFwmIzM0O2NsZWFyXCYjMzQ7KTtcbiBcbiBcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnNyZWdzKTtcbi1cdFRFU1RfQVNTRVJUKHNyZWdzLmNyNCA9PSBjcjQsIFwmIzM0O3NyZWdzLkNSNCAoMHglbGx4KSAhPSBDUjQgKDB4JWx4KVwmIzM0Oyxcbi1cdFx0ICAgIHNyZWdzLmNyNCwgY3I0KTtcbi1cbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9WTVhFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUENJREUpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNQVApO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XG4mIzQzO1x0VEVTVF9BU1NFUlRfRVEoc3JlZ3MuY3I0LCBjcjQpO1xuJiM0MztcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9WTVhFKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUENJREUpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNQVApO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XG4gXG4gXHRmb3IgKGkgPSAzMjsgaSBcdTAwM2MgNjQ7IGkmIzQzOyYjNDM7KVxuLVx0XHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIEJJVChpKSk7XG4mIzQzO1x0XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTtcbiBcbiBcdC8qIE5XIHdpdGhvdXQgQ0QgaXMgaWxsZWdhbCwgYXMgaXMgUEcgd2l0aG91dCBQRS4gKi9cbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfUEcpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX05XKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9QRyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfZWZlcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzO1xuJiM0MztcdGludCByYztcbiYjNDM7XG4mIzQzO1x0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuJiM0MztcdHNyZWdzLmVmZXIgfD0gZWZlcjtcbiYjNDM7XHRyYyA9IF92Y3B1X3NyZWdzX3NldCh2Y3B1LCBcdTAwMjZzcmVncyk7XG4mIzQzO1x0VEVTVF9BU1NFUlQoIXJjLCBcJiMzNDtGYWlsZWQgdG8gc2V0IHN1cHBvcnRlZCBFRkVSIGJpdHMgKDB4JWxseClcJiMzNDssIHNyZWdzLmVmZXIpO1xuJiM0MztcbiYjNDM7XHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcdTAwMjZzcmVncyk7XG4mIzQzO1x0VEVTVF9BU1NFUlRfRVEoc3JlZ3MuZWZlciwgZWZlcik7XG4mIzQzO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9MTUUpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9OWCk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX1NWTUUpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9GRlhTUik7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0FVVE9JQlJTKTtcbiB9XG4gXG4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbkBAIC0xMzIsNiAmIzQzOzE3MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHQgKi9cbiBcdHZtID0gdm1fY3JlYXRlX2JhcmVib25lcygpO1xuIFx0dmNwdSA9IF9fdm1fdmNwdV9hZGQodm0sIDApO1xuJiM0MztcdHRlc3RfZWZlcl9iaXRzKHZjcHUsIEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSKTtcbiBcdHRlc3RfY3JfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0KTtcbiBcdGt2bV92bV9mcmVlKHZtKTtcbiBcbkBAIC0xNTEsNiAmIzQzOzE5MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdCAgICBzcmVncy5hcGljX2Jhc2UpO1xuIFxuIFx0dGVzdF9jcl9iaXRzKHZjcHUsIGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHMoKSk7XG4mIzQzO1x0dGVzdF9lZmVyX2JpdHModmNwdSwgY2FsY19zdXBwb3J0ZWRfZWZlcl9mZWF0dXJlX2JpdHMoKSk7XG4gXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9BTUQmIzM0OywKICAgICYjMzQ7S1ZNX0lOVEVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3ZhbGlkX2VmZXImIzM0OywKICAgICYjMzQ7c2V0X2VmZXImIzM0OywKICAgICYjMzQ7a3ZtX2lzX3ZhbGlkX3NyZWdzJiMzNDssCiAgICAmIzM0O19fc2V0X3NyZWdzX2NvbW1vbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0geDg2IEVGRVIgTVNSIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgaG93IHN1cHBvcnRlZCBFRkVSIGJpdHMgYXJlIGNoZWNrZWQgYW5kIHNldC4gSXQgcmVwbGFjZXMgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AgYW5kIGludHJvZHVjZXMgYHNldHVwX2VmZXJfY2Fwc2AgdG8gYGt2bV94ODZfb3BzYC4gVGhpcyBhZmZlY3RzIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGFuZCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFuZCBzdGF0ZSByZXN0b3JhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiYWE1NjNjODYzNWU2ZjE3ZDIzOTg3MmVmM2FjMzQxNzJmMGM4NWZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAwNjoyODo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oCmluZGV4IDgzZGM1MDg2MTM4YjM5Li5kNTg3MjQyZGNhYjU2MSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oCkBAIC00NSw2ICYjNDM7NDUsNyBAQCBLVk1fWDg2X09QX09QVElPTkFMKHBvc3Rfc2V0X2NyMykKIEtWTV9YODZfT1AoaXNfdmFsaWRfY3I0KQogS1ZNX1g4Nl9PUChzZXRfY3I0KQogS1ZNX1g4Nl9PUChzZXRfZWZlcikKJiM0MztLVk1fWDg2X09QX09QVElPTkFMKHNldHVwX2VmZXJfY2FwcykKIEtWTV9YODZfT1AoZ2V0X2lkdCkKIEtWTV9YODZfT1Aoc2V0X2lkdCkKIEtWTV9YODZfT1AoZ2V0X2dkdCkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCmluZGV4IGQ4NzAwZWI4NDhiNDUyLi40MGJlMzlmZWEzOWI5YyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC0zMjksNiAmIzQzOzMyOSw4IEBAIHN0cnVjdCBrdm1fY2FwcyB7CiAJdTY0IHN1cHBvcnRlZF94c3M7CiAJdTY0IHN1cHBvcnRlZF9wZXJmX2NhcDsKIAomIzQzOwl1NjQgc3VwcG9ydGVkX2VmZXJfYml0czsKJiM0MzsKIAl1NjQgc3VwcG9ydGVkX3F1aXJrczsKIAl1NjQgaW5hcHBsaWNhYmxlX3F1aXJrczsKIH07CkBAIC0xNzMwLDYgJiM0MzsxNzMyLDcgQEAgc3RydWN0IGt2bV94ODZfb3BzIHsKIAlib29sICgqaXNfdmFsaWRfY3I0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3I0KTsKIAl2b2lkICgqc2V0X2NyNCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCk7CiAJaW50ICgqc2V0X2VmZXIpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpOwomIzQzOwl2b2lkICgqc2V0dXBfZWZlcl9jYXBzKSh2b2lkKTsKIAl2b2lkICgqZ2V0X2lkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTsKIAl2b2lkICgqc2V0X2lkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTsKIAl2b2lkICgqZ2V0X2dkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tc3JzLmMgYi9hcmNoL3g4Ni9rdm0vbXNycy5jCmluZGV4IGMyMzBiMThkODdlMzhlLi5hMzljNzMwODhmMWZiMiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbXNycy5jCkBAIC0xOSwxNyAmIzQzOzE5LDYgQEAgYm9vbCBfX3JlYWRfbW9zdGx5IHJlcG9ydF9pZ25vcmVkX21zcnMgPSB0cnVlOwogbW9kdWxlX3BhcmFtKHJlcG9ydF9pZ25vcmVkX21zcnMsIGJvb2wsIDA2NDQpOwogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpOwogCi0vKiBFRkVSIGRlZmF1bHRzOgotICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk0KLSAqIC0gZW5hYmxlIExNRSBhbmQgTE1BIHBlciBkZWZhdWx0IG9uIDY0IGJpdCBLVk0KLSAqLwotI2lmZGVmIENPTkZJR19YODZfNjQKLXN0YXRpYwotdTY0IF9fcmVhZF9tb3N0bHkgZWZlcl9yZXNlcnZlZF9iaXRzID0gfigodTY0KShFRkVSX1NDRSB8IEVGRVJfTE1FIHwgRUZFUl9MTUEpKTsKLSNlbHNlCi1zdGF0aWMgdTY0IF9fcmVhZF9tb3N0bHkgZWZlcl9yZXNlcnZlZF9iaXRzID0gfigodTY0KUVGRVJfU0NFKTsKLSNlbmRpZgotCiAjZGVmaW5lIE1BWF9JT19NU1JTIDI1NgogCiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7CkBAIC02MTQsNyAmIzQzOzYwMyw3IEBAIHN0YXRpYyBib29sIF9fa3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcikKIH0KIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcikKIHsKLQlpZiAoZWZlciAmYW1wOyBlZmVyX3Jlc2VydmVkX2JpdHMpCiYjNDM7CWlmICghKGVmZXIgJmFtcDsga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cykpCiAJCXJldHVybiBmYWxzZTsKIAogCXJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpOwpAQCAtNjI3LDcgJiM0Mzs2MTYsNyBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbykKIAl1NjQgZWZlciA9IG1zcl9pbmZvLSZndDtkYXRhOwogCWludCByOwogCi0JaWYgKGVmZXIgJmFtcDsgZWZlcl9yZXNlcnZlZF9iaXRzKQomIzQzOwlpZiAoIShlZmVyICZhbXA7IGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpKQogCQlyZXR1cm4gMTsKIAogCWlmICghbXNyX2luZm8tJmd0O2hvc3RfaW5pdGlhdGVkKSB7CkBAIC02NTgsMTIgJiM0Mzs2NDcsNiBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbykKIAlyZXR1cm4gMDsKIH0KIAotdm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQgbWFzaykKLXsKLSAgICAgICBlZmVyX3Jlc2VydmVkX2JpdHMgJmFtcDs9IH5tYXNrOwotfQotRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9lbmFibGVfZWZlcl9iaXRzKTsKLQogYm9vbCBrdm1fbXNyX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHUzMiB0eXBlKQogewogCXN0cnVjdCBrdm1feDg2X21zcl9maWx0ZXIgKm1zcl9maWx0ZXI7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5oIGIvYXJjaC94ODYva3ZtL21zcnMuaAppbmRleCBiNjk4OTgzZTM3ZmI2MS4uODlmMTA0NDdjZGRkZjkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9tc3JzLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL21zcnMuaApAQCAtNTksNiAmIzQzOzU5LDcgQEAgaW50IGt2bV9nZXRfcmVnX2xpc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkgICAgIHN0cnVjdCBrdm1fcmVnX2xpc3QgX191c2VyICp1c2VyX2xpc3QpOwogCiB2b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7CiYjNDM7dm9pZCBrdm1fZGlzYWJsZV9lZmVyX2JpdHModTY0KTsKIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7CiBpbnQga3ZtX2VtdWxhdGVfbXNyX3JlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHU2NCAqZGF0YSk7CiBpbnQga3ZtX2VtdWxhdGVfbXNyX3dyaXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1NjQgZGF0YSk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcmVncy5jIGIvYXJjaC94ODYva3ZtL3JlZ3MuYwppbmRleCBkMmNhZjVhNjdkYmE0MC4uOTRjNGU0ZTQxODY4ZmMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9yZWdzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3JlZ3MuYwpAQCAtNTYzLDcgJiM0Mzs1NjMsOCBAQCBzdGF0aWMgYm9vbCBrdm1faXNfdmFsaWRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncykKIAl9CiAKIAlyZXR1cm4ga3ZtX2lzX3ZhbGlkX2NyNCh2Y3B1LCBzcmVncy0mZ3Q7Y3I0KSAmYW1wOyZhbXA7Ci0JICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtJmd0O2NyMCk7CiYjNDM7CSAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLSZndDtjcjApICZhbXA7JmFtcDsKJiM0MzsJICAgICAgIGt2bV92YWxpZF9lZmVyKHZjcHUsIHNyZWdzLSZndDtlZmVyKTsKIH0KIAogc3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncywKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCmluZGV4IGVmNjlhNTFhYjI3Zjk4Li5lNzU1ZjQzZjQzNzZlZSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCkBAIC0yNzQsNiAmIzQzOzI3NCwxNSBAQCBpbnQgc3ZtX3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBzdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpCiYjNDM7ewomIzQzOwlpZiAobmVzdGVkKSB7CiYjNDM7CQlrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfU1ZNRTsKJiM0MzsJCWlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSkKJiM0MzsJCQlrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTMyIHN2bV9nZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJc3RydWN0IHZjcHVfc3ZtICpzdm0gPSB0b19zdm0odmNwdSk7CkBAIC01MzY0LDYgJiM0Mzs1MzczLDcgQEAgc3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7CiAJLmlzX3ZhbGlkX2NyNCA9IHN2bV9pc192YWxpZF9jcjQsCiAJLnNldF9jcjQgPSBzdm1fc2V0X2NyNCwKIAkuc2V0X2VmZXIgPSBzdm1fc2V0X2VmZXIsCiYjNDM7CS5zZXR1cF9lZmVyX2NhcHMgPSBzdm1fc2V0dXBfZWZlcl9jYXBzLAogCS5nZXRfaWR0ID0gc3ZtX2dldF9pZHQsCiAJLnNldF9pZHQgPSBzdm1fc2V0X2lkdCwKIAkuZ2V0X2dkdCA9IHN2bV9nZXRfZ2R0LApAQCAtNTYzOCwxMCAmIzQzOzU2NDgsNiBAQCBzdGF0aWMgX19pbml0IGludCBzdm1faGFyZHdhcmVfc2V0dXAodm9pZCkKIAogCWlmIChuZXN0ZWQpIHsKIAkJcHJfaW5mbygmIzM0O05lc3RlZCBWaXJ0dWFsaXphdGlvbiBlbmFibGVkXG4mIzM0Oyk7Ci0JCWt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfU1ZNRSk7Ci0JCWlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSkKLQkJCWt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfTE1TTEUpOwotCiAJCXIgPSBuZXN0ZWRfc3ZtX2luaXRfbXNycG1fbWVyZ2Vfb2Zmc2V0cygpOwogCQlpZiAocikKIAkJCXJldHVybiByOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDhkYmMwZmEzMDJhOGI1Li41Y2VkYWE4NDA5ZjhkZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtNjg5MiwxNCAmIzQzOzY4OTIsMjIgQEAgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXR1cF94c3NfY2Fwcyk7CiAKIHN0YXRpYyB2b2lkIGt2bV9zZXR1cF9lZmVyX2NhcHModm9pZCkKIHsKJiM0MzsJLyogRW5hYmxlIHN5c2NhbGwgYnkgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk0gKi8KJiM0MzsJa3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyA9ICh1NjQpRUZFUl9TQ0U7CiYjNDM7CiYjNDM7CWlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfTE0pKQomIzQzOwkJa3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7CiYjNDM7CiAJaWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9OWCkpCi0JCWt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfTlgpOwomIzQzOwkJa3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX05YOwogCiAJaWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpCi0JCWt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfRkZYU1IpOwomIzQzOwkJa3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0ZGWFNSOwogCiAJaWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpCi0JCWt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfQVVUT0lCUlMpOwomIzQzOwkJa3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0FVVE9JQlJTOwomIzQzOwomIzQzOwlrdm1feDg2X2NhbGwoc2V0dXBfZWZlcl9jYXBzKSgpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX29wc191cGRhdGUoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcykKQEAgLTcwMzgsMTMgJiM0Mzs3MDQ2LDEzIEBAIGludCBrdm1feDg2X3ZlbmRvcl9pbml0KHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpCiAJaWYgKHIgIT0gMCkKIAkJZ290byBvdXRfbW11X2V4aXQ7CiAKLQlrdm1fc2V0dXBfZWZlcl9jYXBzKCk7Ci0KIAllbmFibGVfZGV2aWNlX3Bvc3RlZF9pcnFzICZhbXA7PSBlbmFibGVfYXBpY3YgJmFtcDsmYW1wOwogCQkJCSAgICAgaXJxX3JlbWFwcGluZ19jYXAoSVJRX1BPU1RJTkdfQ0FQKTsKIAogCWt2bV9vcHNfdXBkYXRlKG9wcyk7CiAKJiM0MzsJa3ZtX3NldHVwX2VmZXJfY2FwcygpOwomIzQzOwogCWZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7CiAJCXNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZShjcHUsIGt2bV94ODZfY2hlY2tfY3B1X2NvbXBhdCwgJmFtcDtyLCAxKTsKIAkJaWYgKHIgJmx0OyAwKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCmluZGV4IDdkM2EyN2JjMGQ4NDJhLi5iMTYxMTc0ZWNlNDUzMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaApAQCAtMjA4LDYgJiM0MzsyMDgsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7CiAjZGVmaW5lCVg4Nl9GRUFUVVJFX1BFUkZDVFJfTkIJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyNCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfUEVSRkNUUl9MTEMJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyOCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfTlgJCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjApCiYjNDM7I2RlZmluZQlYODZfRkVBVFVSRV9GWFNSX09QVAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI1KQogI2RlZmluZQlYODZfRkVBVFVSRV9HQlBBR0VTCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjYpCiAjZGVmaW5lCVg4Nl9GRUFUVVJFX1JEVFNDUAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI3KQogI2RlZmluZQlYODZfRkVBVFVSRV9MTQkJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyOSkKQEAgLTIyNiw2ICYjNDM7MjI3LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUgewogI2RlZmluZSBYODZfRkVBVFVSRV9TRVYJCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMSkKICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX0VTCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMykKICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX1NOUAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDQpCiYjNDM7I2RlZmluZQlYODZfRkVBVFVSRV9BVVRPSUJSUwkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDgpCiAjZGVmaW5lCVg4Nl9GRUFUVVJFX0dQX09OX1VTRVJfQ1BVSUQJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDE3KQogI2RlZmluZQlYODZfRkVBVFVSRV9QRVJGTU9OX1YyCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfTEJSX1BNQ19GUkVFWkUJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIyLCAwLCBFQVgsIDIpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMKaW5kZXggOGU2NTRjYzlhYjE2ODcuLjU2MmFmYWIzNzhkMTFlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jCkBAIC0yMSwyMCAmIzQzOzIxLDIwIEBACiAjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtwcm9jZXNzb3IuaCYjMzQ7CiAKLSNkZWZpbmUgVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjciwgb3JpZywgYml0KQkJCQlcCiYjNDM7I2RlZmluZSBURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgcmVnLCBvcmlnLCBiaXQpCQkJCVwKIGRvIHsJCQkJCQkJCQkJXAogCXN0cnVjdCBrdm1fc3JlZ3MgbmV3OwkJCQkJCQlcCiAJaW50IHJjOwkJCQkJCQkJCVwKIAkJCQkJCQkJCQlcCiAJLyogU2tpcCB0aGUgc3ViLXRlc3QsIHRoZSBmZWF0dXJlL2JpdCBpcyBzdXBwb3J0ZWQuICovCQkJXAotCWlmIChvcmlnLmNyICZhbXA7IGJpdCkJCQkJCQkJXAomIzQzOwlpZiAob3JpZy5yZWcgJmFtcDsgYml0KQkJCQkJCQlcCiAJCWJyZWFrOwkJCQkJCQkJXAogCQkJCQkJCQkJCVwKLQltZW1jcHkoJmFtcDtuZXcsICZhbXA7b3JpZywgc2l6ZW9mKHNyZWdzKSk7CQkJCQlcCi0JbmV3LmNyIHw9IGJpdDsJCQkJCQkJCVwKJiM0MzsJbWVtY3B5KCZhbXA7bmV3LCAmYW1wO29yaWcsIHNpemVvZihuZXcpKTsJCQkJCVwKJiM0MzsJbmV3LnJlZyB8PSBiaXQ7CQkJCQkJCQlcCiAJCQkJCQkJCQkJXAogCXJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsICZhbXA7bmV3KTsJCQkJCVwKLQlURVNUX0FTU0VSVChyYywgJiMzNDtLVk0gYWxsb3dlZCBpbnZhbGlkICYjMzQ7ICNjciAmIzM0OyBiaXQgKDB4JWx4KSYjMzQ7LCBiaXQpOwlcCiYjNDM7CVRFU1RfQVNTRVJUKHJjLCAmIzM0O0tWTSBhbGxvd2VkIGludmFsaWQgJiMzNDsgI3JlZyAmIzM0OyBiaXQgKDB4JWxseCkmIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZyliaXQpOyBcCiAJCQkJCQkJCQkJXAogCS8qIFNhbml0eSBjaGVjayB0aGF0IEtWTSBkaWRuJiMzOTt0IGNoYW5nZSBhbnl0aGluZy4gKi8JCQlcCiAJdmNwdV9zcmVnc19nZXQodmNwdSwgJmFtcDtuZXcpOwkJCQkJCVwKQEAgLTQ2LDYgJiM0Mzs0Niw4IEBAIGRvIHsJCQkJCQkJCQkJXAogCQkJCVg4Nl9DUjRfTUNFIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8CVwKIAkJCQlYODZfQ1I0X09TRlhTUiB8IFg4Nl9DUjRfT1NYTU1FWENQVCkKIAomIzQzOyNkZWZpbmUgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIgRUZFUl9TQ0UKJiM0MzsKIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKQogewogCXU2NCBjcjQgPSBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0OwpAQCAtNzQsNiAmIzQzOzc2LDI0IEBAIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKQogCXJldHVybiBjcjQ7CiB9CiAKJiM0MztzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKHZvaWQpCiYjNDM7ewomIzQzOwl1NjQgZWZlciA9IEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSOwomIzQzOwomIzQzOwlpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTE0pKQomIzQzOwkJZWZlciB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9OWCkpCiYjNDM7CQllZmVyIHw9IEVGRVJfTlg7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKQomIzQzOwkJZWZlciB8PSBFRkVSX1NWTUU7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpCiYjNDM7CQllZmVyIHw9IEVGRVJfRkZYU1I7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpCiYjNDM7CQllZmVyIHw9IEVGRVJfQVVUT0lCUlM7CiYjNDM7CiYjNDM7CXJldHVybiBlZmVyOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpCiB7CiAJc3RydWN0IGt2bV9zcmVncyBzcmVnczsKQEAgLTk2LDI2ICYjNDM7MTE2LDQ1IEBAIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpCiAJCSAgICAoc3JlZ3MuY3I0ICZhbXA7IFg4Nl9DUjRfUEtFKSA/ICYjMzQ7c2V0JiMzNDsgOiAmIzM0O2NsZWFyJiMzNDspOwogCiAJdmNwdV9zcmVnc19nZXQodmNwdSwgJmFtcDtzcmVncyk7Ci0JVEVTVF9BU1NFUlQoc3JlZ3MuY3I0ID09IGNyNCwgJiMzNDtzcmVncy5DUjQgKDB4JWxseCkgIT0gQ1I0ICgweCVseCkmIzM0OywKLQkJICAgIHNyZWdzLmNyNCwgY3I0KTsKLQotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1ZNWEUpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QQ0lERSk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01BUCk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7CiYjNDM7CVRFU1RfQVNTRVJUX0VRKHNyZWdzLmNyNCwgY3I0KTsKJiM0MzsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0xBNTcpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9WTVhFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0ZTR1NCQVNFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUENJREUpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01FUCk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNQVApOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpOwogCiAJZm9yIChpID0gMzI7IGkgJmx0OyA2NDsgaSYjNDM7JiM0MzspCi0JCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTsKJiM0MzsJCVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBCSVQoaSkpOwogCiAJLyogTlcgd2l0aG91dCBDRCBpcyBpbGxlZ2FsLCBhcyBpcyBQRyB3aXRob3V0IFBFLiAqLwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9QRyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfZWZlcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzOwomIzQzOwlpbnQgcmM7CiYjNDM7CiYjNDM7CXZjcHVfc3JlZ3NfZ2V0KHZjcHUsICZhbXA7c3JlZ3MpOwomIzQzOwlzcmVncy5lZmVyIHw9IGVmZXI7CiYjNDM7CXJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsICZhbXA7c3JlZ3MpOwomIzQzOwlURVNUX0FTU0VSVCghcmMsICYjMzQ7RmFpbGVkIHRvIHNldCBzdXBwb3J0ZWQgRUZFUiBiaXRzICgweCVsbHgpJiMzNDssIHNyZWdzLmVmZXIpOwomIzQzOwomIzQzOwl2Y3B1X3NyZWdzX2dldCh2Y3B1LCAmYW1wO3NyZWdzKTsKJiM0MzsJVEVTVF9BU1NFUlRfRVEoc3JlZ3MuZWZlciwgZWZlcik7CiYjNDM7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9MTUUpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTlgpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfU1ZNRSk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9GRlhTUik7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9BVVRPSUJSUyk7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCkBAIC0xMzIsNiAmIzQzOzE3MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJdm0gPSB2bV9jcmVhdGVfYmFyZWJvbmVzKCk7CiAJdmNwdSA9IF9fdm1fdmNwdV9hZGQodm0sIDApOwomIzQzOwl0ZXN0X2VmZXJfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUik7CiAJdGVzdF9jcl9iaXRzKHZjcHUsIEtWTV9BTFdBWVNfQUxMT1dFRF9DUjQpOwogCWt2bV92bV9mcmVlKHZtKTsKIApAQCAtMTUxLDYgJiM0MzsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkgICAgc3JlZ3MuYXBpY19iYXNlKTsKIAogCXRlc3RfY3JfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKCkpOwomIzQzOwl0ZXN0X2VmZXJfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9lZmVyX2ZlYXR1cmVfYml0cygpKTsKIAogCWt2bV92bV9mcmVlKHZtKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjUyCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIHg4NiBFRkVSIE1TUiBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsbHkgY2hhbmdpbmcgaG93IEtWTSB4ODYgaGFuZGxlcyB0aGUgRUZFUiBNU1IgYW5kIHNyZWdzLiBJdCYjMzk7cyB0b3VjaGluZyBhIGZldyBrZXkgYXJlYXMsIGFuZCBteSBleHBlcnQgaW50dWl0aW9uIGlzIHNjcmVhbWluZyAmIzM0O2Z1enppbmcgb3Bwb3J0dW5pdHkuJiMzNDsgV2UmIzM5O3ZlIGdvdCBhIG5ldyBgc2V0dXBfZWZlcl9jYXBzYCBmdW5jdGlvbiBpbiBga3ZtX3g4Nl9vcHNgLCBsZXZlcmFnaW5nIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYCBpbnN0ZWFkIG9mIGBlZmVyX3Jlc2VydmVkX2JpdHNgIOKAkyB0aGF0JiMzOTtzIGEgc2lnbmFsLiBUaGUgY2hhbmdlcyBhcmUgaW1wYWN0aW5nIGBrdm1fdmFsaWRfZWZlcmAgYW5kIGBzZXRfZWZlcmAgaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLCBhbmQgYWxzbyBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AgdG8gaW5jbHVkZSBhIGNoZWNrIGZvciBga3ZtX3ZhbGlkX2VmZXJgLiBGdXJ0aGVybW9yZSwgd2UgaGF2ZSBhZGRpdGlvbnMgb2YgYHN2bV9zZXR1cF9lZmVyX2NhcHNgIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYCwgYW5kIGEgbW9kaWZpY2F0aW9uIGluIGBrdm1fc2V0dXBfZWZlcl9jYXBzYCBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZXNlIGZ1bmN0aW9ucyBmb3IgZnV6emluZyBjYW1wYWlnbnM6IGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCBgc3ZtX3NldHVwX2VmZXJfY2Fwc2AsIGFuZCBga3ZtX3NldHVwX2VmZXJfY2Fwc2AuIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyBgX19zZXRfc3JlZ3NfY29tbW9uYCBhcyBhIHBvdGVudGlhbCBhcmVhIHRvIGludmVzdGlnYXRlLCBqdXN0IHRvIGJlIHRob3JvdWdoLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgY2FsbCBjaGFpbnMsIGFuZCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW4gdGhlIHJlbGV2YW50IGNvZGUgZmlsZXMuIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCBgYXJjaC94ODYva3ZtL21zcnMuY2AgYW5kIGZvdW5kIGBzZXRfZWZlcmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGFuZCBga3ZtX3ZhbGlkX2VmZXJgIGlzIGdsb2JhbC4gU28sIGBzZXRfZWZlcmAgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGluc2lkZSBvZiB0aGUgYG1zcnMuY2AgZmlsZSBhbmQgb25seSBjYWxsYWJsZSBmcm9tIGluc2lkZSBpdC4gSSBhbHNvIGNvbmZpcm1lZCB3aXRoIGBncmVwcGVyYCB0aGF0IGBrdm1faXNfdmFsaWRfc3JlZ3NgIGlzIHN0YXRpYyBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AsIGFuZCBgc3ZtX3NldHVwX2VmZXJfY2Fwc2AgaXMgc3RhdGljIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYCwgYW5kIHRoYXQgYGt2bV9zZXR1cF9lZmVyX2NhcHNgIGlzIHN0YXRpYyBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4KClVzaW5nIGBncmVwcGVyYCwgSSYjMzk7bSBjb25maXJtaW5nIHRoZSBjYWxsIHJlbGF0aW9uc2hpcHMuIGBrdm1fdmFsaWRfZWZlcmAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBhbmQgYHNldF9lZmVyYC4gQW5kIGZyb20gaW5zcGVjdGlvbiwgYHNldF9lZmVyYCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGBrdm1fc2V0X21zcl9jb21tb25gIHdoZW4gZGVhbGluZyB3aXRoIGBNU1JfRUZFUmAuCgpGaW5hbGx5LCBhIHF1aWNrIEtjb25maWcgY2hlY2sgdGVsbHMgbWUgdGhhdCBDT05GSUdfS1ZNIGlzIGEgaGFyZCByZXF1aXJlbWVudCwgYW5kIHdlJiMzOTtsbCBuZWVkIGVpdGhlciBDT05GSUdfS1ZNX0FNRCBvciBDT05GSUdfS1ZNX0lOVEVMIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBDUFUuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgbm93IHV0aWxpemUgYGdyZXBwZXJgIHRvIGZpbmQgZXhhY3RseSB3aGVyZSBga3ZtX3ZhbGlkX2VmZXJgIGlzIGRlZmluZWQuIFRoaXMmIzM5O2xsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgZXhhY3Qgc2NvcGUgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgbGFyZ2VyIEtWTSB4ODYgY29udGV4dC4gVGhpcyBzZWVtcyBsaWtlIGEgcHJvbWlzaW5nIHBhdGggdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3ZhbGlkX2VmZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL21zcnMuYz01Nzc9c3RhdGljIGludCBkb19nZXRfZmVhdHVyZV9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbmRleCwgdTY0ICpkYXRhKVxuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmMtNTgyLVxuYXJjaC94ODYva3ZtL21zcnMuYzo1ODM6c3RhdGljIGJvb2wgX19rdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuYXJjaC94ODYva3ZtL21zcnMuYy01ODQte1xuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmMtNjAzLX1cbmFyY2gveDg2L2t2bS9tc3JzLmM6NjA0OmJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjA1LXtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYwOC1cbmFyY2gveDg2L2t2bS9tc3JzLmM6NjA5Olx0cmV0dXJuIF9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcik7XG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYxMC19XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYxMTpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3ZhbGlkX2VmZXIpO1xuYXJjaC94ODYva3ZtL21zcnMuYy02MTItXG5hcmNoL3g4Ni9rdm0vbXNycy5jPTYxMz1zdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYyMi1cdGlmICghbXNyX2luZm8tXHUwMDNlaG9zdF9pbml0aWF0ZWQpIHtcbmFyY2gveDg2L2t2bS9tc3JzLmM6NjIzOlx0XHRpZiAoIV9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcikpXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYyNC1cdFx0XHRyZXR1cm4gMTtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5oPTYyPXZvaWQga3ZtX2Rpc2FibGVfZWZlcl9iaXRzKHU2NCk7XG5hcmNoL3g4Ni9rdm0vbXNycy5oOjYzOmJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG5hcmNoL3g4Ni9rdm0vbXNycy5oLTY0LWludCBrdm1fZW11bGF0ZV9tc3JfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0ICpkYXRhKTtcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU0ND1zdGF0aWMgYm9vbCBrdm1faXNfdmFsaWRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU2Ni1cdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVx1MDAzZWNyMCkgXHUwMDI2XHUwMDI2XG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU2NzpcdCAgICAgICBrdm1fdmFsaWRfZWZlcih2Y3B1LCBzcmVncy1cdTAwM2VlZmVyKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTY4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTQzOT1zdGF0aWMgYm9vbCBuZXN0ZWRfdm1jYl9jaGVja19zYXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ3Mi1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDczOlx0aWYgKENDKCFrdm1fdmFsaWRfZWZlcih2Y3B1LCBzYXZlLVx1MDAzZWVmZXIpKSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDc0LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yNzQ2PXN0YXRpYyBpbnQgZWZlcl90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NTItXHQgKiBDbGVhciB0aGUgRUZFUl9TVk1FIGJpdCBmcm9tIEVGRVIuIFRoZSBTVk0gY29kZSBhbHdheXMgc2V0cyB0aGlzXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjI3NTM6XHQgKiBiaXQgaW4gc3ZtX3NldF9lZmVyKCksIGJ1dCBfX2t2bV92YWxpZF9lZmVyKCkgY2hlY2tzIGl0IGFnYWluc3RcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjc1NC1cdCAqIHdoZXRoZXIgdGhlIGd1ZXN0IGhhcyBYODZfRkVBVFVSRV9TVk0gLSB0aGlzIGF2b2lkcyBhIGZhaWx1cmUgaWZcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMxNzI9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2hvc3Rfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzIzNC1cdGlmICh2bWNzMTItXHUwMDNldm1fZXhpdF9jb250cm9scyBcdTAwMjYgVk1fRVhJVF9MT0FEX0lBMzJfRUZFUikge1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozMjM1Olx0XHRpZiAoQ0MoIWt2bV92YWxpZF9lZmVyKHZjcHUsIHZtY3MxMi1cdTAwM2Vob3N0X2lhMzJfZWZlcikpIHx8XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMyMzYtXHRcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXHUwMDNlaG9zdF9pYTMyX2VmZXIgXHUwMDI2IEVGRVJfTE1BKSkgfHxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMzMDg9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2d1ZXN0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMzNzMtXHQgICAgKHZtY3MxMi1cdTAwM2V2bV9lbnRyeV9jb250cm9scyBcdTAwMjYgVk1fRU5UUllfTE9BRF9JQTMyX0VGRVIpKSB7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjMzNzQ6XHRcdGlmIChDQygha3ZtX3ZhbGlkX2VmZXIodmNwdSwgdm1jczEyLVx1MDAzZWd1ZXN0X2lhMzJfZWZlcikpIHx8XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMzNzUtXHRcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXHUwMDNlZ3Vlc3RfaWEzMl9lZmVyIFx1MDAyNiBFRkVSX0xNQSkpIHx8XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNDIKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFRkVSIE1TUiBNb2RpZmljYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyB0b3VjaGluZyBNU1IgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBFRkVSLiBJIHNlZSBjaGFuZ2VzIGluIGBrdm1fdmFsaWRfZWZlcmAgYW5kIGBzZXRfZWZlcmAgd2l0aGluIGBhcmNoL3g4Ni9rdm0vbXNycy5jYC4gVGhhdCYjMzk7cyBhIGtleSBhcmVhIHRvIHplcm8gaW4gb24uIFRoZSBwYXRjaCBhbHNvIGFkZHMgdGhlc2UgYF9zZXR1cF9lZmVyX2NhcHNgIGZ1bmN0aW9ucywgb25lIGluIHRoZSBTVk0gZGlyZWN0b3J5IGFuZCB0aGUgb3RoZXIgaW4gdGhlIHg4NiBkaXJlY3RvcnkuIEJ1dCB0aG9zZSBsb29rIGxpa2UgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zLCB3aGljaCBtYWtlcyB0aGVtIGxlc3MgaW50ZXJlc3RpbmcgZm9yIG15IHB1cnBvc2VzIOKAkyBmdXp6aW5nLCBtb3N0bHkuCgpOb3csIGBzZXRfZWZlcmAuLi4gdGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0ICppcyogY2FsbGVkIHRocm91Z2ggc29tZSBvdGhlciBtZWNoYW5pc20gbGlrZSBga3ZtX3NldF9tc3JfY29tbW9uYCwgc28gdGhhdCYjMzk7cyBzb21ldGhpbmcgdG8gY29uc2lkZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGZsb3cuCgpJJiMzOTttIHRoaW5raW5nLCBga3ZtX3ZhbGlkX2VmZXJgIGlzIGRlZmluaXRlbHkgYSBnb29kIHRhcmdldCBmb3IgZGVlcGVyIGFuYWx5c2lzLiBUaGF0IHNlZW1zIGxpa2UgYSBwcmltZSBhcmVhIGZvciB2YWxpZGF0aW5nIHRoZSBNU1IgdmFsdWUgYmVmb3JlIHNldHRpbmcgaXQuIEFuZCwgd2hpbGUgSSYjMzk7bSBhdCBpdCwgSSBzaG91bGQgYWxzbyBsb29rIGF0IGBrdm1faXNfdmFsaWRfc3JlZ3NgLiBUaG9zZSBjaGVja3MgYXJlIG9mdGVuIGdvbGRtaW5lcyBmb3Igc3VidGxlIGJ1Z3MuIEkgc2hvdWxkIGFsc28gbm90ZSB0aGF0IGBzZXRfZWZlcmAgY291bGQgYmUgYSBrZXkgcGxhY2UgdG8gZXhwbG9yZSB0b28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0X2VmZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD00Nj1LVk1fWDg2X09QKHNldF9jcjQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ3OktWTV9YODZfT1Aoc2V0X2VmZXIpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTQ4LUtWTV9YODZfT1BfT1BUSU9OQUwoc2V0dXBfZWZlcl9jYXBzKVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTY4ND1zdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTczMy1cdHZvaWQgKCpzZXRfY3I0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3I0KTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTczNDpcdGludCAoKnNldF9lZmVyKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTczNS1cdHZvaWQgKCpzZXR1cF9lZmVyX2NhcHMpKHZvaWQpO1xuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmM9NjExPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmFsaWRfZWZlcik7XG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYxMi1cbmFyY2gveDg2L2t2bS9tc3JzLmM6NjEzOnN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuYXJjaC94ODYva3ZtL21zcnMuYy02MTQte1xuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmMtNjMzLVxuYXJjaC94ODYva3ZtL21zcnMuYzo2MzQ6XHRyID0ga3ZtX3g4Nl9jYWxsKHNldF9lZmVyKSh2Y3B1LCBlZmVyKTtcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjM1LVx0aWYgKHIpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jPTE0NDI9aW50IGt2bV9zZXRfbXNyX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYy0xNTM5LVx0Y2FzZSBNU1JfRUZFUjpcbmFyY2gveDg2L2t2bS9tc3JzLmM6MTU0MDpcdFx0cmV0dXJuIHNldF9lZmVyKHZjcHUsIG1zcl9pbmZvKTtcbmFyY2gveDg2L2t2bS9tc3JzLmMtMTU0MS1cdGNhc2UgTVNSX0s3X0hXQ1I6IHtcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU3MD1zdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNTk4LVx0Km1tdV9yZXNldF9uZWVkZWQgfD0gdmNwdS1cdTAwM2VhcmNoLmVmZXIgIT0gc3JlZ3MtXHUwMDNlZWZlcjtcbmFyY2gveDg2L2t2bS9yZWdzLmM6NTk5Olx0a3ZtX3g4Nl9jYWxsKHNldF9lZmVyKSh2Y3B1LCBzcmVncy1cdTAwM2VlZmVyKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjAwLVxuLS1cbmFyY2gveDg2L2t2bS9zbW0uYz0yNzk9dm9pZCBlbnRlcl9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zbW0uYy0zNjEtXHRpZiAoZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfTE0pKVxuYXJjaC94ODYva3ZtL3NtbS5jOjM2MjpcdFx0aWYgKGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgMCkpXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYzLVx0XHRcdGdvdG8gZXJyb3I7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz03NDU9c3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy03OTItXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjc5MzpcdHN2bV9zZXRfZWZlcih2Y3B1LCBzdm0tXHUwMDNlbmVzdGVkLnNhdmUuZWZlcik7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTc5NC1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEzMjI9dm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0MjctXHRrdm1fc2V0X3JmbGFncyh2Y3B1LCB2bWNiMDEtXHUwMDNlc2F2ZS5yZmxhZ3MpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNDI4Olx0c3ZtX3NldF9lZmVyKHZjcHUsIHZtY2IwMS1cdTAwM2VzYXZlLmVmZXIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDI5LVx0c3ZtX3NldF9jcjAodmNwdSwgdm1jYjAxLVx1MDAzZXNhdmUuY3IwIHwgWDg2X0NSMF9QRSk7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yMDE9c3RhdGljIGludCBnZXRfbnB0X2xldmVsKHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMDktXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIxMDppbnQgc3ZtX3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIxMS17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yNzQ2PXN0YXRpYyBpbnQgZWZlcl90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NTItXHQgKiBDbGVhciB0aGUgRUZFUl9TVk1FIGJpdCBmcm9tIEVGRVIuIFRoZSBTVk0gY29kZSBhbHdheXMgc2V0cyB0aGlzXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjI3NTM6XHQgKiBiaXQgaW4gc3ZtX3NldF9lZmVyKCksIGJ1dCBfX2t2bV92YWxpZF9lZmVyKCkgY2hlY2tzIGl0IGFnYWluc3RcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjc1NC1cdCAqIHdoZXRoZXIgdGhlIGd1ZXN0IGhhcyBYODZfRkVBVFVSRV9TVk0gLSB0aGlzIGF2b2lkcyBhIGZhaWx1cmUgaWZcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMzQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01Mzc0LVx0LnNldF9jcjQgPSBzdm1fc2V0X2NyNCxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTM3NTpcdC5zZXRfZWZlciA9IHN2bV9zZXRfZWZlcixcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTM3Ni1cdC5zZXR1cF9lZmVyX2NhcHMgPSBzdm1fc2V0dXBfZWZlcl9jYXBzLFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9ODA5PXZvaWQgc3ZtX3VwZGF0ZV9sYnJ2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTgxMC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6ODExOmludCBzdm1fc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTgxMi12b2lkIHN2bV9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjApO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTQxMz1zdGF0aWMgdm9pZCB2dF9zZXRfY3I0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDIwLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDIxOnN0YXRpYyBpbnQgdnRfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyMi17XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDI1LVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDI2Olx0cmV0dXJuIHZteF9zZXRfZWZlcih2Y3B1LCBlZmVyKTtcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyNy19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTI0LVx0LnNldF9jcjQgPSB2dF9vcChzZXRfY3I0KSxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjkyNTpcdC5zZXRfZWZlciA9IHZ0X29wKHNldF9lZmVyKSxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTkyNi1cdC5nZXRfaWR0ID0gdnRfb3AoZ2V0X2lkdCksXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yMzk2PXN0YXRpYyB2b2lkIHByZXBhcmVfdm1jczAyX2Vhcmx5KHN0cnVjdCB2Y3B1X3ZteCAqdm14LCBzdHJ1Y3QgbG9hZGVkX3ZtY3MgKnZtY3MwMSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1MDktXHQgKiB2bWNzMTImIzM5O3MgVk1fe0VOVFJZLEVYSVR9X0xPQURfSUEzMl9FRkVSIGFuZCBWTV9FTlRSWV9JQTMyRV9NT0RFXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1MTA6XHQgKiBhcmUgZW11bGF0ZWQgYnkgdm14X3NldF9lZmVyKCkgaW4gcHJlcGFyZV92bWNzMDIoKSwgYnV0IHNwZWN1bGF0ZVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTExLVx0ICogb24gdGhlIHJlbGF0ZWQgYml0cyAoaWYgc3VwcG9ydGVkIGJ5IHRoZSBDUFUpIGluIHRoZSBob3BlIHRoYXRcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjUxMjpcdCAqIHdlIGNhbiBhdm9pZCBWTVdyaXRlcyBkdXJpbmcgdm14X3NldF9lZmVyKCkuXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1MTMtXHQgKlxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjUzNC1cdCAqIHdlIHNob3VsZCB1c2UgaXRzIGV4aXQgY29udHJvbHMuIE5vdGUgdGhhdCBWTV9FWElUX0xPQURfSUEzMl9FRkVSXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1MzU6XHQgKiBiaXRzIG1heSBiZSBtb2RpZmllZCBieSB2bXhfc2V0X2VmZXIoKSBpbiBwcmVwYXJlX3ZtY3MwMigpLlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTM2LVx0ICovXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNzI1PXN0YXRpYyBpbnQgcHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yODA4LVx0LyogTm90ZTogbWF5IG1vZGlmeSBWTV9FTlRSWS9FWElUX0NPTlRST0xTIGFuZCBHVUVTVC9IT1NUX0lBMzJfRUZFUiAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyODA5Olx0dm14X3NldF9lZmVyKHZjcHUsIHZjcHUtXHUwMDNlYXJjaC5lZmVyKTtcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjgxMC1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTQ3OTU9c3RhdGljIHZvaWQgbG9hZF92bWNzMTJfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00ODA2LVx0XHR2Y3B1LVx1MDAzZWFyY2guZWZlciBcdTAwMjY9IH4oRUZFUl9MTUEgfCBFRkVSX0xNRSk7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ4MDc6XHR2bXhfc2V0X2VmZXIodmNwdSwgdmNwdS1cdTAwM2VhcmNoLmVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00ODA4LVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9NDk1NT1zdGF0aWMgdm9pZCBuZXN0ZWRfdm14X3Jlc3RvcmVfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00OTg0LVx0ICovXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ5ODU6XHR2bXhfc2V0X2VmZXIodmNwdSwgbmVzdGVkX3ZteF9nZXRfdm1jczAxX2d1ZXN0X2VmZXIodm14KSk7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTQ5ODYtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjAxPXN0YXRpYyB2b2lkIGVudGVyX3Jtb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyNDgtXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMyNDk6aW50IHZteF9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjUwLXtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMyNzQ9c3RhdGljIHZvaWQgZW50ZXJfbG1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4Ny1cdH1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI4ODpcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guZWZlciB8IEVGRVJfTE1BKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4OS19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjkxPXN0YXRpYyB2b2lkIGV4aXRfbG1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjkyLXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI5MzpcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guZWZlciBcdTAwMjYgfkVGRVJfTE1BKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI5NC19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguaD0zNTA9dm9pZCB2bXhfc2V0X2ludGVycnVwdF9zaGFkb3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgbWFzayk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5oOjM1MTppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguaC0zNTItdm9pZCB2bXhfc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaD03MT1ib29sIHZteF9pc192YWxpZF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCk7XG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaDo3MjppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtNzMtdm9pZCB2bXhfZ2V0X2lkdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz05NDc5PXZvaWQga3ZtX3ZjcHVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGluaXRfZXZlbnQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTk1ODUtXHRrdm1feDg2X2NhbGwoc2V0X2NyNCkodmNwdSwgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6OTU4NjpcdGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtOTU4Ny1cdGt2bV94ODZfY2FsbCh1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcCkodmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2ODAKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA1MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMgaW4gS1ZNL3g4NiBNU1IgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBsb29rIGF0IGBzZXRfZWZlcmAgaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgIGJlY2F1c2UgdGhlIHBhdGNoIG1vZGlmaWVzIGl0LiBXYWl0LCBgc2V0X2VmZXJgIGlzICpzdGF0aWMqIHdpdGhpbiBgbXNycy5jYC4gSG1tLCB0aGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBJIGtub3cgYGt2bV9zZXRfbXNyX2NvbW1vbmAgY2FsbHMgYHNldF9lZmVyYCwgYnV0IHRoYXQmIzM5O3MgYSBoZWF2aWx5IHVzZWQgaG90IHBhdGgsIGEgYml0IHRvbyBicm9hZCBmb3IgZm9jdXNlZCBmdXp6aW5nLgoKTXkgbmV4dCB0aG91Z2h0OiBldmVuIHRob3VnaCBgc2V0X2VmZXJgIGlzIHN0YXRpYywgU3l6a2FsbGVyICpjYW4qIGZ1enogc3RhdGljIGZ1bmN0aW9ucyAqaWYqIHRoZXkmIzM5O3JlIGluIHRoZSBjb3ZlcmFnZSwgb3IsIG1vcmUgcmVsZXZhbnRseSwgaWYgdGhleSYjMzk7cmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gV2UgYWxzbyB1c2UgYEZvY3VzU3ltYm9sc2AgdG8gZ3VpZGUgdGhlIGZ1enplciwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgYSBnb29kIHN5bWJvbCwgc28gSSYjMzk7bGwgZ28gd2l0aCBgc2V0X2VmZXJgLgoKVGhlbiBJIHJlbWVtYmVyIGBrdm1fdmFsaWRfZWZlcmAgaXMgZXhwb3J0ZWQgYW5kIGdsb2JhbC4gUGVyZmVjdC4gSSBhbHNvIHNlZSB0aGF0IGBrdm1faXNfdmFsaWRfc3JlZ3NgIGlzIHN0YXRpYyB3aXRoaW4gYHJlZ3MuY2AgYW5kIGBfX3NldF9zcmVnc19jb21tb25gIGlzIHN0YXRpYyBpbiBgcmVncy5jYCwgc28gSSYjMzk7bGwgYWRkIHRob3NlLiBTbyB0aGUgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIG9uIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCBhbmQgYF9fc2V0X3NyZWdzX2NvbW1vbmAuCgpKdXN0IHRvIGJlIHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgIGFuZCBgYXJjaC94ODYva3ZtL3g4Ni5jYCBmb3IgYW55IHJlbGF0ZWQgZnVuY3Rpb25zLCBsaWtlIGBzdm1fc2V0dXBfZWZlcl9jYXBzYCBhbmQgYGt2bV9zZXR1cF9lZmVyX2NhcHNgLiBBaCwgYm90aCBhcmUgaW5pdCBmdW5jdGlvbnMsIGNhbGxlZCBvbmx5IGR1cmluZyBzZXR1cCDigJMgbm90IHJlbGV2YW50IGZvciAqcnVudGltZSogZnV6emluZy4KClRoZXJlZm9yZSwgdGhlIG1haW4gZnVuY3Rpb25hbCBjaGFuZ2VzIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFyZTogYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCAoaW4gbXNycy5jKSwgYW5kIGBrdm1faXNfdmFsaWRfc3JlZ3NgLiBXZSYjMzk7bGwgaWdub3JlIGBfX3NldF9zcmVnc19jb21tb25gIGZvciBub3cuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBzZWFyY2ggdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSB0b3VjaGVkLiBSaWdodCwgdGhlIHBhdGNoICphbHNvKiB0b3VjaGVzIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNgLCBidXQgdGhhdCYjMzk7cyBqdXN0IGEgdGVzdCwgbm90IGNvZGUgdGhhdCBleGVjdXRlcyBkdXJpbmcgdGhlIFZNJiMzOTtzIG5vcm1hbCBvcGVyYXRpb24uCgpGaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuIEkmIzM5O2xsIHNlYXJjaCBmb3IgYEtWTWAsIGBLVk1fQU1EYCwgYW5kIGBLVk1fSU5URUxgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gRUZFUiBvciBzaW1pbGFyIHNldHRpbmdzLiBUaGF0IG1pZ2h0IGdpdmUgbWUgYSBicm9hZGVyIHBpY3R1cmUgb2Ygd2hlcmUgdGhlc2Ugc2V0dGluZ3MgYXJlIGJlaW5nIHVzZWQgYW5kIGFueSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyMDptZW51Y29uZmlnIEtWTVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTY9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xNy1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MzE6Y29uZmlnIEtWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7TWFpbnRhaW4gY291bnRlcnMgZm9yIENPUDAgYWNjZXNzZXNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI2OmNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzAtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM0OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzg6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zOS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00My1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0NTpjb25maWcgS1ZNX0JPT0szU18zMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9CT09LM1NfNjRcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc182NCBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTc4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODAtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTAxLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTI2OmNvbmZpZyBLVk1fQk9PSzNTX0hWX0VYSVRfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMwLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTYtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTU3OmNvbmZpZyBLVk1fQk9PSzNTX0hWX05FU1RFRF9QTVVfV09SS0FST1VORFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cdGJvb2wgXCYjMzQ7TmVzdGVkIEwwIGhvc3Qgd29ya2Fyb3VuZCBmb3IgTDEgS1ZNIGhvc3QgUE1VIGhhbmRsaW5nIGJ1Z1wmIzM0OyBpZiBFWFBFUlRcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTcxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODQ6Y29uZmlnIEtWTV9CT09LRV9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4NS1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg3OmNvbmZpZyBLVk1fRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0RldGFpbGVkIGV4aXQgdGltaW5nXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTktXHRib29sIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTM6Y29uZmlnIEtWTV9FNTAwTUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTQtXHRib29sIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9NUElDXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVx0Ym9vbCBcJiMzNDtLVk0gaW4ta2VybmVsIE1QSUMgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0MC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQyLVx0Ym9vbCBcJiMzNDtLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTE6Y29uZmlnIEtWTV9YSVZFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUyLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZz0yMj1zb3VyY2UgXCYjMzQ7YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1wmIzM0O1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTIzLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7S1ZNIEd1ZXN0IHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnPTE3PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTIwLVx0ZGVmX3RyaXN0YXRlIHlcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDYtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXHRib29sIFwmIzM0O1VzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTgzOT1zb3VyY2UgXCYjMzQ7YXJjaC94ODYveGVuL0tjb25maWdcJiMzNDtcbmFyY2gveDg2L0tjb25maWctODQwLVxuYXJjaC94ODYvS2NvbmZpZzo4NDE6Y29uZmlnIEtWTV9HVUVTVFxuYXJjaC94ODYvS2NvbmZpZy04NDItXHRib29sIFwmIzM0O0tWTSBHdWVzdCBzdXBwb3J0IChpbmNsdWRpbmcga3ZtY2xvY2spXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4tLVxudmlydC9rdm0vS2NvbmZpZy0zLVxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXG4tLVxudmlydC9rdm0vS2NvbmZpZy00Mi1cbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTQ1LVxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXG52aXJ0L2t2bS9LY29uZmlnLTUxLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuLS1cbnZpcnQva3ZtL0tjb25maWctNjEtXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xudmlydC9rdm0vS2NvbmZpZy02My0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuLS1cbnZpcnQva3ZtL0tjb25maWctNjctXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbnZpcnQva3ZtL0tjb25maWctNjktICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzAtXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXG52aXJ0L2t2bS9LY29uZmlnLTcyLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTczLVxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxudmlydC9rdm0vS2NvbmZpZy03NS0gICAgICAgZGVmX2Jvb2wgeVxuLS1cbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXG4tLVxudmlydC9rdm0vS2NvbmZpZy05My1cbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG52aXJ0L2t2bS9LY29uZmlnLTk1LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xudmlydC9rdm0vS2NvbmZpZy05OC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy05OS1cbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXG52aXJ0L2t2bS9LY29uZmlnLTEwMS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy0xMDItXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcbnZpcnQva3ZtL0tjb25maWctMTA0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcbnZpcnQva3ZtL0tjb25maWctMTA3LSAgICAgICBzZWxlY3QgWEFSUkFZX01VTFRJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExNTIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBFRkVSIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBLVk0gY29uZmlndXJhdGlvbnM6IGBLVk1gLCBgS1ZNX0lOVEVMYCwgYW5kIGBLVk1fQU1EYC4gSG1tLCBgS1ZNYCBpcyBhIHRyaXN0YXRlLCBzbyBsZXQmIzM5O3MganVzdCB1c2UgdGhlIGJhc2UgYEtWTWAgb3B0aW9uLCB0aGF0JiMzOTtzIHRoZSBtb3N0IGdlbmVyYWwuCgpOb3csIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBga3ZtX3ZhbGlkX2VmZXJgIGFuZCBgc2V0X2VmZXJgIHdpdGhpbiBgYXJjaC94ODYva3ZtL21zcnMuY2AuIFRoYXQmIzM5O3MgdGhlIGNvcmUgYXJlYSBvZiBpbnRlcmVzdCBmb3IgRUZFUiBtb2RpZmljYXRpb25zLiBga3ZtX3ZhbGlkX2VmZXJgIGlzIGNhbGxlZCBieSBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AsIHdoaWNoIGdpdmVzIHVzIGEgZ29vZCBwaWN0dXJlIG9mIHdoZXJlIHRoZSB2YWxpZGF0aW9uIHRha2VzIHBsYWNlLiBBbmQgYHNldF9lZmVyYCBpcyBjYWxsZWQgZnJvbSBga3ZtX3NldF9tc3JfY29tbW9uYCwgYWxzbyBpbiBgYXJjaC94ODYva3ZtL21zcnMuY2AuIERpZ2dpbmcgZGVlcGVyLCBgX19zZXRfc3JlZ3NfY29tbW9uYCBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AgYWxzbyBjYWxscyBgc2V0X2VmZXJgLCBzbyBpdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudC4KClRoZXJlZm9yZSwgdGhlIGtleSBzeW1ib2xzIHRoYXQgd2FycmFudCBjbG9zZXIgZXhhbWluYXRpb24gYXJlIGNsZWFybHk6CiogICBga3ZtX3ZhbGlkX2VmZXJgCiogICBgc2V0X2VmZXJgCiogICBga3ZtX2lzX3ZhbGlkX3NyZWdzYAoqICAgYF9fc2V0X3NyZWdzX2NvbW1vbmAKCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIHRoZSBuYW1lcyB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZW0gcmlnaHQuLi55ZXMsIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zLiBTbyBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgY2hlY2sgdGhhdCBgX19zZXRfc3JlZ3NfY29tbW9uYCBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fc2V0X3NyZWdzX2NvbW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vcmVncy5jPTU0ND1zdGF0aWMgYm9vbCBrdm1faXNfdmFsaWRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU2OS1cbmFyY2gveDg2L2t2bS9yZWdzLmM6NTcwOnN0YXRpYyBpbnQgX19zZXRfc3JlZ3NfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3MS1cdFx0XHQgICAgICBpbnQgKm1tdV9yZXNldF9uZWVkZWQsIGJvb2wgdXBkYXRlX3BkcHRycylcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTYzNz1zdGF0aWMgaW50IF9fc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy02NDAtXHRpbnQgbW11X3Jlc2V0X25lZWRlZCA9IDA7XG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY0MTpcdGludCByZXQgPSBfX3NldF9zcmVnc19jb21tb24odmNwdSwgc3JlZ3MsIFx1MDAyNm1tdV9yZXNldF9uZWVkZWQsIHRydWUpO1xuYXJjaC94ODYva3ZtL3JlZ3MuYy02NDItXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYz02Nzg9aW50IGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTY5Mi1cbmFyY2gveDg2L2t2bS9yZWdzLmM6NjkzOlx0cmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIChzdHJ1Y3Qga3ZtX3NyZWdzICopc3JlZ3MyLFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTQtXHRcdFx0XHQgXHUwMDI2bW11X3Jlc2V0X25lZWRlZCwgIXZhbGlkX3BkcHRycyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzMxCgkJCQkJCQlvdXRwdXQ6IDIxNAoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0geDg2IEVGRVIgTVNSIEhhbmRsaW5nIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggaXMgZm9jdXNpbmcgb24gYF9fc2V0X3NyZWdzX2NvbW1vbmAg4oCTIHRoYXQgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSBob3cgaXQgaW1wYWN0cyB0aGUgeDg2IEVGRVIgTVNSIGhhbmRsaW5nIHdpdGhpbiBLVk0uCgpSaWdodCwgYHNldF9lZmVyYCBpcyB3aGF0IEkgbmVlZCB0byBsb29rIGF0LiBBbmQgeWVzLCB0aGVyZSBpdCBpcyBpbiBgYXJjaC94ODYva3ZtL21zcnMuY2AuIEl0JiMzOTtzIHN0YXRpYywgYnV0IGFzIGV4cGVjdGVkLCBga3ZtX3NldF9tc3JfY29tbW9uYCBjYWxscyBpdCBmb3IgYE1TUl9FRkVSYCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbi4gSSBhbHNvIHNlZSB0aGF0IGBrdm1fdmFsaWRfZWZlcmAgaXMgZXhwb3J0ZWQuCgpTbywgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlOgoKKiAgIGBrdm1fdmFsaWRfZWZlcmAKKiAgIGBzZXRfZWZlcmAKKiAgIGBrdm1faXNfdmFsaWRfc3JlZ3NgCiogICBgX19zZXRfc3JlZ3NfY29tbW9uYAoKVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIG5lZWQgY2xvc2Ugc2NydXRpbnkuCgpUaGUgY2hhbmdlcyBpbnZvbHZlIGFsdGVyaW5nIGhvdyBzdXBwb3J0ZWQgRUZFUiBiaXRzIGFyZSBjaGVja2VkIGFuZCBzZXQuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIHJlcGxhY2VzIGBlZmVyX3Jlc2VydmVkX2JpdHNgIHdpdGggYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgLiBUaGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGBzZXR1cF9lZmVyX2NhcHNgIHRvIGBrdm1feDg2X29wc2AuIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCwgYW5kIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCB3aGljaCBhcmUgYWxsIHJlYWNoZWQgZHVyaW5nIFZNIGV4ZWN1dGlvbiBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gbG9naWMsIGFuZCB0aGF0IG1lYW5zIHdlICphYnNvbHV0ZWx5KiBuZWVkIHRvIGluY2x1ZGUgdGhpcyBpbiB0aGUgZnV6emluZyBzdHJhdGVneS4KCk9uZSBtb3JlIHRoaW5nLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgY292ZXJlZCB0aGUgY29uZmlncy4gVGhlIHBhdGNoIGlzIGNsZWFybHkgYWZmZWN0aW5nIHg4Niwgc28gYEtWTWAsIGBLVk1fQU1EYCwgYW5kIGBLVk1fSU5URUxgIGFyZSB1c3VhbGx5IG5lZWRlZCB0byBydW4gS1ZNIG9uIHg4Niwgc28gSSYjMzk7bGwgaW5jbHVkZSB0aGVtLgoKTGV0JiMzOTtzIGxvZyB0aGUgZmluZGluZ3MgYW5kIGdldCB0aGlzIHNldCB1cCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDssCiAgICAmIzM0O3NldF9lZmVyJiMzNDssCiAgICAmIzM0O2t2bV9pc192YWxpZF9zcmVncyYjMzQ7LAogICAgJiMzNDtfX3NldF9zcmVnc19jb21tb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIHg4NiBFRkVSIE1TUiBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGhvdyBzdXBwb3J0ZWQgRUZFUiBiaXRzIGFyZSBjaGVja2VkIGFuZCBzZXQuIEl0IHJlcGxhY2VzIGBlZmVyX3Jlc2VydmVkX2JpdHNgIHdpdGggYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgIGFuZCBpbnRyb2R1Y2VzIGBzZXR1cF9lZmVyX2NhcHNgIHRvIGBrdm1feDg2X29wc2AuIFRoaXMgYWZmZWN0cyBga3ZtX3ZhbGlkX2VmZXJgLCBgc2V0X2VmZXJgLCBhbmQgYGt2bV9pc192YWxpZF9zcmVnc2AsIHdoaWNoIGFyZSByZWFjaGFibGUgZHVyaW5nIFZNIGV4ZWN1dGlvbiBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIEtWTSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9BTUQmIzM0OywKICAgICYjMzQ7S1ZNX0lOVEVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3ZhbGlkX2VmZXImIzM0OywKICAgICYjMzQ7c2V0X2VmZXImIzM0OywKICAgICYjMzQ7a3ZtX2lzX3ZhbGlkX3NyZWdzJiMzNDssCiAgICAmIzM0O19fc2V0X3NyZWdzX2NvbW1vbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0geDg2IEVGRVIgTVNSIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgaG93IHN1cHBvcnRlZCBFRkVSIGJpdHMgYXJlIGNoZWNrZWQgYW5kIHNldC4gSXQgcmVwbGFjZXMgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AgYW5kIGludHJvZHVjZXMgYHNldHVwX2VmZXJfY2Fwc2AgdG8gYGt2bV94ODZfb3BzYC4gVGhpcyBhZmZlY3RzIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGFuZCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFuZCBzdGF0ZSByZXN0b3JhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6Mjg6NTAuMjI3NjE2Njk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM5NTI5NTgxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fdmFsaWRfZWZlclwiLFxuICAgIFwic2V0X2VmZXJcIixcbiAgICBcImt2bV9pc192YWxpZF9zcmVnc1wiLFxuICAgIFwiX19zZXRfc3JlZ3NfY29tbW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIHg4NiBFRkVSIE1TUiBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGhvdyBzdXBwb3J0ZWQgRUZFUiBiaXRzIGFyZSBjaGVja2VkIGFuZCBzZXQuIEl0IHJlcGxhY2VzIGBlZmVyX3Jlc2VydmVkX2JpdHNgIHdpdGggYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgIGFuZCBpbnRyb2R1Y2VzIGBzZXR1cF9lZmVyX2NhcHNgIHRvIGBrdm1feDg2X29wc2AuIFRoaXMgYWZmZWN0cyBga3ZtX3ZhbGlkX2VmZXJgLCBgc2V0X2VmZXJgLCBhbmQgYGt2bV9pc192YWxpZF9zcmVnc2AsIHdoaWNoIGFyZSByZWFjaGFibGUgZHVyaW5nIFZNIGV4ZWN1dGlvbiBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIEtWTSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6Mjg6NTAuMjI3NjIxODI1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMzNDMzNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiYWE1NjNjODYzNWU2ZjE3ZDIzOTg3MmVmM2FjMzQxNzJmMGM4NWZkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDEgMDY6Mjg6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcXG5pbmRleCA4M2RjNTA4NjEzOGIzOS4uZDU4NzI0MmRjYWI1NjEgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaFxcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcXG5AQCAtNDUsNiArNDUsNyBAQCBLVk1fWDg2X09QX09QVElPTkFMKHBvc3Rfc2V0X2NyMylcXG4gS1ZNX1g4Nl9PUChpc192YWxpZF9jcjQpXFxuIEtWTV9YODZfT1Aoc2V0X2NyNClcXG4gS1ZNX1g4Nl9PUChzZXRfZWZlcilcXG4rS1ZNX1g4Nl9PUF9PUFRJT05BTChzZXR1cF9lZmVyX2NhcHMpXFxuIEtWTV9YODZfT1AoZ2V0X2lkdClcXG4gS1ZNX1g4Nl9PUChzZXRfaWR0KVxcbiBLVk1fWDg2X09QKGdldF9nZHQpXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuaW5kZXggZDg3MDBlYjg0OGI0NTIuLjQwYmUzOWZlYTM5YjljIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTMyOSw2ICszMjksOCBAQCBzdHJ1Y3Qga3ZtX2NhcHMge1xcbiBcXHR1NjQgc3VwcG9ydGVkX3hzcztcXG4gXFx0dTY0IHN1cHBvcnRlZF9wZXJmX2NhcDtcXG4gXFxuK1xcdHU2NCBzdXBwb3J0ZWRfZWZlcl9iaXRzO1xcbitcXG4gXFx0dTY0IHN1cHBvcnRlZF9xdWlya3M7XFxuIFxcdHU2NCBpbmFwcGxpY2FibGVfcXVpcmtzO1xcbiB9O1xcbkBAIC0xNzMwLDYgKzE3MzIsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xcbiBcXHRib29sICgqaXNfdmFsaWRfY3I0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3I0KTtcXG4gXFx0dm9pZCAoKnNldF9jcjQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpO1xcbiBcXHRpbnQgKCpzZXRfZWZlcikoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuK1xcdHZvaWQgKCpzZXR1cF9lZmVyX2NhcHMpKHZvaWQpO1xcbiBcXHR2b2lkICgqZ2V0X2lkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTtcXG4gXFx0dm9pZCAoKnNldF9pZHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGRlc2NfcHRyICpkdCk7XFxuIFxcdHZvaWQgKCpnZXRfZ2R0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5jIGIvYXJjaC94ODYva3ZtL21zcnMuY1xcbmluZGV4IGMyMzBiMThkODdlMzhlLi5hMzljNzMwODhmMWZiMiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5jXFxuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuY1xcbkBAIC0xOSwxNyArMTksNiBAQCBib29sIF9fcmVhZF9tb3N0bHkgcmVwb3J0X2lnbm9yZWRfbXNycyA9IHRydWU7XFxuIG1vZHVsZV9wYXJhbShyZXBvcnRfaWdub3JlZF9tc3JzLCBib29sLCAwNjQ0KTtcXG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xcbiBcXG4tLyogRUZFUiBkZWZhdWx0czpcXG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cXG4tICogLSBlbmFibGUgTE1FIGFuZCBMTUEgcGVyIGRlZmF1bHQgb24gNjQgYml0IEtWTVxcbi0gKi9cXG4tI2lmZGVmIENPTkZJR19YODZfNjRcXG4tc3RhdGljXFxuLXU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NCkoRUZFUl9TQ0UgfCBFRkVSX0xNRSB8IEVGRVJfTE1BKSk7XFxuLSNlbHNlXFxuLXN0YXRpYyB1NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpRUZFUl9TQ0UpO1xcbi0jZW5kaWZcXG4tXFxuICNkZWZpbmUgTUFYX0lPX01TUlMgMjU2XFxuIFxcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XFxuQEAgLTYxNCw3ICs2MDMsNyBAQCBzdGF0aWMgYm9vbCBfX2t2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXFxuIH1cXG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbiB7XFxuLVxcdGlmIChlZmVyIFxcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxcbitcXHRpZiAoIShlZmVyIFxcdTAwMjYga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cykpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdHJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpO1xcbkBAIC02MjcsNyArNjE2LDcgQEAgc3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXFxuIFxcdHU2NCBlZmVyID0gbXNyX2luZm8tXFx1MDAzZWRhdGE7XFxuIFxcdGludCByO1xcbiBcXG4tXFx0aWYgKGVmZXIgXFx1MDAyNiBlZmVyX3Jlc2VydmVkX2JpdHMpXFxuK1xcdGlmICghKGVmZXIgXFx1MDAyNiBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzKSlcXG4gXFx0XFx0cmV0dXJuIDE7XFxuIFxcbiBcXHRpZiAoIW1zcl9pbmZvLVxcdTAwM2Vob3N0X2luaXRpYXRlZCkge1xcbkBAIC02NTgsMTIgKzY0Nyw2IEBAIHN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tdm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQgbWFzaylcXG4te1xcbi0gICAgICAgZWZlcl9yZXNlcnZlZF9iaXRzIFxcdTAwMjY9IH5tYXNrO1xcbi19XFxuLUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fZW5hYmxlX2VmZXJfYml0cyk7XFxuLVxcbiBib29sIGt2bV9tc3JfYWxsb3dlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTMyIHR5cGUpXFxuIHtcXG4gXFx0c3RydWN0IGt2bV94ODZfbXNyX2ZpbHRlciAqbXNyX2ZpbHRlcjtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmhcXG5pbmRleCBiNjk4OTgzZTM3ZmI2MS4uODlmMTA0NDdjZGRkZjkgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuaFxcbisrKyBiL2FyY2gveDg2L2t2bS9tc3JzLmhcXG5AQCAtNTksNiArNTksNyBAQCBpbnQga3ZtX2dldF9yZWdfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdCAgICAgc3RydWN0IGt2bV9yZWdfbGlzdCBfX3VzZXIgKnVzZXJfbGlzdCk7XFxuIFxcbiB2b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7XFxuK3ZvaWQga3ZtX2Rpc2FibGVfZWZlcl9iaXRzKHU2NCk7XFxuIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuIGludCBrdm1fZW11bGF0ZV9tc3JfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0ICpkYXRhKTtcXG4gaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcmVncy5jIGIvYXJjaC94ODYva3ZtL3JlZ3MuY1xcbmluZGV4IGQyY2FmNWE2N2RiYTQwLi45NGM0ZTRlNDE4NjhmYyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vcmVncy5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3JlZ3MuY1xcbkBAIC01NjMsNyArNTYzLDggQEAgc3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBrdm1faXNfdmFsaWRfY3I0KHZjcHUsIHNyZWdzLVxcdTAwM2VjcjQpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVxcdTAwM2VjcjApO1xcbitcXHQgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy1cXHUwMDNlY3IwKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtXFx1MDAzZWVmZXIpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbmluZGV4IGVmNjlhNTFhYjI3Zjk4Li5lNzU1ZjQzZjQzNzZlZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbkBAIC0yNzQsNiArMjc0LDE1IEBAIGludCBzdm1fc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHN2bV9zZXR1cF9lZmVyX2NhcHModm9pZClcXG4re1xcbitcXHRpZiAobmVzdGVkKSB7XFxuK1xcdFxcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9TVk1FO1xcbitcXHRcXHRpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9FRkVSX0xNU0xFX01CWikpXFxuK1xcdFxcdFxcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9MTVNMRTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdTMyIHN2bV9nZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4gXFx0c3RydWN0IHZjcHVfc3ZtICpzdm0gPSB0b19zdm0odmNwdSk7XFxuQEAgLTUzNjQsNiArNTM3Myw3IEBAIHN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbiBcXHQuaXNfdmFsaWRfY3I0ID0gc3ZtX2lzX3ZhbGlkX2NyNCxcXG4gXFx0LnNldF9jcjQgPSBzdm1fc2V0X2NyNCxcXG4gXFx0LnNldF9lZmVyID0gc3ZtX3NldF9lZmVyLFxcbitcXHQuc2V0dXBfZWZlcl9jYXBzID0gc3ZtX3NldHVwX2VmZXJfY2FwcyxcXG4gXFx0LmdldF9pZHQgPSBzdm1fZ2V0X2lkdCxcXG4gXFx0LnNldF9pZHQgPSBzdm1fc2V0X2lkdCxcXG4gXFx0LmdldF9nZHQgPSBzdm1fZ2V0X2dkdCxcXG5AQCAtNTYzOCwxMCArNTY0OCw2IEBAIHN0YXRpYyBfX2luaXQgaW50IHN2bV9oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbiBcXG4gXFx0aWYgKG5lc3RlZCkge1xcbiBcXHRcXHRwcl9pbmZvKFxcXCJOZXN0ZWQgVmlydHVhbGl6YXRpb24gZW5hYmxlZFxcXFxuXFxcIik7XFxuLVxcdFxcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfU1ZNRSk7XFxuLVxcdFxcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSlcXG4tXFx0XFx0XFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9MTVNMRSk7XFxuLVxcbiBcXHRcXHRyID0gbmVzdGVkX3N2bV9pbml0X21zcnBtX21lcmdlX29mZnNldHMoKTtcXG4gXFx0XFx0aWYgKHIpXFxuIFxcdFxcdFxcdHJldHVybiByO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCA4ZGJjMGZhMzAyYThiNS4uNWNlZGFhODQwOWY4ZGYgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuQEAgLTY4OTIsMTQgKzY4OTIsMjIgQEAgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXR1cF94c3NfY2Fwcyk7XFxuIFxcbiBzdGF0aWMgdm9pZCBrdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpXFxuIHtcXG4rXFx0LyogRW5hYmxlIHN5c2NhbGwgYnkgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk0gKi9cXG4rXFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyA9ICh1NjQpRUZFUl9TQ0U7XFxuK1xcbitcXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0xNKSlcXG4rXFx0XFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XFxuK1xcbiBcXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX05YKSlcXG4tXFx0XFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9OWCk7XFxuK1xcdFxcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9OWDtcXG4gXFxuIFxcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfRlhTUl9PUFQpKVxcbi1cXHRcXHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0ZGWFNSKTtcXG4rXFx0XFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0ZGWFNSO1xcbiBcXG4gXFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpXFxuLVxcdFxcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfQVVUT0lCUlMpO1xcbitcXHRcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfQVVUT0lCUlM7XFxuK1xcbitcXHRrdm1feDg2X2NhbGwoc2V0dXBfZWZlcl9jYXBzKSgpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX29wc191cGRhdGUoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcXG5AQCAtNzAzOCwxMyArNzA0NiwxMyBAQCBpbnQga3ZtX3g4Nl92ZW5kb3JfaW5pdChzdHJ1Y3Qga3ZtX3g4Nl9pbml0X29wcyAqb3BzKVxcbiBcXHRpZiAociAhPSAwKVxcbiBcXHRcXHRnb3RvIG91dF9tbXVfZXhpdDtcXG4gXFxuLVxcdGt2bV9zZXR1cF9lZmVyX2NhcHMoKTtcXG4tXFxuIFxcdGVuYWJsZV9kZXZpY2VfcG9zdGVkX2lycXMgXFx1MDAyNj0gZW5hYmxlX2FwaWN2IFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdFxcdCAgICAgaXJxX3JlbWFwcGluZ19jYXAoSVJRX1BPU1RJTkdfQ0FQKTtcXG4gXFxuIFxcdGt2bV9vcHNfdXBkYXRlKG9wcyk7XFxuIFxcbitcXHRrdm1fc2V0dXBfZWZlcl9jYXBzKCk7XFxuK1xcbiBcXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xcbiBcXHRcXHRzbXBfY2FsbF9mdW5jdGlvbl9zaW5nbGUoY3B1LCBrdm1feDg2X2NoZWNrX2NwdV9jb21wYXQsIFxcdTAwMjZyLCAxKTtcXG4gXFx0XFx0aWYgKHIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcXG5pbmRleCA3ZDNhMjdiYzBkODQyYS4uYjE2MTE3NGVjZTQ1MzEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXFxuQEAgLTIwOCw2ICsyMDgsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XFxuICNkZWZpbmVcXHRYODZfRkVBVFVSRV9QRVJGQ1RSX05CXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI0KVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9MTENcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVDWCwgMjgpXFxuICNkZWZpbmVcXHRYODZfRkVBVFVSRV9OWFxcdFxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyMClcXG4rI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0ZYU1JfT1BUXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI1KVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfR0JQQUdFU1xcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNilcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX1JEVFNDUFxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNylcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0xNXFx0XFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI5KVxcbkBAIC0yMjYsNiArMjI3LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUge1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVlxcdFxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAxRiwgMCwgRUFYLCAxKVxcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9FU1xcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAxRiwgMCwgRUFYLCAzKVxcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9TTlBcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgNClcXG4rI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0FVVE9JQlJTXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDgpXFxuICNkZWZpbmVcXHRYODZfRkVBVFVSRV9HUF9PTl9VU0VSX0NQVUlEXFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDE3KVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfUEVSRk1PTl9WMlxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMiwgMCwgRUFYLCAwKVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfTEJSX1BNQ19GUkVFWkVcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMilcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jXFxuaW5kZXggOGU2NTRjYzlhYjE2ODcuLjU2MmFmYWIzNzhkMTFlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xcbkBAIC0yMSwyMCArMjEsMjAgQEBcXG4gI2luY2x1ZGUgXFxcImt2bV91dGlsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJwcm9jZXNzb3IuaFxcXCJcXG4gXFxuLSNkZWZpbmUgVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjciwgb3JpZywgYml0KVxcdFxcdFxcdFxcdFxcXFxcXG4rI2RlZmluZSBURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgcmVnLCBvcmlnLCBiaXQpXFx0XFx0XFx0XFx0XFxcXFxcbiBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRzdHJ1Y3Qga3ZtX3NyZWdzIG5ldztcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGludCByYztcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0LyogU2tpcCB0aGUgc3ViLXRlc3QsIHRoZSBmZWF0dXJlL2JpdCBpcyBzdXBwb3J0ZWQuICovXFx0XFx0XFx0XFxcXFxcbi1cXHRpZiAob3JpZy5jciBcXHUwMDI2IGJpdClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGlmIChvcmlnLnJlZyBcXHUwMDI2IGJpdClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdGJyZWFrO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRtZW1jcHkoXFx1MDAyNm5ldywgXFx1MDAyNm9yaWcsIHNpemVvZihzcmVncykpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0bmV3LmNyIHw9IGJpdDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG1lbWNweShcXHUwMDI2bmV3LCBcXHUwMDI2b3JpZywgc2l6ZW9mKG5ldykpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0bmV3LnJlZyB8PSBiaXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsIFxcdTAwMjZuZXcpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0VEVTVF9BU1NFUlQocmMsIFxcXCJLVk0gYWxsb3dlZCBpbnZhbGlkIFxcXCIgI2NyIFxcXCIgYml0ICgweCVseClcXFwiLCBiaXQpO1xcdFxcXFxcXG4rXFx0VEVTVF9BU1NFUlQocmMsIFxcXCJLVk0gYWxsb3dlZCBpbnZhbGlkIFxcXCIgI3JlZyBcXFwiIGJpdCAoMHglbGx4KVxcXCIsICh1bnNpZ25lZCBsb25nIGxvbmcpYml0KTsgXFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdC8qIFNhbml0eSBjaGVjayB0aGF0IEtWTSBkaWRuJ3QgY2hhbmdlIGFueXRoaW5nLiAqL1xcdFxcdFxcdFxcXFxcXG4gXFx0dmNwdV9zcmVnc19nZXQodmNwdSwgXFx1MDAyNm5ldyk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbkBAIC00Niw2ICs0Niw4IEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFg4Nl9DUjRfTUNFIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRYODZfQ1I0X09TRlhTUiB8IFg4Nl9DUjRfT1NYTU1FWENQVClcXG4gXFxuKyNkZWZpbmUgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIgRUZFUl9TQ0VcXG4rXFxuIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKVxcbiB7XFxuIFxcdHU2NCBjcjQgPSBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0O1xcbkBAIC03NCw2ICs3NiwyNCBAQCBzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHModm9pZClcXG4gXFx0cmV0dXJuIGNyNDtcXG4gfVxcbiBcXG4rc3RhdGljIHU2NCBjYWxjX3N1cHBvcnRlZF9lZmVyX2ZlYXR1cmVfYml0cyh2b2lkKVxcbit7XFxuK1xcdHU2NCBlZmVyID0gS1ZNX0FMV0FZU19BTExPV0VEX0VGRVI7XFxuK1xcbitcXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTE0pKVxcbitcXHRcXHRlZmVyIHw9IChFRkVSX0xNRSB8IEVGRVJfTE1BKTtcXG4rXFx0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX05YKSlcXG4rXFx0XFx0ZWZlciB8PSBFRkVSX05YO1xcbitcXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSlcXG4rXFx0XFx0ZWZlciB8PSBFRkVSX1NWTUU7XFxuK1xcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpXFxuK1xcdFxcdGVmZXIgfD0gRUZFUl9GRlhTUjtcXG4rXFx0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcXG4rXFx0XFx0ZWZlciB8PSBFRkVSX0FVVE9JQlJTO1xcbitcXG4rXFx0cmV0dXJuIGVmZXI7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpXFxuIHtcXG4gXFx0c3RydWN0IGt2bV9zcmVncyBzcmVncztcXG5AQCAtOTYsMjYgKzExNiw0NSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2NyX2JpdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgY3I0KVxcbiBcXHRcXHQgICAgKHNyZWdzLmNyNCBcXHUwMDI2IFg4Nl9DUjRfUEtFKSA/IFxcXCJzZXRcXFwiIDogXFxcImNsZWFyXFxcIik7XFxuIFxcbiBcXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcXHUwMDI2c3JlZ3MpO1xcbi1cXHRURVNUX0FTU0VSVChzcmVncy5jcjQgPT0gY3I0LCBcXFwic3JlZ3MuQ1I0ICgweCVsbHgpICE9IENSNCAoMHglbHgpXFxcIixcXG4tXFx0XFx0ICAgIHNyZWdzLmNyNCwgY3I0KTtcXG4tXFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0xBNTcpO1xcbi1cXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0ZTR1NCQVNFKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xcbi1cXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01FUCk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XFxuK1xcdFRFU1RfQVNTRVJUX0VRKHNyZWdzLmNyNCwgY3I0KTtcXG4rXFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1VNSVApO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNWEUpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfT1NYU0FWRSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUEtFKTtcXG4gXFxuIFxcdGZvciAoaSA9IDMyOyBpIFxcdTAwM2MgNjQ7IGkrKylcXG4tXFx0XFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBCSVQoaSkpO1xcbitcXHRcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTtcXG4gXFxuIFxcdC8qIE5XIHdpdGhvdXQgQ0QgaXMgaWxsZWdhbCwgYXMgaXMgUEcgd2l0aG91dCBQRS4gKi9cXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX05XKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9QRyk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfZWZlcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXFxuK3tcXG4rXFx0c3RydWN0IGt2bV9zcmVncyBzcmVncztcXG4rXFx0aW50IHJjO1xcbitcXG4rXFx0dmNwdV9zcmVnc19nZXQodmNwdSwgXFx1MDAyNnNyZWdzKTtcXG4rXFx0c3JlZ3MuZWZlciB8PSBlZmVyO1xcbitcXHRyYyA9IF92Y3B1X3NyZWdzX3NldCh2Y3B1LCBcXHUwMDI2c3JlZ3MpO1xcbitcXHRURVNUX0FTU0VSVCghcmMsIFxcXCJGYWlsZWQgdG8gc2V0IHN1cHBvcnRlZCBFRkVSIGJpdHMgKDB4JWxseClcXFwiLCBzcmVncy5lZmVyKTtcXG4rXFxuK1xcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFxcdTAwMjZzcmVncyk7XFxuK1xcdFRFU1RfQVNTRVJUX0VRKHNyZWdzLmVmZXIsIGVmZXIpO1xcbitcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0xNRSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9OWCk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9TVk1FKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0ZGWFNSKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0FVVE9JQlJTKTtcXG4gfVxcbiBcXG4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG5AQCAtMTMyLDYgKzE3MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuIFxcdCAqL1xcbiBcXHR2bSA9IHZtX2NyZWF0ZV9iYXJlYm9uZXMoKTtcXG4gXFx0dmNwdSA9IF9fdm1fdmNwdV9hZGQodm0sIDApO1xcbitcXHR0ZXN0X2VmZXJfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUik7XFxuIFxcdHRlc3RfY3JfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0KTtcXG4gXFx0a3ZtX3ZtX2ZyZWUodm0pO1xcbiBcXG5AQCAtMTUxLDYgKzE5MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuIFxcdFxcdCAgICBzcmVncy5hcGljX2Jhc2UpO1xcbiBcXG4gXFx0dGVzdF9jcl9iaXRzKHZjcHUsIGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHMoKSk7XFxuK1xcdHRlc3RfZWZlcl9iaXRzKHZjcHUsIGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKCkpO1xcbiBcXG4gXFx0a3ZtX3ZtX2ZyZWUodm0pO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6Mjg6NTAuNzAxNzM1MTk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQ3ODgzMDYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92YWxpZF9lZmVyXCIsXG4gICAgXCJzZXRfZWZlclwiLFxuICAgIFwia3ZtX2lzX3ZhbGlkX3NyZWdzXCIsXG4gICAgXCJfX3NldF9zcmVnc19jb21tb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0geDg2IEVGRVIgTVNSIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgaG93IHN1cHBvcnRlZCBFRkVSIGJpdHMgYXJlIGNoZWNrZWQgYW5kIHNldC4gSXQgcmVwbGFjZXMgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AgYW5kIGludHJvZHVjZXMgYHNldHVwX2VmZXJfY2Fwc2AgdG8gYGt2bV94ODZfb3BzYC4gVGhpcyBhZmZlY3RzIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGFuZCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFuZCBzdGF0ZSByZXN0b3JhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJhYTU2M2M4NjM1ZTZmMTdkMjM5ODcyZWYzYWMzNDE3MmYwYzg1ZmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA2OjI4OjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcbmluZGV4IDgzZGM1MDg2MTM4YjM5Li5kNTg3MjQyZGNhYjU2MSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcbkBAIC00NSw2ICs0NSw3IEBAIEtWTV9YODZfT1BfT1BUSU9OQUwocG9zdF9zZXRfY3IzKVxuIEtWTV9YODZfT1AoaXNfdmFsaWRfY3I0KVxuIEtWTV9YODZfT1Aoc2V0X2NyNClcbiBLVk1fWDg2X09QKHNldF9lZmVyKVxuK0tWTV9YODZfT1BfT1BUSU9OQUwoc2V0dXBfZWZlcl9jYXBzKVxuIEtWTV9YODZfT1AoZ2V0X2lkdClcbiBLVk1fWDg2X09QKHNldF9pZHQpXG4gS1ZNX1g4Nl9PUChnZXRfZ2R0KVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCBkODcwMGViODQ4YjQ1Mi4uNDBiZTM5ZmVhMzliOWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMzI5LDYgKzMyOSw4IEBAIHN0cnVjdCBrdm1fY2FwcyB7XG4gXHR1NjQgc3VwcG9ydGVkX3hzcztcbiBcdHU2NCBzdXBwb3J0ZWRfcGVyZl9jYXA7XG4gXG4rXHR1NjQgc3VwcG9ydGVkX2VmZXJfYml0cztcbitcbiBcdHU2NCBzdXBwb3J0ZWRfcXVpcmtzO1xuIFx0dTY0IGluYXBwbGljYWJsZV9xdWlya3M7XG4gfTtcbkBAIC0xNzMwLDYgKzE3MzIsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xuIFx0Ym9vbCAoKmlzX3ZhbGlkX2NyNCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCk7XG4gXHR2b2lkICgqc2V0X2NyNCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCk7XG4gXHRpbnQgKCpzZXRfZWZlcikoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG4rXHR2b2lkICgqc2V0dXBfZWZlcl9jYXBzKSh2b2lkKTtcbiBcdHZvaWQgKCpnZXRfaWR0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xuIFx0dm9pZCAoKnNldF9pZHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGRlc2NfcHRyICpkdCk7XG4gXHR2b2lkICgqZ2V0X2dkdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5jIGIvYXJjaC94ODYva3ZtL21zcnMuY1xuaW5kZXggYzIzMGIxOGQ4N2UzOGUuLmEzOWM3MzA4OGYxZmIyIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuY1xuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuY1xuQEAgLTE5LDE3ICsxOSw2IEBAIGJvb2wgX19yZWFkX21vc3RseSByZXBvcnRfaWdub3JlZF9tc3JzID0gdHJ1ZTtcbiBtb2R1bGVfcGFyYW0ocmVwb3J0X2lnbm9yZWRfbXNycywgYm9vbCwgMDY0NCk7XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xuIFxuLS8qIEVGRVIgZGVmYXVsdHM6XG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cbi0gKiAtIGVuYWJsZSBMTUUgYW5kIExNQSBwZXIgZGVmYXVsdCBvbiA2NCBiaXQgS1ZNXG4tICovXG4tI2lmZGVmIENPTkZJR19YODZfNjRcbi1zdGF0aWNcbi11NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpKEVGRVJfU0NFIHwgRUZFUl9MTUUgfCBFRkVSX0xNQSkpO1xuLSNlbHNlXG4tc3RhdGljIHU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NClFRkVSX1NDRSk7XG4tI2VuZGlmXG4tXG4gI2RlZmluZSBNQVhfSU9fTVNSUyAyNTZcbiBcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XG5AQCAtNjE0LDcgKzYwMyw3IEBAIHN0YXRpYyBib29sIF9fa3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbiB9XG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuIHtcbi1cdGlmIChlZmVyIFx1MDAyNiBlZmVyX3Jlc2VydmVkX2JpdHMpXG4rXHRpZiAoIShlZmVyIFx1MDAyNiBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0cmV0dXJuIF9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcik7XG5AQCAtNjI3LDcgKzYxNiw3IEBAIHN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuIFx0dTY0IGVmZXIgPSBtc3JfaW5mby1cdTAwM2VkYXRhO1xuIFx0aW50IHI7XG4gXG4tXHRpZiAoZWZlciBcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxuK1x0aWYgKCEoZWZlciBcdTAwMjYga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cykpXG4gXHRcdHJldHVybiAxO1xuIFxuIFx0aWYgKCFtc3JfaW5mby1cdTAwM2Vob3N0X2luaXRpYXRlZCkge1xuQEAgLTY1OCwxMiArNjQ3LDYgQEAgc3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tdm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQgbWFzaylcbi17XG4tICAgICAgIGVmZXJfcmVzZXJ2ZWRfYml0cyBcdTAwMjY9IH5tYXNrO1xuLX1cbi1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2VuYWJsZV9lZmVyX2JpdHMpO1xuLVxuIGJvb2wga3ZtX21zcl9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1MzIgdHlwZSlcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3g4Nl9tc3JfZmlsdGVyICptc3JfZmlsdGVyO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tc3JzLmggYi9hcmNoL3g4Ni9rdm0vbXNycy5oXG5pbmRleCBiNjk4OTgzZTM3ZmI2MS4uODlmMTA0NDdjZGRkZjkgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5oXG4rKysgYi9hcmNoL3g4Ni9rdm0vbXNycy5oXG5AQCAtNTksNiArNTksNyBAQCBpbnQga3ZtX2dldF9yZWdfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRcdCAgICAgc3RydWN0IGt2bV9yZWdfbGlzdCBfX3VzZXIgKnVzZXJfbGlzdCk7XG4gXG4gdm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQpO1xuK3ZvaWQga3ZtX2Rpc2FibGVfZWZlcl9iaXRzKHU2NCk7XG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcbiBpbnQga3ZtX2VtdWxhdGVfbXNyX3JlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHU2NCAqZGF0YSk7XG4gaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9yZWdzLmMgYi9hcmNoL3g4Ni9rdm0vcmVncy5jXG5pbmRleCBkMmNhZjVhNjdkYmE0MC4uOTRjNGU0ZTQxODY4ZmMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vcmVncy5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vcmVncy5jXG5AQCAtNTYzLDcgKzU2Myw4IEBAIHN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuIFx0fVxuIFxuIFx0cmV0dXJuIGt2bV9pc192YWxpZF9jcjQodmNwdSwgc3JlZ3MtXHUwMDNlY3I0KSBcdTAwMjZcdTAwMjZcbi1cdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVx1MDAzZWNyMCk7XG4rXHQgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy1cdTAwM2VjcjApIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgIGt2bV92YWxpZF9lZmVyKHZjcHUsIHNyZWdzLVx1MDAzZWVmZXIpO1xuIH1cbiBcbiBzdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCBlZjY5YTUxYWIyN2Y5OC4uZTc1NWY0M2Y0Mzc2ZWUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtMjc0LDYgKzI3NCwxNSBAQCBpbnQgc3ZtX3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgc3ZtX3NldHVwX2VmZXJfY2Fwcyh2b2lkKVxuK3tcbitcdGlmIChuZXN0ZWQpIHtcbitcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX1NWTUU7XG4rXHRcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSlcbitcdFx0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyB1MzIgc3ZtX2dldF9pbnRlcnJ1cHRfc2hhZG93KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTtcbkBAIC01MzY0LDYgKzUzNzMsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbiBcdC5pc192YWxpZF9jcjQgPSBzdm1faXNfdmFsaWRfY3I0LFxuIFx0LnNldF9jcjQgPSBzdm1fc2V0X2NyNCxcbiBcdC5zZXRfZWZlciA9IHN2bV9zZXRfZWZlcixcbitcdC5zZXR1cF9lZmVyX2NhcHMgPSBzdm1fc2V0dXBfZWZlcl9jYXBzLFxuIFx0LmdldF9pZHQgPSBzdm1fZ2V0X2lkdCxcbiBcdC5zZXRfaWR0ID0gc3ZtX3NldF9pZHQsXG4gXHQuZ2V0X2dkdCA9IHN2bV9nZXRfZ2R0LFxuQEAgLTU2MzgsMTAgKzU2NDgsNiBAQCBzdGF0aWMgX19pbml0IGludCBzdm1faGFyZHdhcmVfc2V0dXAodm9pZClcbiBcbiBcdGlmIChuZXN0ZWQpIHtcbiBcdFx0cHJfaW5mbyhcIk5lc3RlZCBWaXJ0dWFsaXphdGlvbiBlbmFibGVkXFxuXCIpO1xuLVx0XHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX1NWTUUpO1xuLVx0XHRpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9FRkVSX0xNU0xFX01CWikpXG4tXHRcdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9MTVNMRSk7XG4tXG4gXHRcdHIgPSBuZXN0ZWRfc3ZtX2luaXRfbXNycG1fbWVyZ2Vfb2Zmc2V0cygpO1xuIFx0XHRpZiAocilcbiBcdFx0XHRyZXR1cm4gcjtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IDhkYmMwZmEzMDJhOGI1Li41Y2VkYWE4NDA5ZjhkZiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtNjg5MiwxNCArNjg5MiwyMiBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NldHVwX3hzc19jYXBzKTtcbiBcbiBzdGF0aWMgdm9pZCBrdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpXG4ge1xuK1x0LyogRW5hYmxlIHN5c2NhbGwgYnkgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk0gKi9cbitcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgPSAodTY0KUVGRVJfU0NFO1xuK1xuK1x0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9MTSkpXG4rXHRcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gKEVGRVJfTE1FIHwgRUZFUl9MTUEpO1xuK1xuIFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9OWCkpXG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfTlgpO1xuK1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTlg7XG4gXG4gXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0ZYU1JfT1BUKSlcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9GRlhTUik7XG4rXHRcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9GRlhTUjtcbiBcbiBcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKVxuLVx0XHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0FVVE9JQlJTKTtcbitcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0FVVE9JQlJTO1xuK1xuK1x0a3ZtX3g4Nl9jYWxsKHNldHVwX2VmZXJfY2FwcykoKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV9vcHNfdXBkYXRlKHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXG5AQCAtNzAzOCwxMyArNzA0NiwxMyBAQCBpbnQga3ZtX3g4Nl92ZW5kb3JfaW5pdChzdHJ1Y3Qga3ZtX3g4Nl9pbml0X29wcyAqb3BzKVxuIFx0aWYgKHIgIT0gMClcbiBcdFx0Z290byBvdXRfbW11X2V4aXQ7XG4gXG4tXHRrdm1fc2V0dXBfZWZlcl9jYXBzKCk7XG4tXG4gXHRlbmFibGVfZGV2aWNlX3Bvc3RlZF9pcnFzIFx1MDAyNj0gZW5hYmxlX2FwaWN2IFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgICBpcnFfcmVtYXBwaW5nX2NhcChJUlFfUE9TVElOR19DQVApO1xuIFxuIFx0a3ZtX29wc191cGRhdGUob3BzKTtcbiBcbitcdGt2bV9zZXR1cF9lZmVyX2NhcHMoKTtcbitcbiBcdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XG4gXHRcdHNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZShjcHUsIGt2bV94ODZfY2hlY2tfY3B1X2NvbXBhdCwgXHUwMDI2ciwgMSk7XG4gXHRcdGlmIChyIFx1MDAzYyAwKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuaW5kZXggN2QzYTI3YmMwZDg0MmEuLmIxNjExNzRlY2U0NTMxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbkBAIC0yMDgsNiArMjA4LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUge1xuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZDVFJfTkJcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI0KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZDVFJfTExDXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyOClcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9OWFx0XHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyMClcbisjZGVmaW5lXHRYODZfRkVBVFVSRV9GWFNSX09QVFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjUpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfR0JQQUdFU1x0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjYpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUkRUU0NQXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNylcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9MTVx0XHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyOSlcbkBAIC0yMjYsNiArMjI3LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUge1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWXHRcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDEpXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZfRVNcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDMpXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZfU05QXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAxRiwgMCwgRUFYLCA0KVxuKyNkZWZpbmVcdFg4Nl9GRUFUVVJFX0FVVE9JQlJTXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCA4KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0dQX09OX1VTRVJfQ1BVSURcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCAxNylcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9QRVJGTU9OX1YyXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMiwgMCwgRUFYLCAwKVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0xCUl9QTUNfRlJFRVpFXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcbmluZGV4IDhlNjU0Y2M5YWIxNjg3Li41NjJhZmFiMzc4ZDExZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jXG5AQCAtMjEsMjAgKzIxLDIwIEBAXG4gI2luY2x1ZGUgXCJrdm1fdXRpbC5oXCJcbiAjaW5jbHVkZSBcInByb2Nlc3Nvci5oXCJcbiBcbi0jZGVmaW5lIFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IsIG9yaWcsIGJpdClcdFx0XHRcdFxcXG4rI2RlZmluZSBURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgcmVnLCBvcmlnLCBiaXQpXHRcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3Qga3ZtX3NyZWdzIG5ldztcdFx0XHRcdFx0XHRcdFxcXG4gXHRpbnQgcmM7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHQvKiBTa2lwIHRoZSBzdWItdGVzdCwgdGhlIGZlYXR1cmUvYml0IGlzIHN1cHBvcnRlZC4gKi9cdFx0XHRcXFxuLVx0aWYgKG9yaWcuY3IgXHUwMDI2IGJpdClcdFx0XHRcdFx0XHRcdFxcXG4rXHRpZiAob3JpZy5yZWcgXHUwMDI2IGJpdClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdGJyZWFrO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdG1lbWNweShcdTAwMjZuZXcsIFx1MDAyNm9yaWcsIHNpemVvZihzcmVncykpO1x0XHRcdFx0XHRcXFxuLVx0bmV3LmNyIHw9IGJpdDtcdFx0XHRcdFx0XHRcdFx0XFxcbitcdG1lbWNweShcdTAwMjZuZXcsIFx1MDAyNm9yaWcsIHNpemVvZihuZXcpKTtcdFx0XHRcdFx0XFxcbitcdG5ldy5yZWcgfD0gYml0O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsIFx1MDAyNm5ldyk7XHRcdFx0XHRcdFxcXG4tXHRURVNUX0FTU0VSVChyYywgXCJLVk0gYWxsb3dlZCBpbnZhbGlkIFwiICNjciBcIiBiaXQgKDB4JWx4KVwiLCBiaXQpO1x0XFxcbitcdFRFU1RfQVNTRVJUKHJjLCBcIktWTSBhbGxvd2VkIGludmFsaWQgXCIgI3JlZyBcIiBiaXQgKDB4JWxseClcIiwgKHVuc2lnbmVkIGxvbmcgbG9uZyliaXQpOyBcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdC8qIFNhbml0eSBjaGVjayB0aGF0IEtWTSBkaWRuJ3QgY2hhbmdlIGFueXRoaW5nLiAqL1x0XHRcdFxcXG4gXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcdTAwMjZuZXcpO1x0XHRcdFx0XHRcdFxcXG5AQCAtNDYsNiArNDYsOCBAQCBkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0WDg2X0NSNF9NQ0UgfCBYODZfQ1I0X1BHRSB8IFg4Nl9DUjRfUENFIHxcdFxcXG4gXHRcdFx0XHRYODZfQ1I0X09TRlhTUiB8IFg4Nl9DUjRfT1NYTU1FWENQVClcbiBcbisjZGVmaW5lIEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSIEVGRVJfU0NFXG4rXG4gc3RhdGljIHU2NCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKHZvaWQpXG4ge1xuIFx0dTY0IGNyNCA9IEtWTV9BTFdBWVNfQUxMT1dFRF9DUjQ7XG5AQCAtNzQsNiArNzYsMjQgQEAgc3RhdGljIHU2NCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKHZvaWQpXG4gXHRyZXR1cm4gY3I0O1xuIH1cbiBcbitzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKHZvaWQpXG4re1xuK1x0dTY0IGVmZXIgPSBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUjtcbitcbitcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9MTSkpXG4rXHRcdGVmZXIgfD0gKEVGRVJfTE1FIHwgRUZFUl9MTUEpO1xuK1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX05YKSlcbitcdFx0ZWZlciB8PSBFRkVSX05YO1xuK1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpXG4rXHRcdGVmZXIgfD0gRUZFUl9TVk1FO1xuK1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0ZYU1JfT1BUKSlcbitcdFx0ZWZlciB8PSBFRkVSX0ZGWFNSO1xuK1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcbitcdFx0ZWZlciB8PSBFRkVSX0FVVE9JQlJTO1xuK1xuK1x0cmV0dXJuIGVmZXI7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpXG4ge1xuIFx0c3RydWN0IGt2bV9zcmVncyBzcmVncztcbkBAIC05NiwyNiArMTE2LDQ1IEBAIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpXG4gXHRcdCAgICAoc3JlZ3MuY3I0IFx1MDAyNiBYODZfQ1I0X1BLRSkgPyBcInNldFwiIDogXCJjbGVhclwiKTtcbiBcbiBcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnNyZWdzKTtcbi1cdFRFU1RfQVNTRVJUKHNyZWdzLmNyNCA9PSBjcjQsIFwic3JlZ3MuQ1I0ICgweCVsbHgpICE9IENSNCAoMHglbHgpXCIsXG4tXHRcdCAgICBzcmVncy5jcjQsIGNyNCk7XG4tXG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpO1xuK1x0VEVTVF9BU1NFUlRfRVEoc3JlZ3MuY3I0LCBjcjQpO1xuK1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1ZNWEUpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QQ0lERSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01BUCk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpO1xuIFxuIFx0Zm9yIChpID0gMzI7IGkgXHUwMDNjIDY0OyBpKyspXG4tXHRcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTtcbitcdFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIEJJVChpKSk7XG4gXG4gXHQvKiBOVyB3aXRob3V0IENEIGlzIGlsbGVnYWwsIGFzIGlzIFBHIHdpdGhvdXQgUEUuICovXG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX05XKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9lZmVyX2JpdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbit7XG4rXHRzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzO1xuK1x0aW50IHJjO1xuK1xuK1x0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuK1x0c3JlZ3MuZWZlciB8PSBlZmVyO1xuK1x0cmMgPSBfdmNwdV9zcmVnc19zZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuK1x0VEVTVF9BU1NFUlQoIXJjLCBcIkZhaWxlZCB0byBzZXQgc3VwcG9ydGVkIEVGRVIgYml0cyAoMHglbGx4KVwiLCBzcmVncy5lZmVyKTtcbitcbitcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnNyZWdzKTtcbitcdFRFU1RfQVNTRVJUX0VRKHNyZWdzLmVmZXIsIGVmZXIpO1xuK1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0xNRSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTlgpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX1NWTUUpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0ZGWFNSKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9BVVRPSUJSUyk7XG4gfVxuIFxuIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG5AQCAtMTMyLDYgKzE3MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHQgKi9cbiBcdHZtID0gdm1fY3JlYXRlX2JhcmVib25lcygpO1xuIFx0dmNwdSA9IF9fdm1fdmNwdV9hZGQodm0sIDApO1xuK1x0dGVzdF9lZmVyX2JpdHModmNwdSwgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIpO1xuIFx0dGVzdF9jcl9iaXRzKHZjcHUsIEtWTV9BTFdBWVNfQUxMT1dFRF9DUjQpO1xuIFx0a3ZtX3ZtX2ZyZWUodm0pO1xuIFxuQEAgLTE1MSw2ICsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHQgICAgc3JlZ3MuYXBpY19iYXNlKTtcbiBcbiBcdHRlc3RfY3JfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKCkpO1xuK1x0dGVzdF9lZmVyX2JpdHModmNwdSwgY2FsY19zdXBwb3J0ZWRfZWZlcl9mZWF0dXJlX2JpdHMoKSk7XG4gXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjoyODo1MC43MDE3MzY1MzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTE1MTY0OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIHg4NiBFRkVSIE1TUiBQYXRjaCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIGZ1bmRhbWVudGFsbHkgY2hhbmdpbmcgaG93IEtWTSB4ODYgaGFuZGxlcyB0aGUgRUZFUiBNU1IgYW5kIHNyZWdzLiBJdCdzIHRvdWNoaW5nIGEgZmV3IGtleSBhcmVhcywgYW5kIG15IGV4cGVydCBpbnR1aXRpb24gaXMgc2NyZWFtaW5nIFwiZnV6emluZyBvcHBvcnR1bml0eS5cIiBXZSd2ZSBnb3QgYSBuZXcgYHNldHVwX2VmZXJfY2Fwc2AgZnVuY3Rpb24gaW4gYGt2bV94ODZfb3BzYCwgbGV2ZXJhZ2luZyBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AgaW5zdGVhZCBvZiBgZWZlcl9yZXNlcnZlZF9iaXRzYCDigJMgdGhhdCdzIGEgc2lnbmFsLiBUaGUgY2hhbmdlcyBhcmUgaW1wYWN0aW5nIGBrdm1fdmFsaWRfZWZlcmAgYW5kIGBzZXRfZWZlcmAgaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLCBhbmQgYWxzbyBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpbiBgYXJjaC94ODYva3ZtL3JlZ3MuY2AgdG8gaW5jbHVkZSBhIGNoZWNrIGZvciBga3ZtX3ZhbGlkX2VmZXJgLiBGdXJ0aGVybW9yZSwgd2UgaGF2ZSBhZGRpdGlvbnMgb2YgYHN2bV9zZXR1cF9lZmVyX2NhcHNgIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYCwgYW5kIGEgbW9kaWZpY2F0aW9uIGluIGBrdm1fc2V0dXBfZWZlcl9jYXBzYCBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlc2UgZnVuY3Rpb25zIGZvciBmdXp6aW5nIGNhbXBhaWduczogYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCwgYGt2bV9pc192YWxpZF9zcmVnc2AsIGBzdm1fc2V0dXBfZWZlcl9jYXBzYCwgYW5kIGBrdm1fc2V0dXBfZWZlcl9jYXBzYC4gSSdtIGFsc28gY29uc2lkZXJpbmcgYF9fc2V0X3NyZWdzX2NvbW1vbmAgYXMgYSBwb3RlbnRpYWwgYXJlYSB0byBpbnZlc3RpZ2F0ZSwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuTm93LCBsZXQncyBjb25maXJtIHRoZSBjYWxsIGNoYWlucywgYW5kIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiB0aGUgcmVsZXZhbnQgY29kZSBmaWxlcy4gSSdtIHRha2luZyBhIGxvb2sgYXQgYGFyY2gveDg2L2t2bS9tc3JzLmNgIGFuZCBmb3VuZCBgc2V0X2VmZXJgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBhbmQgYGt2bV92YWxpZF9lZmVyYCBpcyBnbG9iYWwuIFNvLCBgc2V0X2VmZXJgIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBpbnNpZGUgb2YgdGhlIGBtc3JzLmNgIGZpbGUgYW5kIG9ubHkgY2FsbGFibGUgZnJvbSBpbnNpZGUgaXQuIEkgYWxzbyBjb25maXJtZWQgd2l0aCBgZ3JlcHBlcmAgdGhhdCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpcyBzdGF0aWMgaW4gYGFyY2gveDg2L2t2bS9yZWdzLmNgLCBhbmQgYHN2bV9zZXR1cF9lZmVyX2NhcHNgIGlzIHN0YXRpYyBpbiBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AsIGFuZCB0aGF0IGBrdm1fc2V0dXBfZWZlcl9jYXBzYCBpcyBzdGF0aWMgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuXG5cblVzaW5nIGBncmVwcGVyYCwgSSdtIGNvbmZpcm1pbmcgdGhlIGNhbGwgcmVsYXRpb25zaGlwcy4gYGt2bV92YWxpZF9lZmVyYCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIGBrdm1faXNfdmFsaWRfc3JlZ3NgIGFuZCBgc2V0X2VmZXJgLiBBbmQgZnJvbSBpbnNwZWN0aW9uLCBgc2V0X2VmZXJgIGl0c2VsZiBpcyBjYWxsZWQgYnkgYGt2bV9zZXRfbXNyX2NvbW1vbmAgd2hlbiBkZWFsaW5nIHdpdGggYE1TUl9FRkVSYC5cblxuRmluYWxseSwgYSBxdWljayBLY29uZmlnIGNoZWNrIHRlbGxzIG1lIHRoYXQgQ09ORklHX0tWTSBpcyBhIGhhcmQgcmVxdWlyZW1lbnQsIGFuZCB3ZSdsbCBuZWVkIGVpdGhlciBDT05GSUdfS1ZNX0FNRCBvciBDT05GSUdfS1ZNX0lOVEVMIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBDUFUuXG5cbkFscmlnaHQsIGxldCdzIG5vdyB1dGlsaXplIGBncmVwcGVyYCB0byBmaW5kIGV4YWN0bHkgd2hlcmUgYGt2bV92YWxpZF9lZmVyYCBpcyBkZWZpbmVkLiBUaGlzJ2xsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgZXhhY3Qgc2NvcGUgYW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBsYXJnZXIgS1ZNIHg4NiBjb250ZXh0LiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgcGF0aCB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI1MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjI4OjU5LjgxNjkwMzM3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzYxOTE1NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV92YWxpZF9lZmVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9tc3JzLmM9NTc3PXN0YXRpYyBpbnQgZG9fZ2V0X2ZlYXR1cmVfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW5kZXgsIHU2NCAqZGF0YSlcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtNTgyLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM6NTgzOnN0YXRpYyBib29sIF9fa3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTU4NC17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYwMy19XFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MDQ6Ym9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjA1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjA4LVxcbmFyY2gveDg2L2t2bS9tc3JzLmM6NjA5OlxcdHJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpO1xcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjEwLX1cXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYxMTpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3ZhbGlkX2VmZXIpO1xcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjEyLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9NjEzPXN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MjItXFx0aWYgKCFtc3JfaW5mby1cXHUwMDNlaG9zdF9pbml0aWF0ZWQpIHtcXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYyMzpcXHRcXHRpZiAoIV9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcikpXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MjQtXFx0XFx0XFx0cmV0dXJuIDE7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbXNycy5oPTYyPXZvaWQga3ZtX2Rpc2FibGVfZWZlcl9iaXRzKHU2NCk7XFxuYXJjaC94ODYva3ZtL21zcnMuaDo2Mzpib29sIGt2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xcbmFyY2gveDg2L2t2bS9tc3JzLmgtNjQtaW50IGt2bV9lbXVsYXRlX21zcl9yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1NjQgKmRhdGEpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYz01NDQ9c3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU2Ni1cXHQgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy1cXHUwMDNlY3IwKSBcXHUwMDI2XFx1MDAyNlxcbmFyY2gveDg2L2t2bS9yZWdzLmM6NTY3OlxcdCAgICAgICBrdm1fdmFsaWRfZWZlcih2Y3B1LCBzcmVncy1cXHUwMDNlZWZlcik7XFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NjgtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz00Mzk9c3RhdGljIGJvb2wgbmVzdGVkX3ZtY2JfY2hlY2tfc2F2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ3Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjQ3MzpcXHRpZiAoQ0MoIWt2bV92YWxpZF9lZmVyKHZjcHUsIHNhdmUtXFx1MDAzZWVmZXIpKSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ3NC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTI3NDY9c3RhdGljIGludCBlZmVyX3RyYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yNzUyLVxcdCAqIENsZWFyIHRoZSBFRkVSX1NWTUUgYml0IGZyb20gRUZFUi4gVGhlIFNWTSBjb2RlIGFsd2F5cyBzZXRzIHRoaXNcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjI3NTM6XFx0ICogYml0IGluIHN2bV9zZXRfZWZlcigpLCBidXQgX19rdm1fdmFsaWRfZWZlcigpIGNoZWNrcyBpdCBhZ2FpbnN0XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yNzU0LVxcdCAqIHdoZXRoZXIgdGhlIGd1ZXN0IGhhcyBYODZfRkVBVFVSRV9TVk0gLSB0aGlzIGF2b2lkcyBhIGZhaWx1cmUgaWZcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MzE3Mj1zdGF0aWMgaW50IG5lc3RlZF92bXhfY2hlY2tfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMyMzQtXFx0aWYgKHZtY3MxMi1cXHUwMDNldm1fZXhpdF9jb250cm9scyBcXHUwMDI2IFZNX0VYSVRfTE9BRF9JQTMyX0VGRVIpIHtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjMyMzU6XFx0XFx0aWYgKENDKCFrdm1fdmFsaWRfZWZlcih2Y3B1LCB2bWNzMTItXFx1MDAzZWhvc3RfaWEzMl9lZmVyKSkgfHxcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMyMzYtXFx0XFx0ICAgIENDKGlhMzJlICE9ICEhKHZtY3MxMi1cXHUwMDNlaG9zdF9pYTMyX2VmZXIgXFx1MDAyNiBFRkVSX0xNQSkpIHx8XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMzMDg9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2d1ZXN0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzM3My1cXHQgICAgKHZtY3MxMi1cXHUwMDNldm1fZW50cnlfY29udHJvbHMgXFx1MDAyNiBWTV9FTlRSWV9MT0FEX0lBMzJfRUZFUikpIHtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjMzNzQ6XFx0XFx0aWYgKENDKCFrdm1fdmFsaWRfZWZlcih2Y3B1LCB2bWNzMTItXFx1MDAzZWd1ZXN0X2lhMzJfZWZlcikpIHx8XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zMzc1LVxcdFxcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXFx1MDAzZWd1ZXN0X2lhMzJfZWZlciBcXHUwMDI2IEVGRVJfTE1BKSkgfHxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6Mjk6MDIuMTc4ODI0NDY5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkyMTIxMDA4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVGRVIgTVNSIE1vZGlmaWNhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgaXQgbG9va3MgbGlrZSBpdCdzIHRvdWNoaW5nIE1TUiBoYW5kbGluZywgc3BlY2lmaWNhbGx5IEVGRVIuIEkgc2VlIGNoYW5nZXMgaW4gYGt2bV92YWxpZF9lZmVyYCBhbmQgYHNldF9lZmVyYCB3aXRoaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLiBUaGF0J3MgYSBrZXkgYXJlYSB0byB6ZXJvIGluIG9uLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIHRoZXNlIGBfc2V0dXBfZWZlcl9jYXBzYCBmdW5jdGlvbnMsIG9uZSBpbiB0aGUgU1ZNIGRpcmVjdG9yeSBhbmQgdGhlIG90aGVyIGluIHRoZSB4ODYgZGlyZWN0b3J5LiBCdXQgdGhvc2UgbG9vayBsaWtlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucywgd2hpY2ggbWFrZXMgdGhlbSBsZXNzIGludGVyZXN0aW5nIGZvciBteSBwdXJwb3NlcyDigJMgZnV6emluZywgbW9zdGx5LlxuXG5Ob3csIGBzZXRfZWZlcmAuLi4gdGhhdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQgKmlzKiBjYWxsZWQgdGhyb3VnaCBzb21lIG90aGVyIG1lY2hhbmlzbSBsaWtlIGBrdm1fc2V0X21zcl9jb21tb25gLCBzbyB0aGF0J3Mgc29tZXRoaW5nIHRvIGNvbnNpZGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBmbG93LlxuXG5JJ20gdGhpbmtpbmcsIGBrdm1fdmFsaWRfZWZlcmAgaXMgZGVmaW5pdGVseSBhIGdvb2QgdGFyZ2V0IGZvciBkZWVwZXIgYW5hbHlzaXMuIFRoYXQgc2VlbXMgbGlrZSBhIHByaW1lIGFyZWEgZm9yIHZhbGlkYXRpbmcgdGhlIE1TUiB2YWx1ZSBiZWZvcmUgc2V0dGluZyBpdC4gQW5kLCB3aGlsZSBJJ20gYXQgaXQsIEkgc2hvdWxkIGFsc28gbG9vayBhdCBga3ZtX2lzX3ZhbGlkX3NyZWdzYC4gVGhvc2UgY2hlY2tzIGFyZSBvZnRlbiBnb2xkbWluZXMgZm9yIHN1YnRsZSBidWdzLiBJIHNob3VsZCBhbHNvIG5vdGUgdGhhdCBgc2V0X2VmZXJgIGNvdWxkIGJlIGEga2V5IHBsYWNlIHRvIGV4cGxvcmUgdG9vLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE0MiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjoyOTowNy4xMDAwMzY5NDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyOTc0OTk1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXRfZWZlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTQ2PUtWTV9YODZfT1Aoc2V0X2NyNClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ3OktWTV9YODZfT1Aoc2V0X2VmZXIpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC00OC1LVk1fWDg2X09QX09QVElPTkFMKHNldHVwX2VmZXJfY2FwcylcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTY4ND1zdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNzMzLVxcdHZvaWQgKCpzZXRfY3I0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3I0KTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjE3MzQ6XFx0aW50ICgqc2V0X2VmZXIpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTczNS1cXHR2b2lkICgqc2V0dXBfZWZlcl9jYXBzKSh2b2lkKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9NjExPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmFsaWRfZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTItXFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MTM6c3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTQte1xcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MzMtXFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MzQ6XFx0ciA9IGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MzUtXFx0aWYgKHIpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9MTQ0Mj1pbnQga3ZtX3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMTUzOS1cXHRjYXNlIE1TUl9FRkVSOlxcbmFyY2gveDg2L2t2bS9tc3JzLmM6MTU0MDpcXHRcXHRyZXR1cm4gc2V0X2VmZXIodmNwdSwgbXNyX2luZm8pO1xcbmFyY2gveDg2L2t2bS9tc3JzLmMtMTU0MS1cXHRjYXNlIE1TUl9LN19IV0NSOiB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU3MD1zdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01OTgtXFx0Km1tdV9yZXNldF9uZWVkZWQgfD0gdmNwdS1cXHUwMDNlYXJjaC5lZmVyICE9IHNyZWdzLVxcdTAwM2VlZmVyO1xcbmFyY2gveDg2L2t2bS9yZWdzLmM6NTk5OlxcdGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgc3JlZ3MtXFx1MDAzZWVmZXIpO1xcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjAwLVxcbi0tXFxuYXJjaC94ODYva3ZtL3NtbS5jPTI3OT12b2lkIGVudGVyX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYxLVxcdGlmIChndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9MTSkpXFxuYXJjaC94ODYva3ZtL3NtbS5jOjM2MjpcXHRcXHRpZiAoa3ZtX3g4Nl9jYWxsKHNldF9lZmVyKSh2Y3B1LCAwKSlcXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYzLVxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTc0NT1zdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzkyLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NzkzOlxcdHN2bV9zZXRfZWZlcih2Y3B1LCBzdm0tXFx1MDAzZW5lc3RlZC5zYXZlLmVmZXIpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzk0LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMzIyPXZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0MjctXFx0a3ZtX3NldF9yZmxhZ3ModmNwdSwgdm1jYjAxLVxcdTAwM2VzYXZlLnJmbGFncyk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNDI4OlxcdHN2bV9zZXRfZWZlcih2Y3B1LCB2bWNiMDEtXFx1MDAzZXNhdmUuZWZlcik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDI5LVxcdHN2bV9zZXRfY3IwKHZjcHUsIHZtY2IwMS1cXHUwMDNlc2F2ZS5jcjAgfCBYODZfQ1IwX1BFKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjAxPXN0YXRpYyBpbnQgZ2V0X25wdF9sZXZlbCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMDktXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMTA6aW50IHN2bV9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjExLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9Mjc0Nj1zdGF0aWMgaW50IGVmZXJfdHJhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NTItXFx0ICogQ2xlYXIgdGhlIEVGRVJfU1ZNRSBiaXQgZnJvbSBFRkVSLiBUaGUgU1ZNIGNvZGUgYWx3YXlzIHNldHMgdGhpc1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6Mjc1MzpcXHQgKiBiaXQgaW4gc3ZtX3NldF9lZmVyKCksIGJ1dCBfX2t2bV92YWxpZF9lZmVyKCkgY2hlY2tzIGl0IGFnYWluc3RcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NTQtXFx0ICogd2hldGhlciB0aGUgZ3Vlc3QgaGFzIFg4Nl9GRUFUVVJFX1NWTSAtIHRoaXMgYXZvaWRzIGEgZmFpbHVyZSBpZlxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzM0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01Mzc0LVxcdC5zZXRfY3I0ID0gc3ZtX3NldF9jcjQsXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1Mzc1OlxcdC5zZXRfZWZlciA9IHN2bV9zZXRfZWZlcixcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzNzYtXFx0LnNldHVwX2VmZXJfY2FwcyA9IHN2bV9zZXR1cF9lZmVyX2NhcHMsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTgwOT12b2lkIHN2bV91cGRhdGVfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODEwLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6ODExOmludCBzdm1fc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC04MTItdm9pZCBzdm1fc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTQxMz1zdGF0aWMgdm9pZCB2dF9zZXRfY3I0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy00MjAtXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDIxOnN0YXRpYyBpbnQgdnRfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy00MjIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDI1LVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjQyNjpcXHRyZXR1cm4gdm14X3NldF9lZmVyKHZjcHUsIGVmZXIpO1xcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyNy19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz04ODA9c3RydWN0IGt2bV94ODZfb3BzIHZ0X3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTkyNC1cXHQuc2V0X2NyNCA9IHZ0X29wKHNldF9jcjQpLFxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjkyNTpcXHQuc2V0X2VmZXIgPSB2dF9vcChzZXRfZWZlciksXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTI2LVxcdC5nZXRfaWR0ID0gdnRfb3AoZ2V0X2lkdCksXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTIzOTY9c3RhdGljIHZvaWQgcHJlcGFyZV92bWNzMDJfZWFybHkoc3RydWN0IHZjcHVfdm14ICp2bXgsIHN0cnVjdCBsb2FkZWRfdm1jcyAqdm1jczAxLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTA5LVxcdCAqIHZtY3MxMidzIFZNX3tFTlRSWSxFWElUfV9MT0FEX0lBMzJfRUZFUiBhbmQgVk1fRU5UUllfSUEzMkVfTU9ERVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjUxMDpcXHQgKiBhcmUgZW11bGF0ZWQgYnkgdm14X3NldF9lZmVyKCkgaW4gcHJlcGFyZV92bWNzMDIoKSwgYnV0IHNwZWN1bGF0ZVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjUxMS1cXHQgKiBvbiB0aGUgcmVsYXRlZCBiaXRzIChpZiBzdXBwb3J0ZWQgYnkgdGhlIENQVSkgaW4gdGhlIGhvcGUgdGhhdFxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjUxMjpcXHQgKiB3ZSBjYW4gYXZvaWQgVk1Xcml0ZXMgZHVyaW5nIHZteF9zZXRfZWZlcigpLlxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjUxMy1cXHQgKlxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTM0LVxcdCAqIHdlIHNob3VsZCB1c2UgaXRzIGV4aXQgY29udHJvbHMuIE5vdGUgdGhhdCBWTV9FWElUX0xPQURfSUEzMl9FRkVSXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyNTM1OlxcdCAqIGJpdHMgbWF5IGJlIG1vZGlmaWVkIGJ5IHZteF9zZXRfZWZlcigpIGluIHByZXBhcmVfdm1jczAyKCkuXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTM2LVxcdCAqL1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNzI1PXN0YXRpYyBpbnQgcHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI4MDgtXFx0LyogTm90ZTogbWF5IG1vZGlmeSBWTV9FTlRSWS9FWElUX0NPTlRST0xTIGFuZCBHVUVTVC9IT1NUX0lBMzJfRUZFUiAqL1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjgwOTpcXHR2bXhfc2V0X2VmZXIodmNwdSwgdmNwdS1cXHUwMDNlYXJjaC5lZmVyKTtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI4MTAtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTQ3OTU9c3RhdGljIHZvaWQgbG9hZF92bWNzMTJfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTQ4MDYtXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5lZmVyIFxcdTAwMjY9IH4oRUZFUl9MTUEgfCBFRkVSX0xNRSk7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzo0ODA3OlxcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVxcdTAwM2VhcmNoLmVmZXIpO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtNDgwOC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9NDk1NT1zdGF0aWMgdm9pZCBuZXN0ZWRfdm14X3Jlc3RvcmVfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTQ5ODQtXFx0ICovXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzo0OTg1OlxcdHZteF9zZXRfZWZlcih2Y3B1LCBuZXN0ZWRfdm14X2dldF92bWNzMDFfZ3Vlc3RfZWZlcih2bXgpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTQ5ODYtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMyMDE9c3RhdGljIHZvaWQgZW50ZXJfcm1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjQ4LVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI0OTppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjUwLXtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzI3ND1zdGF0aWMgdm9pZCBlbnRlcl9sbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyODctXFx0fVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI4ODpcXHR2bXhfc2V0X2VmZXIodmNwdSwgdmNwdS1cXHUwMDNlYXJjaC5lZmVyIHwgRUZFUl9MTUEpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4OS19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMyOTE9c3RhdGljIHZvaWQgZXhpdF9sbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjkyLXtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMyOTM6XFx0dm14X3NldF9lZmVyKHZjcHUsIHZjcHUtXFx1MDAzZWFyY2guZWZlciBcXHUwMDI2IH5FRkVSX0xNQSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjk0LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14Lmg9MzUwPXZvaWQgdm14X3NldF9pbnRlcnJ1cHRfc2hhZG93KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IG1hc2spO1xcbmFyY2gveDg2L2t2bS92bXgvdm14Lmg6MzUxOmludCB2bXhfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguaC0zNTItdm9pZCB2bXhfc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oPTcxPWJvb2wgdm14X2lzX3ZhbGlkX2NyNChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3I0KTtcXG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaDo3MjppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oLTczLXZvaWQgdm14X2dldF9pZHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz05NDc5PXZvaWQga3ZtX3ZjcHVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGluaXRfZXZlbnQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTU4NS1cXHRrdm1feDg2X2NhbGwoc2V0X2NyNCkodmNwdSwgMCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjk1ODY6XFx0a3ZtX3g4Nl9jYWxsKHNldF9lZmVyKSh2Y3B1LCAwKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTU4Ny1cXHRrdm1feDg2X2NhbGwodXBkYXRlX2V4Y2VwdGlvbl9iaXRtYXApKHZjcHUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjoyOTowOC45Mjk3OTI1N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxOTAzNTY3ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMgaW4gS1ZNL3g4NiBNU1IgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gbG9vayBhdCBgc2V0X2VmZXJgIGluIGBhcmNoL3g4Ni9rdm0vbXNycy5jYCBiZWNhdXNlIHRoZSBwYXRjaCBtb2RpZmllcyBpdC4gV2FpdCwgYHNldF9lZmVyYCBpcyAqc3RhdGljKiB3aXRoaW4gYG1zcnMuY2AuIEhtbSwgdGhhdCBjaGFuZ2VzIHRoaW5ncyBhIGJpdC4gSSBrbm93IGBrdm1fc2V0X21zcl9jb21tb25gIGNhbGxzIGBzZXRfZWZlcmAsIGJ1dCB0aGF0J3MgYSBoZWF2aWx5IHVzZWQgaG90IHBhdGgsIGEgYml0IHRvbyBicm9hZCBmb3IgZm9jdXNlZCBmdXp6aW5nLlxuXG5NeSBuZXh0IHRob3VnaHQ6IGV2ZW4gdGhvdWdoIGBzZXRfZWZlcmAgaXMgc3RhdGljLCBTeXprYWxsZXIgKmNhbiogZnV6eiBzdGF0aWMgZnVuY3Rpb25zICppZiogdGhleSdyZSBpbiB0aGUgY292ZXJhZ2UsIG9yLCBtb3JlIHJlbGV2YW50bHksIGlmIHRoZXkncmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gV2UgYWxzbyB1c2UgYEZvY3VzU3ltYm9sc2AgdG8gZ3VpZGUgdGhlIGZ1enplciwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgYSBnb29kIHN5bWJvbCwgc28gSSdsbCBnbyB3aXRoIGBzZXRfZWZlcmAuXG5cblRoZW4gSSByZW1lbWJlciBga3ZtX3ZhbGlkX2VmZXJgIGlzIGV4cG9ydGVkIGFuZCBnbG9iYWwuIFBlcmZlY3QuIEkgYWxzbyBzZWUgdGhhdCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpcyBzdGF0aWMgd2l0aGluIGByZWdzLmNgIGFuZCBgX19zZXRfc3JlZ3NfY29tbW9uYCBpcyBzdGF0aWMgaW4gYHJlZ3MuY2AsIHNvIEknbGwgYWRkIHRob3NlLiBTbyB0aGUgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIG9uIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCBhbmQgYF9fc2V0X3NyZWdzX2NvbW1vbmAuXG5cbkp1c3QgdG8gYmUgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYCBhbmQgYGFyY2gveDg2L2t2bS94ODYuY2AgZm9yIGFueSByZWxhdGVkIGZ1bmN0aW9ucywgbGlrZSBgc3ZtX3NldHVwX2VmZXJfY2Fwc2AgYW5kIGBrdm1fc2V0dXBfZWZlcl9jYXBzYC4gQWgsIGJvdGggYXJlIGluaXQgZnVuY3Rpb25zLCBjYWxsZWQgb25seSBkdXJpbmcgc2V0dXAg4oCTIG5vdCByZWxldmFudCBmb3IgKnJ1bnRpbWUqIGZ1enppbmcuXG5cblRoZXJlZm9yZSwgdGhlIG1haW4gZnVuY3Rpb25hbCBjaGFuZ2VzIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFyZTogYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCAoaW4gbXNycy5jKSwgYW5kIGBrdm1faXNfdmFsaWRfc3JlZ3NgLiBXZSdsbCBpZ25vcmUgYF9fc2V0X3NyZWdzX2NvbW1vbmAgZm9yIG5vdy5cblxuTGV0J3MgZG8gYSBxdWljayBzZWFyY2ggdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHRvdWNoZWQuIFJpZ2h0LCB0aGUgcGF0Y2ggKmFsc28qIHRvdWNoZXMgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY2AsIGJ1dCB0aGF0J3MganVzdCBhIHRlc3QsIG5vdCBjb2RlIHRoYXQgZXhlY3V0ZXMgZHVyaW5nIHRoZSBWTSdzIG5vcm1hbCBvcGVyYXRpb24uXG5cbkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gSSdsbCBzZWFyY2ggZm9yIGBLVk1gLCBgS1ZNX0FNRGAsIGFuZCBgS1ZNX0lOVEVMYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIEVGRVIgb3Igc2ltaWxhciBzZXR0aW5ncy4gVGhhdCBtaWdodCBnaXZlIG1lIGEgYnJvYWRlciBwaWN0dXJlIG9mIHdoZXJlIHRoZXNlIHNldHRpbmdzIGFyZSBiZWluZyB1c2VkIGFuZCBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTY4MCwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjoyOToxNy4xMjAxNTE1MjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MDA4NjI1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTY9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTctXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjE4OmNvbmZpZyBLVk1cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMC1cXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MzE6Y29uZmlnIEtWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzItXFx0Ym9vbCBcXFwiTWFpbnRhaW4gY291bnRlcnMgZm9yIENPUDAgYWNjZXNzZXNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNjpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI3LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI5OmNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzAtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMzLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNDpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM1LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzg6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzktXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00My1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ0LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0NTpjb25maWcgS1ZNX0JPT0szU18zMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fQk9PSzNTXzY0XFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Nzk6Y29uZmlnIEtWTV9CT09LM1NfNjRfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODAtXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy05OS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjUtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyNjpjb25maWcgS1ZNX0JPT0szU19IVl9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjctXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyOTpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMwLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE1Nzpjb25maWcgS1ZNX0JPT0szU19IVl9ORVNURURfUE1VX1dPUktBUk9VTkRcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIk5lc3RlZCBMMCBob3N0IHdvcmthcm91bmQgZm9yIEwxIEtWTSBob3N0IFBNVSBoYW5kbGluZyBidWdcXFwiIGlmIEVYUEVSVFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkh5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTgzLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODQ6Y29uZmlnIEtWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODUtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4Nzpjb25maWcgS1ZNX0VYSVRfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJEZXRhaWxlZCBleGl0IHRpbWluZ1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5ODpjb25maWcgS1ZNX0U1MDBWMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTktXFx0Ym9vbCBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEyLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTM6Y29uZmlnIEtWTV9FNTAwTUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjE0LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fTVBJQ1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbCBcXFwiS1ZNIGluLWtlcm5lbCBNUElDIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDAtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0MTpjb25maWcgS1ZNX1hJQ1NcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQyLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUwLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTE6Y29uZmlnIEtWTV9YSVZFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1Mi1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc9MjI9c291cmNlIFxcXCJhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21pY3Jvd2F0dC9LY29uZmlnXFxcIlxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yMy1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc6MjQ6Y29uZmlnIEtWTV9HVUVTVFxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZz0xNz1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0yMC1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ2LVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1xcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9ODM5PXNvdXJjZSBcXFwiYXJjaC94ODYveGVuL0tjb25maWdcXFwiXFxuYXJjaC94ODYvS2NvbmZpZy04NDAtXFxuYXJjaC94ODYvS2NvbmZpZzo4NDE6Y29uZmlnIEtWTV9HVUVTVFxcbmFyY2gveDg2L0tjb25maWctODQyLVxcdGJvb2wgXFxcIktWTSBHdWVzdCBzdXBwb3J0IChpbmNsdWRpbmcga3ZtY2xvY2spXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctMy1cXG52aXJ0L2t2bS9LY29uZmlnOjQ6Y29uZmlnIEtWTV9DT01NT05cXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9Mzk9Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNDItXFxudmlydC9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX01NSU9cXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy00NS1cXG52aXJ0L2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQVNZTkNfUEZcXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQ5LSMgVG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpcmVjdCBub3RpZmljYXRpb24gYW5kIGJhdGNoIGpvYlxcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXFxudmlydC9rdm0vS2NvbmZpZy01MS0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02MS1cXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xcbnZpcnQva3ZtL0tjb25maWctNjMtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02Ny1cXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG52aXJ0L2t2bS9LY29uZmlnLTY5LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy03MC1cXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxudmlydC9rdm0vS2NvbmZpZy03Mi0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzMtXFxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxcbnZpcnQva3ZtL0tjb25maWctNzUtICAgICAgIGRlZl9ib29sIHlcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTkzLVxcbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXFxudmlydC9rdm0vS2NvbmZpZy05NS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctOTYtXFxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xcbnZpcnQva3ZtL0tjb25maWctOTgtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk5LVxcbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXFxudmlydC9rdm0vS2NvbmZpZy0xMDEtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwMi1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcXG52aXJ0L2t2bS9LY29uZmlnLTEwNC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctMTA1LVxcbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcXG52aXJ0L2t2bS9LY29uZmlnLTEwNy0gICAgICAgc2VsZWN0IFhBUlJBWV9NVUxUSVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjoyOToxOC43OTAyNDI2MThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjA3NTk5NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0gRUZFUiBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIEtWTSBjb25maWd1cmF0aW9uczogYEtWTWAsIGBLVk1fSU5URUxgLCBhbmQgYEtWTV9BTURgLiBIbW0sIGBLVk1gIGlzIGEgdHJpc3RhdGUsIHNvIGxldCdzIGp1c3QgdXNlIHRoZSBiYXNlIGBLVk1gIG9wdGlvbiwgdGhhdCdzIHRoZSBtb3N0IGdlbmVyYWwuXG5cbk5vdywgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBrdm1fdmFsaWRfZWZlcmAgYW5kIGBzZXRfZWZlcmAgd2l0aGluIGBhcmNoL3g4Ni9rdm0vbXNycy5jYC4gVGhhdCdzIHRoZSBjb3JlIGFyZWEgb2YgaW50ZXJlc3QgZm9yIEVGRVIgbW9kaWZpY2F0aW9ucy4gYGt2bV92YWxpZF9lZmVyYCBpcyBjYWxsZWQgYnkgYGt2bV9pc192YWxpZF9zcmVnc2AgaW4gYGFyY2gveDg2L2t2bS9yZWdzLmNgLCB3aGljaCBnaXZlcyB1cyBhIGdvb2QgcGljdHVyZSBvZiB3aGVyZSB0aGUgdmFsaWRhdGlvbiB0YWtlcyBwbGFjZS4gQW5kIGBzZXRfZWZlcmAgaXMgY2FsbGVkIGZyb20gYGt2bV9zZXRfbXNyX2NvbW1vbmAsIGFsc28gaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLiBEaWdnaW5nIGRlZXBlciwgYF9fc2V0X3NyZWdzX2NvbW1vbmAgaW4gYGFyY2gveDg2L2t2bS9yZWdzLmNgIGFsc28gY2FsbHMgYHNldF9lZmVyYCwgc28gaXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudC5cblxuVGhlcmVmb3JlLCB0aGUga2V5IHN5bWJvbHMgdGhhdCB3YXJyYW50IGNsb3NlciBleGFtaW5hdGlvbiBhcmUgY2xlYXJseTpcbiogICBga3ZtX3ZhbGlkX2VmZXJgXG4qICAgYHNldF9lZmVyYFxuKiAgIGBrdm1faXNfdmFsaWRfc3JlZ3NgXG4qICAgYF9fc2V0X3NyZWdzX2NvbW1vbmBcblxuSSdtIGRvdWJsZS1jaGVja2luZyB0aGUgbmFtZXMgdG8gbWFrZSBzdXJlIEkndmUgZ290IHRoZW0gcmlnaHQuLi55ZXMsIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zLiBTbyBJJ2xsIGdvIGFoZWFkIGFuZCBjaGVjayB0aGF0IGBfX3NldF9zcmVnc19jb21tb25gIGluIGBhcmNoL3g4Ni9rdm0vcmVncy5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExNTIsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6Mjk6MjQuMzk3ODQ1MjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODUwNTk0OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19zZXRfc3JlZ3NfY29tbW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9yZWdzLmM9NTQ0PXN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NjktXFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo1NzA6c3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3MS1cXHRcXHRcXHQgICAgICBpbnQgKm1tdV9yZXNldF9uZWVkZWQsIGJvb2wgdXBkYXRlX3BkcHRycylcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmM9NjM3PXN0YXRpYyBpbnQgX19zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQwLVxcdGludCBtbXVfcmVzZXRfbmVlZGVkID0gMDtcXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY0MTpcXHRpbnQgcmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIHNyZWdzLCBcXHUwMDI2bW11X3Jlc2V0X25lZWRlZCwgdHJ1ZSk7XFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02NDItXFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTY3OD1pbnQga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTItXFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo2OTM6XFx0cmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIChzdHJ1Y3Qga3ZtX3NyZWdzICopc3JlZ3MyLFxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjk0LVxcdFxcdFxcdFxcdCBcXHUwMDI2bW11X3Jlc2V0X25lZWRlZCwgIXZhbGlkX3BkcHRycyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjI5OjI2LjA4MjkxMzc2NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDI3OTM5OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSB4ODYgRUZFUiBNU1IgSGFuZGxpbmcgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIGZvY3VzaW5nIG9uIGBfX3NldF9zcmVnc19jb21tb25gIOKAkyB0aGF0IHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBkaWcgaW4gYW5kIHNlZSBob3cgaXQgaW1wYWN0cyB0aGUgeDg2IEVGRVIgTVNSIGhhbmRsaW5nIHdpdGhpbiBLVk0uXG5cblJpZ2h0LCBgc2V0X2VmZXJgIGlzIHdoYXQgSSBuZWVkIHRvIGxvb2sgYXQuIEFuZCB5ZXMsIHRoZXJlIGl0IGlzIGluIGBhcmNoL3g4Ni9rdm0vbXNycy5jYC4gSXQncyBzdGF0aWMsIGJ1dCBhcyBleHBlY3RlZCwgYGt2bV9zZXRfbXNyX2NvbW1vbmAgY2FsbHMgaXQgZm9yIGBNU1JfRUZFUmAsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJ20gaW50ZXJlc3RlZCBpbi4gSSBhbHNvIHNlZSB0aGF0IGBrdm1fdmFsaWRfZWZlcmAgaXMgZXhwb3J0ZWQuXG5cblNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmU6XG5cbiogICBga3ZtX3ZhbGlkX2VmZXJgXG4qICAgYHNldF9lZmVyYFxuKiAgIGBrdm1faXNfdmFsaWRfc3JlZ3NgXG4qICAgYF9fc2V0X3NyZWdzX2NvbW1vbmBcblxuVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIG5lZWQgY2xvc2Ugc2NydXRpbnkuXG5cblRoZSBjaGFuZ2VzIGludm9sdmUgYWx0ZXJpbmcgaG93IHN1cHBvcnRlZCBFRkVSIGJpdHMgYXJlIGNoZWNrZWQgYW5kIHNldC4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggcmVwbGFjZXMgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYHNldHVwX2VmZXJfY2Fwc2AgdG8gYGt2bV94ODZfb3BzYC4gVGhpcyBoYXMgaW1wbGljYXRpb25zIGZvciBga3ZtX3ZhbGlkX2VmZXJgLCBgc2V0X2VmZXJgLCBhbmQgYGt2bV9pc192YWxpZF9zcmVnc2AsIHdoaWNoIGFyZSBhbGwgcmVhY2hlZCBkdXJpbmcgVk0gZXhlY3V0aW9uIGFuZCBzdGF0ZSByZXN0b3JhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEtWTSBsb2dpYywgYW5kIHRoYXQgbWVhbnMgd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gaW5jbHVkZSB0aGlzIGluIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LlxuXG5PbmUgbW9yZSB0aGluZy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UndmUgY292ZXJlZCB0aGUgY29uZmlncy4gVGhlIHBhdGNoIGlzIGNsZWFybHkgYWZmZWN0aW5nIHg4Niwgc28gYEtWTWAsIGBLVk1fQU1EYCwgYW5kIGBLVk1fSU5URUxgIGFyZSB1c3VhbGx5IG5lZWRlZCB0byBydW4gS1ZNIG9uIHg4Niwgc28gSSdsbCBpbmNsdWRlIHRoZW0uXG5cbkxldCdzIGxvZyB0aGUgZmluZGluZ3MgYW5kIGdldCB0aGlzIHNldCB1cCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzMzEsIk91dHB1dFRva2VucyI6MjE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjI5OjM0LjExMDg1NzE1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NzA0NzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92YWxpZF9lZmVyXCIsXG4gICAgXCJzZXRfZWZlclwiLFxuICAgIFwia3ZtX2lzX3ZhbGlkX3NyZWdzXCIsXG4gICAgXCJfX3NldF9zcmVnc19jb21tb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0geDg2IEVGRVIgTVNSIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgaG93IHN1cHBvcnRlZCBFRkVSIGJpdHMgYXJlIGNoZWNrZWQgYW5kIHNldC4gSXQgcmVwbGFjZXMgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AgYW5kIGludHJvZHVjZXMgYHNldHVwX2VmZXJfY2Fwc2AgdG8gYGt2bV94ODZfb3BzYC4gVGhpcyBhZmZlY3RzIGBrdm1fdmFsaWRfZWZlcmAsIGBzZXRfZWZlcmAsIGFuZCBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgVk0gZXhlY3V0aW9uIGFuZCBzdGF0ZSByZXN0b3JhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgS1ZNIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0FNRFwiLFxuICAgIFwiS1ZNX0lOVEVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3ZhbGlkX2VmZXJcIixcbiAgICBcInNldF9lZmVyXCIsXG4gICAgXCJrdm1faXNfdmFsaWRfc3JlZ3NcIixcbiAgICBcIl9fc2V0X3NyZWdzX2NvbW1vblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSB4ODYgRUZFUiBNU1IgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBob3cgc3VwcG9ydGVkIEVGRVIgYml0cyBhcmUgY2hlY2tlZCBhbmQgc2V0LiBJdCByZXBsYWNlcyBgZWZlcl9yZXNlcnZlZF9iaXRzYCB3aXRoIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYCBhbmQgaW50cm9kdWNlcyBgc2V0dXBfZWZlcl9jYXBzYCB0byBga3ZtX3g4Nl9vcHNgLiBUaGlzIGFmZmVjdHMgYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCwgYW5kIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCB3aGljaCBhcmUgcmVhY2hhYmxlIGR1cmluZyBWTSBleGVjdXRpb24gYW5kIHN0YXRlIHJlc3RvcmF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBLVk0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow5nfpj[1] Phase: Succeeded StartedAt: 2026-07-01 06:30:32 +0000 UTC FinishedAt: 2026-07-01 06:30:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 06:30:32 +0000 UTC FinishedAt: 2026-07-01 06:30:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2] Phase: Succeeded StartedAt: 2026-07-01 06:30:32 +0000 UTC FinishedAt: 2026-07-01 10:29:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 06:30:32 +0000 UTC FinishedAt: 2026-07-01 10:29:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 06:30:32 +0000 UTC FinishedAt: 2026-07-01 06:30:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 06:30:32 +0000 UTC FinishedAt: 2026-07-01 06:30:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-convert-artifact-298536855/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 06:30:42 +0000 UTC FinishedAt: 2026-07-01 06:55:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 06:30:42 +0000 UTC FinishedAt: 2026-07-01 06:55:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*525c34f7-4a8c-4331-bf8d-4fd8b9c07a6a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-convert-artifact-298536855/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "5ac3bff0-79fb-4ea5-b19d-1810d7a028d9", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-build-action-3657305325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 06:30:42 +0000 UTC FinishedAt: 2026-07-01 06:54:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*525c34f7-4a8c-4331-bf8d-4fd8b9c07a6a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-convert-artifact-298536855/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "5ac3bff0-79fb-4ea5-b19d-1810d7a028d9", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-build-action-3657305325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 06:55:07 +0000 UTC FinishedAt: 2026-07-01 06:55:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 06:55:07 +0000 UTC FinishedAt: 2026-07-01 06:55:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 06:55:07 +0000 UTC FinishedAt: 2026-07-01 06:55:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 06:55:07 +0000 UTC FinishedAt: 2026-07-01 06:55:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-convert-artifact-3697713606/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 06:55:28 +0000 UTC FinishedAt: 2026-07-01 06:57:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 06:55:28 +0000 UTC FinishedAt: 2026-07-01 06:57:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5ac3bff0-79fb-4ea5-b19d-1810d7a028d9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-build-action-3657305325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 06:57:38 +0000 UTC FinishedAt: 2026-07-01 06:57:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 06:57:38 +0000 UTC FinishedAt: 2026-07-01 06:57:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 06:57:38 +0000 UTC FinishedAt: 2026-07-01 07:25:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 06:57:38 +0000 UTC FinishedAt: 2026-07-01 07:25:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*525c34f7-4a8c-4331-bf8d-4fd8b9c07a6a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-convert-artifact-3697713606/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "46a99ba1-52cd-487f-9d4f-8af71054887f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-build-action-265495818/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 06:57:38 +0000 UTC FinishedAt: 2026-07-01 07:25:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*525c34f7-4a8c-4331-bf8d-4fd8b9c07a6a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-convert-artifact-3697713606/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "46a99ba1-52cd-487f-9d4f-8af71054887f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-build-action-265495818/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 07:25:19 +0000 UTC FinishedAt: 2026-07-01 07:25:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 07:25:19 +0000 UTC FinishedAt: 2026-07-01 07:25:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 07:25:19 +0000 UTC FinishedAt: 2026-07-01 07:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 07:25:19 +0000 UTC FinishedAt: 2026-07-01 07:27:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*46a99ba1-52cd-487f-9d4f-8af71054887f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-build-action-265495818/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 07:27:52 +0000 UTC FinishedAt: 2026-07-01 10:29:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 07:27:52 +0000 UTC FinishedAt: 2026-07-01 10:29:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*5ac3bff0-79fb-4ea5-b19d-1810d7a028d9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*46a99ba1-52cd-487f-9d4f-8af71054887f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-build-action-3657305325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-build-action-265495818/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 07:27:52 +0000 UTC FinishedAt: 2026-07-01 07:28:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 07:27:52 +0000 UTC FinishedAt: 2026-07-01 07:27:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-convert-artifact-3658176907/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 07:27:52 +0000 UTC FinishedAt: 2026-07-01 07:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 07:27:52 +0000 UTC FinishedAt: 2026-07-01 07:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 07:27:52 +0000 UTC FinishedAt: 2026-07-01 07:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 07:28:02 +0000 UTC FinishedAt: 2026-07-01 10:29:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_is_valid_sregs","__set_sregs_common"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"1229b696-eb9f-4e63-9b58-953460e9cf67","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 07:28:02 +0000 UTC FinishedAt: 2026-07-01 10:29:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5ac3bff0-79fb-4ea5-b19d-1810d7a028d9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*46a99ba1-52cd-487f-9d4f-8af71054887f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-build-action-3657305325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-build-action-265495818/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nfpj/series-workflow5nfpj-convert-artifact-3658176907/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}