Name: series-workflow5gwxs Phase: Succeeded StartedAt: 2026-07-31 06:56:32 +0000 UTC FinishedAt: 2026-07-31 07:41:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[0] Phase: Succeeded StartedAt: 2026-07-31 06:56:32 +0000 UTC FinishedAt: 2026-07-31 06:59:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 06:56:32 +0000 UTC FinishedAt: 2026-07-31 06:59:55 +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": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "f28fa9ec-911b-48be-8c4d-0f8a1957e9e1" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_vcpu_set_reg_sbi_ext", "kvm_riscv_vcpu_sbi_validate", "kvm_riscv_vcpu_config_ran_once" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBtb2RpZmllcyBLVk0gU0JJIGV4dGVuc2lvbiBoYW5kbGluZyBvbiBSSVNDLVYuIEl0IGFkZHMgYSBuZXcgYHZhbGlkYXRlYCBjYWxsYmFjayBmb3IgU0JJIGV4dGVuc2lvbnMsIHdoaWNoIGlzIGludm9rZWQgd2hlbiBhIHZDUFUgaXMgcnVuIGZvciB0aGUgZmlyc3QgdGltZSwgYW5kIGNhbGxzIHRoZSBgcmVzZXRgIGNhbGxiYWNrIHdoZW4gYW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUgY29yZSBLVk0gdmlydHVhbGl6YXRpb24gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMGJlZDlkZjY5MmY3N2M1ZGJkMGQ2NWM1NGMxMTQzY2ZjYmVjOWJhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDY6NTg6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmhcbmluZGV4IGMxYTdlM2I0MGQ5Y2UuLmYwMWEyODYwYzc1MTEgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oXG5AQCAtNjAsNiAmIzQzOzYwLDkgQEAgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24ge1xuIFxuIFx0dm9pZCAoKnJlc2V0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuJiM0MztcdC8qIEFsbG93IHRoZSBleHRlbnNpb24gdG8gY29ycmVjdCBpdHMgcGFyYW1ldGVycyBiZWZvcmUgdGhlIGZpcnN0IHJ1biAqL1xuJiM0MztcdHZvaWQgKCp2YWxpZGF0ZSkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiYjNDM7XG4gXHR1bnNpZ25lZCBsb25nIHN0YXRlX3JlZ19zdWJ0eXBlO1xuIFx0dW5zaWduZWQgbG9uZyAoKmdldF9zdGF0ZV9yZWdfY291bnQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXHRpbnQgKCpnZXRfc3RhdGVfcmVnX2lkKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBpbmRleCwgdTY0ICpyZWdfaWQpO1xuQEAgLTkzLDYgJiM0Mzs5Niw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9zYmlfZWNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKTtcbiB2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfZGVpbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiYjNDM7dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiAjaWZkZWYgQ09ORklHX1JJU0NWX1NCSV9WMDFcbiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X3YwMTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuY1xuaW5kZXggMjM4NDE4ZmVkMmI5YS4uYjY4YWE4MzBhYWY1MSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcbkBAIC02OSw2ICYjNDM7NjksOCBAQCB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXG4gXHRpZiAodmNwdS1cdTAwM2VndWVzdF9kZWJ1ZylcbiBcdFx0Y2ZnLVx1MDAzZWhlZGVsZWcgXHUwMDI2PSB+QklUKEVYQ19CUkVBS1BPSU5UKTtcbiYjNDM7XG4mIzQzO1x0a3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHZjcHUpO1xuIH1cbiBcbiB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuY1xuaW5kZXggNDZhYjdiOTg5NDMyYi4uMWM0Zjg3NDM2OGZiZSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNcbkBAIC0yMjEsNiAmIzQzOzIyMSw3IEBAIHN0YXRpYyBpbnQgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIHtcbiBcdHN0cnVjdCBrdm1fdmNwdV9zYmlfY29udGV4dCAqc2NvbnRleHQgPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guc2JpX2NvbnRleHQ7XG4gXHRjb25zdCBzdHJ1Y3Qga3ZtX3Jpc2N2X3NiaV9leHRlbnNpb25fZW50cnkgKnNleHQ7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gKmV4dDtcbiBcbiBcdGlmIChyZWdfdmFsICE9IDEgXHUwMDI2XHUwMDI2IHJlZ192YWwgIT0gMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5AQCAtMjI5LDYgJiM0MzsyMzAsMTIgQEAgc3RhdGljIGludCByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRpZiAoIXNleHQgfHwgc2NvbnRleHQtXHUwMDNlZXh0X3N0YXR1c1tzZXh0LVx1MDAzZWV4dF9pZHhdID09IEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19VTkFWQUlMQUJMRSlcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4mIzQzO1x0ZXh0ID0gc2V4dC1cdTAwM2VleHRfcHRyO1xuJiM0MztcbiYjNDM7XHRpZiAoIXJlZ192YWwgXHUwMDI2XHUwMDI2IHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cdTAwM2VleHRfaWR4XSA9PSBLVk1fUklTQ1ZfU0JJX0VYVF9TVEFUVVNfRU5BQkxFRCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgZXh0LVx1MDAzZXJlc2V0KVxuJiM0MztcdFx0ZXh0LVx1MDAzZXJlc2V0KHZjcHUpO1xuJiM0MztcbiBcdHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cdTAwM2VleHRfaWR4XSA9IChyZWdfdmFsKSA/XG4gXHRcdFx0S1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgOlxuIFx0XHRcdEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19ESVNBQkxFRDtcbkBAIC03MjMsMyAmIzQzOzczMCwyNiBAQCB2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdGV4dC1cdTAwM2VyZXNldCh2Y3B1KTtcbiBcdH1cbiB9XG4mIzQzO1xuJiM0Mzt2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2NvbnRleHQgKnNjb250ZXh0ID0gXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnNiaV9jb250ZXh0O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBrdm1fcmlzY3Zfc2JpX2V4dGVuc2lvbl9lbnRyeSAqZW50cnk7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gKmV4dDtcbiYjNDM7XHRpbnQgaWR4LCBpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHNiaV9leHQpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0ZW50cnkgPSBcdTAwMjZzYmlfZXh0W2ldO1xuJiM0MztcdFx0ZXh0ID0gZW50cnktXHUwMDNlZXh0X3B0cjtcbiYjNDM7XHRcdGlkeCA9IGVudHJ5LVx1MDAzZWV4dF9pZHg7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGlkeCBcdTAwM2MgMCB8fCBpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXMpKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoc2NvbnRleHQtXHUwMDNlZXh0X3N0YXR1c1tpZHhdICE9IEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19FTkFCTEVEIHx8XG4mIzQzO1x0XHQgICAgIWV4dC1cdTAwM2V2YWxpZGF0ZSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0ZXh0LVx1MDAzZXZhbGlkYXRlKHZjcHUpO1xuJiM0MztcdH1cbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xuaW5kZXggMTM0MmFkYjMxODBjNi4uODc0OGRmOTIxZjEwMSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jXG5AQCAtNDIwLDYgJiM0Mzs0MjAsMzIgQEAgc3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdGlmIChmZWF0dXJlLVx1MDAzZXJlc2V0KVxuIFx0XHRcdGZlYXR1cmUtXHUwMDNlcmVzZXQodmNwdSk7XG4gXHR9XG4mIzQzO1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5jc3JfZGlydHkgPSB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBrdm1fc2JpX2V4dF9md2Z0X3ZhbGlkYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm1fc2JpX2Z3ZnQgKmZ3ZnQgPSB2Y3B1X3RvX2Z3ZnQodmNwdSk7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGt2bV9zYmlfZndmdF9mZWF0dXJlICpmZWF0dXJlO1xuJiM0MztcdHN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnICpjb25mO1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZlYXR1cmVzKTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGZlYXR1cmUgPSBcdTAwMjZmZWF0dXJlc1tpXTtcbiYjNDM7XHRcdGNvbmYgPSBcdTAwMjZmd2Z0LVx1MDAzZWNvbmZpZ3NbaV07XG4mIzQzO1x0XHRpZiAoIWNvbmYtXHUwMDNlc3VwcG9ydGVkKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIWZlYXR1cmUtXHUwMDNlc3VwcG9ydGVkIHx8IGZlYXR1cmUtXHUwMDNlc3VwcG9ydGVkKHZjcHUpKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRjb25mLVx1MDAzZWVuYWJsZWQgPSBmYWxzZTtcbiYjNDM7XHRcdGNvbmYtXHUwMDNlZmxhZ3MgPSAwO1xuJiM0MztcbiYjNDM7XHRcdGlmIChmZWF0dXJlLVx1MDAzZXJlc2V0KVxuJiM0MztcdFx0XHRmZWF0dXJlLVx1MDAzZXJlc2V0KHZjcHUpO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHVuc2lnbmVkIGxvbmcga3ZtX3NiaV9leHRfZndmdF9nZXRfcmVnX2NvdW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbkBAIC01NzQsNiAmIzQzOzYwMCw3IEBAIGNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0ge1xuIFx0LmluaXQgPSBrdm1fc2JpX2V4dF9md2Z0X2luaXQsXG4gXHQuZGVpbml0ID0ga3ZtX3NiaV9leHRfZndmdF9kZWluaXQsXG4gXHQucmVzZXQgPSBrdm1fc2JpX2V4dF9md2Z0X3Jlc2V0LFxuJiM0MztcdC52YWxpZGF0ZSA9IGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGUsXG4gXHQuc3RhdGVfcmVnX3N1YnR5cGUgPSBLVk1fUkVHX1JJU0NWX1NCSV9GV0ZULFxuIFx0LmdldF9zdGF0ZV9yZWdfY291bnQgPSBrdm1fc2JpX2V4dF9md2Z0X2dldF9yZWdfY291bnQsXG4gXHQuZ2V0X3N0YXRlX3JlZ19pZCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZ2V0X3JlZ19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIG1vZGlmaWVzIEtWTSBTQkkgZXh0ZW5zaW9uIGhhbmRsaW5nIG9uIFJJU0MtVi4gSXQgYWRkcyBhIG5ldyBgdmFsaWRhdGVgIGNhbGxiYWNrIGZvciBTQkkgZXh0ZW5zaW9ucywgd2hpY2ggaXMgaW52b2tlZCB3aGVuIGEgdkNQVSBpcyBydW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBhbmQgY2FsbHMgdGhlIGByZXNldGAgY2FsbGJhY2sgd2hlbiBhbiBleHRlbnNpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB2aXJ0dWFsaXphdGlvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYwYmVkOWRmNjkyZjc3YzVkYmQwZDY1YzU0YzExNDNjZmNiZWM5YmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAwNjo1ODoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oCmluZGV4IGMxYTdlM2I0MGQ5Y2UuLmYwMWEyODYwYzc1MTEgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaApAQCAtNjAsNiAmIzQzOzYwLDkgQEAgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gewogCiAJdm9pZCAoKnJlc2V0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCiYjNDM7CS8qIEFsbG93IHRoZSBleHRlbnNpb24gdG8gY29ycmVjdCBpdHMgcGFyYW1ldGVycyBiZWZvcmUgdGhlIGZpcnN0IHJ1biAqLwomIzQzOwl2b2lkICgqdmFsaWRhdGUpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiYjNDM7CiAJdW5zaWduZWQgbG9uZyBzdGF0ZV9yZWdfc3VidHlwZTsKIAl1bnNpZ25lZCBsb25nICgqZ2V0X3N0YXRlX3JlZ19jb3VudCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIAlpbnQgKCpnZXRfc3RhdGVfcmVnX2lkKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBpbmRleCwgdTY0ICpyZWdfaWQpOwpAQCAtOTMsNiAmIzQzOzk2LDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3NiaV9lY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pOwogdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfZGVpbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwomIzQzO3ZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKICNpZmRlZiBDT05GSUdfUklTQ1ZfU0JJX1YwMQogZXh0ZXJuIGNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF92MDE7CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuYwppbmRleCAyMzg0MThmZWQyYjlhLi5iNjhhYTgzMGFhZjUxIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmMKQEAgLTY5LDYgJiM0Mzs2OSw4IEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAogCWlmICh2Y3B1LSZndDtndWVzdF9kZWJ1ZykKIAkJY2ZnLSZndDtoZWRlbGVnICZhbXA7PSB+QklUKEVYQ19CUkVBS1BPSU5UKTsKJiM0MzsKJiM0MzsJa3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHZjcHUpOwogfQogCiB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jCmluZGV4IDQ2YWI3Yjk4OTQzMmIuLjFjNGY4NzQzNjhmYmUgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYwpAQCAtMjIxLDYgJiM0MzsyMjEsNyBAQCBzdGF0aWMgaW50IHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIHsKIAlzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2NvbnRleHQgKnNjb250ZXh0ID0gJmFtcDt2Y3B1LSZndDthcmNoLnNiaV9jb250ZXh0OwogCWNvbnN0IHN0cnVjdCBrdm1fcmlzY3Zfc2JpX2V4dGVuc2lvbl9lbnRyeSAqc2V4dDsKJiM0MzsJY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gKmV4dDsKIAogCWlmIChyZWdfdmFsICE9IDEgJmFtcDsmYW1wOyByZWdfdmFsICE9IDApCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMjI5LDYgJiM0MzsyMzAsMTIgQEAgc3RhdGljIGludCByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJaWYgKCFzZXh0IHx8IHNjb250ZXh0LSZndDtleHRfc3RhdHVzW3NleHQtJmd0O2V4dF9pZHhdID09IEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19VTkFWQUlMQUJMRSkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKJiM0MzsJZXh0ID0gc2V4dC0mZ3Q7ZXh0X3B0cjsKJiM0MzsKJiM0MzsJaWYgKCFyZWdfdmFsICZhbXA7JmFtcDsgc2NvbnRleHQtJmd0O2V4dF9zdGF0dXNbc2V4dC0mZ3Q7ZXh0X2lkeF0gPT0gS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgJmFtcDsmYW1wOwomIzQzOwkgICAgZXh0LSZndDtyZXNldCkKJiM0MzsJCWV4dC0mZ3Q7cmVzZXQodmNwdSk7CiYjNDM7CiAJc2NvbnRleHQtJmd0O2V4dF9zdGF0dXNbc2V4dC0mZ3Q7ZXh0X2lkeF0gPSAocmVnX3ZhbCkgPwogCQkJS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgOgogCQkJS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0RJU0FCTEVEOwpAQCAtNzIzLDMgJiM0Mzs3MzAsMjYgQEAgdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQlleHQtJmd0O3Jlc2V0KHZjcHUpOwogCX0KIH0KJiM0MzsKJiM0Mzt2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2NvbnRleHQgKnNjb250ZXh0ID0gJmFtcDt2Y3B1LSZndDthcmNoLnNiaV9jb250ZXh0OwomIzQzOwljb25zdCBzdHJ1Y3Qga3ZtX3Jpc2N2X3NiaV9leHRlbnNpb25fZW50cnkgKmVudHJ5OwomIzQzOwljb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiAqZXh0OwomIzQzOwlpbnQgaWR4LCBpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShzYmlfZXh0KTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWVudHJ5ID0gJmFtcDtzYmlfZXh0W2ldOwomIzQzOwkJZXh0ID0gZW50cnktJmd0O2V4dF9wdHI7CiYjNDM7CQlpZHggPSBlbnRyeS0mZ3Q7ZXh0X2lkeDsKJiM0MzsKJiM0MzsJCWlmIChpZHggJmx0OyAwIHx8IGlkeCAmZ3Q7PSBBUlJBWV9TSVpFKHNjb250ZXh0LSZndDtleHRfc3RhdHVzKSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCWlmIChzY29udGV4dC0mZ3Q7ZXh0X3N0YXR1c1tpZHhdICE9IEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19FTkFCTEVEIHx8CiYjNDM7CQkgICAgIWV4dC0mZ3Q7dmFsaWRhdGUpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlleHQtJmd0O3ZhbGlkYXRlKHZjcHUpOwomIzQzOwl9CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jCmluZGV4IDEzNDJhZGIzMTgwYzYuLjg3NDhkZjkyMWYxMDEgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMKQEAgLTQyMCw2ICYjNDM7NDIwLDMyIEBAIHN0YXRpYyB2b2lkIGt2bV9zYmlfZXh0X2Z3ZnRfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQlpZiAoZmVhdHVyZS0mZ3Q7cmVzZXQpCiAJCQlmZWF0dXJlLSZndDtyZXNldCh2Y3B1KTsKIAl9CiYjNDM7CiYjNDM7CXZjcHUtJmd0O2FyY2guY3NyX2RpcnR5ID0gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3NiaV9md2Z0ICpmd2Z0ID0gdmNwdV90b19md2Z0KHZjcHUpOwomIzQzOwljb25zdCBzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2ZlYXR1cmUgKmZlYXR1cmU7CiYjNDM7CXN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnICpjb25mOwomIzQzOwlpbnQgaTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoZmVhdHVyZXMpOyBpJiM0MzsmIzQzOykgewomIzQzOwkJZmVhdHVyZSA9ICZhbXA7ZmVhdHVyZXNbaV07CiYjNDM7CQljb25mID0gJmFtcDtmd2Z0LSZndDtjb25maWdzW2ldOwomIzQzOwkJaWYgKCFjb25mLSZndDtzdXBwb3J0ZWQpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlpZiAoIWZlYXR1cmUtJmd0O3N1cHBvcnRlZCB8fCBmZWF0dXJlLSZndDtzdXBwb3J0ZWQodmNwdSkpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQljb25mLSZndDtlbmFibGVkID0gZmFsc2U7CiYjNDM7CQljb25mLSZndDtmbGFncyA9IDA7CiYjNDM7CiYjNDM7CQlpZiAoZmVhdHVyZS0mZ3Q7cmVzZXQpCiYjNDM7CQkJZmVhdHVyZS0mZ3Q7cmVzZXQodmNwdSk7CiYjNDM7CX0KIH0KIAogc3RhdGljIHVuc2lnbmVkIGxvbmcga3ZtX3NiaV9leHRfZndmdF9nZXRfcmVnX2NvdW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKQEAgLTU3NCw2ICYjNDM7NjAwLDcgQEAgY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X2Z3ZnQgPSB7CiAJLmluaXQgPSBrdm1fc2JpX2V4dF9md2Z0X2luaXQsCiAJLmRlaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZGVpbml0LAogCS5yZXNldCA9IGt2bV9zYmlfZXh0X2Z3ZnRfcmVzZXQsCiYjNDM7CS52YWxpZGF0ZSA9IGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGUsCiAJLnN0YXRlX3JlZ19zdWJ0eXBlID0gS1ZNX1JFR19SSVNDVl9TQklfRldGVCwKIAkuZ2V0X3N0YXRlX3JlZ19jb3VudCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZ2V0X3JlZ19jb3VudCwKIAkuZ2V0X3N0YXRlX3JlZ19pZCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZ2V0X3JlZ19pZCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4MAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJJU0MtViBLVk0gU0JJIEV4dGVuc2lvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIGl0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIHNvbWUgY3J1Y2lhbCBhc3BlY3RzIG9mIFJJU0MtViBLVk0uIE15IGZpcnN0IHRob3VnaHQgaXM6IHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggZGlnZ2luZyBpbnRvLiBXZSYjMzk7cmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIHRvIGhvdyBTQkkgZXh0ZW5zaW9ucyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIHZpcnR1YWwgbWFjaGluZSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgYSBjb3JlIHZpcnR1YWxpemF0aW9uIGZlYXR1cmUuCgpUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGB2YWxpZGF0ZWAgY2FsbGJhY2sgdG8gdGhlIGBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbmAgc3RydWN0dXJlLCBsb2NhdGVkIGluIGBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oYC4gSXQgYWxzbyB1cGRhdGVzIGByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZWAgdG8gY2FsbCBgZXh0LSZndDtyZXNldCh2Y3B1KWAgd2hlbiBkaXNhYmxpbmcgYW4gZXh0ZW5zaW9uLCB3aGljaCBpcyBnb29kIGhvdXNla2VlcGluZy4gTW9yZSBpbXBvcnRhbnRseSwgaXQgYWRkcyBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYCwgd2hpY2ggaXRlcmF0ZXMgdGhyb3VnaCB0aGUgZW5hYmxlZCBleHRlbnNpb25zIGFuZCBjYWxscyB0aGVpciBpbmRpdmlkdWFsIGB2YWxpZGF0ZSh2Y3B1KWAgbWV0aG9kcy4gVGhpcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIGlzIHRoZW4gY2FsbGVkIGZyb20gYGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZWAuIFRoZXJlIGlzIGFsc28gdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgYGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGVgIGZvciB0aGUgYHZjcHVfc2JpX2V4dF9md2Z0YCBleHRlbnNpb24uCgpOb3csIGJlY2F1c2UgdGhpcyBwYXRjaCBhZGRzIG5ldyBsb2dpYyBzcGVjaWZpY2FsbHkgZm9yIHJlc2V0dGluZyBhbmQgdmFsaWRhdGluZyBTQkkgZXh0ZW5zaW9ucywgSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIHByaW1lIGZ1enppbmcgbWF0ZXJpYWwuIEl0JiMzOTtzIGZ1bmN0aW9uYWwsIHRvdWNoZXMgY29yZSBLVk0gZnVuY3Rpb25hbGl0eSwgYW5kIGludHJvZHVjZXMgbmV3IGNvZGUgcGF0aHMgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIE15IHByaW1hcnkgZm9jdXMgd2lsbCBiZSBvbiBpZGVudGlmeWluZyBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gdGFyZ2V0IGR1cmluZyBmdXp6aW5nLgoKU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gbmFpbCBkb3duIHRoZXNlIGZ1bmN0aW9uczoKKiAgIGBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VgCiogICBgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGVgCiogICBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYAoqICAgYGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGVgIChldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGNhbGxlcikKClRoZSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSBuZWVkIGBDT05GSUdfS1ZNYCwgb2J2aW91c2x5LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IFJJU0MtViBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBlbmFibGUgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIHRoZSBjb2RlYmFzZSBmb3Igd2hlcmUgYGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZWAgYW5kIGB2Y3B1X3NiaV9leHRfZndmdGAgYXJlIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmg9OTg9dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmg6OTk6dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmgtMTAwLVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmM9Mzk9dm9pZCBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmMtNzItXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jOjczOlx0a3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHZjcHUpO1xuYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuYy03NC19XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz03MTE9dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtNzMzLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYzo3MzQ6dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy03MzUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNDYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKktjb25maWcgRGl2ZSBmb3IgUklTQy1WIEtWTSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgZm9yIEtWTSBvbiBSSVNDLVYuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIExldCYjMzk7cyBkaWcgaW50byBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgYnVpbGQgb3B0aW9ucywgYW5kIGFsbCB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgdGhhdCBnb3Zlcm4gdGhlIEtWTSBzdWJzeXN0ZW0gb24gdGhpcyBhcmNoaXRlY3R1cmUuIEl0JiMzOTtsbCBnaXZlIG1lIHRoZSBwcmVjaXNlIHJlcXVpcmVtZW50cyBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBLY29uZmlnIGZvciBSSVNDLVYgS1ZNIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIFdoZXJlIGRvIEkgYmVnaW4/IFRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtWTSBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AuIEl0JiMzOTtzIHRoZSBjZW50cmFsIGh1YiBmb3IgZGVmaW5pbmcgYWxsIHRoZSByZWxldmFudCBvcHRpb25zIGFuZCB0aGVpciByZWxhdGlvbnNoaXBzLiBUaGlzIGZpbGUgd2lsbCBsYXkgb3V0IHByZWNpc2VseSB3aGljaCBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgb3IgaW1wYWN0ZWQgYnkgZW5hYmxpbmcgS1ZNIHN1cHBvcnQgb24gUklTQy1WLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLCB1bmRlcnN0YW5kIHRoZSBwcmVyZXF1aXNpdGVzLCBhbmQgaWRlbnRpZnkgcG90ZW50aWFsIGNvbmZsaWN0cy4gVGltZSB0byBwYXJzZSBpdCBjYXJlZnVsbHkgYW5kIHNlZSB3aGF0IGl0IHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA3Olx0XG4gICA4Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgOTpcdFx0Ym9vbCBcJiMzNDtWaXJ0dWFsaXphdGlvblwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxuICAxMjpcdFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZFxuICAxNjpcdFx0ICBkaXNhYmxlZC5cbiAgMTc6XHRcbiAgMTg6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBLVk1cbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBSSVNDVl9TQkkgXHUwMDI2XHUwMDI2IE1NVVxuICAyMzpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjQ6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyNTpcdFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxuICAyNzpcdFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxuICAyODpcdFx0c2VsZWN0IEtWTV9DT01NT05cbiAgMjk6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbiAgMzA6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xuICAzMTpcdFx0c2VsZWN0IEtWTV9NTUlPXG4gIDMyOlx0XHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiAgMzM6XHRcdHNlbGVjdCBTQ0hFRF9JTkZPXG4gIDM0Olx0XHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAzOTpcdFxuICA0MDpcdGVuZGlmICMgVklSVFVBTElaQVRJT05cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzYxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKktWTSBvbiBSSVNDLVY6IFBpbnBvaW50aW5nIHRoZSBSZWxldmFudCBDb2RlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyBLVk0gb3BlcmF0ZXMgb24gUklTQy1WLCBhbmQgaXQmIzM5O3MgY2xlYXIgcmlnaHQgYXdheSB0aGF0IHRoaXMgaW1wbGVtZW50YXRpb24gaGluZ2VzIG9uIGEgZmV3IGNvcmUgY29tcG9uZW50cy4gVGhlIHRleHQgcG9pbnRzIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9uIGBSSVNDVl9TQklgIGFuZCB0aGUgYE1NVWAsIHdoaWNoLCBmcm9tIG15IGV4cGVyaWVuY2UsIGFyZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgZm9yIGFueSB2aXJ0dWFsaXNhdGlvbiBlZmZvcnQgb24gUklTQy1WLiBNYWtlcyBzZW5zZS4gWW91IGNhbiYjMzk7dCB2aXJ0dWFsaXplIHdpdGhvdXQgYSBzZWN1cmUgYW5kIGVmZmljaWVudCBTQkkgYW5kIHJvYnVzdCBNTVUgbWFuYWdlbWVudC4KCk5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlICpjb2RlKiB0aGF0IGRvZXMgdGhlIHdvcmsuIFRoZSB0ZXh0IGhpZ2hsaWdodHMgdGhhdCB0aGUgcmVsZXZhbnQgbW9kaWZpZWQgY29kZSBpcyBzcGVjaWZpY2FsbHkgbG9jYXRlZCB3aXRoaW4gYGFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNgIGFuZCBgYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jYC4gT2theSwgYHZjcHVfc2JpYCBtYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgU0JJIGludGVyYWN0aW9uIGxvZ2ljIG11c3QgcmVzaWRlLiBUaGUgcHJlc2VuY2Ugb2YgYF9md2Z0YCBhbHNvIHN1Z2dlc3RzIGl0IG1heSBiZSBGV0ZULXNwZWNpZmljIGZlYXR1cmVzOyBzbyBpdCBpcyBsaWtlbHkgd29ydGggY2hlY2tpbmcgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbmZpZ3MgZm9yIEZXRlQgdG8gYmUgc3VyZSBhYm91dCBpdHMgZnVuY3Rpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBhY2NvdW50aW5nIGZvciBldmVyeXRoaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhvc2UgZmlsZXMuIEkmIzM5O2xsIGhhdmUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBvciBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvICYjMzQ7RldGVCYjMzQ7IHdpdGhpbiB0aG9zZSBmaWxlcy4gVGhhdCYjMzk7cyBsaWtlbHkgdGhlIG5leHQgbG9naWNhbCBzdGVwIHRvIGlzb2xhdGUgdGhlIHByZWNpc2UgbWVjaGFuaXNtcyBhdCBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Y3B1X3NiaV9md2Z0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0yNC0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX3ZjcHVfc2JpLmhcdTAwM2VcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoyNTojaW5jbHVkZSBcdTAwM2Nhc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaFx1MDAzZVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI2LSNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fdmNwdV90aW1lci5oXHUwMDNlXG4tLVxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9MzI9a3ZtLXkgJiM0Mzs9IHZjcHVfc2JpX2ZvcndhcmQub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MzM6a3ZtLXkgJiM0Mzs9IHZjcHVfc2JpX2Z3ZnQub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUtMzQta3ZtLXkgJiM0Mzs9IHZjcHVfc2JpX2hzbS5vXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTE0LSNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fdmNwdV9zYmkuaFx1MDAzZVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jOjE1OiNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fdmNwdV9zYmlfZndmdC5oXHUwMDNlXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMtMTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwOTAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS1ZNIENvbXBpbGF0aW9uIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIHRoaXMgaXMgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5IGFzIHBhcnQgb2YgdGhlIEtWTSBpbmZyYXN0cnVjdHVyZS4gVGhhdCBtZWFucywgYXQgYSBiYXNpYyBsZXZlbCwgdGhlIGtlcm5lbCAqc2hvdWxkKiBvbmx5IG5lZWQgYEtWTWAgZW5hYmxlZCBpbiB0aGUgY29uZmlnLiBIb2xkIG9uLi4uIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGBWSVJUVUFMSVpBVElPTmAgYWxzbyBuZWVkcyB0byBiZSBlbmFibGVkLCBpbiBhZGRpdGlvbiB0byBLVk0gaXRzZWxmLiBSaWdodCwgYmVjYXVzZSBLVk0gZGVwZW5kcyBvbiB0aGUgdmlydHVhbGl6YXRpb24gY29yZS4KCkxldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGtleSBzeW1ib2xzIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG9uIHRoZSByaWdodCB0cmFjayBoZXJlLCBzbyB0aGF0IG15IGFzc3VtcHRpb25zIGFyZSBzb3VuZDogYGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZWAsIGByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZWAsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYC4gR29vZCwgdGhvc2Ugc2VlbSByZWxldmFudC4KCkFuZCBmaW5hbGx5LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZyBxdWlja2x5IGFib3V0IHRoZSBgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGVgIGZ1bmN0aW9uLiBJICp0aGluayogaXQgaXMsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIGl0JiMzOTtzICpzdGF0aWMqIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgS1ZNIGltcGxlbWVudGF0aW9uLiBUaGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBpdCBpcyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jPTE5OT1pbnQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3JldHVybihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy0yMTctXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jOjIxODpzdGF0aWMgaW50IHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtMjE5LVx0XHRcdFx0XHQgdW5zaWduZWQgbG9uZyByZWdfbnVtLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM9MjYzPXN0YXRpYyBpbnQgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9tdWx0aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy0yNzYtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jOjI3NzpcdFx0cmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGUodmNwdSwgZXh0X2lkLCBlbmFibGUpO1xuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy0yNzgtXHR9XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz0zMzE9aW50IGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy0zNTQtXHRjYXNlIEtWTV9SRUdfUklTQ1ZfU0JJX1NJTkdMRTpcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM6MzU1Olx0XHRyZXR1cm4gcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGUodmNwdSwgcmVnX251bSwgcmVnX3ZhbCk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTM1Ni1cdGNhc2UgS1ZNX1JFR19SSVNDVl9TQklfTVVMVElfRU46XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NTYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgUklTQy1WIFNCSSBFeHRlbnNpb24gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlYC4gSXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHdoZXJlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgY2FsbGVkLiBNeSBhdHRlbnRpb24gaXMgZHJhd24gdG8gYGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dGAsIHRoYXQmIzM5O3MgdGhlIHJlYWwgZW50cnkgcG9pbnQgSSBuZWVkIHRvIGZvY3VzIG9uLiBCdXQgYmVmb3JlIEkgZGl2ZSBhbnkgZnVydGhlciwgSSBzaG91bGQgdmVyaWZ5IHRoZSBjYWxsIHBhdGggYW5kIHdoZXRoZXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIG9uZS10aW1lIGNvbmZpZ3VyYXRpb24gd2l0aCBga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlYC4gVGhhdCBjaGVjayBjb3VsZCBnaXZlIG1lIGltcG9ydGFudCBjb250ZXh0LCBzbyBsZXQmIzM5O3Mgc2VlIGhvdyB0aGF0JiMzOTtzIGJlaW5nIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X2NvbmZpZy5oPTIxPXZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X2NvbmZpZy5oOjIyOnZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X2NvbmZpZy5oLTIzLXZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9ODU4PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTg2NC1cdGlmICghdmNwdS1cdTAwM2VhcmNoLnJhbl9hdGxlYXN0X29uY2UpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6ODY1Olx0XHRrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2UodmNwdSk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtODY2LVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmM9Mjc9dm9pZCBrdm1fcmlzY3ZfdmNwdV9jb25maWdfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmMtMzgtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jOjM5OnZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmMtNDAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjM2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEV4ZWN1dGlvbiBQYXRoIG9mIFJJU0MtViBTQkkgRXh0ZW5zaW9ucyBpbiBLVk0qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIFJJU0MtViBLVk0gY29kZSwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IFNCSSBleHRlbnNpb25zIGFyZSBoYW5kbGVkLiBNeSBpbml0aWFsIHRyYWNlIGluZGljYXRlcyB0aGF0IGBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VgIGlzIHRoZSBrZXkgZW50cnkgcG9pbnQgc2luY2UgaXQmIzM5O3MgY2FsbGVkIGJ5IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIFRoYXQgZnVuY3Rpb24gaW4gdHVybiBjYWxscyBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYC4gQmFzZWQgb24gdGhlIGNhbGwgZ3JhcGgsIHRoZXNlIGFyZSB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBJIG5lZWQgdG8gbG9vayBpbnRvOiBga3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0YCwgYGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZWAsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlYC4KClRoZSBnb2FsIG5vdyBpcyB0byBlc3RhYmxpc2ggaWYgdGhlc2UgZnVuY3Rpb25zIGhhdmUgYW55IGxpbmthZ2UgaXNzdWVzLiBMZXQmIzM5O3Mgc2VlIGlmIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgIGlzIGdsb2JhbGx5IGFjY2Vzc2libGUgaW4gS1ZNIOKAkyBpdCBhcHBlYXJzIHRvIGJlLiBJIG5lZWQgdG8gbm93IGFsc28gdmVyaWZ5IHdoZXRoZXIgYGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dGAgaXMgZ2xvYmFsIG9yIG5vdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmg9ODU9aW50IGt2bV9yaXNjdl92Y3B1X3JlZ19pbmRpY2VzX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgX191c2VyICp1aW5kaWNlcyk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oOjg2OmludCBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaC04Ny1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X29uZXJlZy5jPTk5MD1pbnQga3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9vbmVyZWcuYy0xMDEyLVx0Y2FzZSBLVk1fUkVHX1JJU0NWX1NCSV9FWFQ6XG5hcmNoL3Jpc2N2L2t2bS92Y3B1X29uZXJlZy5jOjEwMTM6XHRcdHJldHVybiBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHQodmNwdSwgcmVnKTtcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfb25lcmVnLmMtMTAxNC1cdGNhc2UgS1ZNX1JFR19SSVNDVl9TQklfU1RBVEU6XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz0zMDY9aW50IGt2bV9yaXNjdl92Y3B1X3JlZ19pbmRpY2VzX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgX191c2VyICp1aW5kaWNlcylcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTMzMC1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM6MzMxOmludCBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy0zMzItXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTYxNgoJCQkJCQkJb3V0cHV0OiAxNTgKCQkJCQkJCXRob3VnaHRzOiAyMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1ZNIFJJU0MtViBTQkkgRXh0ZW5zaW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgdGhlIGdsb2JhbCBLVk0gbGFuZHNjYXBlLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBSSVNDLVYgYW5kIGl0cyBTQkkgZXh0ZW5zaW9ucy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGEgZmV3IGtleSBzeW1ib2xzOiBga3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0YCwgYGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZWAsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlYC4gVGhlc2UgYXJlIHRoZSBob29rcyB0aGF0IHdpbGwgZ2l2ZSBtZSBteSBzdGFydGluZyBwb2ludHMuCgpUaGUgcGF0Y2ggaXRzZWxmIGRlYWxzIHdpdGggS1ZNJiMzOTtzIG1hbmFnZW1lbnQgb2YgU0JJIGV4dGVuc2lvbnMgb24gUklTQy1WLiBJdCBpbnRyb2R1Y2VzIGEgYHZhbGlkYXRlYCBjYWxsYmFjayBkZXNpZ25lZCB0byBydW4gdGhlIHZlcnkgZmlyc3QgdGltZSBhIHZDUFUgaXMgbGF1bmNoZWQ7IHRoaXMgZ2l2ZXMgbWUgYSBnb29kIHBvaW50IHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHBvc3NpYmxlIGlzc3Vlcy4gQWxzbywgYSBgcmVzZXRgIGNhbGxiYWNrIGlzIGFsc28gYWRkZWQgdGhhdCBydW5zIHdoZW4gYW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkLiBUaGlzIGlzIGltcG9ydGFudCB0b28sIGJlY2F1c2UgZGlzYWJsaW5nIGZlYXR1cmVzIG9mdGVuIGV4cG9zZXMgc3VidGxlIHByb2JsZW1zIHRoYXQgYXJlIGhhcmQgdG8gZmluZC4gSXQmIzM5O3MgY29yZSBLVk0gdmlydHVhbGl6YXRpb24gbG9naWMsIG1lYW5pbmcgSSBuZWVkIHRvIHRyZWF0IHRoaXMgYXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQmIzM5O3MgcmlwZSBmb3IgZnV6emluZy4KCkJlZm9yZSBJIGRlbHZlIGludG8gdGhlIHNwZWNpZmljcywgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkga25vdyB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGlzIGBLVk1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgaXQgaGFzIGFsbCB0aGUgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLiBJIHJlY2FsbCB0aGF0IGBLVk1gIHB1bGxzIGluIGBSSVNDVl9TQklgIGFuZCBgTU1VYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb3RoZXIgbm90YWJsZSBjb25maWd1cmF0aW9ucyBqdW1waW5nIG91dCBhdCBtZSwgc28gSSB0aGluayBJIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlLiBOb3csIEkgY2FuIGJ1aWxkIG15IHBsYW4gdG8gYW5hbHl6ZSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIG1vZGlmaWVzIEtWTSBTQkkgZXh0ZW5zaW9uIGhhbmRsaW5nIG9uIFJJU0MtVi4gSXQgYWRkcyBhIG5ldyBgdmFsaWRhdGVgIGNhbGxiYWNrIGZvciBTQkkgZXh0ZW5zaW9ucywgd2hpY2ggaXMgaW52b2tlZCB3aGVuIGEgdkNQVSBpcyBydW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBhbmQgY2FsbHMgdGhlIGByZXNldGAgY2FsbGJhY2sgd2hlbiBhbiBleHRlbnNpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB2aXJ0dWFsaXphdGlvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIG1vZGlmaWVzIEtWTSBTQkkgZXh0ZW5zaW9uIGhhbmRsaW5nIG9uIFJJU0MtVi4gSXQgYWRkcyBhIG5ldyBgdmFsaWRhdGVgIGNhbGxiYWNrIGZvciBTQkkgZXh0ZW5zaW9ucywgd2hpY2ggaXMgaW52b2tlZCB3aGVuIGEgdkNQVSBpcyBydW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBhbmQgY2FsbHMgdGhlIGByZXNldGAgY2FsbGJhY2sgd2hlbiBhbiBleHRlbnNpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB2aXJ0dWFsaXphdGlvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU4OjE1LjI1NDEwNzA3N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4ODkxMzg2MDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dFwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNCSSBleHRlbnNpb24gaGFuZGxpbmcgb24gUklTQy1WLiBJdCBhZGRzIGEgbmV3IGB2YWxpZGF0ZWAgY2FsbGJhY2sgZm9yIFNCSSBleHRlbnNpb25zLCB3aGljaCBpcyBpbnZva2VkIHdoZW4gYSB2Q1BVIGlzIHJ1biBmb3IgdGhlIGZpcnN0IHRpbWUsIGFuZCBjYWxscyB0aGUgYHJlc2V0YCBjYWxsYmFjayB3aGVuIGFuIGV4dGVuc2lvbiBpcyBkaXNhYmxlZC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgaW4gdGhlIGNvcmUgS1ZNIHZpcnR1YWxpemF0aW9uIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1ODoxNS4yNTQxMTI1NzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTc3ODEyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYwYmVkOWRmNjkyZjc3YzVkYmQwZDY1YzU0YzExNDNjZmNiZWM5YmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDY6NTg6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmhcXG5pbmRleCBjMWE3ZTNiNDBkOWNlLi5mMDFhMjg2MGM3NTExIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmhcXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oXFxuQEAgLTYwLDYgKzYwLDkgQEAgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24ge1xcbiBcXG4gXFx0dm9pZCAoKnJlc2V0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiBcXG4rXFx0LyogQWxsb3cgdGhlIGV4dGVuc2lvbiB0byBjb3JyZWN0IGl0cyBwYXJhbWV0ZXJzIGJlZm9yZSB0aGUgZmlyc3QgcnVuICovXFxuK1xcdHZvaWQgKCp2YWxpZGF0ZSkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4rXFxuIFxcdHVuc2lnbmVkIGxvbmcgc3RhdGVfcmVnX3N1YnR5cGU7XFxuIFxcdHVuc2lnbmVkIGxvbmcgKCpnZXRfc3RhdGVfcmVnX2NvdW50KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiBcXHRpbnQgKCpnZXRfc3RhdGVfcmVnX2lkKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBpbmRleCwgdTY0ICpyZWdfaWQpO1xcbkBAIC05Myw2ICs5Niw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9zYmlfZWNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKTtcXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiB2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV9kZWluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4rdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gXFxuICNpZmRlZiBDT05GSUdfUklTQ1ZfU0JJX1YwMVxcbiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X3YwMTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcXG5pbmRleCAyMzg0MThmZWQyYjlhLi5iNjhhYTgzMGFhZjUxIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jXFxuQEAgLTY5LDYgKzY5LDggQEAgdm9pZCBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXG4gXFx0aWYgKHZjcHUtXFx1MDAzZWd1ZXN0X2RlYnVnKVxcbiBcXHRcXHRjZmctXFx1MDAzZWhlZGVsZWcgXFx1MDAyNj0gfkJJVChFWENfQlJFQUtQT0lOVCk7XFxuK1xcbitcXHRrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUodmNwdSk7XFxuIH1cXG4gXFxuIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuY1xcbmluZGV4IDQ2YWI3Yjk4OTQzMmIuLjFjNGY4NzQzNjhmYmUgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNcXG5AQCAtMjIxLDYgKzIyMSw3IEBAIHN0YXRpYyBpbnQgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbiB7XFxuIFxcdHN0cnVjdCBrdm1fdmNwdV9zYmlfY29udGV4dCAqc2NvbnRleHQgPSBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5zYmlfY29udGV4dDtcXG4gXFx0Y29uc3Qgc3RydWN0IGt2bV9yaXNjdl9zYmlfZXh0ZW5zaW9uX2VudHJ5ICpzZXh0O1xcbitcXHRjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiAqZXh0O1xcbiBcXG4gXFx0aWYgKHJlZ192YWwgIT0gMSBcXHUwMDI2XFx1MDAyNiByZWdfdmFsICE9IDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC0yMjksNiArMjMwLDEyIEBAIHN0YXRpYyBpbnQgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbiBcXHRpZiAoIXNleHQgfHwgc2NvbnRleHQtXFx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cXHUwMDNlZXh0X2lkeF0gPT0gS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX1VOQVZBSUxBQkxFKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFxuK1xcdGV4dCA9IHNleHQtXFx1MDAzZWV4dF9wdHI7XFxuK1xcbitcXHRpZiAoIXJlZ192YWwgXFx1MDAyNlxcdTAwMjYgc2NvbnRleHQtXFx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cXHUwMDNlZXh0X2lkeF0gPT0gS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGV4dC1cXHUwMDNlcmVzZXQpXFxuK1xcdFxcdGV4dC1cXHUwMDNlcmVzZXQodmNwdSk7XFxuK1xcbiBcXHRzY29udGV4dC1cXHUwMDNlZXh0X3N0YXR1c1tzZXh0LVxcdTAwM2VleHRfaWR4XSA9IChyZWdfdmFsKSA/XFxuIFxcdFxcdFxcdEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19FTkFCTEVEIDpcXG4gXFx0XFx0XFx0S1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0RJU0FCTEVEO1xcbkBAIC03MjMsMyArNzMwLDI2IEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0ZXh0LVxcdTAwM2VyZXNldCh2Y3B1KTtcXG4gXFx0fVxcbiB9XFxuK1xcbit2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0c3RydWN0IGt2bV92Y3B1X3NiaV9jb250ZXh0ICpzY29udGV4dCA9IFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnNiaV9jb250ZXh0O1xcbitcXHRjb25zdCBzdHJ1Y3Qga3ZtX3Jpc2N2X3NiaV9leHRlbnNpb25fZW50cnkgKmVudHJ5O1xcbitcXHRjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiAqZXh0O1xcbitcXHRpbnQgaWR4LCBpO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoc2JpX2V4dCk7IGkrKykge1xcbitcXHRcXHRlbnRyeSA9IFxcdTAwMjZzYmlfZXh0W2ldO1xcbitcXHRcXHRleHQgPSBlbnRyeS1cXHUwMDNlZXh0X3B0cjtcXG4rXFx0XFx0aWR4ID0gZW50cnktXFx1MDAzZWV4dF9pZHg7XFxuK1xcbitcXHRcXHRpZiAoaWR4IFxcdTAwM2MgMCB8fCBpZHggXFx1MDAzZT0gQVJSQVlfU0laRShzY29udGV4dC1cXHUwMDNlZXh0X3N0YXR1cykpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0aWYgKHNjb250ZXh0LVxcdTAwM2VleHRfc3RhdHVzW2lkeF0gIT0gS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgfHxcXG4rXFx0XFx0ICAgICFleHQtXFx1MDAzZXZhbGlkYXRlKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdGV4dC1cXHUwMDNldmFsaWRhdGUodmNwdSk7XFxuK1xcdH1cXG4rfVxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcXG5pbmRleCAxMzQyYWRiMzE4MGM2Li44NzQ4ZGY5MjFmMTAxIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xcbkBAIC00MjAsNiArNDIwLDMyIEBAIHN0YXRpYyB2b2lkIGt2bV9zYmlfZXh0X2Z3ZnRfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRcXHRpZiAoZmVhdHVyZS1cXHUwMDNlcmVzZXQpXFxuIFxcdFxcdFxcdGZlYXR1cmUtXFx1MDAzZXJlc2V0KHZjcHUpO1xcbiBcXHR9XFxuK1xcbitcXHR2Y3B1LVxcdTAwM2VhcmNoLmNzcl9kaXJ0eSA9IHRydWU7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbit7XFxuK1xcdHN0cnVjdCBrdm1fc2JpX2Z3ZnQgKmZ3ZnQgPSB2Y3B1X3RvX2Z3ZnQodmNwdSk7XFxuK1xcdGNvbnN0IHN0cnVjdCBrdm1fc2JpX2Z3ZnRfZmVhdHVyZSAqZmVhdHVyZTtcXG4rXFx0c3RydWN0IGt2bV9zYmlfZndmdF9jb25maWcgKmNvbmY7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZmVhdHVyZXMpOyBpKyspIHtcXG4rXFx0XFx0ZmVhdHVyZSA9IFxcdTAwMjZmZWF0dXJlc1tpXTtcXG4rXFx0XFx0Y29uZiA9IFxcdTAwMjZmd2Z0LVxcdTAwM2Vjb25maWdzW2ldO1xcbitcXHRcXHRpZiAoIWNvbmYtXFx1MDAzZXN1cHBvcnRlZClcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRpZiAoIWZlYXR1cmUtXFx1MDAzZXN1cHBvcnRlZCB8fCBmZWF0dXJlLVxcdTAwM2VzdXBwb3J0ZWQodmNwdSkpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0Y29uZi1cXHUwMDNlZW5hYmxlZCA9IGZhbHNlO1xcbitcXHRcXHRjb25mLVxcdTAwM2VmbGFncyA9IDA7XFxuK1xcbitcXHRcXHRpZiAoZmVhdHVyZS1cXHUwMDNlcmVzZXQpXFxuK1xcdFxcdFxcdGZlYXR1cmUtXFx1MDAzZXJlc2V0KHZjcHUpO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGt2bV9zYmlfZXh0X2Z3ZnRfZ2V0X3JlZ19jb3VudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuQEAgLTU3NCw2ICs2MDAsNyBAQCBjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfZndmdCA9IHtcXG4gXFx0LmluaXQgPSBrdm1fc2JpX2V4dF9md2Z0X2luaXQsXFxuIFxcdC5kZWluaXQgPSBrdm1fc2JpX2V4dF9md2Z0X2RlaW5pdCxcXG4gXFx0LnJlc2V0ID0ga3ZtX3NiaV9leHRfZndmdF9yZXNldCxcXG4rXFx0LnZhbGlkYXRlID0ga3ZtX3NiaV9leHRfZndmdF92YWxpZGF0ZSxcXG4gXFx0LnN0YXRlX3JlZ19zdWJ0eXBlID0gS1ZNX1JFR19SSVNDVl9TQklfRldGVCxcXG4gXFx0LmdldF9zdGF0ZV9yZWdfY291bnQgPSBrdm1fc2JpX2V4dF9md2Z0X2dldF9yZWdfY291bnQsXFxuIFxcdC5nZXRfc3RhdGVfcmVnX2lkID0ga3ZtX3NiaV9leHRfZndmdF9nZXRfcmVnX2lkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1ODoxNS41NTY0ODAwMjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4ODU4OTAwNDAzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHRcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZVwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIG1vZGlmaWVzIEtWTSBTQkkgZXh0ZW5zaW9uIGhhbmRsaW5nIG9uIFJJU0MtVi4gSXQgYWRkcyBhIG5ldyBgdmFsaWRhdGVgIGNhbGxiYWNrIGZvciBTQkkgZXh0ZW5zaW9ucywgd2hpY2ggaXMgaW52b2tlZCB3aGVuIGEgdkNQVSBpcyBydW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBhbmQgY2FsbHMgdGhlIGByZXNldGAgY2FsbGJhY2sgd2hlbiBhbiBleHRlbnNpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB2aXJ0dWFsaXphdGlvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjBiZWQ5ZGY2OTJmNzdjNWRiZDBkNjVjNTRjMTE0M2NmY2JlYzliYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDA2OjU4OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmhcbmluZGV4IGMxYTdlM2I0MGQ5Y2UuLmYwMWEyODYwYzc1MTEgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oXG5AQCAtNjAsNiArNjAsOSBAQCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB7XG4gXG4gXHR2b2lkICgqcmVzZXQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXG4rXHQvKiBBbGxvdyB0aGUgZXh0ZW5zaW9uIHRvIGNvcnJlY3QgaXRzIHBhcmFtZXRlcnMgYmVmb3JlIHRoZSBmaXJzdCBydW4gKi9cbitcdHZvaWQgKCp2YWxpZGF0ZSkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbitcbiBcdHVuc2lnbmVkIGxvbmcgc3RhdGVfcmVnX3N1YnR5cGU7XG4gXHR1bnNpZ25lZCBsb25nICgqZ2V0X3N0YXRlX3JlZ19jb3VudCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcdGludCAoKmdldF9zdGF0ZV9yZWdfaWQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGluZGV4LCB1NjQgKnJlZ19pZCk7XG5AQCAtOTMsNiArOTYsNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfc2JpX2VjYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bik7XG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX2RlaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4rdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiAjaWZkZWYgQ09ORklHX1JJU0NWX1NCSV9WMDFcbiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X3YwMTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuY1xuaW5kZXggMjM4NDE4ZmVkMmI5YS4uYjY4YWE4MzBhYWY1MSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcbkBAIC02OSw2ICs2OSw4IEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcbiBcdGlmICh2Y3B1LVx1MDAzZWd1ZXN0X2RlYnVnKVxuIFx0XHRjZmctXHUwMDNlaGVkZWxlZyBcdTAwMjY9IH5CSVQoRVhDX0JSRUFLUE9JTlQpO1xuK1xuK1x0a3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHZjcHUpO1xuIH1cbiBcbiB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuY1xuaW5kZXggNDZhYjdiOTg5NDMyYi4uMWM0Zjg3NDM2OGZiZSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNcbkBAIC0yMjEsNiArMjIxLDcgQEAgc3RhdGljIGludCByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4ge1xuIFx0c3RydWN0IGt2bV92Y3B1X3NiaV9jb250ZXh0ICpzY29udGV4dCA9IFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5zYmlfY29udGV4dDtcbiBcdGNvbnN0IHN0cnVjdCBrdm1fcmlzY3Zfc2JpX2V4dGVuc2lvbl9lbnRyeSAqc2V4dDtcbitcdGNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uICpleHQ7XG4gXG4gXHRpZiAocmVnX3ZhbCAhPSAxIFx1MDAyNlx1MDAyNiByZWdfdmFsICE9IDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTIyOSw2ICsyMzAsMTIgQEAgc3RhdGljIGludCByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRpZiAoIXNleHQgfHwgc2NvbnRleHQtXHUwMDNlZXh0X3N0YXR1c1tzZXh0LVx1MDAzZWV4dF9pZHhdID09IEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19VTkFWQUlMQUJMRSlcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4rXHRleHQgPSBzZXh0LVx1MDAzZWV4dF9wdHI7XG4rXG4rXHRpZiAoIXJlZ192YWwgXHUwMDI2XHUwMDI2IHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cdTAwM2VleHRfaWR4XSA9PSBLVk1fUklTQ1ZfU0JJX0VYVF9TVEFUVVNfRU5BQkxFRCBcdTAwMjZcdTAwMjZcbitcdCAgICBleHQtXHUwMDNlcmVzZXQpXG4rXHRcdGV4dC1cdTAwM2VyZXNldCh2Y3B1KTtcbitcbiBcdHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cdTAwM2VleHRfaWR4XSA9IChyZWdfdmFsKSA/XG4gXHRcdFx0S1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgOlxuIFx0XHRcdEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19ESVNBQkxFRDtcbkBAIC03MjMsMyArNzMwLDI2IEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdFx0ZXh0LVx1MDAzZXJlc2V0KHZjcHUpO1xuIFx0fVxuIH1cbitcbit2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0c3RydWN0IGt2bV92Y3B1X3NiaV9jb250ZXh0ICpzY29udGV4dCA9IFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5zYmlfY29udGV4dDtcbitcdGNvbnN0IHN0cnVjdCBrdm1fcmlzY3Zfc2JpX2V4dGVuc2lvbl9lbnRyeSAqZW50cnk7XG4rXHRjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiAqZXh0O1xuK1x0aW50IGlkeCwgaTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoc2JpX2V4dCk7IGkrKykge1xuK1x0XHRlbnRyeSA9IFx1MDAyNnNiaV9leHRbaV07XG4rXHRcdGV4dCA9IGVudHJ5LVx1MDAzZWV4dF9wdHI7XG4rXHRcdGlkeCA9IGVudHJ5LVx1MDAzZWV4dF9pZHg7XG4rXG4rXHRcdGlmIChpZHggXHUwMDNjIDAgfHwgaWR4IFx1MDAzZT0gQVJSQVlfU0laRShzY29udGV4dC1cdTAwM2VleHRfc3RhdHVzKSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0aWYgKHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXNbaWR4XSAhPSBLVk1fUklTQ1ZfU0JJX0VYVF9TVEFUVVNfRU5BQkxFRCB8fFxuK1x0XHQgICAgIWV4dC1cdTAwM2V2YWxpZGF0ZSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0ZXh0LVx1MDAzZXZhbGlkYXRlKHZjcHUpO1xuK1x0fVxuK31cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcbmluZGV4IDEzNDJhZGIzMTgwYzYuLjg3NDhkZjkyMWYxMDEgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xuQEAgLTQyMCw2ICs0MjAsMzIgQEAgc3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdGlmIChmZWF0dXJlLVx1MDAzZXJlc2V0KVxuIFx0XHRcdGZlYXR1cmUtXHUwMDNlcmVzZXQodmNwdSk7XG4gXHR9XG4rXG4rXHR2Y3B1LVx1MDAzZWFyY2guY3NyX2RpcnR5ID0gdHJ1ZTtcbit9XG4rXG4rc3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0c3RydWN0IGt2bV9zYmlfZndmdCAqZndmdCA9IHZjcHVfdG9fZndmdCh2Y3B1KTtcbitcdGNvbnN0IHN0cnVjdCBrdm1fc2JpX2Z3ZnRfZmVhdHVyZSAqZmVhdHVyZTtcbitcdHN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnICpjb25mO1xuK1x0aW50IGk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZlYXR1cmVzKTsgaSsrKSB7XG4rXHRcdGZlYXR1cmUgPSBcdTAwMjZmZWF0dXJlc1tpXTtcbitcdFx0Y29uZiA9IFx1MDAyNmZ3ZnQtXHUwMDNlY29uZmlnc1tpXTtcbitcdFx0aWYgKCFjb25mLVx1MDAzZXN1cHBvcnRlZClcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0aWYgKCFmZWF0dXJlLVx1MDAzZXN1cHBvcnRlZCB8fCBmZWF0dXJlLVx1MDAzZXN1cHBvcnRlZCh2Y3B1KSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0Y29uZi1cdTAwM2VlbmFibGVkID0gZmFsc2U7XG4rXHRcdGNvbmYtXHUwMDNlZmxhZ3MgPSAwO1xuK1xuK1x0XHRpZiAoZmVhdHVyZS1cdTAwM2VyZXNldClcbitcdFx0XHRmZWF0dXJlLVx1MDAzZXJlc2V0KHZjcHUpO1xuK1x0fVxuIH1cbiBcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBrdm1fc2JpX2V4dF9md2Z0X2dldF9yZWdfY291bnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuQEAgLTU3NCw2ICs2MDAsNyBAQCBjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfZndmdCA9IHtcbiBcdC5pbml0ID0ga3ZtX3NiaV9leHRfZndmdF9pbml0LFxuIFx0LmRlaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZGVpbml0LFxuIFx0LnJlc2V0ID0ga3ZtX3NiaV9leHRfZndmdF9yZXNldCxcbitcdC52YWxpZGF0ZSA9IGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGUsXG4gXHQuc3RhdGVfcmVnX3N1YnR5cGUgPSBLVk1fUkVHX1JJU0NWX1NCSV9GV0ZULFxuIFx0LmdldF9zdGF0ZV9yZWdfY291bnQgPSBrdm1fc2JpX2V4dF9md2Z0X2dldF9yZWdfY291bnQsXG4gXHQuZ2V0X3N0YXRlX3JlZ19pZCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZ2V0X3JlZ19pZCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU4OjE1LjU1NjQ4MTQwNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NjcxODcwMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBTQkkgRXh0ZW5zaW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIGl0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIHNvbWUgY3J1Y2lhbCBhc3BlY3RzIG9mIFJJU0MtViBLVk0uIE15IGZpcnN0IHRob3VnaHQgaXM6IHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggZGlnZ2luZyBpbnRvLiBXZSdyZSBsb29raW5nIGF0IG1vZGlmaWNhdGlvbnMgdG8gaG93IFNCSSBleHRlbnNpb25zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgdmlydHVhbCBtYWNoaW5lIGVudmlyb25tZW50LCB3aGljaCBpcyBhIGNvcmUgdmlydHVhbGl6YXRpb24gZmVhdHVyZS5cblxuVGhlIHBhdGNoIGludHJvZHVjZXMgYSBgdmFsaWRhdGVgIGNhbGxiYWNrIHRvIHRoZSBgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb25gIHN0cnVjdHVyZSwgbG9jYXRlZCBpbiBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaGAuIEl0IGFsc28gdXBkYXRlcyBgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGVgIHRvIGNhbGwgYGV4dC1cdTAwM2VyZXNldCh2Y3B1KWAgd2hlbiBkaXNhYmxpbmcgYW4gZXh0ZW5zaW9uLCB3aGljaCBpcyBnb29kIGhvdXNla2VlcGluZy4gTW9yZSBpbXBvcnRhbnRseSwgaXQgYWRkcyBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYCwgd2hpY2ggaXRlcmF0ZXMgdGhyb3VnaCB0aGUgZW5hYmxlZCBleHRlbnNpb25zIGFuZCBjYWxscyB0aGVpciBpbmRpdmlkdWFsIGB2YWxpZGF0ZSh2Y3B1KWAgbWV0aG9kcy4gVGhpcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIGlzIHRoZW4gY2FsbGVkIGZyb20gYGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZWAuIFRoZXJlIGlzIGFsc28gdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgYGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGVgIGZvciB0aGUgYHZjcHVfc2JpX2V4dF9md2Z0YCBleHRlbnNpb24uXG5cbk5vdywgYmVjYXVzZSB0aGlzIHBhdGNoIGFkZHMgbmV3IGxvZ2ljIHNwZWNpZmljYWxseSBmb3IgcmVzZXR0aW5nIGFuZCB2YWxpZGF0aW5nIFNCSSBleHRlbnNpb25zLCBJJ20gdGhpbmtpbmcgdGhpcyBpcyBwcmltZSBmdXp6aW5nIG1hdGVyaWFsLiBJdCdzIGZ1bmN0aW9uYWwsIHRvdWNoZXMgY29yZSBLVk0gZnVuY3Rpb25hbGl0eSwgYW5kIGludHJvZHVjZXMgbmV3IGNvZGUgcGF0aHMgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIE15IHByaW1hcnkgZm9jdXMgd2lsbCBiZSBvbiBpZGVudGlmeWluZyBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gdGFyZ2V0IGR1cmluZyBmdXp6aW5nLlxuXG5TcGVjaWZpY2FsbHksIEkgd2FudCB0byBuYWlsIGRvd24gdGhlc2UgZnVuY3Rpb25zOlxuKiAgIGBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VgXG4qICAgYHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlYFxuKiAgIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgXG4qICAgYGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGVgIChldmVuIHRob3VnaCBpdCdzIHN0YXRpYywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgY2FsbGVyKVxuXG5UaGUgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gV2UgbmVlZCBgQ09ORklHX0tWTWAsIG9idmlvdXNseS4gSSdsbCBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IFJJU0MtViBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBlbmFibGUgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHkuIEknbSBnb2luZyB0byBzZWFyY2ggdGhlIGNvZGViYXNlIGZvciB3aGVyZSBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYCBhbmQgYHZjcHVfc2JpX2V4dF9md2Z0YCBhcmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk4MCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU4OjQxLjIyODM1NDgwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODM3NzEzOTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oPTk4PXZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaDo5OTp2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmgtMTAwLVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuYz0zOT12b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jLTcyLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmM6NzM6XFx0a3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHZjcHUpO1xcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmMtNzQtfVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz03MTE9dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy03MzMtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYzo3MzQ6dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtNzM1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6NTg6NDMuMDY2MDc2ODU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI3MzEyNzg2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBSSVNDLVYgS1ZNIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGZvciBLVk0gb24gUklTQy1WLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBMZXQncyBkaWcgaW50byBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGRlcGVuZGVuY2llcywgdGhlIGJ1aWxkIG9wdGlvbnMsIGFuZCBhbGwgdGhlIHJlbGV2YW50IHNldHRpbmdzIHRoYXQgZ292ZXJuIHRoZSBLVk0gc3Vic3lzdGVtIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiBJdCdsbCBnaXZlIG1lIHRoZSBwcmVjaXNlIHJlcXVpcmVtZW50cyBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNDYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1ODo1NS43OTczNTc4MzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwNzQ5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6NTg6NTUuODQ1NDM5MDM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYwMzQyNTQwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gS2NvbmZpZyBmb3IgUklTQy1WIEtWTSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGUgUklTQy1WIEtWTSBpbXBsZW1lbnRhdGlvbi4gV2hlcmUgZG8gSSBiZWdpbj8gVGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgS1ZNIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYC4gSXQncyB0aGUgY2VudHJhbCBodWIgZm9yIGRlZmluaW5nIGFsbCB0aGUgcmVsZXZhbnQgb3B0aW9ucyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gVGhpcyBmaWxlIHdpbGwgbGF5IG91dCBwcmVjaXNlbHkgd2hpY2ggb3RoZXIgZmVhdHVyZXMgb3IgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIG9yIGltcGFjdGVkIGJ5IGVuYWJsaW5nIEtWTSBzdXBwb3J0IG9uIFJJU0MtVi4gVGhhdCdzIHdoZXJlIEknbGwgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHVuZGVyc3RhbmQgdGhlIHByZXJlcXVpc2l0ZXMsIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgY29uZmxpY3RzLiBUaW1lIHRvIHBhcnNlIGl0IGNhcmVmdWxseSBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYxNywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU5OjAxLjQ0ODg2NjQ0OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEtWTSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdHNvdXJjZSBcXFwidmlydC9rdm0vS2NvbmZpZ1xcXCJcXG4gICA3OlxcdFxcbiAgIDg6XFx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbiAgIDk6XFx0XFx0Ym9vbCBcXFwiVmlydHVhbGl6YXRpb25cXFwiXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuXFxuICAxMjpcXHRcXHQgIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmRcXG4gIDE2OlxcdFxcdCAgZGlzYWJsZWQuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFZJUlRVQUxJWkFUSU9OXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBLVk1cXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIFJJU0NWX1NCSSBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDIzOlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuICAyNDpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcXG4gIDI1OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9NU0lcXG4gIDI2OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cXG4gIDI3OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcXG4gIDI4OlxcdFxcdHNlbGVjdCBLVk1fQ09NTU9OXFxuICAyOTpcXHRcXHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxuICAzMDpcXHRcXHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcXG4gIDMxOlxcdFxcdHNlbGVjdCBLVk1fTU1JT1xcbiAgMzI6XFx0XFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuICAzMzpcXHRcXHRzZWxlY3QgU0NIRURfSU5GT1xcbiAgMzQ6XFx0XFx0c2VsZWN0IEdVRVNUX1BFUkZfRVZFTlRTIGlmIFBFUkZfRVZFTlRTXFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFN1cHBvcnQgaG9zdGluZyB2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcy5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRlbmRpZiAjIFZJUlRVQUxJWkFUSU9OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU5OjAxLjQ0ODkyMjk4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY5ODIwODM1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipLVk0gb24gUklTQy1WOiBQaW5wb2ludGluZyB0aGUgUmVsZXZhbnQgQ29kZSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gaG93IEtWTSBvcGVyYXRlcyBvbiBSSVNDLVYsIGFuZCBpdCdzIGNsZWFyIHJpZ2h0IGF3YXkgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGhpbmdlcyBvbiBhIGZldyBjb3JlIGNvbXBvbmVudHMuIFRoZSB0ZXh0IHBvaW50cyBvdXQgdGhlIGRlcGVuZGVuY2llcyBvbiBgUklTQ1ZfU0JJYCBhbmQgdGhlIGBNTVVgLCB3aGljaCwgZnJvbSBteSBleHBlcmllbmNlLCBhcmUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGZvciBhbnkgdmlydHVhbGlzYXRpb24gZWZmb3J0IG9uIFJJU0MtVi4gTWFrZXMgc2Vuc2UuIFlvdSBjYW4ndCB2aXJ0dWFsaXplIHdpdGhvdXQgYSBzZWN1cmUgYW5kIGVmZmljaWVudCBTQkkgYW5kIHJvYnVzdCBNTVUgbWFuYWdlbWVudC5cblxuTm93LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIHNwZWNpZmljcyBvZiB0aGUgKmNvZGUqIHRoYXQgZG9lcyB0aGUgd29yay4gVGhlIHRleHQgaGlnaGxpZ2h0cyB0aGF0IHRoZSByZWxldmFudCBtb2RpZmllZCBjb2RlIGlzIHNwZWNpZmljYWxseSBsb2NhdGVkIHdpdGhpbiBgYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuY2AgYW5kIGBhcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNgLiBPa2F5LCBgdmNwdV9zYmlgIG1ha2VzIHNlbnNlLCB0aGF0J3Mgd2hlcmUgdGhlIFNCSSBpbnRlcmFjdGlvbiBsb2dpYyBtdXN0IHJlc2lkZS4gVGhlIHByZXNlbmNlIG9mIGBfZndmdGAgYWxzbyBzdWdnZXN0cyBpdCBtYXkgYmUgRldGVC1zcGVjaWZpYyBmZWF0dXJlczsgc28gaXQgaXMgbGlrZWx5IHdvcnRoIGNoZWNraW5nIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb25maWdzIGZvciBGV0ZUIHRvIGJlIHN1cmUgYWJvdXQgaXRzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gYWNjb3VudGluZyBmb3IgZXZlcnl0aGluZy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhvc2UgZmlsZXMuIEknbGwgaGF2ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIG9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gXCJGV0ZUXCIgd2l0aGluIHRob3NlIGZpbGVzLiBUaGF0J3MgbGlrZWx5IHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCB0byBpc29sYXRlIHRoZSBwcmVjaXNlIG1lY2hhbmlzbXMgYXQgcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM2MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6NTk6MTguNDMxMDEwMTE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUwNTQwNjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjcHVfc2JpX2Z3ZnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI0LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX3ZjcHVfc2JpLmhcXHUwMDNlXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjI1OiNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaFxcdTAwM2VcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMjYtI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fdmNwdV90aW1lci5oXFx1MDAzZVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9MzI9a3ZtLXkgKz0gdmNwdV9zYmlfZm9yd2FyZC5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MzM6a3ZtLXkgKz0gdmNwdV9zYmlfZndmdC5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUtMzQta3ZtLXkgKz0gdmNwdV9zYmlfaHNtLm9cXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy0xNC0jaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV92Y3B1X3NiaS5oXFx1MDAzZVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYzoxNTojaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV92Y3B1X3NiaV9md2Z0LmhcXHUwMDNlXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTE2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1OToyMC4xODE1NTc4NDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk0ODE2MTQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBLVk0gQ29tcGlsYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSBhcyBwYXJ0IG9mIHRoZSBLVk0gaW5mcmFzdHJ1Y3R1cmUuIFRoYXQgbWVhbnMsIGF0IGEgYmFzaWMgbGV2ZWwsIHRoZSBrZXJuZWwgKnNob3VsZCogb25seSBuZWVkIGBLVk1gIGVuYWJsZWQgaW4gdGhlIGNvbmZpZy4gSG9sZCBvbi4uLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgVklSVFVBTElaQVRJT05gIGFsc28gbmVlZHMgdG8gYmUgZW5hYmxlZCwgaW4gYWRkaXRpb24gdG8gS1ZNIGl0c2VsZi4gUmlnaHQsIGJlY2F1c2UgS1ZNIGRlcGVuZHMgb24gdGhlIHZpcnR1YWxpemF0aW9uIGNvcmUuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGtleSBzeW1ib2xzIHRvIG1ha2Ugc3VyZSBJJ20gb24gdGhlIHJpZ2h0IHRyYWNrIGhlcmUsIHNvIHRoYXQgbXkgYXNzdW1wdGlvbnMgYXJlIHNvdW5kOiBga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlYCwgYHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlYCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgLiBHb29kLCB0aG9zZSBzZWVtIHJlbGV2YW50LlxuXG5BbmQgZmluYWxseSwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcgcXVpY2tseSBhYm91dCB0aGUgYHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlYCBmdW5jdGlvbi4gSSAqdGhpbmsqIGl0IGlzLCBidXQgSSB3YW50IHRvIG1ha2Ugc3VyZSBpdCdzICpzdGF0aWMqIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgS1ZNIGltcGxlbWVudGF0aW9uLiBUaGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBpdCBpcyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDkwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU5OjI1LjEyOTcyMzk1N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1NDk1NjMyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jPTE5OT1pbnQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3JldHVybihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTIxNy1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jOjIxODpzdGF0aWMgaW50IHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTIxOS1cXHRcXHRcXHRcXHRcXHQgdW5zaWduZWQgbG9uZyByZWdfbnVtLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz0yNjM9c3RhdGljIGludCByaXNjdl92Y3B1X3NldF9zYmlfZXh0X211bHRpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtMjc2LVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM6Mjc3OlxcdFxcdHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlKHZjcHUsIGV4dF9pZCwgZW5hYmxlKTtcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTI3OC1cXHR9XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jPTMzMT1pbnQga3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtMzU0LVxcdGNhc2UgS1ZNX1JFR19SSVNDVl9TQklfU0lOR0xFOlxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM6MzU1OlxcdFxcdHJldHVybiByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZSh2Y3B1LCByZWdfbnVtLCByZWdfdmFsKTtcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTM1Ni1cXHRjYXNlIEtWTV9SRUdfUklTQ1ZfU0JJX01VTFRJX0VOOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1OToyNi42ODQ2ODYyMjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1MzQxMzMwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIFJJU0MtViBTQkkgRXh0ZW5zaW9uIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGVgLiBJdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCB3aGVyZSBhbmQgaG93IGl0J3MgYmVpbmcgY2FsbGVkLiBNeSBhdHRlbnRpb24gaXMgZHJhd24gdG8gYGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dGAsIHRoYXQncyB0aGUgcmVhbCBlbnRyeSBwb2ludCBJIG5lZWQgdG8gZm9jdXMgb24uIEJ1dCBiZWZvcmUgSSBkaXZlIGFueSBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNhbGwgcGF0aCBhbmQgd2hldGhlciB3ZSdyZSBkZWFsaW5nIHdpdGggYSBvbmUtdGltZSBjb25maWd1cmF0aW9uIHdpdGggYGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZWAuIFRoYXQgY2hlY2sgY291bGQgZ2l2ZSBtZSBpbXBvcnRhbnQgY29udGV4dCwgc28gbGV0J3Mgc2VlIGhvdyB0aGF0J3MgYmVpbmcgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk1NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU5OjMwLjIzODEwMzQ2NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTYzNDI5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9jb25maWcuaD0yMT12b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfY29uZmlnLmg6MjI6dm9pZCBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X2NvbmZpZy5oLTIzLXZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz04NTg9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy04NjQtXFx0aWYgKCF2Y3B1LVxcdTAwM2VhcmNoLnJhbl9hdGxlYXN0X29uY2UpXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjg2NTpcXHRcXHRrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2UodmNwdSk7XFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTg2Ni1cXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmM9Mjc9dm9pZCBrdm1fcmlzY3ZfdmNwdV9jb25maWdfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuYy0zOC1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jOjM5OnZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jLTQwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6NTk6MzEuOTY5NzQyMzExWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjM0MjkyMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGggb2YgUklTQy1WIFNCSSBFeHRlbnNpb25zIGluIEtWTSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIFJJU0MtViBLVk0gY29kZSwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IFNCSSBleHRlbnNpb25zIGFyZSBoYW5kbGVkLiBNeSBpbml0aWFsIHRyYWNlIGluZGljYXRlcyB0aGF0IGBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VgIGlzIHRoZSBrZXkgZW50cnkgcG9pbnQgc2luY2UgaXQncyBjYWxsZWQgYnkgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4gVGhhdCBmdW5jdGlvbiBpbiB0dXJuIGNhbGxzIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgLiBCYXNlZCBvbiB0aGUgY2FsbCBncmFwaCwgdGhlc2UgYXJlIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIEkgbmVlZCB0byBsb29rIGludG86IGBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHRgLCBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VgLlxuXG5UaGUgZ29hbCBub3cgaXMgdG8gZXN0YWJsaXNoIGlmIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGFueSBsaW5rYWdlIGlzc3Vlcy4gTGV0J3Mgc2VlIGlmIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgIGlzIGdsb2JhbGx5IGFjY2Vzc2libGUgaW4gS1ZNIOKAkyBpdCBhcHBlYXJzIHRvIGJlLiBJIG5lZWQgdG8gbm93IGFsc28gdmVyaWZ5IHdoZXRoZXIgYGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dGAgaXMgZ2xvYmFsIG9yIG5vdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYzNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1OTozNi40OTMxNzM5MTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzQxMjAwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmg9ODU9aW50IGt2bV9yaXNjdl92Y3B1X3JlZ19pbmRpY2VzX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgX191c2VyICp1aW5kaWNlcyk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaDo4NjppbnQga3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oLTg3LVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKTtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfb25lcmVnLmM9OTkwPWludCBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfb25lcmVnLmMtMTAxMi1cXHRjYXNlIEtWTV9SRUdfUklTQ1ZfU0JJX0VYVDpcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X29uZXJlZy5jOjEwMTM6XFx0XFx0cmV0dXJuIGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dCh2Y3B1LCByZWcpO1xcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfb25lcmVnLmMtMTAxNC1cXHRjYXNlIEtWTV9SRUdfUklTQ1ZfU0JJX1NUQVRFOlxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz0zMDY9aW50IGt2bV9yaXNjdl92Y3B1X3JlZ19pbmRpY2VzX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgX191c2VyICp1aW5kaWNlcylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtMzMwLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM6MzMxOmludCBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtMzMyLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1OTozOC4wNjcyOTk4MTZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk5NzM5Njk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gUklTQy1WIFNCSSBFeHRlbnNpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFib3V0IHRoZSBnbG9iYWwgS1ZNIGxhbmRzY2FwZSwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgUklTQy1WIGFuZCBpdHMgU0JJIGV4dGVuc2lvbnMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBhIGZldyBrZXkgc3ltYm9sczogYGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dGAsIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgLCBhbmQgYGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZWAuIFRoZXNlIGFyZSB0aGUgaG9va3MgdGhhdCB3aWxsIGdpdmUgbWUgbXkgc3RhcnRpbmcgcG9pbnRzLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGRlYWxzIHdpdGggS1ZNJ3MgbWFuYWdlbWVudCBvZiBTQkkgZXh0ZW5zaW9ucyBvbiBSSVNDLVYuIEl0IGludHJvZHVjZXMgYSBgdmFsaWRhdGVgIGNhbGxiYWNrIGRlc2lnbmVkIHRvIHJ1biB0aGUgdmVyeSBmaXJzdCB0aW1lIGEgdkNQVSBpcyBsYXVuY2hlZDsgdGhpcyBnaXZlcyBtZSBhIGdvb2QgcG9pbnQgdG8gc3RhcnQgbG9va2luZyBmb3IgcG9zc2libGUgaXNzdWVzLiBBbHNvLCBhIGByZXNldGAgY2FsbGJhY2sgaXMgYWxzbyBhZGRlZCB0aGF0IHJ1bnMgd2hlbiBhbiBleHRlbnNpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgaW1wb3J0YW50IHRvbywgYmVjYXVzZSBkaXNhYmxpbmcgZmVhdHVyZXMgb2Z0ZW4gZXhwb3NlcyBzdWJ0bGUgcHJvYmxlbXMgdGhhdCBhcmUgaGFyZCB0byBmaW5kLiBJdCdzIGNvcmUgS1ZNIHZpcnR1YWxpemF0aW9uIGxvZ2ljLCBtZWFuaW5nIEkgbmVlZCB0byB0cmVhdCB0aGlzIGFzIGZ1bmN0aW9uYWwgY29kZSB0aGF0J3MgcmlwZSBmb3IgZnV6emluZy5cblxuQmVmb3JlIEkgZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzLCBJJ2xsIHF1aWNrbHkgY2hlY2sgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJIGtub3cgdGhlIGJhc2UgY29uZmlndXJhdGlvbiBpcyBgS1ZNYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGl0IGhhcyBhbGwgdGhlIHN0YW5kYXJkIGRlcGVuZGVuY2llcy4gSSByZWNhbGwgdGhhdCBgS1ZNYCBwdWxscyBpbiBgUklTQ1ZfU0JJYCBhbmQgYE1NVWAsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIGRvbid0IHNlZSBhbnkgb3RoZXIgbm90YWJsZSBjb25maWd1cmF0aW9ucyBqdW1waW5nIG91dCBhdCBtZSwgc28gSSB0aGluayBJIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlLiBOb3csIEkgY2FuIGJ1aWxkIG15IHBsYW4gdG8gYW5hbHl6ZSB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjE2LCJPdXRwdXRUb2tlbnMiOjE1OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1OTo0NC4wNjQ2OTkyNTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDc4MTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0XCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBtb2RpZmllcyBLVk0gU0JJIGV4dGVuc2lvbiBoYW5kbGluZyBvbiBSSVNDLVYuIEl0IGFkZHMgYSBuZXcgYHZhbGlkYXRlYCBjYWxsYmFjayBmb3IgU0JJIGV4dGVuc2lvbnMsIHdoaWNoIGlzIGludm9rZWQgd2hlbiBhIHZDUFUgaXMgcnVuIGZvciB0aGUgZmlyc3QgdGltZSwgYW5kIGNhbGxzIHRoZSBgcmVzZXRgIGNhbGxiYWNrIHdoZW4gYW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUgY29yZSBLVk0gdmlydHVhbGl6YXRpb24gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0XCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBtb2RpZmllcyBLVk0gU0JJIGV4dGVuc2lvbiBoYW5kbGluZyBvbiBSSVNDLVYuIEl0IGFkZHMgYSBuZXcgYHZhbGlkYXRlYCBjYWxsYmFjayBmb3IgU0JJIGV4dGVuc2lvbnMsIHdoaWNoIGlzIGludm9rZWQgd2hlbiBhIHZDUFUgaXMgcnVuIGZvciB0aGUgZmlyc3QgdGltZSwgYW5kIGNhbGxzIHRoZSBgcmVzZXRgIGNhbGxiYWNrIHdoZW4gYW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUgY29yZSBLVk0gdmlydHVhbGl6YXRpb24gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow5gwxs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 06:56:32 +0000 UTC FinishedAt: 2026-07-31 06:59:45 +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": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "f28fa9ec-911b-48be-8c4d-0f8a1957e9e1" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_vcpu_set_reg_sbi_ext", "kvm_riscv_vcpu_sbi_validate", "kvm_riscv_vcpu_config_ran_once" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBtb2RpZmllcyBLVk0gU0JJIGV4dGVuc2lvbiBoYW5kbGluZyBvbiBSSVNDLVYuIEl0IGFkZHMgYSBuZXcgYHZhbGlkYXRlYCBjYWxsYmFjayBmb3IgU0JJIGV4dGVuc2lvbnMsIHdoaWNoIGlzIGludm9rZWQgd2hlbiBhIHZDUFUgaXMgcnVuIGZvciB0aGUgZmlyc3QgdGltZSwgYW5kIGNhbGxzIHRoZSBgcmVzZXRgIGNhbGxiYWNrIHdoZW4gYW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUgY29yZSBLVk0gdmlydHVhbGl6YXRpb24gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMGJlZDlkZjY5MmY3N2M1ZGJkMGQ2NWM1NGMxMTQzY2ZjYmVjOWJhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDY6NTg6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmhcbmluZGV4IGMxYTdlM2I0MGQ5Y2UuLmYwMWEyODYwYzc1MTEgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oXG5AQCAtNjAsNiAmIzQzOzYwLDkgQEAgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24ge1xuIFxuIFx0dm9pZCAoKnJlc2V0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuJiM0MztcdC8qIEFsbG93IHRoZSBleHRlbnNpb24gdG8gY29ycmVjdCBpdHMgcGFyYW1ldGVycyBiZWZvcmUgdGhlIGZpcnN0IHJ1biAqL1xuJiM0MztcdHZvaWQgKCp2YWxpZGF0ZSkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiYjNDM7XG4gXHR1bnNpZ25lZCBsb25nIHN0YXRlX3JlZ19zdWJ0eXBlO1xuIFx0dW5zaWduZWQgbG9uZyAoKmdldF9zdGF0ZV9yZWdfY291bnQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXHRpbnQgKCpnZXRfc3RhdGVfcmVnX2lkKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBpbmRleCwgdTY0ICpyZWdfaWQpO1xuQEAgLTkzLDYgJiM0Mzs5Niw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9zYmlfZWNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKTtcbiB2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfZGVpbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiYjNDM7dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiAjaWZkZWYgQ09ORklHX1JJU0NWX1NCSV9WMDFcbiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X3YwMTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuY1xuaW5kZXggMjM4NDE4ZmVkMmI5YS4uYjY4YWE4MzBhYWY1MSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcbkBAIC02OSw2ICYjNDM7NjksOCBAQCB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXG4gXHRpZiAodmNwdS1cdTAwM2VndWVzdF9kZWJ1ZylcbiBcdFx0Y2ZnLVx1MDAzZWhlZGVsZWcgXHUwMDI2PSB+QklUKEVYQ19CUkVBS1BPSU5UKTtcbiYjNDM7XG4mIzQzO1x0a3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHZjcHUpO1xuIH1cbiBcbiB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuY1xuaW5kZXggNDZhYjdiOTg5NDMyYi4uMWM0Zjg3NDM2OGZiZSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNcbkBAIC0yMjEsNiAmIzQzOzIyMSw3IEBAIHN0YXRpYyBpbnQgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIHtcbiBcdHN0cnVjdCBrdm1fdmNwdV9zYmlfY29udGV4dCAqc2NvbnRleHQgPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guc2JpX2NvbnRleHQ7XG4gXHRjb25zdCBzdHJ1Y3Qga3ZtX3Jpc2N2X3NiaV9leHRlbnNpb25fZW50cnkgKnNleHQ7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gKmV4dDtcbiBcbiBcdGlmIChyZWdfdmFsICE9IDEgXHUwMDI2XHUwMDI2IHJlZ192YWwgIT0gMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5AQCAtMjI5LDYgJiM0MzsyMzAsMTIgQEAgc3RhdGljIGludCByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRpZiAoIXNleHQgfHwgc2NvbnRleHQtXHUwMDNlZXh0X3N0YXR1c1tzZXh0LVx1MDAzZWV4dF9pZHhdID09IEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19VTkFWQUlMQUJMRSlcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4mIzQzO1x0ZXh0ID0gc2V4dC1cdTAwM2VleHRfcHRyO1xuJiM0MztcbiYjNDM7XHRpZiAoIXJlZ192YWwgXHUwMDI2XHUwMDI2IHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cdTAwM2VleHRfaWR4XSA9PSBLVk1fUklTQ1ZfU0JJX0VYVF9TVEFUVVNfRU5BQkxFRCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgZXh0LVx1MDAzZXJlc2V0KVxuJiM0MztcdFx0ZXh0LVx1MDAzZXJlc2V0KHZjcHUpO1xuJiM0MztcbiBcdHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cdTAwM2VleHRfaWR4XSA9IChyZWdfdmFsKSA/XG4gXHRcdFx0S1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgOlxuIFx0XHRcdEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19ESVNBQkxFRDtcbkBAIC03MjMsMyAmIzQzOzczMCwyNiBAQCB2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdGV4dC1cdTAwM2VyZXNldCh2Y3B1KTtcbiBcdH1cbiB9XG4mIzQzO1xuJiM0Mzt2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2NvbnRleHQgKnNjb250ZXh0ID0gXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnNiaV9jb250ZXh0O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBrdm1fcmlzY3Zfc2JpX2V4dGVuc2lvbl9lbnRyeSAqZW50cnk7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gKmV4dDtcbiYjNDM7XHRpbnQgaWR4LCBpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHNiaV9leHQpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0ZW50cnkgPSBcdTAwMjZzYmlfZXh0W2ldO1xuJiM0MztcdFx0ZXh0ID0gZW50cnktXHUwMDNlZXh0X3B0cjtcbiYjNDM7XHRcdGlkeCA9IGVudHJ5LVx1MDAzZWV4dF9pZHg7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGlkeCBcdTAwM2MgMCB8fCBpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXMpKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoc2NvbnRleHQtXHUwMDNlZXh0X3N0YXR1c1tpZHhdICE9IEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19FTkFCTEVEIHx8XG4mIzQzO1x0XHQgICAgIWV4dC1cdTAwM2V2YWxpZGF0ZSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0ZXh0LVx1MDAzZXZhbGlkYXRlKHZjcHUpO1xuJiM0MztcdH1cbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xuaW5kZXggMTM0MmFkYjMxODBjNi4uODc0OGRmOTIxZjEwMSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jXG5AQCAtNDIwLDYgJiM0Mzs0MjAsMzIgQEAgc3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdGlmIChmZWF0dXJlLVx1MDAzZXJlc2V0KVxuIFx0XHRcdGZlYXR1cmUtXHUwMDNlcmVzZXQodmNwdSk7XG4gXHR9XG4mIzQzO1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5jc3JfZGlydHkgPSB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBrdm1fc2JpX2V4dF9md2Z0X3ZhbGlkYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm1fc2JpX2Z3ZnQgKmZ3ZnQgPSB2Y3B1X3RvX2Z3ZnQodmNwdSk7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGt2bV9zYmlfZndmdF9mZWF0dXJlICpmZWF0dXJlO1xuJiM0MztcdHN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnICpjb25mO1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZlYXR1cmVzKTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGZlYXR1cmUgPSBcdTAwMjZmZWF0dXJlc1tpXTtcbiYjNDM7XHRcdGNvbmYgPSBcdTAwMjZmd2Z0LVx1MDAzZWNvbmZpZ3NbaV07XG4mIzQzO1x0XHRpZiAoIWNvbmYtXHUwMDNlc3VwcG9ydGVkKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIWZlYXR1cmUtXHUwMDNlc3VwcG9ydGVkIHx8IGZlYXR1cmUtXHUwMDNlc3VwcG9ydGVkKHZjcHUpKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRjb25mLVx1MDAzZWVuYWJsZWQgPSBmYWxzZTtcbiYjNDM7XHRcdGNvbmYtXHUwMDNlZmxhZ3MgPSAwO1xuJiM0MztcbiYjNDM7XHRcdGlmIChmZWF0dXJlLVx1MDAzZXJlc2V0KVxuJiM0MztcdFx0XHRmZWF0dXJlLVx1MDAzZXJlc2V0KHZjcHUpO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHVuc2lnbmVkIGxvbmcga3ZtX3NiaV9leHRfZndmdF9nZXRfcmVnX2NvdW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbkBAIC01NzQsNiAmIzQzOzYwMCw3IEBAIGNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0ge1xuIFx0LmluaXQgPSBrdm1fc2JpX2V4dF9md2Z0X2luaXQsXG4gXHQuZGVpbml0ID0ga3ZtX3NiaV9leHRfZndmdF9kZWluaXQsXG4gXHQucmVzZXQgPSBrdm1fc2JpX2V4dF9md2Z0X3Jlc2V0LFxuJiM0MztcdC52YWxpZGF0ZSA9IGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGUsXG4gXHQuc3RhdGVfcmVnX3N1YnR5cGUgPSBLVk1fUkVHX1JJU0NWX1NCSV9GV0ZULFxuIFx0LmdldF9zdGF0ZV9yZWdfY291bnQgPSBrdm1fc2JpX2V4dF9md2Z0X2dldF9yZWdfY291bnQsXG4gXHQuZ2V0X3N0YXRlX3JlZ19pZCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZ2V0X3JlZ19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIG1vZGlmaWVzIEtWTSBTQkkgZXh0ZW5zaW9uIGhhbmRsaW5nIG9uIFJJU0MtVi4gSXQgYWRkcyBhIG5ldyBgdmFsaWRhdGVgIGNhbGxiYWNrIGZvciBTQkkgZXh0ZW5zaW9ucywgd2hpY2ggaXMgaW52b2tlZCB3aGVuIGEgdkNQVSBpcyBydW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBhbmQgY2FsbHMgdGhlIGByZXNldGAgY2FsbGJhY2sgd2hlbiBhbiBleHRlbnNpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB2aXJ0dWFsaXphdGlvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYwYmVkOWRmNjkyZjc3YzVkYmQwZDY1YzU0YzExNDNjZmNiZWM5YmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAwNjo1ODoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oCmluZGV4IGMxYTdlM2I0MGQ5Y2UuLmYwMWEyODYwYzc1MTEgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaApAQCAtNjAsNiAmIzQzOzYwLDkgQEAgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gewogCiAJdm9pZCAoKnJlc2V0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCiYjNDM7CS8qIEFsbG93IHRoZSBleHRlbnNpb24gdG8gY29ycmVjdCBpdHMgcGFyYW1ldGVycyBiZWZvcmUgdGhlIGZpcnN0IHJ1biAqLwomIzQzOwl2b2lkICgqdmFsaWRhdGUpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiYjNDM7CiAJdW5zaWduZWQgbG9uZyBzdGF0ZV9yZWdfc3VidHlwZTsKIAl1bnNpZ25lZCBsb25nICgqZ2V0X3N0YXRlX3JlZ19jb3VudCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIAlpbnQgKCpnZXRfc3RhdGVfcmVnX2lkKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBpbmRleCwgdTY0ICpyZWdfaWQpOwpAQCAtOTMsNiAmIzQzOzk2LDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3NiaV9lY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pOwogdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfZGVpbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwomIzQzO3ZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKICNpZmRlZiBDT05GSUdfUklTQ1ZfU0JJX1YwMQogZXh0ZXJuIGNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF92MDE7CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuYwppbmRleCAyMzg0MThmZWQyYjlhLi5iNjhhYTgzMGFhZjUxIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmMKQEAgLTY5LDYgJiM0Mzs2OSw4IEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAogCWlmICh2Y3B1LSZndDtndWVzdF9kZWJ1ZykKIAkJY2ZnLSZndDtoZWRlbGVnICZhbXA7PSB+QklUKEVYQ19CUkVBS1BPSU5UKTsKJiM0MzsKJiM0MzsJa3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHZjcHUpOwogfQogCiB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jCmluZGV4IDQ2YWI3Yjk4OTQzMmIuLjFjNGY4NzQzNjhmYmUgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYwpAQCAtMjIxLDYgJiM0MzsyMjEsNyBAQCBzdGF0aWMgaW50IHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIHsKIAlzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2NvbnRleHQgKnNjb250ZXh0ID0gJmFtcDt2Y3B1LSZndDthcmNoLnNiaV9jb250ZXh0OwogCWNvbnN0IHN0cnVjdCBrdm1fcmlzY3Zfc2JpX2V4dGVuc2lvbl9lbnRyeSAqc2V4dDsKJiM0MzsJY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gKmV4dDsKIAogCWlmIChyZWdfdmFsICE9IDEgJmFtcDsmYW1wOyByZWdfdmFsICE9IDApCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMjI5LDYgJiM0MzsyMzAsMTIgQEAgc3RhdGljIGludCByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJaWYgKCFzZXh0IHx8IHNjb250ZXh0LSZndDtleHRfc3RhdHVzW3NleHQtJmd0O2V4dF9pZHhdID09IEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19VTkFWQUlMQUJMRSkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKJiM0MzsJZXh0ID0gc2V4dC0mZ3Q7ZXh0X3B0cjsKJiM0MzsKJiM0MzsJaWYgKCFyZWdfdmFsICZhbXA7JmFtcDsgc2NvbnRleHQtJmd0O2V4dF9zdGF0dXNbc2V4dC0mZ3Q7ZXh0X2lkeF0gPT0gS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgJmFtcDsmYW1wOwomIzQzOwkgICAgZXh0LSZndDtyZXNldCkKJiM0MzsJCWV4dC0mZ3Q7cmVzZXQodmNwdSk7CiYjNDM7CiAJc2NvbnRleHQtJmd0O2V4dF9zdGF0dXNbc2V4dC0mZ3Q7ZXh0X2lkeF0gPSAocmVnX3ZhbCkgPwogCQkJS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgOgogCQkJS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0RJU0FCTEVEOwpAQCAtNzIzLDMgJiM0Mzs3MzAsMjYgQEAgdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQlleHQtJmd0O3Jlc2V0KHZjcHUpOwogCX0KIH0KJiM0MzsKJiM0Mzt2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2NvbnRleHQgKnNjb250ZXh0ID0gJmFtcDt2Y3B1LSZndDthcmNoLnNiaV9jb250ZXh0OwomIzQzOwljb25zdCBzdHJ1Y3Qga3ZtX3Jpc2N2X3NiaV9leHRlbnNpb25fZW50cnkgKmVudHJ5OwomIzQzOwljb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiAqZXh0OwomIzQzOwlpbnQgaWR4LCBpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShzYmlfZXh0KTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWVudHJ5ID0gJmFtcDtzYmlfZXh0W2ldOwomIzQzOwkJZXh0ID0gZW50cnktJmd0O2V4dF9wdHI7CiYjNDM7CQlpZHggPSBlbnRyeS0mZ3Q7ZXh0X2lkeDsKJiM0MzsKJiM0MzsJCWlmIChpZHggJmx0OyAwIHx8IGlkeCAmZ3Q7PSBBUlJBWV9TSVpFKHNjb250ZXh0LSZndDtleHRfc3RhdHVzKSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCWlmIChzY29udGV4dC0mZ3Q7ZXh0X3N0YXR1c1tpZHhdICE9IEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19FTkFCTEVEIHx8CiYjNDM7CQkgICAgIWV4dC0mZ3Q7dmFsaWRhdGUpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlleHQtJmd0O3ZhbGlkYXRlKHZjcHUpOwomIzQzOwl9CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jCmluZGV4IDEzNDJhZGIzMTgwYzYuLjg3NDhkZjkyMWYxMDEgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMKQEAgLTQyMCw2ICYjNDM7NDIwLDMyIEBAIHN0YXRpYyB2b2lkIGt2bV9zYmlfZXh0X2Z3ZnRfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQlpZiAoZmVhdHVyZS0mZ3Q7cmVzZXQpCiAJCQlmZWF0dXJlLSZndDtyZXNldCh2Y3B1KTsKIAl9CiYjNDM7CiYjNDM7CXZjcHUtJmd0O2FyY2guY3NyX2RpcnR5ID0gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3NiaV9md2Z0ICpmd2Z0ID0gdmNwdV90b19md2Z0KHZjcHUpOwomIzQzOwljb25zdCBzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2ZlYXR1cmUgKmZlYXR1cmU7CiYjNDM7CXN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnICpjb25mOwomIzQzOwlpbnQgaTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoZmVhdHVyZXMpOyBpJiM0MzsmIzQzOykgewomIzQzOwkJZmVhdHVyZSA9ICZhbXA7ZmVhdHVyZXNbaV07CiYjNDM7CQljb25mID0gJmFtcDtmd2Z0LSZndDtjb25maWdzW2ldOwomIzQzOwkJaWYgKCFjb25mLSZndDtzdXBwb3J0ZWQpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlpZiAoIWZlYXR1cmUtJmd0O3N1cHBvcnRlZCB8fCBmZWF0dXJlLSZndDtzdXBwb3J0ZWQodmNwdSkpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQljb25mLSZndDtlbmFibGVkID0gZmFsc2U7CiYjNDM7CQljb25mLSZndDtmbGFncyA9IDA7CiYjNDM7CiYjNDM7CQlpZiAoZmVhdHVyZS0mZ3Q7cmVzZXQpCiYjNDM7CQkJZmVhdHVyZS0mZ3Q7cmVzZXQodmNwdSk7CiYjNDM7CX0KIH0KIAogc3RhdGljIHVuc2lnbmVkIGxvbmcga3ZtX3NiaV9leHRfZndmdF9nZXRfcmVnX2NvdW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKQEAgLTU3NCw2ICYjNDM7NjAwLDcgQEAgY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X2Z3ZnQgPSB7CiAJLmluaXQgPSBrdm1fc2JpX2V4dF9md2Z0X2luaXQsCiAJLmRlaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZGVpbml0LAogCS5yZXNldCA9IGt2bV9zYmlfZXh0X2Z3ZnRfcmVzZXQsCiYjNDM7CS52YWxpZGF0ZSA9IGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGUsCiAJLnN0YXRlX3JlZ19zdWJ0eXBlID0gS1ZNX1JFR19SSVNDVl9TQklfRldGVCwKIAkuZ2V0X3N0YXRlX3JlZ19jb3VudCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZ2V0X3JlZ19jb3VudCwKIAkuZ2V0X3N0YXRlX3JlZ19pZCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZ2V0X3JlZ19pZCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4MAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJJU0MtViBLVk0gU0JJIEV4dGVuc2lvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIGl0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIHNvbWUgY3J1Y2lhbCBhc3BlY3RzIG9mIFJJU0MtViBLVk0uIE15IGZpcnN0IHRob3VnaHQgaXM6IHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggZGlnZ2luZyBpbnRvLiBXZSYjMzk7cmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIHRvIGhvdyBTQkkgZXh0ZW5zaW9ucyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIHZpcnR1YWwgbWFjaGluZSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgYSBjb3JlIHZpcnR1YWxpemF0aW9uIGZlYXR1cmUuCgpUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGB2YWxpZGF0ZWAgY2FsbGJhY2sgdG8gdGhlIGBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbmAgc3RydWN0dXJlLCBsb2NhdGVkIGluIGBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oYC4gSXQgYWxzbyB1cGRhdGVzIGByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZWAgdG8gY2FsbCBgZXh0LSZndDtyZXNldCh2Y3B1KWAgd2hlbiBkaXNhYmxpbmcgYW4gZXh0ZW5zaW9uLCB3aGljaCBpcyBnb29kIGhvdXNla2VlcGluZy4gTW9yZSBpbXBvcnRhbnRseSwgaXQgYWRkcyBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYCwgd2hpY2ggaXRlcmF0ZXMgdGhyb3VnaCB0aGUgZW5hYmxlZCBleHRlbnNpb25zIGFuZCBjYWxscyB0aGVpciBpbmRpdmlkdWFsIGB2YWxpZGF0ZSh2Y3B1KWAgbWV0aG9kcy4gVGhpcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIGlzIHRoZW4gY2FsbGVkIGZyb20gYGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZWAuIFRoZXJlIGlzIGFsc28gdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgYGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGVgIGZvciB0aGUgYHZjcHVfc2JpX2V4dF9md2Z0YCBleHRlbnNpb24uCgpOb3csIGJlY2F1c2UgdGhpcyBwYXRjaCBhZGRzIG5ldyBsb2dpYyBzcGVjaWZpY2FsbHkgZm9yIHJlc2V0dGluZyBhbmQgdmFsaWRhdGluZyBTQkkgZXh0ZW5zaW9ucywgSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIHByaW1lIGZ1enppbmcgbWF0ZXJpYWwuIEl0JiMzOTtzIGZ1bmN0aW9uYWwsIHRvdWNoZXMgY29yZSBLVk0gZnVuY3Rpb25hbGl0eSwgYW5kIGludHJvZHVjZXMgbmV3IGNvZGUgcGF0aHMgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIE15IHByaW1hcnkgZm9jdXMgd2lsbCBiZSBvbiBpZGVudGlmeWluZyBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gdGFyZ2V0IGR1cmluZyBmdXp6aW5nLgoKU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gbmFpbCBkb3duIHRoZXNlIGZ1bmN0aW9uczoKKiAgIGBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VgCiogICBgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGVgCiogICBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYAoqICAgYGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGVgIChldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGNhbGxlcikKClRoZSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSBuZWVkIGBDT05GSUdfS1ZNYCwgb2J2aW91c2x5LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IFJJU0MtViBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBlbmFibGUgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIHRoZSBjb2RlYmFzZSBmb3Igd2hlcmUgYGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZWAgYW5kIGB2Y3B1X3NiaV9leHRfZndmdGAgYXJlIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmg9OTg9dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmg6OTk6dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmgtMTAwLVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmM9Mzk9dm9pZCBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmMtNzItXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jOjczOlx0a3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHZjcHUpO1xuYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuYy03NC19XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz03MTE9dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtNzMzLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYzo3MzQ6dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy03MzUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNDYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKktjb25maWcgRGl2ZSBmb3IgUklTQy1WIEtWTSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgZm9yIEtWTSBvbiBSSVNDLVYuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIExldCYjMzk7cyBkaWcgaW50byBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgYnVpbGQgb3B0aW9ucywgYW5kIGFsbCB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgdGhhdCBnb3Zlcm4gdGhlIEtWTSBzdWJzeXN0ZW0gb24gdGhpcyBhcmNoaXRlY3R1cmUuIEl0JiMzOTtsbCBnaXZlIG1lIHRoZSBwcmVjaXNlIHJlcXVpcmVtZW50cyBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBLY29uZmlnIGZvciBSSVNDLVYgS1ZNIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIFdoZXJlIGRvIEkgYmVnaW4/IFRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtWTSBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AuIEl0JiMzOTtzIHRoZSBjZW50cmFsIGh1YiBmb3IgZGVmaW5pbmcgYWxsIHRoZSByZWxldmFudCBvcHRpb25zIGFuZCB0aGVpciByZWxhdGlvbnNoaXBzLiBUaGlzIGZpbGUgd2lsbCBsYXkgb3V0IHByZWNpc2VseSB3aGljaCBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgb3IgaW1wYWN0ZWQgYnkgZW5hYmxpbmcgS1ZNIHN1cHBvcnQgb24gUklTQy1WLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLCB1bmRlcnN0YW5kIHRoZSBwcmVyZXF1aXNpdGVzLCBhbmQgaWRlbnRpZnkgcG90ZW50aWFsIGNvbmZsaWN0cy4gVGltZSB0byBwYXJzZSBpdCBjYXJlZnVsbHkgYW5kIHNlZSB3aGF0IGl0IHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA3Olx0XG4gICA4Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgOTpcdFx0Ym9vbCBcJiMzNDtWaXJ0dWFsaXphdGlvblwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxuICAxMjpcdFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZFxuICAxNjpcdFx0ICBkaXNhYmxlZC5cbiAgMTc6XHRcbiAgMTg6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBLVk1cbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBSSVNDVl9TQkkgXHUwMDI2XHUwMDI2IE1NVVxuICAyMzpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjQ6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyNTpcdFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxuICAyNzpcdFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxuICAyODpcdFx0c2VsZWN0IEtWTV9DT01NT05cbiAgMjk6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbiAgMzA6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xuICAzMTpcdFx0c2VsZWN0IEtWTV9NTUlPXG4gIDMyOlx0XHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiAgMzM6XHRcdHNlbGVjdCBTQ0hFRF9JTkZPXG4gIDM0Olx0XHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAzOTpcdFxuICA0MDpcdGVuZGlmICMgVklSVFVBTElaQVRJT05cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzYxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKktWTSBvbiBSSVNDLVY6IFBpbnBvaW50aW5nIHRoZSBSZWxldmFudCBDb2RlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyBLVk0gb3BlcmF0ZXMgb24gUklTQy1WLCBhbmQgaXQmIzM5O3MgY2xlYXIgcmlnaHQgYXdheSB0aGF0IHRoaXMgaW1wbGVtZW50YXRpb24gaGluZ2VzIG9uIGEgZmV3IGNvcmUgY29tcG9uZW50cy4gVGhlIHRleHQgcG9pbnRzIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9uIGBSSVNDVl9TQklgIGFuZCB0aGUgYE1NVWAsIHdoaWNoLCBmcm9tIG15IGV4cGVyaWVuY2UsIGFyZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgZm9yIGFueSB2aXJ0dWFsaXNhdGlvbiBlZmZvcnQgb24gUklTQy1WLiBNYWtlcyBzZW5zZS4gWW91IGNhbiYjMzk7dCB2aXJ0dWFsaXplIHdpdGhvdXQgYSBzZWN1cmUgYW5kIGVmZmljaWVudCBTQkkgYW5kIHJvYnVzdCBNTVUgbWFuYWdlbWVudC4KCk5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlICpjb2RlKiB0aGF0IGRvZXMgdGhlIHdvcmsuIFRoZSB0ZXh0IGhpZ2hsaWdodHMgdGhhdCB0aGUgcmVsZXZhbnQgbW9kaWZpZWQgY29kZSBpcyBzcGVjaWZpY2FsbHkgbG9jYXRlZCB3aXRoaW4gYGFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNgIGFuZCBgYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jYC4gT2theSwgYHZjcHVfc2JpYCBtYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgU0JJIGludGVyYWN0aW9uIGxvZ2ljIG11c3QgcmVzaWRlLiBUaGUgcHJlc2VuY2Ugb2YgYF9md2Z0YCBhbHNvIHN1Z2dlc3RzIGl0IG1heSBiZSBGV0ZULXNwZWNpZmljIGZlYXR1cmVzOyBzbyBpdCBpcyBsaWtlbHkgd29ydGggY2hlY2tpbmcgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbmZpZ3MgZm9yIEZXRlQgdG8gYmUgc3VyZSBhYm91dCBpdHMgZnVuY3Rpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBhY2NvdW50aW5nIGZvciBldmVyeXRoaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhvc2UgZmlsZXMuIEkmIzM5O2xsIGhhdmUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBvciBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvICYjMzQ7RldGVCYjMzQ7IHdpdGhpbiB0aG9zZSBmaWxlcy4gVGhhdCYjMzk7cyBsaWtlbHkgdGhlIG5leHQgbG9naWNhbCBzdGVwIHRvIGlzb2xhdGUgdGhlIHByZWNpc2UgbWVjaGFuaXNtcyBhdCBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Y3B1X3NiaV9md2Z0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0yNC0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX3ZjcHVfc2JpLmhcdTAwM2VcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoyNTojaW5jbHVkZSBcdTAwM2Nhc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaFx1MDAzZVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI2LSNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fdmNwdV90aW1lci5oXHUwMDNlXG4tLVxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9MzI9a3ZtLXkgJiM0Mzs9IHZjcHVfc2JpX2ZvcndhcmQub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MzM6a3ZtLXkgJiM0Mzs9IHZjcHVfc2JpX2Z3ZnQub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUtMzQta3ZtLXkgJiM0Mzs9IHZjcHVfc2JpX2hzbS5vXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTE0LSNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fdmNwdV9zYmkuaFx1MDAzZVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jOjE1OiNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fdmNwdV9zYmlfZndmdC5oXHUwMDNlXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMtMTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwOTAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS1ZNIENvbXBpbGF0aW9uIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIHRoaXMgaXMgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5IGFzIHBhcnQgb2YgdGhlIEtWTSBpbmZyYXN0cnVjdHVyZS4gVGhhdCBtZWFucywgYXQgYSBiYXNpYyBsZXZlbCwgdGhlIGtlcm5lbCAqc2hvdWxkKiBvbmx5IG5lZWQgYEtWTWAgZW5hYmxlZCBpbiB0aGUgY29uZmlnLiBIb2xkIG9uLi4uIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGBWSVJUVUFMSVpBVElPTmAgYWxzbyBuZWVkcyB0byBiZSBlbmFibGVkLCBpbiBhZGRpdGlvbiB0byBLVk0gaXRzZWxmLiBSaWdodCwgYmVjYXVzZSBLVk0gZGVwZW5kcyBvbiB0aGUgdmlydHVhbGl6YXRpb24gY29yZS4KCkxldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGtleSBzeW1ib2xzIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG9uIHRoZSByaWdodCB0cmFjayBoZXJlLCBzbyB0aGF0IG15IGFzc3VtcHRpb25zIGFyZSBzb3VuZDogYGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZWAsIGByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZWAsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYC4gR29vZCwgdGhvc2Ugc2VlbSByZWxldmFudC4KCkFuZCBmaW5hbGx5LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZyBxdWlja2x5IGFib3V0IHRoZSBgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGVgIGZ1bmN0aW9uLiBJICp0aGluayogaXQgaXMsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIGl0JiMzOTtzICpzdGF0aWMqIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgS1ZNIGltcGxlbWVudGF0aW9uLiBUaGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBpdCBpcyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jPTE5OT1pbnQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3JldHVybihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy0yMTctXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jOjIxODpzdGF0aWMgaW50IHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtMjE5LVx0XHRcdFx0XHQgdW5zaWduZWQgbG9uZyByZWdfbnVtLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM9MjYzPXN0YXRpYyBpbnQgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9tdWx0aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy0yNzYtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jOjI3NzpcdFx0cmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGUodmNwdSwgZXh0X2lkLCBlbmFibGUpO1xuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy0yNzgtXHR9XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz0zMzE9aW50IGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy0zNTQtXHRjYXNlIEtWTV9SRUdfUklTQ1ZfU0JJX1NJTkdMRTpcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM6MzU1Olx0XHRyZXR1cm4gcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGUodmNwdSwgcmVnX251bSwgcmVnX3ZhbCk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTM1Ni1cdGNhc2UgS1ZNX1JFR19SSVNDVl9TQklfTVVMVElfRU46XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NTYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgUklTQy1WIFNCSSBFeHRlbnNpb24gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlYC4gSXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHdoZXJlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgY2FsbGVkLiBNeSBhdHRlbnRpb24gaXMgZHJhd24gdG8gYGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dGAsIHRoYXQmIzM5O3MgdGhlIHJlYWwgZW50cnkgcG9pbnQgSSBuZWVkIHRvIGZvY3VzIG9uLiBCdXQgYmVmb3JlIEkgZGl2ZSBhbnkgZnVydGhlciwgSSBzaG91bGQgdmVyaWZ5IHRoZSBjYWxsIHBhdGggYW5kIHdoZXRoZXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIG9uZS10aW1lIGNvbmZpZ3VyYXRpb24gd2l0aCBga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlYC4gVGhhdCBjaGVjayBjb3VsZCBnaXZlIG1lIGltcG9ydGFudCBjb250ZXh0LCBzbyBsZXQmIzM5O3Mgc2VlIGhvdyB0aGF0JiMzOTtzIGJlaW5nIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X2NvbmZpZy5oPTIxPXZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X2NvbmZpZy5oOjIyOnZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X2NvbmZpZy5oLTIzLXZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9ODU4PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTg2NC1cdGlmICghdmNwdS1cdTAwM2VhcmNoLnJhbl9hdGxlYXN0X29uY2UpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6ODY1Olx0XHRrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2UodmNwdSk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtODY2LVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmM9Mjc9dm9pZCBrdm1fcmlzY3ZfdmNwdV9jb25maWdfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmMtMzgtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jOjM5OnZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmMtNDAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjM2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEV4ZWN1dGlvbiBQYXRoIG9mIFJJU0MtViBTQkkgRXh0ZW5zaW9ucyBpbiBLVk0qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIFJJU0MtViBLVk0gY29kZSwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IFNCSSBleHRlbnNpb25zIGFyZSBoYW5kbGVkLiBNeSBpbml0aWFsIHRyYWNlIGluZGljYXRlcyB0aGF0IGBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VgIGlzIHRoZSBrZXkgZW50cnkgcG9pbnQgc2luY2UgaXQmIzM5O3MgY2FsbGVkIGJ5IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIFRoYXQgZnVuY3Rpb24gaW4gdHVybiBjYWxscyBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYC4gQmFzZWQgb24gdGhlIGNhbGwgZ3JhcGgsIHRoZXNlIGFyZSB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBJIG5lZWQgdG8gbG9vayBpbnRvOiBga3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0YCwgYGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZWAsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlYC4KClRoZSBnb2FsIG5vdyBpcyB0byBlc3RhYmxpc2ggaWYgdGhlc2UgZnVuY3Rpb25zIGhhdmUgYW55IGxpbmthZ2UgaXNzdWVzLiBMZXQmIzM5O3Mgc2VlIGlmIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgIGlzIGdsb2JhbGx5IGFjY2Vzc2libGUgaW4gS1ZNIOKAkyBpdCBhcHBlYXJzIHRvIGJlLiBJIG5lZWQgdG8gbm93IGFsc28gdmVyaWZ5IHdoZXRoZXIgYGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dGAgaXMgZ2xvYmFsIG9yIG5vdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmg9ODU9aW50IGt2bV9yaXNjdl92Y3B1X3JlZ19pbmRpY2VzX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgX191c2VyICp1aW5kaWNlcyk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oOjg2OmludCBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaC04Ny1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X29uZXJlZy5jPTk5MD1pbnQga3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9vbmVyZWcuYy0xMDEyLVx0Y2FzZSBLVk1fUkVHX1JJU0NWX1NCSV9FWFQ6XG5hcmNoL3Jpc2N2L2t2bS92Y3B1X29uZXJlZy5jOjEwMTM6XHRcdHJldHVybiBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHQodmNwdSwgcmVnKTtcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfb25lcmVnLmMtMTAxNC1cdGNhc2UgS1ZNX1JFR19SSVNDVl9TQklfU1RBVEU6XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz0zMDY9aW50IGt2bV9yaXNjdl92Y3B1X3JlZ19pbmRpY2VzX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgX191c2VyICp1aW5kaWNlcylcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTMzMC1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM6MzMxOmludCBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy0zMzItXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTYxNgoJCQkJCQkJb3V0cHV0OiAxNTgKCQkJCQkJCXRob3VnaHRzOiAyMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1ZNIFJJU0MtViBTQkkgRXh0ZW5zaW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgdGhlIGdsb2JhbCBLVk0gbGFuZHNjYXBlLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBSSVNDLVYgYW5kIGl0cyBTQkkgZXh0ZW5zaW9ucy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGEgZmV3IGtleSBzeW1ib2xzOiBga3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0YCwgYGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZWAsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlYC4gVGhlc2UgYXJlIHRoZSBob29rcyB0aGF0IHdpbGwgZ2l2ZSBtZSBteSBzdGFydGluZyBwb2ludHMuCgpUaGUgcGF0Y2ggaXRzZWxmIGRlYWxzIHdpdGggS1ZNJiMzOTtzIG1hbmFnZW1lbnQgb2YgU0JJIGV4dGVuc2lvbnMgb24gUklTQy1WLiBJdCBpbnRyb2R1Y2VzIGEgYHZhbGlkYXRlYCBjYWxsYmFjayBkZXNpZ25lZCB0byBydW4gdGhlIHZlcnkgZmlyc3QgdGltZSBhIHZDUFUgaXMgbGF1bmNoZWQ7IHRoaXMgZ2l2ZXMgbWUgYSBnb29kIHBvaW50IHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHBvc3NpYmxlIGlzc3Vlcy4gQWxzbywgYSBgcmVzZXRgIGNhbGxiYWNrIGlzIGFsc28gYWRkZWQgdGhhdCBydW5zIHdoZW4gYW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkLiBUaGlzIGlzIGltcG9ydGFudCB0b28sIGJlY2F1c2UgZGlzYWJsaW5nIGZlYXR1cmVzIG9mdGVuIGV4cG9zZXMgc3VidGxlIHByb2JsZW1zIHRoYXQgYXJlIGhhcmQgdG8gZmluZC4gSXQmIzM5O3MgY29yZSBLVk0gdmlydHVhbGl6YXRpb24gbG9naWMsIG1lYW5pbmcgSSBuZWVkIHRvIHRyZWF0IHRoaXMgYXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQmIzM5O3MgcmlwZSBmb3IgZnV6emluZy4KCkJlZm9yZSBJIGRlbHZlIGludG8gdGhlIHNwZWNpZmljcywgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkga25vdyB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGlzIGBLVk1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgaXQgaGFzIGFsbCB0aGUgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLiBJIHJlY2FsbCB0aGF0IGBLVk1gIHB1bGxzIGluIGBSSVNDVl9TQklgIGFuZCBgTU1VYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb3RoZXIgbm90YWJsZSBjb25maWd1cmF0aW9ucyBqdW1waW5nIG91dCBhdCBtZSwgc28gSSB0aGluayBJIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlLiBOb3csIEkgY2FuIGJ1aWxkIG15IHBsYW4gdG8gYW5hbHl6ZSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIG1vZGlmaWVzIEtWTSBTQkkgZXh0ZW5zaW9uIGhhbmRsaW5nIG9uIFJJU0MtVi4gSXQgYWRkcyBhIG5ldyBgdmFsaWRhdGVgIGNhbGxiYWNrIGZvciBTQkkgZXh0ZW5zaW9ucywgd2hpY2ggaXMgaW52b2tlZCB3aGVuIGEgdkNQVSBpcyBydW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBhbmQgY2FsbHMgdGhlIGByZXNldGAgY2FsbGJhY2sgd2hlbiBhbiBleHRlbnNpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB2aXJ0dWFsaXphdGlvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIG1vZGlmaWVzIEtWTSBTQkkgZXh0ZW5zaW9uIGhhbmRsaW5nIG9uIFJJU0MtVi4gSXQgYWRkcyBhIG5ldyBgdmFsaWRhdGVgIGNhbGxiYWNrIGZvciBTQkkgZXh0ZW5zaW9ucywgd2hpY2ggaXMgaW52b2tlZCB3aGVuIGEgdkNQVSBpcyBydW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBhbmQgY2FsbHMgdGhlIGByZXNldGAgY2FsbGJhY2sgd2hlbiBhbiBleHRlbnNpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB2aXJ0dWFsaXphdGlvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU4OjE1LjI1NDEwNzA3N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4ODkxMzg2MDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dFwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNCSSBleHRlbnNpb24gaGFuZGxpbmcgb24gUklTQy1WLiBJdCBhZGRzIGEgbmV3IGB2YWxpZGF0ZWAgY2FsbGJhY2sgZm9yIFNCSSBleHRlbnNpb25zLCB3aGljaCBpcyBpbnZva2VkIHdoZW4gYSB2Q1BVIGlzIHJ1biBmb3IgdGhlIGZpcnN0IHRpbWUsIGFuZCBjYWxscyB0aGUgYHJlc2V0YCBjYWxsYmFjayB3aGVuIGFuIGV4dGVuc2lvbiBpcyBkaXNhYmxlZC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgaW4gdGhlIGNvcmUgS1ZNIHZpcnR1YWxpemF0aW9uIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1ODoxNS4yNTQxMTI1NzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTc3ODEyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYwYmVkOWRmNjkyZjc3YzVkYmQwZDY1YzU0YzExNDNjZmNiZWM5YmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDY6NTg6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmhcXG5pbmRleCBjMWE3ZTNiNDBkOWNlLi5mMDFhMjg2MGM3NTExIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmhcXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oXFxuQEAgLTYwLDYgKzYwLDkgQEAgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24ge1xcbiBcXG4gXFx0dm9pZCAoKnJlc2V0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiBcXG4rXFx0LyogQWxsb3cgdGhlIGV4dGVuc2lvbiB0byBjb3JyZWN0IGl0cyBwYXJhbWV0ZXJzIGJlZm9yZSB0aGUgZmlyc3QgcnVuICovXFxuK1xcdHZvaWQgKCp2YWxpZGF0ZSkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4rXFxuIFxcdHVuc2lnbmVkIGxvbmcgc3RhdGVfcmVnX3N1YnR5cGU7XFxuIFxcdHVuc2lnbmVkIGxvbmcgKCpnZXRfc3RhdGVfcmVnX2NvdW50KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiBcXHRpbnQgKCpnZXRfc3RhdGVfcmVnX2lkKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBpbmRleCwgdTY0ICpyZWdfaWQpO1xcbkBAIC05Myw2ICs5Niw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9zYmlfZWNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKTtcXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiB2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV9kZWluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4rdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gXFxuICNpZmRlZiBDT05GSUdfUklTQ1ZfU0JJX1YwMVxcbiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X3YwMTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcXG5pbmRleCAyMzg0MThmZWQyYjlhLi5iNjhhYTgzMGFhZjUxIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jXFxuQEAgLTY5LDYgKzY5LDggQEAgdm9pZCBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXG4gXFx0aWYgKHZjcHUtXFx1MDAzZWd1ZXN0X2RlYnVnKVxcbiBcXHRcXHRjZmctXFx1MDAzZWhlZGVsZWcgXFx1MDAyNj0gfkJJVChFWENfQlJFQUtQT0lOVCk7XFxuK1xcbitcXHRrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUodmNwdSk7XFxuIH1cXG4gXFxuIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuY1xcbmluZGV4IDQ2YWI3Yjk4OTQzMmIuLjFjNGY4NzQzNjhmYmUgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNcXG5AQCAtMjIxLDYgKzIyMSw3IEBAIHN0YXRpYyBpbnQgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbiB7XFxuIFxcdHN0cnVjdCBrdm1fdmNwdV9zYmlfY29udGV4dCAqc2NvbnRleHQgPSBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5zYmlfY29udGV4dDtcXG4gXFx0Y29uc3Qgc3RydWN0IGt2bV9yaXNjdl9zYmlfZXh0ZW5zaW9uX2VudHJ5ICpzZXh0O1xcbitcXHRjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiAqZXh0O1xcbiBcXG4gXFx0aWYgKHJlZ192YWwgIT0gMSBcXHUwMDI2XFx1MDAyNiByZWdfdmFsICE9IDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC0yMjksNiArMjMwLDEyIEBAIHN0YXRpYyBpbnQgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbiBcXHRpZiAoIXNleHQgfHwgc2NvbnRleHQtXFx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cXHUwMDNlZXh0X2lkeF0gPT0gS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX1VOQVZBSUxBQkxFKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFxuK1xcdGV4dCA9IHNleHQtXFx1MDAzZWV4dF9wdHI7XFxuK1xcbitcXHRpZiAoIXJlZ192YWwgXFx1MDAyNlxcdTAwMjYgc2NvbnRleHQtXFx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cXHUwMDNlZXh0X2lkeF0gPT0gS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGV4dC1cXHUwMDNlcmVzZXQpXFxuK1xcdFxcdGV4dC1cXHUwMDNlcmVzZXQodmNwdSk7XFxuK1xcbiBcXHRzY29udGV4dC1cXHUwMDNlZXh0X3N0YXR1c1tzZXh0LVxcdTAwM2VleHRfaWR4XSA9IChyZWdfdmFsKSA/XFxuIFxcdFxcdFxcdEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19FTkFCTEVEIDpcXG4gXFx0XFx0XFx0S1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0RJU0FCTEVEO1xcbkBAIC03MjMsMyArNzMwLDI2IEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0ZXh0LVxcdTAwM2VyZXNldCh2Y3B1KTtcXG4gXFx0fVxcbiB9XFxuK1xcbit2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0c3RydWN0IGt2bV92Y3B1X3NiaV9jb250ZXh0ICpzY29udGV4dCA9IFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnNiaV9jb250ZXh0O1xcbitcXHRjb25zdCBzdHJ1Y3Qga3ZtX3Jpc2N2X3NiaV9leHRlbnNpb25fZW50cnkgKmVudHJ5O1xcbitcXHRjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiAqZXh0O1xcbitcXHRpbnQgaWR4LCBpO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoc2JpX2V4dCk7IGkrKykge1xcbitcXHRcXHRlbnRyeSA9IFxcdTAwMjZzYmlfZXh0W2ldO1xcbitcXHRcXHRleHQgPSBlbnRyeS1cXHUwMDNlZXh0X3B0cjtcXG4rXFx0XFx0aWR4ID0gZW50cnktXFx1MDAzZWV4dF9pZHg7XFxuK1xcbitcXHRcXHRpZiAoaWR4IFxcdTAwM2MgMCB8fCBpZHggXFx1MDAzZT0gQVJSQVlfU0laRShzY29udGV4dC1cXHUwMDNlZXh0X3N0YXR1cykpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0aWYgKHNjb250ZXh0LVxcdTAwM2VleHRfc3RhdHVzW2lkeF0gIT0gS1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgfHxcXG4rXFx0XFx0ICAgICFleHQtXFx1MDAzZXZhbGlkYXRlKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdGV4dC1cXHUwMDNldmFsaWRhdGUodmNwdSk7XFxuK1xcdH1cXG4rfVxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcXG5pbmRleCAxMzQyYWRiMzE4MGM2Li44NzQ4ZGY5MjFmMTAxIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xcbkBAIC00MjAsNiArNDIwLDMyIEBAIHN0YXRpYyB2b2lkIGt2bV9zYmlfZXh0X2Z3ZnRfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRcXHRpZiAoZmVhdHVyZS1cXHUwMDNlcmVzZXQpXFxuIFxcdFxcdFxcdGZlYXR1cmUtXFx1MDAzZXJlc2V0KHZjcHUpO1xcbiBcXHR9XFxuK1xcbitcXHR2Y3B1LVxcdTAwM2VhcmNoLmNzcl9kaXJ0eSA9IHRydWU7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbit7XFxuK1xcdHN0cnVjdCBrdm1fc2JpX2Z3ZnQgKmZ3ZnQgPSB2Y3B1X3RvX2Z3ZnQodmNwdSk7XFxuK1xcdGNvbnN0IHN0cnVjdCBrdm1fc2JpX2Z3ZnRfZmVhdHVyZSAqZmVhdHVyZTtcXG4rXFx0c3RydWN0IGt2bV9zYmlfZndmdF9jb25maWcgKmNvbmY7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZmVhdHVyZXMpOyBpKyspIHtcXG4rXFx0XFx0ZmVhdHVyZSA9IFxcdTAwMjZmZWF0dXJlc1tpXTtcXG4rXFx0XFx0Y29uZiA9IFxcdTAwMjZmd2Z0LVxcdTAwM2Vjb25maWdzW2ldO1xcbitcXHRcXHRpZiAoIWNvbmYtXFx1MDAzZXN1cHBvcnRlZClcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRpZiAoIWZlYXR1cmUtXFx1MDAzZXN1cHBvcnRlZCB8fCBmZWF0dXJlLVxcdTAwM2VzdXBwb3J0ZWQodmNwdSkpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0Y29uZi1cXHUwMDNlZW5hYmxlZCA9IGZhbHNlO1xcbitcXHRcXHRjb25mLVxcdTAwM2VmbGFncyA9IDA7XFxuK1xcbitcXHRcXHRpZiAoZmVhdHVyZS1cXHUwMDNlcmVzZXQpXFxuK1xcdFxcdFxcdGZlYXR1cmUtXFx1MDAzZXJlc2V0KHZjcHUpO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGt2bV9zYmlfZXh0X2Z3ZnRfZ2V0X3JlZ19jb3VudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuQEAgLTU3NCw2ICs2MDAsNyBAQCBjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfZndmdCA9IHtcXG4gXFx0LmluaXQgPSBrdm1fc2JpX2V4dF9md2Z0X2luaXQsXFxuIFxcdC5kZWluaXQgPSBrdm1fc2JpX2V4dF9md2Z0X2RlaW5pdCxcXG4gXFx0LnJlc2V0ID0ga3ZtX3NiaV9leHRfZndmdF9yZXNldCxcXG4rXFx0LnZhbGlkYXRlID0ga3ZtX3NiaV9leHRfZndmdF92YWxpZGF0ZSxcXG4gXFx0LnN0YXRlX3JlZ19zdWJ0eXBlID0gS1ZNX1JFR19SSVNDVl9TQklfRldGVCxcXG4gXFx0LmdldF9zdGF0ZV9yZWdfY291bnQgPSBrdm1fc2JpX2V4dF9md2Z0X2dldF9yZWdfY291bnQsXFxuIFxcdC5nZXRfc3RhdGVfcmVnX2lkID0ga3ZtX3NiaV9leHRfZndmdF9nZXRfcmVnX2lkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1ODoxNS41NTY0ODAwMjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4ODU4OTAwNDAzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHRcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZVwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIG1vZGlmaWVzIEtWTSBTQkkgZXh0ZW5zaW9uIGhhbmRsaW5nIG9uIFJJU0MtVi4gSXQgYWRkcyBhIG5ldyBgdmFsaWRhdGVgIGNhbGxiYWNrIGZvciBTQkkgZXh0ZW5zaW9ucywgd2hpY2ggaXMgaW52b2tlZCB3aGVuIGEgdkNQVSBpcyBydW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBhbmQgY2FsbHMgdGhlIGByZXNldGAgY2FsbGJhY2sgd2hlbiBhbiBleHRlbnNpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB2aXJ0dWFsaXphdGlvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjBiZWQ5ZGY2OTJmNzdjNWRiZDBkNjVjNTRjMTE0M2NmY2JlYzliYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDA2OjU4OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmhcbmluZGV4IGMxYTdlM2I0MGQ5Y2UuLmYwMWEyODYwYzc1MTEgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oXG5AQCAtNjAsNiArNjAsOSBAQCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB7XG4gXG4gXHR2b2lkICgqcmVzZXQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXG4rXHQvKiBBbGxvdyB0aGUgZXh0ZW5zaW9uIHRvIGNvcnJlY3QgaXRzIHBhcmFtZXRlcnMgYmVmb3JlIHRoZSBmaXJzdCBydW4gKi9cbitcdHZvaWQgKCp2YWxpZGF0ZSkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbitcbiBcdHVuc2lnbmVkIGxvbmcgc3RhdGVfcmVnX3N1YnR5cGU7XG4gXHR1bnNpZ25lZCBsb25nICgqZ2V0X3N0YXRlX3JlZ19jb3VudCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcdGludCAoKmdldF9zdGF0ZV9yZWdfaWQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGluZGV4LCB1NjQgKnJlZ19pZCk7XG5AQCAtOTMsNiArOTYsNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfc2JpX2VjYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bik7XG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX2RlaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4rdm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiAjaWZkZWYgQ09ORklHX1JJU0NWX1NCSV9WMDFcbiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X3YwMTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuY1xuaW5kZXggMjM4NDE4ZmVkMmI5YS4uYjY4YWE4MzBhYWY1MSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmNcbkBAIC02OSw2ICs2OSw4IEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcbiBcdGlmICh2Y3B1LVx1MDAzZWd1ZXN0X2RlYnVnKVxuIFx0XHRjZmctXHUwMDNlaGVkZWxlZyBcdTAwMjY9IH5CSVQoRVhDX0JSRUFLUE9JTlQpO1xuK1xuK1x0a3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHZjcHUpO1xuIH1cbiBcbiB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuY1xuaW5kZXggNDZhYjdiOTg5NDMyYi4uMWM0Zjg3NDM2OGZiZSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmNcbkBAIC0yMjEsNiArMjIxLDcgQEAgc3RhdGljIGludCByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4ge1xuIFx0c3RydWN0IGt2bV92Y3B1X3NiaV9jb250ZXh0ICpzY29udGV4dCA9IFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5zYmlfY29udGV4dDtcbiBcdGNvbnN0IHN0cnVjdCBrdm1fcmlzY3Zfc2JpX2V4dGVuc2lvbl9lbnRyeSAqc2V4dDtcbitcdGNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uICpleHQ7XG4gXG4gXHRpZiAocmVnX3ZhbCAhPSAxIFx1MDAyNlx1MDAyNiByZWdfdmFsICE9IDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTIyOSw2ICsyMzAsMTIgQEAgc3RhdGljIGludCByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRpZiAoIXNleHQgfHwgc2NvbnRleHQtXHUwMDNlZXh0X3N0YXR1c1tzZXh0LVx1MDAzZWV4dF9pZHhdID09IEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19VTkFWQUlMQUJMRSlcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4rXHRleHQgPSBzZXh0LVx1MDAzZWV4dF9wdHI7XG4rXG4rXHRpZiAoIXJlZ192YWwgXHUwMDI2XHUwMDI2IHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cdTAwM2VleHRfaWR4XSA9PSBLVk1fUklTQ1ZfU0JJX0VYVF9TVEFUVVNfRU5BQkxFRCBcdTAwMjZcdTAwMjZcbitcdCAgICBleHQtXHUwMDNlcmVzZXQpXG4rXHRcdGV4dC1cdTAwM2VyZXNldCh2Y3B1KTtcbitcbiBcdHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXNbc2V4dC1cdTAwM2VleHRfaWR4XSA9IChyZWdfdmFsKSA/XG4gXHRcdFx0S1ZNX1JJU0NWX1NCSV9FWFRfU1RBVFVTX0VOQUJMRUQgOlxuIFx0XHRcdEtWTV9SSVNDVl9TQklfRVhUX1NUQVRVU19ESVNBQkxFRDtcbkBAIC03MjMsMyArNzMwLDI2IEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdFx0ZXh0LVx1MDAzZXJlc2V0KHZjcHUpO1xuIFx0fVxuIH1cbitcbit2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0c3RydWN0IGt2bV92Y3B1X3NiaV9jb250ZXh0ICpzY29udGV4dCA9IFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5zYmlfY29udGV4dDtcbitcdGNvbnN0IHN0cnVjdCBrdm1fcmlzY3Zfc2JpX2V4dGVuc2lvbl9lbnRyeSAqZW50cnk7XG4rXHRjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiAqZXh0O1xuK1x0aW50IGlkeCwgaTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoc2JpX2V4dCk7IGkrKykge1xuK1x0XHRlbnRyeSA9IFx1MDAyNnNiaV9leHRbaV07XG4rXHRcdGV4dCA9IGVudHJ5LVx1MDAzZWV4dF9wdHI7XG4rXHRcdGlkeCA9IGVudHJ5LVx1MDAzZWV4dF9pZHg7XG4rXG4rXHRcdGlmIChpZHggXHUwMDNjIDAgfHwgaWR4IFx1MDAzZT0gQVJSQVlfU0laRShzY29udGV4dC1cdTAwM2VleHRfc3RhdHVzKSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0aWYgKHNjb250ZXh0LVx1MDAzZWV4dF9zdGF0dXNbaWR4XSAhPSBLVk1fUklTQ1ZfU0JJX0VYVF9TVEFUVVNfRU5BQkxFRCB8fFxuK1x0XHQgICAgIWV4dC1cdTAwM2V2YWxpZGF0ZSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0ZXh0LVx1MDAzZXZhbGlkYXRlKHZjcHUpO1xuK1x0fVxuK31cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcbmluZGV4IDEzNDJhZGIzMTgwYzYuLjg3NDhkZjkyMWYxMDEgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xuQEAgLTQyMCw2ICs0MjAsMzIgQEAgc3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdGlmIChmZWF0dXJlLVx1MDAzZXJlc2V0KVxuIFx0XHRcdGZlYXR1cmUtXHUwMDNlcmVzZXQodmNwdSk7XG4gXHR9XG4rXG4rXHR2Y3B1LVx1MDAzZWFyY2guY3NyX2RpcnR5ID0gdHJ1ZTtcbit9XG4rXG4rc3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0c3RydWN0IGt2bV9zYmlfZndmdCAqZndmdCA9IHZjcHVfdG9fZndmdCh2Y3B1KTtcbitcdGNvbnN0IHN0cnVjdCBrdm1fc2JpX2Z3ZnRfZmVhdHVyZSAqZmVhdHVyZTtcbitcdHN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnICpjb25mO1xuK1x0aW50IGk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZlYXR1cmVzKTsgaSsrKSB7XG4rXHRcdGZlYXR1cmUgPSBcdTAwMjZmZWF0dXJlc1tpXTtcbitcdFx0Y29uZiA9IFx1MDAyNmZ3ZnQtXHUwMDNlY29uZmlnc1tpXTtcbitcdFx0aWYgKCFjb25mLVx1MDAzZXN1cHBvcnRlZClcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0aWYgKCFmZWF0dXJlLVx1MDAzZXN1cHBvcnRlZCB8fCBmZWF0dXJlLVx1MDAzZXN1cHBvcnRlZCh2Y3B1KSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0Y29uZi1cdTAwM2VlbmFibGVkID0gZmFsc2U7XG4rXHRcdGNvbmYtXHUwMDNlZmxhZ3MgPSAwO1xuK1xuK1x0XHRpZiAoZmVhdHVyZS1cdTAwM2VyZXNldClcbitcdFx0XHRmZWF0dXJlLVx1MDAzZXJlc2V0KHZjcHUpO1xuK1x0fVxuIH1cbiBcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBrdm1fc2JpX2V4dF9md2Z0X2dldF9yZWdfY291bnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuQEAgLTU3NCw2ICs2MDAsNyBAQCBjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfZndmdCA9IHtcbiBcdC5pbml0ID0ga3ZtX3NiaV9leHRfZndmdF9pbml0LFxuIFx0LmRlaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZGVpbml0LFxuIFx0LnJlc2V0ID0ga3ZtX3NiaV9leHRfZndmdF9yZXNldCxcbitcdC52YWxpZGF0ZSA9IGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGUsXG4gXHQuc3RhdGVfcmVnX3N1YnR5cGUgPSBLVk1fUkVHX1JJU0NWX1NCSV9GV0ZULFxuIFx0LmdldF9zdGF0ZV9yZWdfY291bnQgPSBrdm1fc2JpX2V4dF9md2Z0X2dldF9yZWdfY291bnQsXG4gXHQuZ2V0X3N0YXRlX3JlZ19pZCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZ2V0X3JlZ19pZCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU4OjE1LjU1NjQ4MTQwNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NjcxODcwMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBTQkkgRXh0ZW5zaW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIGl0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIHNvbWUgY3J1Y2lhbCBhc3BlY3RzIG9mIFJJU0MtViBLVk0uIE15IGZpcnN0IHRob3VnaHQgaXM6IHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggZGlnZ2luZyBpbnRvLiBXZSdyZSBsb29raW5nIGF0IG1vZGlmaWNhdGlvbnMgdG8gaG93IFNCSSBleHRlbnNpb25zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgdmlydHVhbCBtYWNoaW5lIGVudmlyb25tZW50LCB3aGljaCBpcyBhIGNvcmUgdmlydHVhbGl6YXRpb24gZmVhdHVyZS5cblxuVGhlIHBhdGNoIGludHJvZHVjZXMgYSBgdmFsaWRhdGVgIGNhbGxiYWNrIHRvIHRoZSBgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb25gIHN0cnVjdHVyZSwgbG9jYXRlZCBpbiBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaGAuIEl0IGFsc28gdXBkYXRlcyBgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGVgIHRvIGNhbGwgYGV4dC1cdTAwM2VyZXNldCh2Y3B1KWAgd2hlbiBkaXNhYmxpbmcgYW4gZXh0ZW5zaW9uLCB3aGljaCBpcyBnb29kIGhvdXNla2VlcGluZy4gTW9yZSBpbXBvcnRhbnRseSwgaXQgYWRkcyBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYCwgd2hpY2ggaXRlcmF0ZXMgdGhyb3VnaCB0aGUgZW5hYmxlZCBleHRlbnNpb25zIGFuZCBjYWxscyB0aGVpciBpbmRpdmlkdWFsIGB2YWxpZGF0ZSh2Y3B1KWAgbWV0aG9kcy4gVGhpcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIGlzIHRoZW4gY2FsbGVkIGZyb20gYGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZWAuIFRoZXJlIGlzIGFsc28gdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgYGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGVgIGZvciB0aGUgYHZjcHVfc2JpX2V4dF9md2Z0YCBleHRlbnNpb24uXG5cbk5vdywgYmVjYXVzZSB0aGlzIHBhdGNoIGFkZHMgbmV3IGxvZ2ljIHNwZWNpZmljYWxseSBmb3IgcmVzZXR0aW5nIGFuZCB2YWxpZGF0aW5nIFNCSSBleHRlbnNpb25zLCBJJ20gdGhpbmtpbmcgdGhpcyBpcyBwcmltZSBmdXp6aW5nIG1hdGVyaWFsLiBJdCdzIGZ1bmN0aW9uYWwsIHRvdWNoZXMgY29yZSBLVk0gZnVuY3Rpb25hbGl0eSwgYW5kIGludHJvZHVjZXMgbmV3IGNvZGUgcGF0aHMgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIE15IHByaW1hcnkgZm9jdXMgd2lsbCBiZSBvbiBpZGVudGlmeWluZyBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gdGFyZ2V0IGR1cmluZyBmdXp6aW5nLlxuXG5TcGVjaWZpY2FsbHksIEkgd2FudCB0byBuYWlsIGRvd24gdGhlc2UgZnVuY3Rpb25zOlxuKiAgIGBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VgXG4qICAgYHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlYFxuKiAgIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgXG4qICAgYGt2bV9zYmlfZXh0X2Z3ZnRfdmFsaWRhdGVgIChldmVuIHRob3VnaCBpdCdzIHN0YXRpYywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgY2FsbGVyKVxuXG5UaGUgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gV2UgbmVlZCBgQ09ORklHX0tWTWAsIG9idmlvdXNseS4gSSdsbCBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IFJJU0MtViBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBlbmFibGUgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHkuIEknbSBnb2luZyB0byBzZWFyY2ggdGhlIGNvZGViYXNlIGZvciB3aGVyZSBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYCBhbmQgYHZjcHVfc2JpX2V4dF9md2Z0YCBhcmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk4MCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU4OjQxLjIyODM1NDgwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODM3NzEzOTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oPTk4PXZvaWQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaDo5OTp2b2lkIGt2bV9yaXNjdl92Y3B1X3NiaV92YWxpZGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmgtMTAwLVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuYz0zOT12b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jLTcyLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmM6NzM6XFx0a3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlKHZjcHUpO1xcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmMtNzQtfVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz03MTE9dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYy03MzMtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYzo3MzQ6dm9pZCBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtNzM1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6NTg6NDMuMDY2MDc2ODU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI3MzEyNzg2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBSSVNDLVYgS1ZNIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGZvciBLVk0gb24gUklTQy1WLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBMZXQncyBkaWcgaW50byBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGRlcGVuZGVuY2llcywgdGhlIGJ1aWxkIG9wdGlvbnMsIGFuZCBhbGwgdGhlIHJlbGV2YW50IHNldHRpbmdzIHRoYXQgZ292ZXJuIHRoZSBLVk0gc3Vic3lzdGVtIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiBJdCdsbCBnaXZlIG1lIHRoZSBwcmVjaXNlIHJlcXVpcmVtZW50cyBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNDYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1ODo1NS43OTczNTc4MzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwNzQ5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6NTg6NTUuODQ1NDM5MDM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYwMzQyNTQwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gS2NvbmZpZyBmb3IgUklTQy1WIEtWTSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGUgUklTQy1WIEtWTSBpbXBsZW1lbnRhdGlvbi4gV2hlcmUgZG8gSSBiZWdpbj8gVGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgS1ZNIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYC4gSXQncyB0aGUgY2VudHJhbCBodWIgZm9yIGRlZmluaW5nIGFsbCB0aGUgcmVsZXZhbnQgb3B0aW9ucyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gVGhpcyBmaWxlIHdpbGwgbGF5IG91dCBwcmVjaXNlbHkgd2hpY2ggb3RoZXIgZmVhdHVyZXMgb3IgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIG9yIGltcGFjdGVkIGJ5IGVuYWJsaW5nIEtWTSBzdXBwb3J0IG9uIFJJU0MtVi4gVGhhdCdzIHdoZXJlIEknbGwgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHVuZGVyc3RhbmQgdGhlIHByZXJlcXVpc2l0ZXMsIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgY29uZmxpY3RzLiBUaW1lIHRvIHBhcnNlIGl0IGNhcmVmdWxseSBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYxNywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU5OjAxLjQ0ODg2NjQ0OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEtWTSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdHNvdXJjZSBcXFwidmlydC9rdm0vS2NvbmZpZ1xcXCJcXG4gICA3OlxcdFxcbiAgIDg6XFx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbiAgIDk6XFx0XFx0Ym9vbCBcXFwiVmlydHVhbGl6YXRpb25cXFwiXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuXFxuICAxMjpcXHRcXHQgIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmRcXG4gIDE2OlxcdFxcdCAgZGlzYWJsZWQuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFZJUlRVQUxJWkFUSU9OXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBLVk1cXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIFJJU0NWX1NCSSBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDIzOlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuICAyNDpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcXG4gIDI1OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9NU0lcXG4gIDI2OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cXG4gIDI3OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcXG4gIDI4OlxcdFxcdHNlbGVjdCBLVk1fQ09NTU9OXFxuICAyOTpcXHRcXHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxuICAzMDpcXHRcXHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcXG4gIDMxOlxcdFxcdHNlbGVjdCBLVk1fTU1JT1xcbiAgMzI6XFx0XFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuICAzMzpcXHRcXHRzZWxlY3QgU0NIRURfSU5GT1xcbiAgMzQ6XFx0XFx0c2VsZWN0IEdVRVNUX1BFUkZfRVZFTlRTIGlmIFBFUkZfRVZFTlRTXFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFN1cHBvcnQgaG9zdGluZyB2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcy5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRlbmRpZiAjIFZJUlRVQUxJWkFUSU9OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU5OjAxLjQ0ODkyMjk4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY5ODIwODM1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipLVk0gb24gUklTQy1WOiBQaW5wb2ludGluZyB0aGUgUmVsZXZhbnQgQ29kZSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gaG93IEtWTSBvcGVyYXRlcyBvbiBSSVNDLVYsIGFuZCBpdCdzIGNsZWFyIHJpZ2h0IGF3YXkgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGhpbmdlcyBvbiBhIGZldyBjb3JlIGNvbXBvbmVudHMuIFRoZSB0ZXh0IHBvaW50cyBvdXQgdGhlIGRlcGVuZGVuY2llcyBvbiBgUklTQ1ZfU0JJYCBhbmQgdGhlIGBNTVVgLCB3aGljaCwgZnJvbSBteSBleHBlcmllbmNlLCBhcmUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGZvciBhbnkgdmlydHVhbGlzYXRpb24gZWZmb3J0IG9uIFJJU0MtVi4gTWFrZXMgc2Vuc2UuIFlvdSBjYW4ndCB2aXJ0dWFsaXplIHdpdGhvdXQgYSBzZWN1cmUgYW5kIGVmZmljaWVudCBTQkkgYW5kIHJvYnVzdCBNTVUgbWFuYWdlbWVudC5cblxuTm93LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIHNwZWNpZmljcyBvZiB0aGUgKmNvZGUqIHRoYXQgZG9lcyB0aGUgd29yay4gVGhlIHRleHQgaGlnaGxpZ2h0cyB0aGF0IHRoZSByZWxldmFudCBtb2RpZmllZCBjb2RlIGlzIHNwZWNpZmljYWxseSBsb2NhdGVkIHdpdGhpbiBgYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuY2AgYW5kIGBhcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNgLiBPa2F5LCBgdmNwdV9zYmlgIG1ha2VzIHNlbnNlLCB0aGF0J3Mgd2hlcmUgdGhlIFNCSSBpbnRlcmFjdGlvbiBsb2dpYyBtdXN0IHJlc2lkZS4gVGhlIHByZXNlbmNlIG9mIGBfZndmdGAgYWxzbyBzdWdnZXN0cyBpdCBtYXkgYmUgRldGVC1zcGVjaWZpYyBmZWF0dXJlczsgc28gaXQgaXMgbGlrZWx5IHdvcnRoIGNoZWNraW5nIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb25maWdzIGZvciBGV0ZUIHRvIGJlIHN1cmUgYWJvdXQgaXRzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gYWNjb3VudGluZyBmb3IgZXZlcnl0aGluZy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhvc2UgZmlsZXMuIEknbGwgaGF2ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIG9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gXCJGV0ZUXCIgd2l0aGluIHRob3NlIGZpbGVzLiBUaGF0J3MgbGlrZWx5IHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCB0byBpc29sYXRlIHRoZSBwcmVjaXNlIG1lY2hhbmlzbXMgYXQgcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM2MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6NTk6MTguNDMxMDEwMTE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUwNTQwNjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjcHVfc2JpX2Z3ZnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI0LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX3ZjcHVfc2JpLmhcXHUwMDNlXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjI1OiNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaFxcdTAwM2VcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMjYtI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fdmNwdV90aW1lci5oXFx1MDAzZVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9MzI9a3ZtLXkgKz0gdmNwdV9zYmlfZm9yd2FyZC5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MzM6a3ZtLXkgKz0gdmNwdV9zYmlfZndmdC5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUtMzQta3ZtLXkgKz0gdmNwdV9zYmlfaHNtLm9cXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy0xNC0jaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV92Y3B1X3NiaS5oXFx1MDAzZVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYzoxNTojaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV92Y3B1X3NiaV9md2Z0LmhcXHUwMDNlXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTE2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1OToyMC4xODE1NTc4NDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk0ODE2MTQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBLVk0gQ29tcGlsYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSBhcyBwYXJ0IG9mIHRoZSBLVk0gaW5mcmFzdHJ1Y3R1cmUuIFRoYXQgbWVhbnMsIGF0IGEgYmFzaWMgbGV2ZWwsIHRoZSBrZXJuZWwgKnNob3VsZCogb25seSBuZWVkIGBLVk1gIGVuYWJsZWQgaW4gdGhlIGNvbmZpZy4gSG9sZCBvbi4uLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgVklSVFVBTElaQVRJT05gIGFsc28gbmVlZHMgdG8gYmUgZW5hYmxlZCwgaW4gYWRkaXRpb24gdG8gS1ZNIGl0c2VsZi4gUmlnaHQsIGJlY2F1c2UgS1ZNIGRlcGVuZHMgb24gdGhlIHZpcnR1YWxpemF0aW9uIGNvcmUuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGtleSBzeW1ib2xzIHRvIG1ha2Ugc3VyZSBJJ20gb24gdGhlIHJpZ2h0IHRyYWNrIGhlcmUsIHNvIHRoYXQgbXkgYXNzdW1wdGlvbnMgYXJlIHNvdW5kOiBga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlYCwgYHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlYCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgLiBHb29kLCB0aG9zZSBzZWVtIHJlbGV2YW50LlxuXG5BbmQgZmluYWxseSwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcgcXVpY2tseSBhYm91dCB0aGUgYHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlYCBmdW5jdGlvbi4gSSAqdGhpbmsqIGl0IGlzLCBidXQgSSB3YW50IHRvIG1ha2Ugc3VyZSBpdCdzICpzdGF0aWMqIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgS1ZNIGltcGxlbWVudGF0aW9uLiBUaGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBpdCBpcyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDkwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU5OjI1LjEyOTcyMzk1N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1NDk1NjMyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jPTE5OT1pbnQga3ZtX3Jpc2N2X3ZjcHVfc2JpX3JldHVybihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTIxNy1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jOjIxODpzdGF0aWMgaW50IHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTIxOS1cXHRcXHRcXHRcXHRcXHQgdW5zaWduZWQgbG9uZyByZWdfbnVtLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz0yNjM9c3RhdGljIGludCByaXNjdl92Y3B1X3NldF9zYmlfZXh0X211bHRpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtMjc2LVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM6Mjc3OlxcdFxcdHJpc2N2X3ZjcHVfc2V0X3NiaV9leHRfc2luZ2xlKHZjcHUsIGV4dF9pZCwgZW5hYmxlKTtcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTI3OC1cXHR9XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jPTMzMT1pbnQga3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtMzU0LVxcdGNhc2UgS1ZNX1JFR19SSVNDVl9TQklfU0lOR0xFOlxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM6MzU1OlxcdFxcdHJldHVybiByaXNjdl92Y3B1X3NldF9zYmlfZXh0X3NpbmdsZSh2Y3B1LCByZWdfbnVtLCByZWdfdmFsKTtcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jLTM1Ni1cXHRjYXNlIEtWTV9SRUdfUklTQ1ZfU0JJX01VTFRJX0VOOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1OToyNi42ODQ2ODYyMjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1MzQxMzMwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIFJJU0MtViBTQkkgRXh0ZW5zaW9uIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcmlzY3ZfdmNwdV9zZXRfc2JpX2V4dF9zaW5nbGVgLiBJdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCB3aGVyZSBhbmQgaG93IGl0J3MgYmVpbmcgY2FsbGVkLiBNeSBhdHRlbnRpb24gaXMgZHJhd24gdG8gYGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dGAsIHRoYXQncyB0aGUgcmVhbCBlbnRyeSBwb2ludCBJIG5lZWQgdG8gZm9jdXMgb24uIEJ1dCBiZWZvcmUgSSBkaXZlIGFueSBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNhbGwgcGF0aCBhbmQgd2hldGhlciB3ZSdyZSBkZWFsaW5nIHdpdGggYSBvbmUtdGltZSBjb25maWd1cmF0aW9uIHdpdGggYGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZWAuIFRoYXQgY2hlY2sgY291bGQgZ2l2ZSBtZSBpbXBvcnRhbnQgY29udGV4dCwgc28gbGV0J3Mgc2VlIGhvdyB0aGF0J3MgYmVpbmcgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk1NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjU5OjMwLjIzODEwMzQ2NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTYzNDI5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9jb25maWcuaD0yMT12b2lkIGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfY29uZmlnLmg6MjI6dm9pZCBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X2NvbmZpZy5oLTIzLXZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz04NTg9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy04NjQtXFx0aWYgKCF2Y3B1LVxcdTAwM2VhcmNoLnJhbl9hdGxlYXN0X29uY2UpXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjg2NTpcXHRcXHRrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2UodmNwdSk7XFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTg2Ni1cXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfY29uZmlnLmM9Mjc9dm9pZCBrdm1fcmlzY3ZfdmNwdV9jb25maWdfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9jb25maWcuYy0zOC1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jOjM5OnZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29uZmlnX3Jhbl9vbmNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2NvbmZpZy5jLTQwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6NTk6MzEuOTY5NzQyMzExWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjM0MjkyMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGggb2YgUklTQy1WIFNCSSBFeHRlbnNpb25zIGluIEtWTSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIFJJU0MtViBLVk0gY29kZSwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IFNCSSBleHRlbnNpb25zIGFyZSBoYW5kbGVkLiBNeSBpbml0aWFsIHRyYWNlIGluZGljYXRlcyB0aGF0IGBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VgIGlzIHRoZSBrZXkgZW50cnkgcG9pbnQgc2luY2UgaXQncyBjYWxsZWQgYnkgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4gVGhhdCBmdW5jdGlvbiBpbiB0dXJuIGNhbGxzIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgLiBCYXNlZCBvbiB0aGUgY2FsbCBncmFwaCwgdGhlc2UgYXJlIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIEkgbmVlZCB0byBsb29rIGludG86IGBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHRgLCBga3ZtX3Jpc2N2X3ZjcHVfc2JpX3ZhbGlkYXRlYCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9jb25maWdfcmFuX29uY2VgLlxuXG5UaGUgZ29hbCBub3cgaXMgdG8gZXN0YWJsaXNoIGlmIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGFueSBsaW5rYWdlIGlzc3Vlcy4gTGV0J3Mgc2VlIGlmIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgIGlzIGdsb2JhbGx5IGFjY2Vzc2libGUgaW4gS1ZNIOKAkyBpdCBhcHBlYXJzIHRvIGJlLiBJIG5lZWQgdG8gbm93IGFsc28gdmVyaWZ5IHdoZXRoZXIgYGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dGAgaXMgZ2xvYmFsIG9yIG5vdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYzNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1OTozNi40OTMxNzM5MTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzQxMjAwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmg9ODU9aW50IGt2bV9yaXNjdl92Y3B1X3JlZ19pbmRpY2VzX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgX191c2VyICp1aW5kaWNlcyk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaDo4NjppbnQga3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oLTg3LVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKTtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfb25lcmVnLmM9OTkwPWludCBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfb25lcmVnLmMtMTAxMi1cXHRjYXNlIEtWTV9SRUdfUklTQ1ZfU0JJX0VYVDpcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X29uZXJlZy5jOjEwMTM6XFx0XFx0cmV0dXJuIGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dCh2Y3B1LCByZWcpO1xcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfb25lcmVnLmMtMTAxNC1cXHRjYXNlIEtWTV9SRUdfUklTQ1ZfU0JJX1NUQVRFOlxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYz0zMDY9aW50IGt2bV9yaXNjdl92Y3B1X3JlZ19pbmRpY2VzX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgX191c2VyICp1aW5kaWNlcylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtMzMwLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmM6MzMxOmludCBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX3NiaV9leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMtMzMyLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1OTozOC4wNjcyOTk4MTZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk5NzM5Njk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gUklTQy1WIFNCSSBFeHRlbnNpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFib3V0IHRoZSBnbG9iYWwgS1ZNIGxhbmRzY2FwZSwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgUklTQy1WIGFuZCBpdHMgU0JJIGV4dGVuc2lvbnMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBhIGZldyBrZXkgc3ltYm9sczogYGt2bV9yaXNjdl92Y3B1X3NldF9yZWdfc2JpX2V4dGAsIGBrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVgLCBhbmQgYGt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZWAuIFRoZXNlIGFyZSB0aGUgaG9va3MgdGhhdCB3aWxsIGdpdmUgbWUgbXkgc3RhcnRpbmcgcG9pbnRzLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGRlYWxzIHdpdGggS1ZNJ3MgbWFuYWdlbWVudCBvZiBTQkkgZXh0ZW5zaW9ucyBvbiBSSVNDLVYuIEl0IGludHJvZHVjZXMgYSBgdmFsaWRhdGVgIGNhbGxiYWNrIGRlc2lnbmVkIHRvIHJ1biB0aGUgdmVyeSBmaXJzdCB0aW1lIGEgdkNQVSBpcyBsYXVuY2hlZDsgdGhpcyBnaXZlcyBtZSBhIGdvb2QgcG9pbnQgdG8gc3RhcnQgbG9va2luZyBmb3IgcG9zc2libGUgaXNzdWVzLiBBbHNvLCBhIGByZXNldGAgY2FsbGJhY2sgaXMgYWxzbyBhZGRlZCB0aGF0IHJ1bnMgd2hlbiBhbiBleHRlbnNpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgaW1wb3J0YW50IHRvbywgYmVjYXVzZSBkaXNhYmxpbmcgZmVhdHVyZXMgb2Z0ZW4gZXhwb3NlcyBzdWJ0bGUgcHJvYmxlbXMgdGhhdCBhcmUgaGFyZCB0byBmaW5kLiBJdCdzIGNvcmUgS1ZNIHZpcnR1YWxpemF0aW9uIGxvZ2ljLCBtZWFuaW5nIEkgbmVlZCB0byB0cmVhdCB0aGlzIGFzIGZ1bmN0aW9uYWwgY29kZSB0aGF0J3MgcmlwZSBmb3IgZnV6emluZy5cblxuQmVmb3JlIEkgZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzLCBJJ2xsIHF1aWNrbHkgY2hlY2sgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJIGtub3cgdGhlIGJhc2UgY29uZmlndXJhdGlvbiBpcyBgS1ZNYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGl0IGhhcyBhbGwgdGhlIHN0YW5kYXJkIGRlcGVuZGVuY2llcy4gSSByZWNhbGwgdGhhdCBgS1ZNYCBwdWxscyBpbiBgUklTQ1ZfU0JJYCBhbmQgYE1NVWAsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIGRvbid0IHNlZSBhbnkgb3RoZXIgbm90YWJsZSBjb25maWd1cmF0aW9ucyBqdW1waW5nIG91dCBhdCBtZSwgc28gSSB0aGluayBJIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlLiBOb3csIEkgY2FuIGJ1aWxkIG15IHBsYW4gdG8gYW5hbHl6ZSB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjE2LCJPdXRwdXRUb2tlbnMiOjE1OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjo1OTo0NC4wNjQ2OTkyNTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDc4MTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0XCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBtb2RpZmllcyBLVk0gU0JJIGV4dGVuc2lvbiBoYW5kbGluZyBvbiBSSVNDLVYuIEl0IGFkZHMgYSBuZXcgYHZhbGlkYXRlYCBjYWxsYmFjayBmb3IgU0JJIGV4dGVuc2lvbnMsIHdoaWNoIGlzIGludm9rZWQgd2hlbiBhIHZDUFUgaXMgcnVuIGZvciB0aGUgZmlyc3QgdGltZSwgYW5kIGNhbGxzIHRoZSBgcmVzZXRgIGNhbGxiYWNrIHdoZW4gYW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUgY29yZSBLVk0gdmlydHVhbGl6YXRpb24gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfc2V0X3JlZ19zYmlfZXh0XCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9zYmlfdmFsaWRhdGVcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X2NvbmZpZ19yYW5fb25jZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBtb2RpZmllcyBLVk0gU0JJIGV4dGVuc2lvbiBoYW5kbGluZyBvbiBSSVNDLVYuIEl0IGFkZHMgYSBuZXcgYHZhbGlkYXRlYCBjYWxsYmFjayBmb3IgU0JJIGV4dGVuc2lvbnMsIHdoaWNoIGlzIGludm9rZWQgd2hlbiBhIHZDUFUgaXMgcnVuIGZvciB0aGUgZmlyc3QgdGltZSwgYW5kIGNhbGxzIHRoZSBgcmVzZXRgIGNhbGxiYWNrIHdoZW4gYW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUgY29yZSBLVk0gdmlydHVhbGl6YXRpb24gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow5gwxs[1] Phase: Succeeded StartedAt: 2026-07-31 06:59:55 +0000 UTC FinishedAt: 2026-07-31 06:59:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 06:59:55 +0000 UTC FinishedAt: 2026-07-31 06:59:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2] Phase: Succeeded StartedAt: 2026-07-31 06:59:55 +0000 UTC FinishedAt: 2026-07-31 07:41:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 06:59:55 +0000 UTC FinishedAt: 2026-07-31 07:41:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 06:59:55 +0000 UTC FinishedAt: 2026-07-31 07:00:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 06:59:55 +0000 UTC FinishedAt: 2026-07-31 06:59:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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-workflow5gwxs/series-workflow5gwxs-convert-artifact-2038794852/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:00:05 +0000 UTC FinishedAt: 2026-07-31 07:16:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:00:05 +0000 UTC FinishedAt: 2026-07-31 07:16:06 +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:*3653f62e-8a41-4a03-944b-2fdc2cbaa1a9,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-workflow5gwxs/series-workflow5gwxs-convert-artifact-2038794852/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": "71f2e388-8c1b-43d5-9c35-f66e1e79866a", "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-workflow5gwxs/series-workflow5gwxs-build-action-2763074210/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:00:05 +0000 UTC FinishedAt: 2026-07-31 07:15:56 +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:*3653f62e-8a41-4a03-944b-2fdc2cbaa1a9,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-workflow5gwxs/series-workflow5gwxs-convert-artifact-2038794852/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": "71f2e388-8c1b-43d5-9c35-f66e1e79866a", "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-workflow5gwxs/series-workflow5gwxs-build-action-2763074210/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:16:06 +0000 UTC FinishedAt: 2026-07-31 07:16:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:16:06 +0000 UTC FinishedAt: 2026-07-31 07:16:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:16:06 +0000 UTC FinishedAt: 2026-07-31 07:16:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:16:06 +0000 UTC FinishedAt: 2026-07-31 07:16:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-workflow5gwxs/series-workflow5gwxs-convert-artifact-2220431203/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:16:27 +0000 UTC FinishedAt: 2026-07-31 07:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:16:27 +0000 UTC FinishedAt: 2026-07-31 07:18:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*71f2e388-8c1b-43d5-9c35-f66e1e79866a,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-workflow5gwxs/series-workflow5gwxs-build-action-2763074210/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-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:18:28 +0000 UTC FinishedAt: 2026-07-31 07:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:18:28 +0000 UTC FinishedAt: 2026-07-31 07:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:18:28 +0000 UTC FinishedAt: 2026-07-31 07:37:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:18:28 +0000 UTC FinishedAt: 2026-07-31 07:37:35 +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:*3653f62e-8a41-4a03-944b-2fdc2cbaa1a9,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-workflow5gwxs/series-workflow5gwxs-convert-artifact-2220431203/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": "d54e0336-c591-4d9f-9c0e-3d0c9594349f", "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-workflow5gwxs/series-workflow5gwxs-build-action-309224471/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:18:28 +0000 UTC FinishedAt: 2026-07-31 07:37:26 +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:*3653f62e-8a41-4a03-944b-2fdc2cbaa1a9,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-workflow5gwxs/series-workflow5gwxs-convert-artifact-2220431203/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": "d54e0336-c591-4d9f-9c0e-3d0c9594349f", "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-workflow5gwxs/series-workflow5gwxs-build-action-309224471/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:37:35 +0000 UTC FinishedAt: 2026-07-31 07:37:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:37:35 +0000 UTC FinishedAt: 2026-07-31 07:37:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:37:35 +0000 UTC FinishedAt: 2026-07-31 07:39:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:37:36 +0000 UTC FinishedAt: 2026-07-31 07:39:29 +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:*d54e0336-c591-4d9f-9c0e-3d0c9594349f,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-workflow5gwxs/series-workflow5gwxs-build-action-309224471/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-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:39:40 +0000 UTC FinishedAt: 2026-07-31 07:41:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:39:40 +0000 UTC FinishedAt: 2026-07-31 07:41:01 +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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"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:*71f2e388-8c1b-43d5-9c35-f66e1e79866a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d54e0336-c591-4d9f-9c0e-3d0c9594349f,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-workflow5gwxs/series-workflow5gwxs-build-action-2763074210/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-workflow5gwxs/series-workflow5gwxs-build-action-309224471/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:39:40 +0000 UTC FinishedAt: 2026-07-31 07:39:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:39:40 +0000 UTC FinishedAt: 2026-07-31 07:39:44 +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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"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-workflow5gwxs/series-workflow5gwxs-convert-artifact-608925308/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:39:40 +0000 UTC FinishedAt: 2026-07-31 07:39:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:39:40 +0000 UTC FinishedAt: 2026-07-31 07:39:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:39:40 +0000 UTC FinishedAt: 2026-07-31 07:39:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:39:51 +0000 UTC FinishedAt: 2026-07-31 07:41:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5gwxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_riscv_vcpu_set_reg_sbi_ext","kvm_riscv_vcpu_sbi_validate","kvm_riscv_vcpu_config_ran_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f28fa9ec-911b-48be-8c4d-0f8a1957e9e1","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-31 07:39:51 +0000 UTC FinishedAt: 2026-07-31 07:40:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*71f2e388-8c1b-43d5-9c35-f66e1e79866a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d54e0336-c591-4d9f-9c0e-3d0c9594349f,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-workflow5gwxs/series-workflow5gwxs-build-action-2763074210/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-workflow5gwxs/series-workflow5gwxs-build-action-309224471/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-workflow5gwxs/series-workflow5gwxs-convert-artifact-608925308/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,}