Name: series-workflowkqh2h Phase: Succeeded StartedAt: 2026-08-06 17:42:42 +0000 UTC FinishedAt: 2026-08-06 19:06:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[0] Phase: Succeeded StartedAt: 2026-08-06 17:42:42 +0000 UTC FinishedAt: 2026-08-06 18:23:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 17:42:42 +0000 UTC FinishedAt: 2026-08-06 18:23: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": "26505e1b5b546e2fa9a0296b951ca158460c72d8", "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": "26505e1b5b546e2fa9a0296b951ca158460c72d8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "2a5feea4-06d8-48d1-8e79-9b168248bcd3" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_s390_reinject_machine_check", "s390_do_machine_check" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDE4OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2smIzM0OywKICAgICYjMzQ7czM5MF9kb19tYWNoaW5lX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1hY2hpbmUgY2hlY2sgKE5NSSkgaGFuZGxpbmcgYW5kIHJlaW5qZWN0aW9uIGxvZ2ljIGZvciBzMzkwIEtWTSBndWVzdHMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNDMzMDUzYzgxYTMzNGU4ZjMxZjVjYWNhODAzYTZiNjFlZjU0YmQ3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxODoyMjo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmhcbmluZGV4IDY0NTRjMTUzMTg1NDQuLjc5MTliMmI5YWM5Y2MgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9ubWkuaFxuQEAgLTIyLDYgJiM0MzsyMiw3IEBAXG4gI2RlZmluZSBNQ0NLX0NPREVfU1lTVEVNX0RBTUFHRVx0XHRCSVQoNjMpXG4gI2RlZmluZSBNQ0NLX0NPREVfRVhUX0RBTUFHRVx0XHRCSVQoNjMgLSA1KVxuICNkZWZpbmUgTUNDS19DT0RFX0NQXHRcdFx0QklUKDYzIC0gOSlcbiYjNDM7I2RlZmluZSBNQ0NLX0NPREVfQ0tcdFx0XHRCSVQoNjMgLSAxMSlcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfRVJST1JcdFx0QklUKDYzIC0gMTYpXG4gI2RlZmluZSBNQ0NLX0NPREVfU1RHX0tFWV9FUlJPUlx0XHRCSVQoNjMgLSAxOClcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfREVHUkFEXHRcdEJJVCg2MyAtIDE5KVxuQEAgLTMzLDYgJiM0MzszNCw4IEBAXG4gI2RlZmluZSBNQ0NLX0NPREVfRkNfVkFMSURcdFx0QklUKDYzIC0gNDMpXG4gI2RlZmluZSBNQ0NLX0NPREVfQ1BVX1RJTUVSX1ZBTElEXHRCSVQoNjMgLSA0NilcbiBcbiYjNDM7I2RlZmluZSBNQ0NLX0NPREVfTk9fR1VFU1RcdChNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSB8IE1DQ0tfQ09ERV9DSylcbiYjNDM7XG4gI2lmbmRlZiBfX0FTU0VNQkxFUl9fXG4gXG4gdW5pb24gbWNpIHtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL25taS5jIGIvYXJjaC9zMzkwL2tlcm5lbC9ubWkuY1xuaW5kZXggZTE3YTU5ZDRkNWE0MS4uMTcyOTdhOGI2M2Q5NSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcbkBAIC0zNDQsOCAmIzQzOzM0NCw3IEBAIHN0YXRpYyB2b2lkIG5vdHJhY2UgczM5MF9iYWNrdXBfbWNja19pbmZvKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuIFxuIFx0c2llX3BhZ2UgPSBjb250YWluZXJfb2Yoc2llX2Jsb2NrLCBzdHJ1Y3Qgc2llX3BhZ2UsIHNpZV9ibG9jayk7XG4gXHRtY2NrX2JhY2t1cCA9IFx1MDAyNnNpZV9wYWdlLVx1MDAzZW1jY2tfaW5mbztcbi1cdG1jY2tfYmFja3VwLVx1MDAzZW1jaWMgPSBnZXRfbG93Y29yZSgpLVx1MDAzZW1jY2tfaW50ZXJydXB0aW9uX2NvZGUgXHUwMDI2XG4tXHRcdFx0XHR+KE1DQ0tfQ09ERV9DUCB8IE1DQ0tfQ09ERV9FWFRfREFNQUdFKTtcbiYjNDM7XHRtY2NrX2JhY2t1cC1cdTAwM2VtY2ljID0gZ2V0X2xvd2NvcmUoKS1cdTAwM2VtY2NrX2ludGVycnVwdGlvbl9jb2RlIFx1MDAyNiB+TUNDS19DT0RFX05PX0dVRVNUO1xuIFx0bWNja19iYWNrdXAtXHUwMDNlZXh0X2RhbWFnZV9jb2RlID0gZ2V0X2xvd2NvcmUoKS1cdTAwM2VleHRlcm5hbF9kYW1hZ2VfY29kZTtcbiBcdG1jY2tfYmFja3VwLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzID0gZ2V0X2xvd2NvcmUoKS1cdTAwM2VmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcztcbiB9XG5AQCAtMzU3LDggJiM0MzszNTYsNiBAQCBOT0tQUk9CRV9TWU1CT0woczM5MF9iYWNrdXBfbWNja19pbmZvKTtcbiAjZGVmaW5lIEVEX1NUUF9JU0xBTkRcdDZcdC8qIEV4dGVybmFsIGRhbWFnZSBTVFAgaXNsYW5kIGNoZWNrICovXG4gI2RlZmluZSBFRF9TVFBfU1lOQ1x0N1x0LyogRXh0ZXJuYWwgZGFtYWdlIFNUUCBzeW5jIGNoZWNrICovXG4gXG4tI2RlZmluZSBNQ0NLX0NPREVfTk9fR1VFU1RcdChNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSlcbi1cbiAvKlxuICAqIG1hY2hpbmUgY2hlY2sgaGFuZGxlci5cbiAgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jIGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xuaW5kZXggNzUxNGQ5ZTI0MDNjMS4uMzM3NWE5NTY2MzdiZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbkBAIC0zMDk5LDkgJiM0MzszMDk5LDcgQEAgc3RhdGljIGludCBzZXRfYWRhcHRlcl9pbnQoc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXG4gdm9pZCBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IG1jY2tfdm9sYXRpbGVfaW5mbyAqbWNja19pbmZvKVxuIHtcbi1cdHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyBpbnRpO1xuLVx0c3RydWN0IGt2bV9zMzkwX2lycSBpcnE7XG4tXHRzdHJ1Y3Qga3ZtX3MzOTBfbWNoa19pbmZvICptY2hrO1xuJiM0MztcdHN0cnVjdCBrdm1fczM5MF9pcnEgaXJxID0ge307XG4gXHR1bmlvbiBtY2kgbWNpO1xuIFx0X191NjQgY3IxNCA9IDA7ICAgICAgICAgLyogdXBwZXIgYml0cyBhcmUgbm90IHVzZWQgKi9cbiBcdGludCByYztcbkBAIC0zMTIwLDIwICYjNDM7MzExOCwxNCBAQCB2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0aWYgKG1jaS53KVxuIFx0XHRjcjE0IHw9IENSMTRfV0FSTklOR19TVUJNQVNLO1xuIFxuLVx0bWNoayA9IG1jaS5jayA/IFx1MDAyNmludGkubWNoayA6IFx1MDAyNmlycS51Lm1jaGs7XG4tXHRtY2hrLVx1MDAzZWNyMTQgPSBjcjE0O1xuLVx0bWNoay1cdTAwM2VtY2ljID0gbWNja19pbmZvLVx1MDAzZW1jaWM7XG4tXHRtY2hrLVx1MDAzZWV4dF9kYW1hZ2VfY29kZSA9IG1jY2tfaW5mby1cdTAwM2VleHRfZGFtYWdlX2NvZGU7XG4tXHRtY2hrLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzID0gbWNja19pbmZvLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzO1xuLVx0aWYgKG1jaS5jaykge1xuLVx0XHQvKiBJbmplY3QgdGhlIGZsb2F0aW5nIG1hY2hpbmUgY2hlY2sgKi9cbi1cdFx0aW50aS50eXBlID0gS1ZNX1MzOTBfTUNISztcbi1cdFx0cmMgPSBfX2luamVjdF92bSh2Y3B1LVx1MDAzZWt2bSwgXHUwMDI2aW50aSk7XG4tXHR9IGVsc2Uge1xuLVx0XHQvKiBJbmplY3QgdGhlIG1hY2hpbmUgY2hlY2sgdG8gc3BlY2lmaWVkIHZjcHUgKi9cbi1cdFx0aXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xuLVx0XHRyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsIFx1MDAyNmlycSk7XG4tXHR9XG4mIzQzO1x0aXJxLnUubWNoay5jcjE0ID0gY3IxNDtcbiYjNDM7XHRpcnEudS5tY2hrLm1jaWMgPSBtY2NrX2luZm8tXHUwMDNlbWNpYztcbiYjNDM7XHRpcnEudS5tY2hrLmV4dF9kYW1hZ2VfY29kZSA9IG1jY2tfaW5mby1cdTAwM2VleHRfZGFtYWdlX2NvZGU7XG4mIzQzO1x0aXJxLnUubWNoay5mYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcyA9IG1jY2tfaW5mby1cdTAwM2VmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcztcbiYjNDM7XG4mIzQzO1x0LyogSW5qZWN0IHRoZSBtYWNoaW5lIGNoZWNrIHRvIHNwZWNpZmllZCB2Y3B1ICovXG4mIzQzO1x0aXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xuJiM0MztcdHJjID0ga3ZtX3MzOTBfaW5qZWN0X3ZjcHUodmNwdSwgXHUwMDI2aXJxKTtcbiBcdFdBUk5fT05fT05DRShyYyk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE4OjIyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrJiMzNDssCiAgICAmIzM0O3MzOTBfZG9fbWFjaGluZV9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtYWNoaW5lIGNoZWNrIChOTUkpIGhhbmRsaW5nIGFuZCByZWluamVjdGlvbiBsb2dpYyBmb3IgczM5MCBLVk0gZ3Vlc3RzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzQzMzA1M2M4MWEzMzRlOGYzMWY1Y2FjYTgwM2E2YjYxZWY1NGJkNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMTg6MjI6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmgKaW5kZXggNjQ1NGMxNTMxODU0NC4uNzkxOWIyYjlhYzljYyAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL25taS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9ubWkuaApAQCAtMjIsNiAmIzQzOzIyLDcgQEAKICNkZWZpbmUgTUNDS19DT0RFX1NZU1RFTV9EQU1BR0UJCUJJVCg2MykKICNkZWZpbmUgTUNDS19DT0RFX0VYVF9EQU1BR0UJCUJJVCg2MyAtIDUpCiAjZGVmaW5lIE1DQ0tfQ09ERV9DUAkJCUJJVCg2MyAtIDkpCiYjNDM7I2RlZmluZSBNQ0NLX0NPREVfQ0sJCQlCSVQoNjMgLSAxMSkKICNkZWZpbmUgTUNDS19DT0RFX1NUR19FUlJPUgkJQklUKDYzIC0gMTYpCiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfS0VZX0VSUk9SCQlCSVQoNjMgLSAxOCkKICNkZWZpbmUgTUNDS19DT0RFX1NUR19ERUdSQUQJCUJJVCg2MyAtIDE5KQpAQCAtMzMsNiAmIzQzOzM0LDggQEAKICNkZWZpbmUgTUNDS19DT0RFX0ZDX1ZBTElECQlCSVQoNjMgLSA0MykKICNkZWZpbmUgTUNDS19DT0RFX0NQVV9USU1FUl9WQUxJRAlCSVQoNjMgLSA0NikKIAomIzQzOyNkZWZpbmUgTUNDS19DT0RFX05PX0dVRVNUCShNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSB8IE1DQ0tfQ09ERV9DSykKJiM0MzsKICNpZm5kZWYgX19BU1NFTUJMRVJfXwogCiB1bmlvbiBtY2kgewpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2tlcm5lbC9ubWkuYyBiL2FyY2gvczM5MC9rZXJuZWwvbm1pLmMKaW5kZXggZTE3YTU5ZDRkNWE0MS4uMTcyOTdhOGI2M2Q5NSAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2tlcm5lbC9ubWkuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva2VybmVsL25taS5jCkBAIC0zNDQsOCAmIzQzOzM0NCw3IEBAIHN0YXRpYyB2b2lkIG5vdHJhY2UgczM5MF9iYWNrdXBfbWNja19pbmZvKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCiAJc2llX3BhZ2UgPSBjb250YWluZXJfb2Yoc2llX2Jsb2NrLCBzdHJ1Y3Qgc2llX3BhZ2UsIHNpZV9ibG9jayk7CiAJbWNja19iYWNrdXAgPSAmYW1wO3NpZV9wYWdlLSZndDttY2NrX2luZm87Ci0JbWNja19iYWNrdXAtJmd0O21jaWMgPSBnZXRfbG93Y29yZSgpLSZndDttY2NrX2ludGVycnVwdGlvbl9jb2RlICZhbXA7Ci0JCQkJfihNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSk7CiYjNDM7CW1jY2tfYmFja3VwLSZndDttY2ljID0gZ2V0X2xvd2NvcmUoKS0mZ3Q7bWNja19pbnRlcnJ1cHRpb25fY29kZSAmYW1wOyB+TUNDS19DT0RFX05PX0dVRVNUOwogCW1jY2tfYmFja3VwLSZndDtleHRfZGFtYWdlX2NvZGUgPSBnZXRfbG93Y29yZSgpLSZndDtleHRlcm5hbF9kYW1hZ2VfY29kZTsKIAltY2NrX2JhY2t1cC0mZ3Q7ZmFpbGluZ19zdG9yYWdlX2FkZHJlc3MgPSBnZXRfbG93Y29yZSgpLSZndDtmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzczsKIH0KQEAgLTM1Nyw4ICYjNDM7MzU2LDYgQEAgTk9LUFJPQkVfU1lNQk9MKHMzOTBfYmFja3VwX21jY2tfaW5mbyk7CiAjZGVmaW5lIEVEX1NUUF9JU0xBTkQJNgkvKiBFeHRlcm5hbCBkYW1hZ2UgU1RQIGlzbGFuZCBjaGVjayAqLwogI2RlZmluZSBFRF9TVFBfU1lOQwk3CS8qIEV4dGVybmFsIGRhbWFnZSBTVFAgc3luYyBjaGVjayAqLwogCi0jZGVmaW5lIE1DQ0tfQ09ERV9OT19HVUVTVAkoTUNDS19DT0RFX0NQIHwgTUNDS19DT0RFX0VYVF9EQU1BR0UpCi0KIC8qCiAgKiBtYWNoaW5lIGNoZWNrIGhhbmRsZXIuCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jCmluZGV4IDc1MTRkOWUyNDAzYzEuLjMzNzVhOTU2NjM3YmUgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYwpAQCAtMzA5OSw5ICYjNDM7MzA5OSw3IEBAIHN0YXRpYyBpbnQgc2V0X2FkYXB0ZXJfaW50KHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLAogdm9pZCBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJCQkgICAgIHN0cnVjdCBtY2NrX3ZvbGF0aWxlX2luZm8gKm1jY2tfaW5mbykKIHsKLQlzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0X2luZm8gaW50aTsKLQlzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlycTsKLQlzdHJ1Y3Qga3ZtX3MzOTBfbWNoa19pbmZvICptY2hrOwomIzQzOwlzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlycSA9IHt9OwogCXVuaW9uIG1jaSBtY2k7CiAJX191NjQgY3IxNCA9IDA7ICAgICAgICAgLyogdXBwZXIgYml0cyBhcmUgbm90IHVzZWQgKi8KIAlpbnQgcmM7CkBAIC0zMTIwLDIwICYjNDM7MzExOCwxNCBAQCB2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCWlmIChtY2kudykKIAkJY3IxNCB8PSBDUjE0X1dBUk5JTkdfU1VCTUFTSzsKIAotCW1jaGsgPSBtY2kuY2sgPyAmYW1wO2ludGkubWNoayA6ICZhbXA7aXJxLnUubWNoazsKLQltY2hrLSZndDtjcjE0ID0gY3IxNDsKLQltY2hrLSZndDttY2ljID0gbWNja19pbmZvLSZndDttY2ljOwotCW1jaGstJmd0O2V4dF9kYW1hZ2VfY29kZSA9IG1jY2tfaW5mby0mZ3Q7ZXh0X2RhbWFnZV9jb2RlOwotCW1jaGstJmd0O2ZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzID0gbWNja19pbmZvLSZndDtmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzczsKLQlpZiAobWNpLmNrKSB7Ci0JCS8qIEluamVjdCB0aGUgZmxvYXRpbmcgbWFjaGluZSBjaGVjayAqLwotCQlpbnRpLnR5cGUgPSBLVk1fUzM5MF9NQ0hLOwotCQlyYyA9IF9faW5qZWN0X3ZtKHZjcHUtJmd0O2t2bSwgJmFtcDtpbnRpKTsKLQl9IGVsc2UgewotCQkvKiBJbmplY3QgdGhlIG1hY2hpbmUgY2hlY2sgdG8gc3BlY2lmaWVkIHZjcHUgKi8KLQkJaXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLOwotCQlyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsICZhbXA7aXJxKTsKLQl9CiYjNDM7CWlycS51Lm1jaGsuY3IxNCA9IGNyMTQ7CiYjNDM7CWlycS51Lm1jaGsubWNpYyA9IG1jY2tfaW5mby0mZ3Q7bWNpYzsKJiM0MzsJaXJxLnUubWNoay5leHRfZGFtYWdlX2NvZGUgPSBtY2NrX2luZm8tJmd0O2V4dF9kYW1hZ2VfY29kZTsKJiM0MzsJaXJxLnUubWNoay5mYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcyA9IG1jY2tfaW5mby0mZ3Q7ZmFpbGluZ19zdG9yYWdlX2FkZHJlc3M7CiYjNDM7CiYjNDM7CS8qIEluamVjdCB0aGUgbWFjaGluZSBjaGVjayB0byBzcGVjaWZpZWQgdmNwdSAqLwomIzQzOwlpcnEudHlwZSA9IEtWTV9TMzkwX01DSEs7CiYjNDM7CXJjID0ga3ZtX3MzOTBfaW5qZWN0X3ZjcHUodmNwdSwgJmFtcDtpcnEpOwogCVdBUk5fT05fT05DRShyYyk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ0OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDU3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgczM5MHggTWFjaGluZSBDaGVjayBIYW5kbGluZyBpbiBLVk0qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBzb21lIGNoYW5nZXMgdG8gaG93IHRoZSBzMzkweCBhcmNoaXRlY3R1cmUgaGFuZGxlcyBtYWNoaW5lIGNoZWNrcyAoTk1Jcykgd2l0aGluIHRoZSBLVk0gZW52aXJvbm1lbnQuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdHdlYWtpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGhvc3QgYW5kIGd1ZXN0IHdpdGggcmVzcGVjdCB0byB0aGVzZSBtYWNoaW5lIGNoZWNrIGV4Y2VwdGlvbnMuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRqdXN0aW5nIGEgZmV3IGtleSBhcmVhczogYWRkaW5nIGEgZmxhZyByZWxhdGVkIHRvIG1hY2hpbmUgY2hlY2tzIHRvIGEgc3BlY2lmaWMgZW51bSBpbiBgYXNtL25taS5oYCwgbW9kaWZ5aW5nIHRoZSBsb2dpYyBpbiBga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja2AgdG8gZW5zdXJlIHRoZSBtYWNoaW5lIGNoZWNrIGlzIGluamVjdGVkIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgYW5kIGFsc28gYWx0ZXJpbmcgaG93IG1hY2hpbmUgY2hlY2sgaW5mb3JtYXRpb24gaXMgYmFja2VkIHVwIGluIGBzMzkwX2JhY2t1cF9tY2NrX2luZm9gIGluIGBrZXJuZWwvbm1pLmNgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGZ1enphYmxlLiBTaW5jZSB0aGlzIHRvdWNoZXMgS1ZNIGNvZGUgYW5kIHJlbGF0ZXMgdG8gaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBlcnJvcnMsIGl0IGRlZmluaXRlbHkgZmFsbHMgaW50byBhbiBhcmVhIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmVuZWZpdCBmcm9tIGZ1enppbmcuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBjb2RlIGR1cmluZyBmdXp6aW5nPyBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBpZ25vcmUgY29kZSB0aGF0IGNhbiYjMzk7dCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIEJ1dCwgaXMgS1ZNIG9uIHMzOTB4IFFFTVUgcmVhY2hhYmxlPwoKSXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gY29uZmlybSB0aGUgZnV6emluZyBhcHByb2FjaC4gRmlyc3QsIHNpbmNlIHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBzMzkweCwgYW5kIGRvZXMgcnVuIFZNcywgbXkgZmlyc3QgdGhvdWdodCBpcyBjb3JyZWN0LiBPa2F5LCBzeXprYWxsZXIgKmNhbiogdGFyZ2V0IHMzOTB4IFZNcy4gVGhlbiBJIHJlbWVtYmVyIHRoYXQgUUVNVSBjYW4gZW11bGF0ZSBzMzkweCwgYW5kIHJ1biBLVk0sICppZiogdGhlIGhvc3QgaXMgczM5MHguIFNvLCBpZiB3ZSBhcmUgZnV6emluZyBLVk0gb24gczM5MHgsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZS4KCkNvbnNpZGVyaW5nIHRoZSBwYXRjaCBtb2RpZmllcyBgYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY2AsIGFuZCB0aGF0JiMzOTtzICpLVk0qIGNvZGUsIHdlIGNhbiwgaW4gZmFjdCwgZnV6eiB0aGlzLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgZnVuY3Rpb25zIHRoZW1zZWx2ZXMuIExldCYjMzk7cyBzZWUsIGBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrYCBhbmQgYHMzOTBfYmFja3VwX21jY2tfaW5mb2AgYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZvY3VzLiBOZXh0LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0tWTWAgaXMgZW5hYmxlZCwgd2hpY2ggaXMgc3RhbmRhcmQuIGBhcmNoL3MzOTAva2VybmVsL25taS5jYCBpcyBhbHdheXMgY29tcGlsZWQgZm9yIHMzOTAsIHNvIHRoYXQmIzM5O3MgZ29vZC4gTG9va3MgbGlrZSB3ZSYjMzk7cmUgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTMwNzI9c3RhdGljIGludCBzZXRfYWRhcHRlcl9pbnQoc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDk4LSAqL1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMDk5OnZvaWQga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVjayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMxMDAtXHRcdFx0XHQgICAgIHN0cnVjdCBtY2NrX3ZvbGF0aWxlX2luZm8gKm1jY2tfaW5mbylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NDcyNT1zdGF0aWMgaW50IHZjcHVfcG9zdF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgc2llX3JldHVybilcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDc0NC1cdFx0bWNja19pbmZvID0gXHUwMDI2c2llX3BhZ2UtXHUwMDNlbWNja19pbmZvO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQ3NDU6XHRcdGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2sodmNwdSwgbWNja19pbmZvKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00NzQ2LVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NTc4PXN0YXRpYyBpbmxpbmUgaW50IGt2bV9zMzkwX3VzZV9zY2FfZW50cmllcyh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC01ODYtfVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjU4Nzp2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTU4OC1cdFx0XHRcdCAgICAgc3RydWN0IG1jY2tfdm9sYXRpbGVfaW5mbyAqbWNja19pbmZvKTtcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0xMTg3PXN0YXRpYyBpbnQgZG9fdnNpZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdnNpZV9wYWdlICp2c2llX3BhZ2UsIHN0cnVjdCBnbWFwICpzZylcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMjUwLVx0aWYgKHNpZV9yZXR1cm4gPT0gU0lFNjRfUkVUVVJOX01DQ0spIHtcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjEyNTE6XHRcdGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2sodmNwdSwgXHUwMDI2dnNpZV9wYWdlLVx1MDAzZW1jY2tfaW5mbyk7XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMjUyLVx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogS1ZNL3MzOTAgTWFjaGluZSBDaGVjayBSZS1JbmplY3Rpb24qKgoKUmlnaHQsIHNvIGBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrYCBpcyBjYWxsZWQgZnJvbSB0d28ga2V5IGV4ZWN1dGlvbiBwYXRoczogYHZjcHVfcG9zdF9ydW5gIGFuZCBgZG9fdnNpZV9ydW5gLiBUaGF0IGluc3RhbnRseSBtYWtlcyBpdCBpbnRlcmVzdGluZyBiZWNhdXNlIHRoZXNlIGFyZSBmdW5kYW1lbnRhbCB0byBLVk0mIzM5O3MgczM5MCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgYSBjcml0aWNhbCBhcmVhLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvbnNpZGVyIGl0IGFzIGEgZnV6emluZyB0YXJnZXQ7IHRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIHByYWN0aWNlIGhlcmUuIEFuZCwgeWVzLCBmdW5jdGlvbmFsbHksIGl0IG1ha2VzIHNlbnNlIHRvIHRhcmdldCBpdC4KCk5vdywgbGV0JiMzOTtzIG5hcnJvdyB0aGUgZm9jdXMuIFdlJiMzOTtyZSBvYnZpb3VzbHkgbG9va2luZyBhdCBga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja2AgYXMgdGhlIHByaW1hcnkgZnVuY3Rpb24uIEJ1dCBJIG5lZWQgdG8gYWxzbyBjaGVjayBvdXQgYHMzOTBfYmFja3VwX21jY2tfaW5mb2AuIEhvbGQgb24uLi4gVGhhdCYjMzk7cyBzdGF0aWMsIHdoaWNoIHVzdWFsbHkgbWVhbnMgaXQmIzM5O3Mgbm90IGEgZGlyZWN0IHBvaW50IG9mIGVudHJ5LCBidXQgaXQgY291bGQgc3RpbGwgYmUgaW50ZXJlc3RpbmcgaWYgaXQmIzM5O3MgaW5saW5lZC4gV29ydGggYSBxdWljayBjaGVjayB0byBzZWUgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBtYWluIGZ1bmN0aW9uLCBpZiBhdCBhbGwuIElubGluaW5nIGNvdWxkIGNoYW5nZSB0aGUgZ2FtZSBpbiB0ZXJtcyBvZiBmdXp6aW5nIHBvdGVudGlhbCwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciBhbmQgb3B0aW1pemF0aW9uIHNldHRpbmdzLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnM6IGlzIHRoaXMgc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBhIGRpcmVjdCB0YXJnZXQsIG9yIGluZGlyZWN0bHkgZHVlIHRvIGlubGluaW5nPyBUaW1lIHRvIGxvb2sgYXQgdGhlIGNvZGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7czM5MF9iYWNrdXBfbWNja19pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2tlcm5lbC9ubWkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva2VybmVsL25taS5jPTMyOD1OT0tQUk9CRV9TWU1CT0wobm1pX3JlZ2lzdGVyc192YWxpZCk7XG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zMzItICovXG5hcmNoL3MzOTAva2VybmVsL25taS5jOjMzMzpzdGF0aWMgdm9pZCBub3RyYWNlIHMzOTBfYmFja3VwX21jY2tfaW5mbyhzdHJ1Y3QgcHRfcmVncyAqcmVncylcbmFyY2gvczM5MC9rZXJuZWwvbm1pLmMtMzM0LXtcbi0tXG5hcmNoL3MzOTAva2VybmVsL25taS5jLTM1MC19XG5hcmNoL3MzOTAva2VybmVsL25taS5jOjM1MTpOT0tQUk9CRV9TWU1CT0woczM5MF9iYWNrdXBfbWNja19pbmZvKTtcbmFyY2gvczM5MC9rZXJuZWwvbm1pLmMtMzUyLVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvbm1pLmM9MzYyPXZvaWQgbm90cmFjZSBzMzkwX2RvX21hY2hpbmVfY2hlY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy00NDEtXHRpZiAodGVzdF9jcHVfZmxhZyhDSUZfTUNDS19HVUVTVCkpXG5hcmNoL3MzOTAva2VybmVsL25taS5jOjQ0MjpcdFx0czM5MF9iYWNrdXBfbWNja19pbmZvKHJlZ3MpO1xuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy00NDMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjExNAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFMzOTAgTWFjaGluZSBDaGVjayBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBob3cgbWFjaGluZSBjaGVja3MgYXJlIGhhbmRsZWQgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZm9jdXMgb24gYHMzOTBfYmFja3VwX21jY2tfaW5mb2AsIHdoaWNoIHNlZW1zIGxpa2UgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEhvd2V2ZXIsIEkgc2VlIGl0JiMzOTtzIHN0YXRpYywgYW5kIG5vdCBpbmxpbmVkLCBhbmQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHMzOTBfZG9fbWFjaGluZV9jaGVja2AuIFRoYXQgY2hhbmdlcyB0aGluZ3M7IGl0IGltcGxpZXMgaXQmIzM5O3MgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBhIGxhcmdlciBwcm9jZXNzLgoKQWgsIGBzMzkwX2RvX21hY2hpbmVfY2hlY2tgLi4uIHJpZ2h0LiBUaGF0ICppcyogdGhlIG1haW4gbWFjaGluZSBjaGVjayBoYW5kbGVyLCBpc24mIzM5O3QgaXQ/IFRoYXQgZmVlbHMgbGlrZSBhIG11Y2ggbW9yZSBzaWduaWZpY2FudCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24uIExldCYjMzk7cyBjb25maXJtIHRoYXQuIFllcywgdGhhbmtmdWxseSwgYHMzOTBfZG9fbWFjaGluZV9jaGVja2AgaXMsIGluIGZhY3QsIG5vbi1zdGF0aWMuIEdvb2QuIFRoYXQgc2ltcGxpZmllcyB0aGUgYW5hbHlzaXMgcXVpdGUgYSBiaXQuCgpOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgYGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2tgLi4uIGlzICp0aGF0KiBub24tc3RhdGljPyBZZXMsIGl0IGlzLiBUaGF0JiMzOTtzIGdvb2QsIHRvby4gSXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IHRvIGJlIGludm9sdmVkIGluIHRoZSBLVk0gaW50ZXJhY3Rpb24uCgpHaXZlbiB0aGF0LCBJJiMzOTtsbCBzd2l0Y2ggZ2VhcnMgYW5kIHZlcmlmeSB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSB3aXRoaW4gYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgLiBJJiMzOTtsbCB3YW50IHRvIGNoZWNrIHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AgdG8gdW5kZXJzdGFuZCBpdHMgaW5mbHVlbmNlIG9uIHRoaXMgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vS2NvbmZpZz0xNz1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTE4LVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0yMC1cdGRlZl90cmlzdGF0ZSB5XG4tLVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ2LVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjQ3OmNvbmZpZyBLVk1fUzM5MF9VQ09OVFJPTFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtVc2Vyc3BhY2UgY29udHJvbGxlZCB2aXJ0dWFsIG1hY2hpbmVzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW5uZXIgbW9ub2xvZ3VlOgoKKipLVk0gQ29uZmlndXJhdGlvbiBhbmQgTk1JIEhhbmRsaW5nKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBgS1ZNYC4gVGhhdCYjMzk7cyB0aGUgc2V0dXAsIGdvdCBpdC4gTm93LCBnaXZlbiB0aGF0IGNvbnRleHQsIEkgbmVlZCB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyBOTUlzIGFyZSBoYW5kbGVkIG9uIHMzOTAsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYEtWTWAgYW5kIHRoZSBOTUkgY29kZSBwYXRoLiBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBhcmNoL3MzOTAva2VybmVsL25taS5jYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0JiMzOTtzIGFsd2F5cyBjb21waWxlZCBpbiwgd2hpY2ggaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCBidXQgSSYjMzk7bGwgY29uZmlybSB0aGF0IGluIHRoZSBjb2RlIGl0c2VsZiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIEl0IGlzIGltcGVyYXRpdmUgdGhhdCBJIGFtIGNlcnRhaW4gb2YgdGhlIGNvbmZpZ3VyYXRpb24sIGFzIHRoaXMgdW5kZXJwaW5zIHRoZSBlbnRpcmUgS1ZNIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm1pXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZT0zOT1vYmoteVx0Oj0gaGVhZC5vIHRyYXBzLm8gdGltZS5vIHByb2Nlc3MubyBlYXJseS5vIHNldHVwLm8gaWRsZS5vIHZ0aW1lLm9cbmFyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGU6NDA6b2JqLXlcdCYjNDM7PSBwcm9jZXNzb3IubyBzeXNjYWxsLm8gcHRyYWNlLm8gc2lnbmFsLm8gY3BjbWQubyBlYmNkaWMubyBubWkub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS00MS1vYmoteVx0JiM0Mzs9IGRlYnVnLm8gaXJxLm8gaXBsLm8gZGlzLm8gdmRzby5vIGNwdWZlYXR1cmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjI5CgkJCQkJCQlvdXRwdXQ6IDEwMAoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRhcmdldCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBgbm1pLm9gIGlzIGFsd2F5cyBjb21waWxlZCwgdGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIFRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBjbGVhcmx5IGBLVk1gLiBUaGUgZm9jdXMgc3ltYm9scyBJIG5lZWQgdG8gY29uc2lkZXIgYXJlIGBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrYCBhbmQgYHMzOTBfZG9fbWFjaGluZV9jaGVja2AuIEhtbSwgcmlnaHQsIGBzMzkwX2RvX21hY2hpbmVfY2hlY2tgIGlzIHRoZSBhY3R1YWwgbWFjaGluZSBjaGVjayBoYW5kbGVyLiBGdXp6aW5nIHRoYXQgZGlyZWN0bHkgdGhyb3VnaCBhIG5vcm1hbCBhcHByb2FjaCBtaWdodCBiZSB0cmlja3kgYmVjYXVzZSBpdCYjMzk7cyBhbiBOTUkgaGFuZGxlci4gQnV0LCBjb25zaWRlcmluZyBpdCYjMzk7cyBzMzkwIEtWTSwgc3l6a2FsbGVyIGNvdWxkIGRlZmluaXRlbHkgaGl0IGl0IGlmIGl0IGNhbiBpbmplY3QgbWFjaGluZSBjaGVja3MsIG9yIHBvdGVudGlhbGx5IHRocm91Z2ggb3RoZXIgS1ZNIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4KCkFoLCB5ZXMsIEtWTSAqY2FuKiBpbmplY3QgbWFjaGluZSBjaGVja3MuIFRoYXQgbWFrZXMgdGhpcyBtdWNoIG1vcmUgcHJvbWlzaW5nLiBUaGUgcGF0Y2ggaW4gcXVlc3Rpb24gbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgYnVnIHJlbGF0ZWQgdG8gbWFjaGluZSBjaGVjayByZWluamVjdGlvbiB3aXRoaW4gS1ZNIGd1ZXN0cy4KClRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCBhIGRlZXAgZGl2ZSB3aXRoIGZ1enppbmcuIExldCYjMzk7cyBnZXQgdGhlIHJlc3BvbnNlIHJlYWR5LgoKYGBgCldvcnRoRnV6emluZzogdHJ1ZQpGb2N1c1N5bWJvbHM6IFsmIzM0O2t2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2smIzM0OywgJiMzNDtzMzkwX2RvX21hY2hpbmVfY2hlY2smIzM0O10KRW5hYmxlQ29uZmlnczogWyYjMzQ7S1ZNJiMzNDtdClJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWFjaGluZSBjaGVjayAoTk1JKSBoYW5kbGluZyBhbmQgcmVpbmplY3Rpb24gbG9naWMgZm9yIHMzOTAgS1ZNIGd1ZXN0cy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSB2aXJ0dWFsaXphdGlvbiBmdW5jdGlvbmFsaXR5IHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OwpgYGAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2smIzM0OywKICAgICYjMzQ7czM5MF9kb19tYWNoaW5lX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1hY2hpbmUgY2hlY2sgKE5NSSkgaGFuZGxpbmcgYW5kIHJlaW5qZWN0aW9uIGxvZ2ljIGZvciBzMzkwIEtWTSBndWVzdHMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2smIzM0OywKICAgICYjMzQ7czM5MF9kb19tYWNoaW5lX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1hY2hpbmUgY2hlY2sgKE5NSSkgaGFuZGxpbmcgYW5kIHJlaW5qZWN0aW9uIGxvZ2ljIGZvciBzMzkwIEtWTSBndWVzdHMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMjo1Ny4yNDM5NDU4MDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzI1MjY3MTY1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrXCIsXG4gICAgXCJzMzkwX2RvX21hY2hpbmVfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWNoaW5lIGNoZWNrIChOTUkpIGhhbmRsaW5nIGFuZCByZWluamVjdGlvbiBsb2dpYyBmb3IgczM5MCBLVk0gZ3Vlc3RzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMjo1Ny4yNDM5NTE1NTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjkyMDc5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNDMzMDUzYzgxYTMzNGU4ZjMxZjVjYWNhODAzYTZiNjFlZjU0YmQ3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDYgMTg6MjI6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL25taS5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL25taS5oXFxuaW5kZXggNjQ1NGMxNTMxODU0NC4uNzkxOWIyYjlhYzljYyAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmhcXG4rKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmhcXG5AQCAtMjIsNiArMjIsNyBAQFxcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TWVNURU1fREFNQUdFXFx0XFx0QklUKDYzKVxcbiAjZGVmaW5lIE1DQ0tfQ09ERV9FWFRfREFNQUdFXFx0XFx0QklUKDYzIC0gNSlcXG4gI2RlZmluZSBNQ0NLX0NPREVfQ1BcXHRcXHRcXHRCSVQoNjMgLSA5KVxcbisjZGVmaW5lIE1DQ0tfQ09ERV9DS1xcdFxcdFxcdEJJVCg2MyAtIDExKVxcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfRVJST1JcXHRcXHRCSVQoNjMgLSAxNilcXG4gI2RlZmluZSBNQ0NLX0NPREVfU1RHX0tFWV9FUlJPUlxcdFxcdEJJVCg2MyAtIDE4KVxcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfREVHUkFEXFx0XFx0QklUKDYzIC0gMTkpXFxuQEAgLTMzLDYgKzM0LDggQEBcXG4gI2RlZmluZSBNQ0NLX0NPREVfRkNfVkFMSURcXHRcXHRCSVQoNjMgLSA0MylcXG4gI2RlZmluZSBNQ0NLX0NPREVfQ1BVX1RJTUVSX1ZBTElEXFx0QklUKDYzIC0gNDYpXFxuIFxcbisjZGVmaW5lIE1DQ0tfQ09ERV9OT19HVUVTVFxcdChNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSB8IE1DQ0tfQ09ERV9DSylcXG4rXFxuICNpZm5kZWYgX19BU1NFTUJMRVJfX1xcbiBcXG4gdW5pb24gbWNpIHtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2tlcm5lbC9ubWkuYyBiL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcXG5pbmRleCBlMTdhNTlkNGQ1YTQxLi4xNzI5N2E4YjYzZDk1IDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcXG4rKysgYi9hcmNoL3MzOTAva2VybmVsL25taS5jXFxuQEAgLTM0NCw4ICszNDQsNyBAQCBzdGF0aWMgdm9pZCBub3RyYWNlIHMzOTBfYmFja3VwX21jY2tfaW5mbyhzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4gXFxuIFxcdHNpZV9wYWdlID0gY29udGFpbmVyX29mKHNpZV9ibG9jaywgc3RydWN0IHNpZV9wYWdlLCBzaWVfYmxvY2spO1xcbiBcXHRtY2NrX2JhY2t1cCA9IFxcdTAwMjZzaWVfcGFnZS1cXHUwMDNlbWNja19pbmZvO1xcbi1cXHRtY2NrX2JhY2t1cC1cXHUwMDNlbWNpYyA9IGdldF9sb3djb3JlKCktXFx1MDAzZW1jY2tfaW50ZXJydXB0aW9uX2NvZGUgXFx1MDAyNlxcbi1cXHRcXHRcXHRcXHR+KE1DQ0tfQ09ERV9DUCB8IE1DQ0tfQ09ERV9FWFRfREFNQUdFKTtcXG4rXFx0bWNja19iYWNrdXAtXFx1MDAzZW1jaWMgPSBnZXRfbG93Y29yZSgpLVxcdTAwM2VtY2NrX2ludGVycnVwdGlvbl9jb2RlIFxcdTAwMjYgfk1DQ0tfQ09ERV9OT19HVUVTVDtcXG4gXFx0bWNja19iYWNrdXAtXFx1MDAzZWV4dF9kYW1hZ2VfY29kZSA9IGdldF9sb3djb3JlKCktXFx1MDAzZWV4dGVybmFsX2RhbWFnZV9jb2RlO1xcbiBcXHRtY2NrX2JhY2t1cC1cXHUwMDNlZmFpbGluZ19zdG9yYWdlX2FkZHJlc3MgPSBnZXRfbG93Y29yZSgpLVxcdTAwM2VmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcztcXG4gfVxcbkBAIC0zNTcsOCArMzU2LDYgQEAgTk9LUFJPQkVfU1lNQk9MKHMzOTBfYmFja3VwX21jY2tfaW5mbyk7XFxuICNkZWZpbmUgRURfU1RQX0lTTEFORFxcdDZcXHQvKiBFeHRlcm5hbCBkYW1hZ2UgU1RQIGlzbGFuZCBjaGVjayAqL1xcbiAjZGVmaW5lIEVEX1NUUF9TWU5DXFx0N1xcdC8qIEV4dGVybmFsIGRhbWFnZSBTVFAgc3luYyBjaGVjayAqL1xcbiBcXG4tI2RlZmluZSBNQ0NLX0NPREVfTk9fR1VFU1RcXHQoTUNDS19DT0RFX0NQIHwgTUNDS19DT0RFX0VYVF9EQU1BR0UpXFxuLVxcbiAvKlxcbiAgKiBtYWNoaW5lIGNoZWNrIGhhbmRsZXIuXFxuICAqL1xcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jIGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xcbmluZGV4IDc1MTRkOWUyNDAzYzEuLjMzNzVhOTU2NjM3YmUgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcXG5AQCAtMzA5OSw5ICszMDk5LDcgQEAgc3RhdGljIGludCBzZXRfYWRhcHRlcl9pbnQoc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXFxuIHZvaWQga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVjayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG1jY2tfdm9sYXRpbGVfaW5mbyAqbWNja19pbmZvKVxcbiB7XFxuLVxcdHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyBpbnRpO1xcbi1cXHRzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlycTtcXG4tXFx0c3RydWN0IGt2bV9zMzkwX21jaGtfaW5mbyAqbWNoaztcXG4rXFx0c3RydWN0IGt2bV9zMzkwX2lycSBpcnEgPSB7fTtcXG4gXFx0dW5pb24gbWNpIG1jaTtcXG4gXFx0X191NjQgY3IxNCA9IDA7ICAgICAgICAgLyogdXBwZXIgYml0cyBhcmUgbm90IHVzZWQgKi9cXG4gXFx0aW50IHJjO1xcbkBAIC0zMTIwLDIwICszMTE4LDE0IEBAIHZvaWQga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVjayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdGlmIChtY2kudylcXG4gXFx0XFx0Y3IxNCB8PSBDUjE0X1dBUk5JTkdfU1VCTUFTSztcXG4gXFxuLVxcdG1jaGsgPSBtY2kuY2sgPyBcXHUwMDI2aW50aS5tY2hrIDogXFx1MDAyNmlycS51Lm1jaGs7XFxuLVxcdG1jaGstXFx1MDAzZWNyMTQgPSBjcjE0O1xcbi1cXHRtY2hrLVxcdTAwM2VtY2ljID0gbWNja19pbmZvLVxcdTAwM2VtY2ljO1xcbi1cXHRtY2hrLVxcdTAwM2VleHRfZGFtYWdlX2NvZGUgPSBtY2NrX2luZm8tXFx1MDAzZWV4dF9kYW1hZ2VfY29kZTtcXG4tXFx0bWNoay1cXHUwMDNlZmFpbGluZ19zdG9yYWdlX2FkZHJlc3MgPSBtY2NrX2luZm8tXFx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzO1xcbi1cXHRpZiAobWNpLmNrKSB7XFxuLVxcdFxcdC8qIEluamVjdCB0aGUgZmxvYXRpbmcgbWFjaGluZSBjaGVjayAqL1xcbi1cXHRcXHRpbnRpLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xcbi1cXHRcXHRyYyA9IF9faW5qZWN0X3ZtKHZjcHUtXFx1MDAzZWt2bSwgXFx1MDAyNmludGkpO1xcbi1cXHR9IGVsc2Uge1xcbi1cXHRcXHQvKiBJbmplY3QgdGhlIG1hY2hpbmUgY2hlY2sgdG8gc3BlY2lmaWVkIHZjcHUgKi9cXG4tXFx0XFx0aXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xcbi1cXHRcXHRyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsIFxcdTAwMjZpcnEpO1xcbi1cXHR9XFxuK1xcdGlycS51Lm1jaGsuY3IxNCA9IGNyMTQ7XFxuK1xcdGlycS51Lm1jaGsubWNpYyA9IG1jY2tfaW5mby1cXHUwMDNlbWNpYztcXG4rXFx0aXJxLnUubWNoay5leHRfZGFtYWdlX2NvZGUgPSBtY2NrX2luZm8tXFx1MDAzZWV4dF9kYW1hZ2VfY29kZTtcXG4rXFx0aXJxLnUubWNoay5mYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcyA9IG1jY2tfaW5mby1cXHUwMDNlZmFpbGluZ19zdG9yYWdlX2FkZHJlc3M7XFxuK1xcbitcXHQvKiBJbmplY3QgdGhlIG1hY2hpbmUgY2hlY2sgdG8gc3BlY2lmaWVkIHZjcHUgKi9cXG4rXFx0aXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xcbitcXHRyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsIFxcdTAwMjZpcnEpO1xcbiBcXHRXQVJOX09OX09OQ0UocmMpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMjo1OC40NzM4Nzc3MDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNjAyMjczMTUxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrXCIsXG4gICAgXCJzMzkwX2RvX21hY2hpbmVfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWNoaW5lIGNoZWNrIChOTUkpIGhhbmRsaW5nIGFuZCByZWluamVjdGlvbiBsb2dpYyBmb3IgczM5MCBLVk0gZ3Vlc3RzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNDMzMDUzYzgxYTMzNGU4ZjMxZjVjYWNhODAzYTZiNjFlZjU0YmQ3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxODoyMjo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9ubWkuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9ubWkuaFxuaW5kZXggNjQ1NGMxNTMxODU0NC4uNzkxOWIyYjlhYzljYyAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9ubWkuaFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL25taS5oXG5AQCAtMjIsNiArMjIsNyBAQFxuICNkZWZpbmUgTUNDS19DT0RFX1NZU1RFTV9EQU1BR0VcdFx0QklUKDYzKVxuICNkZWZpbmUgTUNDS19DT0RFX0VYVF9EQU1BR0VcdFx0QklUKDYzIC0gNSlcbiAjZGVmaW5lIE1DQ0tfQ09ERV9DUFx0XHRcdEJJVCg2MyAtIDkpXG4rI2RlZmluZSBNQ0NLX0NPREVfQ0tcdFx0XHRCSVQoNjMgLSAxMSlcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfRVJST1JcdFx0QklUKDYzIC0gMTYpXG4gI2RlZmluZSBNQ0NLX0NPREVfU1RHX0tFWV9FUlJPUlx0XHRCSVQoNjMgLSAxOClcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfREVHUkFEXHRcdEJJVCg2MyAtIDE5KVxuQEAgLTMzLDYgKzM0LDggQEBcbiAjZGVmaW5lIE1DQ0tfQ09ERV9GQ19WQUxJRFx0XHRCSVQoNjMgLSA0MylcbiAjZGVmaW5lIE1DQ0tfQ09ERV9DUFVfVElNRVJfVkFMSURcdEJJVCg2MyAtIDQ2KVxuIFxuKyNkZWZpbmUgTUNDS19DT0RFX05PX0dVRVNUXHQoTUNDS19DT0RFX0NQIHwgTUNDS19DT0RFX0VYVF9EQU1BR0UgfCBNQ0NLX0NPREVfQ0spXG4rXG4gI2lmbmRlZiBfX0FTU0VNQkxFUl9fXG4gXG4gdW5pb24gbWNpIHtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL25taS5jIGIvYXJjaC9zMzkwL2tlcm5lbC9ubWkuY1xuaW5kZXggZTE3YTU5ZDRkNWE0MS4uMTcyOTdhOGI2M2Q5NSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcbisrKyBiL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcbkBAIC0zNDQsOCArMzQ0LDcgQEAgc3RhdGljIHZvaWQgbm90cmFjZSBzMzkwX2JhY2t1cF9tY2NrX2luZm8oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4gXG4gXHRzaWVfcGFnZSA9IGNvbnRhaW5lcl9vZihzaWVfYmxvY2ssIHN0cnVjdCBzaWVfcGFnZSwgc2llX2Jsb2NrKTtcbiBcdG1jY2tfYmFja3VwID0gXHUwMDI2c2llX3BhZ2UtXHUwMDNlbWNja19pbmZvO1xuLVx0bWNja19iYWNrdXAtXHUwMDNlbWNpYyA9IGdldF9sb3djb3JlKCktXHUwMDNlbWNja19pbnRlcnJ1cHRpb25fY29kZSBcdTAwMjZcbi1cdFx0XHRcdH4oTUNDS19DT0RFX0NQIHwgTUNDS19DT0RFX0VYVF9EQU1BR0UpO1xuK1x0bWNja19iYWNrdXAtXHUwMDNlbWNpYyA9IGdldF9sb3djb3JlKCktXHUwMDNlbWNja19pbnRlcnJ1cHRpb25fY29kZSBcdTAwMjYgfk1DQ0tfQ09ERV9OT19HVUVTVDtcbiBcdG1jY2tfYmFja3VwLVx1MDAzZWV4dF9kYW1hZ2VfY29kZSA9IGdldF9sb3djb3JlKCktXHUwMDNlZXh0ZXJuYWxfZGFtYWdlX2NvZGU7XG4gXHRtY2NrX2JhY2t1cC1cdTAwM2VmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcyA9IGdldF9sb3djb3JlKCktXHUwMDNlZmFpbGluZ19zdG9yYWdlX2FkZHJlc3M7XG4gfVxuQEAgLTM1Nyw4ICszNTYsNiBAQCBOT0tQUk9CRV9TWU1CT0woczM5MF9iYWNrdXBfbWNja19pbmZvKTtcbiAjZGVmaW5lIEVEX1NUUF9JU0xBTkRcdDZcdC8qIEV4dGVybmFsIGRhbWFnZSBTVFAgaXNsYW5kIGNoZWNrICovXG4gI2RlZmluZSBFRF9TVFBfU1lOQ1x0N1x0LyogRXh0ZXJuYWwgZGFtYWdlIFNUUCBzeW5jIGNoZWNrICovXG4gXG4tI2RlZmluZSBNQ0NLX0NPREVfTk9fR1VFU1RcdChNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSlcbi1cbiAvKlxuICAqIG1hY2hpbmUgY2hlY2sgaGFuZGxlci5cbiAgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jIGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xuaW5kZXggNzUxNGQ5ZTI0MDNjMS4uMzM3NWE5NTY2MzdiZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbisrKyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbkBAIC0zMDk5LDkgKzMwOTksNyBAQCBzdGF0aWMgaW50IHNldF9hZGFwdGVyX2ludChzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcbiB2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgbWNja192b2xhdGlsZV9pbmZvICptY2NrX2luZm8pXG4ge1xuLVx0c3RydWN0IGt2bV9zMzkwX2ludGVycnVwdF9pbmZvIGludGk7XG4tXHRzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlycTtcbi1cdHN0cnVjdCBrdm1fczM5MF9tY2hrX2luZm8gKm1jaGs7XG4rXHRzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlycSA9IHt9O1xuIFx0dW5pb24gbWNpIG1jaTtcbiBcdF9fdTY0IGNyMTQgPSAwOyAgICAgICAgIC8qIHVwcGVyIGJpdHMgYXJlIG5vdCB1c2VkICovXG4gXHRpbnQgcmM7XG5AQCAtMzEyMCwyMCArMzExOCwxNCBAQCB2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0aWYgKG1jaS53KVxuIFx0XHRjcjE0IHw9IENSMTRfV0FSTklOR19TVUJNQVNLO1xuIFxuLVx0bWNoayA9IG1jaS5jayA/IFx1MDAyNmludGkubWNoayA6IFx1MDAyNmlycS51Lm1jaGs7XG4tXHRtY2hrLVx1MDAzZWNyMTQgPSBjcjE0O1xuLVx0bWNoay1cdTAwM2VtY2ljID0gbWNja19pbmZvLVx1MDAzZW1jaWM7XG4tXHRtY2hrLVx1MDAzZWV4dF9kYW1hZ2VfY29kZSA9IG1jY2tfaW5mby1cdTAwM2VleHRfZGFtYWdlX2NvZGU7XG4tXHRtY2hrLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzID0gbWNja19pbmZvLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzO1xuLVx0aWYgKG1jaS5jaykge1xuLVx0XHQvKiBJbmplY3QgdGhlIGZsb2F0aW5nIG1hY2hpbmUgY2hlY2sgKi9cbi1cdFx0aW50aS50eXBlID0gS1ZNX1MzOTBfTUNISztcbi1cdFx0cmMgPSBfX2luamVjdF92bSh2Y3B1LVx1MDAzZWt2bSwgXHUwMDI2aW50aSk7XG4tXHR9IGVsc2Uge1xuLVx0XHQvKiBJbmplY3QgdGhlIG1hY2hpbmUgY2hlY2sgdG8gc3BlY2lmaWVkIHZjcHUgKi9cbi1cdFx0aXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xuLVx0XHRyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsIFx1MDAyNmlycSk7XG4tXHR9XG4rXHRpcnEudS5tY2hrLmNyMTQgPSBjcjE0O1xuK1x0aXJxLnUubWNoay5tY2ljID0gbWNja19pbmZvLVx1MDAzZW1jaWM7XG4rXHRpcnEudS5tY2hrLmV4dF9kYW1hZ2VfY29kZSA9IG1jY2tfaW5mby1cdTAwM2VleHRfZGFtYWdlX2NvZGU7XG4rXHRpcnEudS5tY2hrLmZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzID0gbWNja19pbmZvLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzO1xuK1xuK1x0LyogSW5qZWN0IHRoZSBtYWNoaW5lIGNoZWNrIHRvIHNwZWNpZmllZCB2Y3B1ICovXG4rXHRpcnEudHlwZSA9IEtWTV9TMzkwX01DSEs7XG4rXHRyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsIFx1MDAyNmlycSk7XG4gXHRXQVJOX09OX09OQ0UocmMpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE4OjIyOjU4LjQ3Mzg3OTEyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5Mzg3NjM1OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggZm9yIHMzOTB4IE1hY2hpbmUgQ2hlY2sgSGFuZGxpbmcgaW4gS1ZNKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIGhvdyB0aGUgczM5MHggYXJjaGl0ZWN0dXJlIGhhbmRsZXMgbWFjaGluZSBjaGVja3MgKE5NSXMpIHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50LiBTcGVjaWZpY2FsbHksIGl0J3MgdHdlYWtpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGhvc3QgYW5kIGd1ZXN0IHdpdGggcmVzcGVjdCB0byB0aGVzZSBtYWNoaW5lIGNoZWNrIGV4Y2VwdGlvbnMuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGp1c3RpbmcgYSBmZXcga2V5IGFyZWFzOiBhZGRpbmcgYSBmbGFnIHJlbGF0ZWQgdG8gbWFjaGluZSBjaGVja3MgdG8gYSBzcGVjaWZpYyBlbnVtIGluIGBhc20vbm1pLmhgLCBtb2RpZnlpbmcgdGhlIGxvZ2ljIGluIGBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrYCB0byBlbnN1cmUgdGhlIG1hY2hpbmUgY2hlY2sgaXMgaW5qZWN0ZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCBhbmQgYWxzbyBhbHRlcmluZyBob3cgbWFjaGluZSBjaGVjayBpbmZvcm1hdGlvbiBpcyBiYWNrZWQgdXAgaW4gYHMzOTBfYmFja3VwX21jY2tfaW5mb2AgaW4gYGtlcm5lbC9ubWkuY2AuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBmdXp6YWJsZS4gU2luY2UgdGhpcyB0b3VjaGVzIEtWTSBjb2RlIGFuZCByZWxhdGVzIHRvIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgZXJyb3JzLCBpdCBkZWZpbml0ZWx5IGZhbGxzIGludG8gYW4gYXJlYSB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgY29kZSBkdXJpbmcgZnV6emluZz8gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gaWdub3JlIGNvZGUgdGhhdCBjYW4ndCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIEJ1dCwgaXMgS1ZNIG9uIHMzOTB4IFFFTVUgcmVhY2hhYmxlP1xuXG5JdCBsb29rcyBsaWtlIEkgbmVlZCB0byBjb25maXJtIHRoZSBmdXp6aW5nIGFwcHJvYWNoLiBGaXJzdCwgc2luY2Ugc3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IHMzOTB4LCBhbmQgZG9lcyBydW4gVk1zLCBteSBmaXJzdCB0aG91Z2h0IGlzIGNvcnJlY3QuIE9rYXksIHN5emthbGxlciAqY2FuKiB0YXJnZXQgczM5MHggVk1zLiBUaGVuIEkgcmVtZW1iZXIgdGhhdCBRRU1VIGNhbiBlbXVsYXRlIHMzOTB4LCBhbmQgcnVuIEtWTSwgKmlmKiB0aGUgaG9zdCBpcyBzMzkweC4gU28sIGlmIHdlIGFyZSBmdXp6aW5nIEtWTSBvbiBzMzkweCwgdGhpcyBpcyAqZGVmaW5pdGVseSogcmVhY2hhYmxlLlxuXG5Db25zaWRlcmluZyB0aGUgcGF0Y2ggbW9kaWZpZXMgYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgLCBhbmQgdGhhdCdzICpLVk0qIGNvZGUsIHdlIGNhbiwgaW4gZmFjdCwgZnV6eiB0aGlzLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBMZXQncyBzZWUsIGBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrYCBhbmQgYHMzOTBfYmFja3VwX21jY2tfaW5mb2AgYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZvY3VzLiBOZXh0LCBsZXQncyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfS1ZNYCBpcyBlbmFibGVkLCB3aGljaCBpcyBzdGFuZGFyZC4gYGFyY2gvczM5MC9rZXJuZWwvbm1pLmNgIGlzIGFsd2F5cyBjb21waWxlZCBmb3IgczM5MCwgc28gdGhhdCdzIGdvb2QuIExvb2tzIGxpa2Ugd2UncmUgc2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQ5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTg6MjM6MDguNDEyNjQ0NzE1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODEyNzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zMDcyPXN0YXRpYyBpbnQgc2V0X2FkYXB0ZXJfaW50KHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDk4LSAqL1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzA5OTp2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzEwMC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtY2NrX3ZvbGF0aWxlX2luZm8gKm1jY2tfaW5mbylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00NzI1PXN0YXRpYyBpbnQgdmNwdV9wb3N0X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzaWVfcmV0dXJuKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQ3NDQtXFx0XFx0bWNja19pbmZvID0gXFx1MDAyNnNpZV9wYWdlLVxcdTAwM2VtY2NrX2luZm87XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQ3NDU6XFx0XFx0a3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVjayh2Y3B1LCBtY2NrX2luZm8pO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00NzQ2LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTU3OD1zdGF0aWMgaW5saW5lIGludCBrdm1fczM5MF91c2Vfc2NhX2VudHJpZXModm9pZClcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC01ODYtfVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaDo1ODc6dm9pZCBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtNTg4LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG1jY2tfdm9sYXRpbGVfaW5mbyAqbWNja19pbmZvKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jPTExODc9c3RhdGljIGludCBkb192c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSwgc3RydWN0IGdtYXAgKnNnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTI1MC1cXHRpZiAoc2llX3JldHVybiA9PSBTSUU2NF9SRVRVUk5fTUNDSykge1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjEyNTE6XFx0XFx0a3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVjayh2Y3B1LCBcXHUwMDI2dnNpZV9wYWdlLVxcdTAwM2VtY2NrX2luZm8pO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTEyNTItXFx0XFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE4OjIzOjA4LjQ1NjQ1OTU0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MTc3MzI5NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogS1ZNL3MzOTAgTWFjaGluZSBDaGVjayBSZS1JbmplY3Rpb24qKlxuXG5SaWdodCwgc28gYGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2tgIGlzIGNhbGxlZCBmcm9tIHR3byBrZXkgZXhlY3V0aW9uIHBhdGhzOiBgdmNwdV9wb3N0X3J1bmAgYW5kIGBkb192c2llX3J1bmAuIFRoYXQgaW5zdGFudGx5IG1ha2VzIGl0IGludGVyZXN0aW5nIGJlY2F1c2UgdGhlc2UgYXJlIGZ1bmRhbWVudGFsIHRvIEtWTSdzIHMzOTAgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIGEgY3JpdGljYWwgYXJlYS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjb25zaWRlciBpdCBhcyBhIGZ1enppbmcgdGFyZ2V0OyB0aGF0J3MgdGhlIHN0YW5kYXJkIHByYWN0aWNlIGhlcmUuIEFuZCwgeWVzLCBmdW5jdGlvbmFsbHksIGl0IG1ha2VzIHNlbnNlIHRvIHRhcmdldCBpdC5cblxuTm93LCBsZXQncyBuYXJyb3cgdGhlIGZvY3VzLiBXZSdyZSBvYnZpb3VzbHkgbG9va2luZyBhdCBga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja2AgYXMgdGhlIHByaW1hcnkgZnVuY3Rpb24uIEJ1dCBJIG5lZWQgdG8gYWxzbyBjaGVjayBvdXQgYHMzOTBfYmFja3VwX21jY2tfaW5mb2AuIEhvbGQgb24uLi4gVGhhdCdzIHN0YXRpYywgd2hpY2ggdXN1YWxseSBtZWFucyBpdCdzIG5vdCBhIGRpcmVjdCBwb2ludCBvZiBlbnRyeSwgYnV0IGl0IGNvdWxkIHN0aWxsIGJlIGludGVyZXN0aW5nIGlmIGl0J3MgaW5saW5lZC4gV29ydGggYSBxdWljayBjaGVjayB0byBzZWUgaG93IGl0J3MgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIG1haW4gZnVuY3Rpb24sIGlmIGF0IGFsbC4gSW5saW5pbmcgY291bGQgY2hhbmdlIHRoZSBnYW1lIGluIHRlcm1zIG9mIGZ1enppbmcgcG90ZW50aWFsLCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyIGFuZCBvcHRpbWl6YXRpb24gc2V0dGluZ3MuIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGEgZGlyZWN0IHRhcmdldCwgb3IgaW5kaXJlY3RseSBkdWUgdG8gaW5saW5pbmc/IFRpbWUgdG8gbG9vayBhdCB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6NTI5OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMzoxMy44NzQxOTUyODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2MDEwMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiczM5MF9iYWNrdXBfbWNja19pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rZXJuZWwvbm1pLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2tlcm5lbC9ubWkuYz0zMjg9Tk9LUFJPQkVfU1lNQk9MKG5taV9yZWdpc3RlcnNfdmFsaWQpO1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zMzItICovXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYzozMzM6c3RhdGljIHZvaWQgbm90cmFjZSBzMzkwX2JhY2t1cF9tY2NrX2luZm8oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zMzQte1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zNTAtfVxcbmFyY2gvczM5MC9rZXJuZWwvbm1pLmM6MzUxOk5PS1BST0JFX1NZTUJPTChzMzkwX2JhY2t1cF9tY2NrX2luZm8pO1xcbmFyY2gvczM5MC9rZXJuZWwvbm1pLmMtMzUyLVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYz0zNjI9dm9pZCBub3RyYWNlIHMzOTBfZG9fbWFjaGluZV9jaGVjayhzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvbm1pLmMtNDQxLVxcdGlmICh0ZXN0X2NwdV9mbGFnKENJRl9NQ0NLX0dVRVNUKSlcXG5hcmNoL3MzOTAva2VybmVsL25taS5jOjQ0MjpcXHRcXHRzMzkwX2JhY2t1cF9tY2NrX2luZm8ocmVncyk7XFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy00NDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE4OjIzOjEzLjkxNjgwMDI1MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNzMyNTk1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTMzkwIE1hY2hpbmUgQ2hlY2sgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIGhvdyBtYWNoaW5lIGNoZWNrcyBhcmUgaGFuZGxlZCBvbiB0aGUgczM5MCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmb2N1cyBvbiBgczM5MF9iYWNrdXBfbWNja19pbmZvYCwgd2hpY2ggc2VlbXMgbGlrZSBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gSG93ZXZlciwgSSBzZWUgaXQncyBzdGF0aWMsIGFuZCBub3QgaW5saW5lZCwgYW5kIGl0J3MgY2FsbGVkIGZyb20gYHMzOTBfZG9fbWFjaGluZV9jaGVja2AuIFRoYXQgY2hhbmdlcyB0aGluZ3M7IGl0IGltcGxpZXMgaXQncyB1c2VkIGludGVybmFsbHkgd2l0aGluIGEgbGFyZ2VyIHByb2Nlc3MuXG5cbkFoLCBgczM5MF9kb19tYWNoaW5lX2NoZWNrYC4uLiByaWdodC4gVGhhdCAqaXMqIHRoZSBtYWluIG1hY2hpbmUgY2hlY2sgaGFuZGxlciwgaXNuJ3QgaXQ/IFRoYXQgZmVlbHMgbGlrZSBhIG11Y2ggbW9yZSBzaWduaWZpY2FudCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24uIExldCdzIGNvbmZpcm0gdGhhdC4gWWVzLCB0aGFua2Z1bGx5LCBgczM5MF9kb19tYWNoaW5lX2NoZWNrYCBpcywgaW4gZmFjdCwgbm9uLXN0YXRpYy4gR29vZC4gVGhhdCBzaW1wbGlmaWVzIHRoZSBhbmFseXNpcyBxdWl0ZSBhIGJpdC5cblxuTm93LCBsZXQncyBzZWUgYWJvdXQgYGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2tgLi4uIGlzICp0aGF0KiBub24tc3RhdGljPyBZZXMsIGl0IGlzLiBUaGF0J3MgZ29vZCwgdG9vLiBJdCBtZWFucyBpdCdzIGxpa2VseSB0byBiZSBpbnZvbHZlZCBpbiB0aGUgS1ZNIGludGVyYWN0aW9uLlxuXG5HaXZlbiB0aGF0LCBJJ2xsIHN3aXRjaCBnZWFycyBhbmQgdmVyaWZ5IHRoZSBLVk0gY29uZmlndXJhdGlvbiBmb3IgdGhlIGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY2AuIEknbGwgd2FudCB0byBjaGVjayB0aGUgYEtWTWAgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIGBhcmNoL3MzOTAva3ZtL0tjb25maWdgIHRvIHVuZGVyc3RhbmQgaXRzIGluZmx1ZW5jZSBvbiB0aGlzIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTg6MjM6MTkuMjkwMDYzMDQ5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjg1NTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vS2NvbmZpZz0xNz1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0yMC1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ2LVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTg6MjM6MTkuMzMzNzUyMzU1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzkxNDY5NDg3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbm5lciBtb25vbG9ndWU6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gYW5kIE5NSSBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGBLVk1gLiBUaGF0J3MgdGhlIHNldHVwLCBnb3QgaXQuIE5vdywgZ2l2ZW4gdGhhdCBjb250ZXh0LCBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgTk1JcyBhcmUgaGFuZGxlZCBvbiBzMzkwLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYEtWTWAgYW5kIHRoZSBOTUkgY29kZSBwYXRoLiBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gYGFyY2gvczM5MC9rZXJuZWwvbm1pLmNgLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQncyBhbHdheXMgY29tcGlsZWQgaW4sIHdoaWNoIGlzIHRoZSBleHBlY3RlZCBiZWhhdmlvciwgYnV0IEknbGwgY29uZmlybSB0aGF0IGluIHRoZSBjb2RlIGl0c2VsZiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIEl0IGlzIGltcGVyYXRpdmUgdGhhdCBJIGFtIGNlcnRhaW4gb2YgdGhlIGNvbmZpZ3VyYXRpb24sIGFzIHRoaXMgdW5kZXJwaW5zIHRoZSBlbnRpcmUgS1ZNIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgyNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE4OjIzOjI3LjI0ODQ0OTU0NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwMjk0NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibm1pXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZT0zOT1vYmoteVxcdDo9IGhlYWQubyB0cmFwcy5vIHRpbWUubyBwcm9jZXNzLm8gZWFybHkubyBzZXR1cC5vIGlkbGUubyB2dGltZS5vXFxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZTo0MDpvYmoteVxcdCs9IHByb2Nlc3Nvci5vIHN5c2NhbGwubyBwdHJhY2UubyBzaWduYWwubyBjcGNtZC5vIGViY2RpYy5vIG5taS5vXFxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS00MS1vYmoteVxcdCs9IGRlYnVnLm8gaXJxLm8gaXBsLm8gZGlzLm8gdmRzby5vIGNwdWZlYXR1cmUub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMzoyNy4yOTI0ODI2MjJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEyNTAxNTk2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRhcmdldCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIGBubWkub2AgaXMgYWx3YXlzIGNvbXBpbGVkLCB0aGF0J3MgZ29vZCB0byBrbm93LiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgY2xlYXJseSBgS1ZNYC4gVGhlIGZvY3VzIHN5bWJvbHMgSSBuZWVkIHRvIGNvbnNpZGVyIGFyZSBga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja2AgYW5kIGBzMzkwX2RvX21hY2hpbmVfY2hlY2tgLiBIbW0sIHJpZ2h0LCBgczM5MF9kb19tYWNoaW5lX2NoZWNrYCBpcyB0aGUgYWN0dWFsIG1hY2hpbmUgY2hlY2sgaGFuZGxlci4gRnV6emluZyB0aGF0IGRpcmVjdGx5IHRocm91Z2ggYSBub3JtYWwgYXBwcm9hY2ggbWlnaHQgYmUgdHJpY2t5IGJlY2F1c2UgaXQncyBhbiBOTUkgaGFuZGxlci4gQnV0LCBjb25zaWRlcmluZyBpdCdzIHMzOTAgS1ZNLCBzeXprYWxsZXIgY291bGQgZGVmaW5pdGVseSBoaXQgaXQgaWYgaXQgY2FuIGluamVjdCBtYWNoaW5lIGNoZWNrcywgb3IgcG90ZW50aWFsbHkgdGhyb3VnaCBvdGhlciBLVk0gcmVsYXRlZCBmdW5jdGlvbmFsaXR5LlxuXG5BaCwgeWVzLCBLVk0gKmNhbiogaW5qZWN0IG1hY2hpbmUgY2hlY2tzLiBUaGF0IG1ha2VzIHRoaXMgbXVjaCBtb3JlIHByb21pc2luZy4gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIGxvb2tzIGxpa2UgaXQncyBhZGRyZXNzaW5nIGEgYnVnIHJlbGF0ZWQgdG8gbWFjaGluZSBjaGVjayByZWluamVjdGlvbiB3aXRoaW4gS1ZNIGd1ZXN0cy5cblxuVGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIGEgZGVlcCBkaXZlIHdpdGggZnV6emluZy4gTGV0J3MgZ2V0IHRoZSByZXNwb25zZSByZWFkeS5cblxuYGBgXG5Xb3J0aEZ1enppbmc6IHRydWVcbkZvY3VzU3ltYm9sczogW1wia3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja1wiLCBcInMzOTBfZG9fbWFjaGluZV9jaGVja1wiXVxuRW5hYmxlQ29uZmlnczogW1wiS1ZNXCJdXG5SZWFzb25pbmc6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1hY2hpbmUgY2hlY2sgKE5NSSkgaGFuZGxpbmcgYW5kIHJlaW5qZWN0aW9uIGxvZ2ljIGZvciBzMzkwIEtWTSBndWVzdHMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCJcbmBgYFxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjI5LCJPdXRwdXRUb2tlbnMiOjEwMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMzozNC40MTc1MDA3ODZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTEwNTU1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja1wiLFxuICAgIFwiczM5MF9kb19tYWNoaW5lX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWFjaGluZSBjaGVjayAoTk1JKSBoYW5kbGluZyBhbmQgcmVpbmplY3Rpb24gbG9naWMgZm9yIHMzOTAgS1ZNIGd1ZXN0cy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSB2aXJ0dWFsaXphdGlvbiBmdW5jdGlvbmFsaXR5IHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrXCIsXG4gICAgXCJzMzkwX2RvX21hY2hpbmVfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWNoaW5lIGNoZWNrIChOTUkpIGhhbmRsaW5nIGFuZCByZWluamVjdGlvbiBsb2dpYyBmb3IgczM5MCBLVk0gZ3Vlc3RzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkqh2h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 17:42:42 +0000 UTC FinishedAt: 2026-08-06 18:23:35 +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": "26505e1b5b546e2fa9a0296b951ca158460c72d8", "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": "26505e1b5b546e2fa9a0296b951ca158460c72d8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "2a5feea4-06d8-48d1-8e79-9b168248bcd3" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_s390_reinject_machine_check", "s390_do_machine_check" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDE4OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2smIzM0OywKICAgICYjMzQ7czM5MF9kb19tYWNoaW5lX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1hY2hpbmUgY2hlY2sgKE5NSSkgaGFuZGxpbmcgYW5kIHJlaW5qZWN0aW9uIGxvZ2ljIGZvciBzMzkwIEtWTSBndWVzdHMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNDMzMDUzYzgxYTMzNGU4ZjMxZjVjYWNhODAzYTZiNjFlZjU0YmQ3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxODoyMjo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmhcbmluZGV4IDY0NTRjMTUzMTg1NDQuLjc5MTliMmI5YWM5Y2MgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9ubWkuaFxuQEAgLTIyLDYgJiM0MzsyMiw3IEBAXG4gI2RlZmluZSBNQ0NLX0NPREVfU1lTVEVNX0RBTUFHRVx0XHRCSVQoNjMpXG4gI2RlZmluZSBNQ0NLX0NPREVfRVhUX0RBTUFHRVx0XHRCSVQoNjMgLSA1KVxuICNkZWZpbmUgTUNDS19DT0RFX0NQXHRcdFx0QklUKDYzIC0gOSlcbiYjNDM7I2RlZmluZSBNQ0NLX0NPREVfQ0tcdFx0XHRCSVQoNjMgLSAxMSlcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfRVJST1JcdFx0QklUKDYzIC0gMTYpXG4gI2RlZmluZSBNQ0NLX0NPREVfU1RHX0tFWV9FUlJPUlx0XHRCSVQoNjMgLSAxOClcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfREVHUkFEXHRcdEJJVCg2MyAtIDE5KVxuQEAgLTMzLDYgJiM0MzszNCw4IEBAXG4gI2RlZmluZSBNQ0NLX0NPREVfRkNfVkFMSURcdFx0QklUKDYzIC0gNDMpXG4gI2RlZmluZSBNQ0NLX0NPREVfQ1BVX1RJTUVSX1ZBTElEXHRCSVQoNjMgLSA0NilcbiBcbiYjNDM7I2RlZmluZSBNQ0NLX0NPREVfTk9fR1VFU1RcdChNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSB8IE1DQ0tfQ09ERV9DSylcbiYjNDM7XG4gI2lmbmRlZiBfX0FTU0VNQkxFUl9fXG4gXG4gdW5pb24gbWNpIHtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL25taS5jIGIvYXJjaC9zMzkwL2tlcm5lbC9ubWkuY1xuaW5kZXggZTE3YTU5ZDRkNWE0MS4uMTcyOTdhOGI2M2Q5NSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcbkBAIC0zNDQsOCAmIzQzOzM0NCw3IEBAIHN0YXRpYyB2b2lkIG5vdHJhY2UgczM5MF9iYWNrdXBfbWNja19pbmZvKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuIFxuIFx0c2llX3BhZ2UgPSBjb250YWluZXJfb2Yoc2llX2Jsb2NrLCBzdHJ1Y3Qgc2llX3BhZ2UsIHNpZV9ibG9jayk7XG4gXHRtY2NrX2JhY2t1cCA9IFx1MDAyNnNpZV9wYWdlLVx1MDAzZW1jY2tfaW5mbztcbi1cdG1jY2tfYmFja3VwLVx1MDAzZW1jaWMgPSBnZXRfbG93Y29yZSgpLVx1MDAzZW1jY2tfaW50ZXJydXB0aW9uX2NvZGUgXHUwMDI2XG4tXHRcdFx0XHR+KE1DQ0tfQ09ERV9DUCB8IE1DQ0tfQ09ERV9FWFRfREFNQUdFKTtcbiYjNDM7XHRtY2NrX2JhY2t1cC1cdTAwM2VtY2ljID0gZ2V0X2xvd2NvcmUoKS1cdTAwM2VtY2NrX2ludGVycnVwdGlvbl9jb2RlIFx1MDAyNiB+TUNDS19DT0RFX05PX0dVRVNUO1xuIFx0bWNja19iYWNrdXAtXHUwMDNlZXh0X2RhbWFnZV9jb2RlID0gZ2V0X2xvd2NvcmUoKS1cdTAwM2VleHRlcm5hbF9kYW1hZ2VfY29kZTtcbiBcdG1jY2tfYmFja3VwLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzID0gZ2V0X2xvd2NvcmUoKS1cdTAwM2VmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcztcbiB9XG5AQCAtMzU3LDggJiM0MzszNTYsNiBAQCBOT0tQUk9CRV9TWU1CT0woczM5MF9iYWNrdXBfbWNja19pbmZvKTtcbiAjZGVmaW5lIEVEX1NUUF9JU0xBTkRcdDZcdC8qIEV4dGVybmFsIGRhbWFnZSBTVFAgaXNsYW5kIGNoZWNrICovXG4gI2RlZmluZSBFRF9TVFBfU1lOQ1x0N1x0LyogRXh0ZXJuYWwgZGFtYWdlIFNUUCBzeW5jIGNoZWNrICovXG4gXG4tI2RlZmluZSBNQ0NLX0NPREVfTk9fR1VFU1RcdChNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSlcbi1cbiAvKlxuICAqIG1hY2hpbmUgY2hlY2sgaGFuZGxlci5cbiAgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jIGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xuaW5kZXggNzUxNGQ5ZTI0MDNjMS4uMzM3NWE5NTY2MzdiZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbkBAIC0zMDk5LDkgJiM0MzszMDk5LDcgQEAgc3RhdGljIGludCBzZXRfYWRhcHRlcl9pbnQoc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXG4gdm9pZCBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IG1jY2tfdm9sYXRpbGVfaW5mbyAqbWNja19pbmZvKVxuIHtcbi1cdHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyBpbnRpO1xuLVx0c3RydWN0IGt2bV9zMzkwX2lycSBpcnE7XG4tXHRzdHJ1Y3Qga3ZtX3MzOTBfbWNoa19pbmZvICptY2hrO1xuJiM0MztcdHN0cnVjdCBrdm1fczM5MF9pcnEgaXJxID0ge307XG4gXHR1bmlvbiBtY2kgbWNpO1xuIFx0X191NjQgY3IxNCA9IDA7ICAgICAgICAgLyogdXBwZXIgYml0cyBhcmUgbm90IHVzZWQgKi9cbiBcdGludCByYztcbkBAIC0zMTIwLDIwICYjNDM7MzExOCwxNCBAQCB2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0aWYgKG1jaS53KVxuIFx0XHRjcjE0IHw9IENSMTRfV0FSTklOR19TVUJNQVNLO1xuIFxuLVx0bWNoayA9IG1jaS5jayA/IFx1MDAyNmludGkubWNoayA6IFx1MDAyNmlycS51Lm1jaGs7XG4tXHRtY2hrLVx1MDAzZWNyMTQgPSBjcjE0O1xuLVx0bWNoay1cdTAwM2VtY2ljID0gbWNja19pbmZvLVx1MDAzZW1jaWM7XG4tXHRtY2hrLVx1MDAzZWV4dF9kYW1hZ2VfY29kZSA9IG1jY2tfaW5mby1cdTAwM2VleHRfZGFtYWdlX2NvZGU7XG4tXHRtY2hrLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzID0gbWNja19pbmZvLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzO1xuLVx0aWYgKG1jaS5jaykge1xuLVx0XHQvKiBJbmplY3QgdGhlIGZsb2F0aW5nIG1hY2hpbmUgY2hlY2sgKi9cbi1cdFx0aW50aS50eXBlID0gS1ZNX1MzOTBfTUNISztcbi1cdFx0cmMgPSBfX2luamVjdF92bSh2Y3B1LVx1MDAzZWt2bSwgXHUwMDI2aW50aSk7XG4tXHR9IGVsc2Uge1xuLVx0XHQvKiBJbmplY3QgdGhlIG1hY2hpbmUgY2hlY2sgdG8gc3BlY2lmaWVkIHZjcHUgKi9cbi1cdFx0aXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xuLVx0XHRyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsIFx1MDAyNmlycSk7XG4tXHR9XG4mIzQzO1x0aXJxLnUubWNoay5jcjE0ID0gY3IxNDtcbiYjNDM7XHRpcnEudS5tY2hrLm1jaWMgPSBtY2NrX2luZm8tXHUwMDNlbWNpYztcbiYjNDM7XHRpcnEudS5tY2hrLmV4dF9kYW1hZ2VfY29kZSA9IG1jY2tfaW5mby1cdTAwM2VleHRfZGFtYWdlX2NvZGU7XG4mIzQzO1x0aXJxLnUubWNoay5mYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcyA9IG1jY2tfaW5mby1cdTAwM2VmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcztcbiYjNDM7XG4mIzQzO1x0LyogSW5qZWN0IHRoZSBtYWNoaW5lIGNoZWNrIHRvIHNwZWNpZmllZCB2Y3B1ICovXG4mIzQzO1x0aXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xuJiM0MztcdHJjID0ga3ZtX3MzOTBfaW5qZWN0X3ZjcHUodmNwdSwgXHUwMDI2aXJxKTtcbiBcdFdBUk5fT05fT05DRShyYyk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE4OjIyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrJiMzNDssCiAgICAmIzM0O3MzOTBfZG9fbWFjaGluZV9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtYWNoaW5lIGNoZWNrIChOTUkpIGhhbmRsaW5nIGFuZCByZWluamVjdGlvbiBsb2dpYyBmb3IgczM5MCBLVk0gZ3Vlc3RzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzQzMzA1M2M4MWEzMzRlOGYzMWY1Y2FjYTgwM2E2YjYxZWY1NGJkNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMTg6MjI6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmgKaW5kZXggNjQ1NGMxNTMxODU0NC4uNzkxOWIyYjlhYzljYyAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL25taS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9ubWkuaApAQCAtMjIsNiAmIzQzOzIyLDcgQEAKICNkZWZpbmUgTUNDS19DT0RFX1NZU1RFTV9EQU1BR0UJCUJJVCg2MykKICNkZWZpbmUgTUNDS19DT0RFX0VYVF9EQU1BR0UJCUJJVCg2MyAtIDUpCiAjZGVmaW5lIE1DQ0tfQ09ERV9DUAkJCUJJVCg2MyAtIDkpCiYjNDM7I2RlZmluZSBNQ0NLX0NPREVfQ0sJCQlCSVQoNjMgLSAxMSkKICNkZWZpbmUgTUNDS19DT0RFX1NUR19FUlJPUgkJQklUKDYzIC0gMTYpCiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfS0VZX0VSUk9SCQlCSVQoNjMgLSAxOCkKICNkZWZpbmUgTUNDS19DT0RFX1NUR19ERUdSQUQJCUJJVCg2MyAtIDE5KQpAQCAtMzMsNiAmIzQzOzM0LDggQEAKICNkZWZpbmUgTUNDS19DT0RFX0ZDX1ZBTElECQlCSVQoNjMgLSA0MykKICNkZWZpbmUgTUNDS19DT0RFX0NQVV9USU1FUl9WQUxJRAlCSVQoNjMgLSA0NikKIAomIzQzOyNkZWZpbmUgTUNDS19DT0RFX05PX0dVRVNUCShNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSB8IE1DQ0tfQ09ERV9DSykKJiM0MzsKICNpZm5kZWYgX19BU1NFTUJMRVJfXwogCiB1bmlvbiBtY2kgewpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2tlcm5lbC9ubWkuYyBiL2FyY2gvczM5MC9rZXJuZWwvbm1pLmMKaW5kZXggZTE3YTU5ZDRkNWE0MS4uMTcyOTdhOGI2M2Q5NSAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2tlcm5lbC9ubWkuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva2VybmVsL25taS5jCkBAIC0zNDQsOCAmIzQzOzM0NCw3IEBAIHN0YXRpYyB2b2lkIG5vdHJhY2UgczM5MF9iYWNrdXBfbWNja19pbmZvKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCiAJc2llX3BhZ2UgPSBjb250YWluZXJfb2Yoc2llX2Jsb2NrLCBzdHJ1Y3Qgc2llX3BhZ2UsIHNpZV9ibG9jayk7CiAJbWNja19iYWNrdXAgPSAmYW1wO3NpZV9wYWdlLSZndDttY2NrX2luZm87Ci0JbWNja19iYWNrdXAtJmd0O21jaWMgPSBnZXRfbG93Y29yZSgpLSZndDttY2NrX2ludGVycnVwdGlvbl9jb2RlICZhbXA7Ci0JCQkJfihNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSk7CiYjNDM7CW1jY2tfYmFja3VwLSZndDttY2ljID0gZ2V0X2xvd2NvcmUoKS0mZ3Q7bWNja19pbnRlcnJ1cHRpb25fY29kZSAmYW1wOyB+TUNDS19DT0RFX05PX0dVRVNUOwogCW1jY2tfYmFja3VwLSZndDtleHRfZGFtYWdlX2NvZGUgPSBnZXRfbG93Y29yZSgpLSZndDtleHRlcm5hbF9kYW1hZ2VfY29kZTsKIAltY2NrX2JhY2t1cC0mZ3Q7ZmFpbGluZ19zdG9yYWdlX2FkZHJlc3MgPSBnZXRfbG93Y29yZSgpLSZndDtmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzczsKIH0KQEAgLTM1Nyw4ICYjNDM7MzU2LDYgQEAgTk9LUFJPQkVfU1lNQk9MKHMzOTBfYmFja3VwX21jY2tfaW5mbyk7CiAjZGVmaW5lIEVEX1NUUF9JU0xBTkQJNgkvKiBFeHRlcm5hbCBkYW1hZ2UgU1RQIGlzbGFuZCBjaGVjayAqLwogI2RlZmluZSBFRF9TVFBfU1lOQwk3CS8qIEV4dGVybmFsIGRhbWFnZSBTVFAgc3luYyBjaGVjayAqLwogCi0jZGVmaW5lIE1DQ0tfQ09ERV9OT19HVUVTVAkoTUNDS19DT0RFX0NQIHwgTUNDS19DT0RFX0VYVF9EQU1BR0UpCi0KIC8qCiAgKiBtYWNoaW5lIGNoZWNrIGhhbmRsZXIuCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jCmluZGV4IDc1MTRkOWUyNDAzYzEuLjMzNzVhOTU2NjM3YmUgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYwpAQCAtMzA5OSw5ICYjNDM7MzA5OSw3IEBAIHN0YXRpYyBpbnQgc2V0X2FkYXB0ZXJfaW50KHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLAogdm9pZCBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJCQkgICAgIHN0cnVjdCBtY2NrX3ZvbGF0aWxlX2luZm8gKm1jY2tfaW5mbykKIHsKLQlzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0X2luZm8gaW50aTsKLQlzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlycTsKLQlzdHJ1Y3Qga3ZtX3MzOTBfbWNoa19pbmZvICptY2hrOwomIzQzOwlzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlycSA9IHt9OwogCXVuaW9uIG1jaSBtY2k7CiAJX191NjQgY3IxNCA9IDA7ICAgICAgICAgLyogdXBwZXIgYml0cyBhcmUgbm90IHVzZWQgKi8KIAlpbnQgcmM7CkBAIC0zMTIwLDIwICYjNDM7MzExOCwxNCBAQCB2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCWlmIChtY2kudykKIAkJY3IxNCB8PSBDUjE0X1dBUk5JTkdfU1VCTUFTSzsKIAotCW1jaGsgPSBtY2kuY2sgPyAmYW1wO2ludGkubWNoayA6ICZhbXA7aXJxLnUubWNoazsKLQltY2hrLSZndDtjcjE0ID0gY3IxNDsKLQltY2hrLSZndDttY2ljID0gbWNja19pbmZvLSZndDttY2ljOwotCW1jaGstJmd0O2V4dF9kYW1hZ2VfY29kZSA9IG1jY2tfaW5mby0mZ3Q7ZXh0X2RhbWFnZV9jb2RlOwotCW1jaGstJmd0O2ZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzID0gbWNja19pbmZvLSZndDtmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzczsKLQlpZiAobWNpLmNrKSB7Ci0JCS8qIEluamVjdCB0aGUgZmxvYXRpbmcgbWFjaGluZSBjaGVjayAqLwotCQlpbnRpLnR5cGUgPSBLVk1fUzM5MF9NQ0hLOwotCQlyYyA9IF9faW5qZWN0X3ZtKHZjcHUtJmd0O2t2bSwgJmFtcDtpbnRpKTsKLQl9IGVsc2UgewotCQkvKiBJbmplY3QgdGhlIG1hY2hpbmUgY2hlY2sgdG8gc3BlY2lmaWVkIHZjcHUgKi8KLQkJaXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLOwotCQlyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsICZhbXA7aXJxKTsKLQl9CiYjNDM7CWlycS51Lm1jaGsuY3IxNCA9IGNyMTQ7CiYjNDM7CWlycS51Lm1jaGsubWNpYyA9IG1jY2tfaW5mby0mZ3Q7bWNpYzsKJiM0MzsJaXJxLnUubWNoay5leHRfZGFtYWdlX2NvZGUgPSBtY2NrX2luZm8tJmd0O2V4dF9kYW1hZ2VfY29kZTsKJiM0MzsJaXJxLnUubWNoay5mYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcyA9IG1jY2tfaW5mby0mZ3Q7ZmFpbGluZ19zdG9yYWdlX2FkZHJlc3M7CiYjNDM7CiYjNDM7CS8qIEluamVjdCB0aGUgbWFjaGluZSBjaGVjayB0byBzcGVjaWZpZWQgdmNwdSAqLwomIzQzOwlpcnEudHlwZSA9IEtWTV9TMzkwX01DSEs7CiYjNDM7CXJjID0ga3ZtX3MzOTBfaW5qZWN0X3ZjcHUodmNwdSwgJmFtcDtpcnEpOwogCVdBUk5fT05fT05DRShyYyk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ0OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDU3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgczM5MHggTWFjaGluZSBDaGVjayBIYW5kbGluZyBpbiBLVk0qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBzb21lIGNoYW5nZXMgdG8gaG93IHRoZSBzMzkweCBhcmNoaXRlY3R1cmUgaGFuZGxlcyBtYWNoaW5lIGNoZWNrcyAoTk1Jcykgd2l0aGluIHRoZSBLVk0gZW52aXJvbm1lbnQuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdHdlYWtpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGhvc3QgYW5kIGd1ZXN0IHdpdGggcmVzcGVjdCB0byB0aGVzZSBtYWNoaW5lIGNoZWNrIGV4Y2VwdGlvbnMuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRqdXN0aW5nIGEgZmV3IGtleSBhcmVhczogYWRkaW5nIGEgZmxhZyByZWxhdGVkIHRvIG1hY2hpbmUgY2hlY2tzIHRvIGEgc3BlY2lmaWMgZW51bSBpbiBgYXNtL25taS5oYCwgbW9kaWZ5aW5nIHRoZSBsb2dpYyBpbiBga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja2AgdG8gZW5zdXJlIHRoZSBtYWNoaW5lIGNoZWNrIGlzIGluamVjdGVkIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgYW5kIGFsc28gYWx0ZXJpbmcgaG93IG1hY2hpbmUgY2hlY2sgaW5mb3JtYXRpb24gaXMgYmFja2VkIHVwIGluIGBzMzkwX2JhY2t1cF9tY2NrX2luZm9gIGluIGBrZXJuZWwvbm1pLmNgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGZ1enphYmxlLiBTaW5jZSB0aGlzIHRvdWNoZXMgS1ZNIGNvZGUgYW5kIHJlbGF0ZXMgdG8gaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBlcnJvcnMsIGl0IGRlZmluaXRlbHkgZmFsbHMgaW50byBhbiBhcmVhIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmVuZWZpdCBmcm9tIGZ1enppbmcuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBjb2RlIGR1cmluZyBmdXp6aW5nPyBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBpZ25vcmUgY29kZSB0aGF0IGNhbiYjMzk7dCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIEJ1dCwgaXMgS1ZNIG9uIHMzOTB4IFFFTVUgcmVhY2hhYmxlPwoKSXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gY29uZmlybSB0aGUgZnV6emluZyBhcHByb2FjaC4gRmlyc3QsIHNpbmNlIHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBzMzkweCwgYW5kIGRvZXMgcnVuIFZNcywgbXkgZmlyc3QgdGhvdWdodCBpcyBjb3JyZWN0LiBPa2F5LCBzeXprYWxsZXIgKmNhbiogdGFyZ2V0IHMzOTB4IFZNcy4gVGhlbiBJIHJlbWVtYmVyIHRoYXQgUUVNVSBjYW4gZW11bGF0ZSBzMzkweCwgYW5kIHJ1biBLVk0sICppZiogdGhlIGhvc3QgaXMgczM5MHguIFNvLCBpZiB3ZSBhcmUgZnV6emluZyBLVk0gb24gczM5MHgsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZS4KCkNvbnNpZGVyaW5nIHRoZSBwYXRjaCBtb2RpZmllcyBgYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY2AsIGFuZCB0aGF0JiMzOTtzICpLVk0qIGNvZGUsIHdlIGNhbiwgaW4gZmFjdCwgZnV6eiB0aGlzLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgZnVuY3Rpb25zIHRoZW1zZWx2ZXMuIExldCYjMzk7cyBzZWUsIGBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrYCBhbmQgYHMzOTBfYmFja3VwX21jY2tfaW5mb2AgYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZvY3VzLiBOZXh0LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0tWTWAgaXMgZW5hYmxlZCwgd2hpY2ggaXMgc3RhbmRhcmQuIGBhcmNoL3MzOTAva2VybmVsL25taS5jYCBpcyBhbHdheXMgY29tcGlsZWQgZm9yIHMzOTAsIHNvIHRoYXQmIzM5O3MgZ29vZC4gTG9va3MgbGlrZSB3ZSYjMzk7cmUgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTMwNzI9c3RhdGljIGludCBzZXRfYWRhcHRlcl9pbnQoc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDk4LSAqL1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMDk5OnZvaWQga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVjayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMxMDAtXHRcdFx0XHQgICAgIHN0cnVjdCBtY2NrX3ZvbGF0aWxlX2luZm8gKm1jY2tfaW5mbylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NDcyNT1zdGF0aWMgaW50IHZjcHVfcG9zdF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgc2llX3JldHVybilcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDc0NC1cdFx0bWNja19pbmZvID0gXHUwMDI2c2llX3BhZ2UtXHUwMDNlbWNja19pbmZvO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQ3NDU6XHRcdGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2sodmNwdSwgbWNja19pbmZvKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00NzQ2LVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NTc4PXN0YXRpYyBpbmxpbmUgaW50IGt2bV9zMzkwX3VzZV9zY2FfZW50cmllcyh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC01ODYtfVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjU4Nzp2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTU4OC1cdFx0XHRcdCAgICAgc3RydWN0IG1jY2tfdm9sYXRpbGVfaW5mbyAqbWNja19pbmZvKTtcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0xMTg3PXN0YXRpYyBpbnQgZG9fdnNpZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdnNpZV9wYWdlICp2c2llX3BhZ2UsIHN0cnVjdCBnbWFwICpzZylcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMjUwLVx0aWYgKHNpZV9yZXR1cm4gPT0gU0lFNjRfUkVUVVJOX01DQ0spIHtcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjEyNTE6XHRcdGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2sodmNwdSwgXHUwMDI2dnNpZV9wYWdlLVx1MDAzZW1jY2tfaW5mbyk7XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMjUyLVx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogS1ZNL3MzOTAgTWFjaGluZSBDaGVjayBSZS1JbmplY3Rpb24qKgoKUmlnaHQsIHNvIGBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrYCBpcyBjYWxsZWQgZnJvbSB0d28ga2V5IGV4ZWN1dGlvbiBwYXRoczogYHZjcHVfcG9zdF9ydW5gIGFuZCBgZG9fdnNpZV9ydW5gLiBUaGF0IGluc3RhbnRseSBtYWtlcyBpdCBpbnRlcmVzdGluZyBiZWNhdXNlIHRoZXNlIGFyZSBmdW5kYW1lbnRhbCB0byBLVk0mIzM5O3MgczM5MCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgYSBjcml0aWNhbCBhcmVhLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvbnNpZGVyIGl0IGFzIGEgZnV6emluZyB0YXJnZXQ7IHRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIHByYWN0aWNlIGhlcmUuIEFuZCwgeWVzLCBmdW5jdGlvbmFsbHksIGl0IG1ha2VzIHNlbnNlIHRvIHRhcmdldCBpdC4KCk5vdywgbGV0JiMzOTtzIG5hcnJvdyB0aGUgZm9jdXMuIFdlJiMzOTtyZSBvYnZpb3VzbHkgbG9va2luZyBhdCBga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja2AgYXMgdGhlIHByaW1hcnkgZnVuY3Rpb24uIEJ1dCBJIG5lZWQgdG8gYWxzbyBjaGVjayBvdXQgYHMzOTBfYmFja3VwX21jY2tfaW5mb2AuIEhvbGQgb24uLi4gVGhhdCYjMzk7cyBzdGF0aWMsIHdoaWNoIHVzdWFsbHkgbWVhbnMgaXQmIzM5O3Mgbm90IGEgZGlyZWN0IHBvaW50IG9mIGVudHJ5LCBidXQgaXQgY291bGQgc3RpbGwgYmUgaW50ZXJlc3RpbmcgaWYgaXQmIzM5O3MgaW5saW5lZC4gV29ydGggYSBxdWljayBjaGVjayB0byBzZWUgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBtYWluIGZ1bmN0aW9uLCBpZiBhdCBhbGwuIElubGluaW5nIGNvdWxkIGNoYW5nZSB0aGUgZ2FtZSBpbiB0ZXJtcyBvZiBmdXp6aW5nIHBvdGVudGlhbCwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciBhbmQgb3B0aW1pemF0aW9uIHNldHRpbmdzLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnM6IGlzIHRoaXMgc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBhIGRpcmVjdCB0YXJnZXQsIG9yIGluZGlyZWN0bHkgZHVlIHRvIGlubGluaW5nPyBUaW1lIHRvIGxvb2sgYXQgdGhlIGNvZGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7czM5MF9iYWNrdXBfbWNja19pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2tlcm5lbC9ubWkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva2VybmVsL25taS5jPTMyOD1OT0tQUk9CRV9TWU1CT0wobm1pX3JlZ2lzdGVyc192YWxpZCk7XG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zMzItICovXG5hcmNoL3MzOTAva2VybmVsL25taS5jOjMzMzpzdGF0aWMgdm9pZCBub3RyYWNlIHMzOTBfYmFja3VwX21jY2tfaW5mbyhzdHJ1Y3QgcHRfcmVncyAqcmVncylcbmFyY2gvczM5MC9rZXJuZWwvbm1pLmMtMzM0LXtcbi0tXG5hcmNoL3MzOTAva2VybmVsL25taS5jLTM1MC19XG5hcmNoL3MzOTAva2VybmVsL25taS5jOjM1MTpOT0tQUk9CRV9TWU1CT0woczM5MF9iYWNrdXBfbWNja19pbmZvKTtcbmFyY2gvczM5MC9rZXJuZWwvbm1pLmMtMzUyLVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvbm1pLmM9MzYyPXZvaWQgbm90cmFjZSBzMzkwX2RvX21hY2hpbmVfY2hlY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy00NDEtXHRpZiAodGVzdF9jcHVfZmxhZyhDSUZfTUNDS19HVUVTVCkpXG5hcmNoL3MzOTAva2VybmVsL25taS5jOjQ0MjpcdFx0czM5MF9iYWNrdXBfbWNja19pbmZvKHJlZ3MpO1xuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy00NDMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjExNAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFMzOTAgTWFjaGluZSBDaGVjayBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBob3cgbWFjaGluZSBjaGVja3MgYXJlIGhhbmRsZWQgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZm9jdXMgb24gYHMzOTBfYmFja3VwX21jY2tfaW5mb2AsIHdoaWNoIHNlZW1zIGxpa2UgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEhvd2V2ZXIsIEkgc2VlIGl0JiMzOTtzIHN0YXRpYywgYW5kIG5vdCBpbmxpbmVkLCBhbmQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHMzOTBfZG9fbWFjaGluZV9jaGVja2AuIFRoYXQgY2hhbmdlcyB0aGluZ3M7IGl0IGltcGxpZXMgaXQmIzM5O3MgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBhIGxhcmdlciBwcm9jZXNzLgoKQWgsIGBzMzkwX2RvX21hY2hpbmVfY2hlY2tgLi4uIHJpZ2h0LiBUaGF0ICppcyogdGhlIG1haW4gbWFjaGluZSBjaGVjayBoYW5kbGVyLCBpc24mIzM5O3QgaXQ/IFRoYXQgZmVlbHMgbGlrZSBhIG11Y2ggbW9yZSBzaWduaWZpY2FudCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24uIExldCYjMzk7cyBjb25maXJtIHRoYXQuIFllcywgdGhhbmtmdWxseSwgYHMzOTBfZG9fbWFjaGluZV9jaGVja2AgaXMsIGluIGZhY3QsIG5vbi1zdGF0aWMuIEdvb2QuIFRoYXQgc2ltcGxpZmllcyB0aGUgYW5hbHlzaXMgcXVpdGUgYSBiaXQuCgpOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgYGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2tgLi4uIGlzICp0aGF0KiBub24tc3RhdGljPyBZZXMsIGl0IGlzLiBUaGF0JiMzOTtzIGdvb2QsIHRvby4gSXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IHRvIGJlIGludm9sdmVkIGluIHRoZSBLVk0gaW50ZXJhY3Rpb24uCgpHaXZlbiB0aGF0LCBJJiMzOTtsbCBzd2l0Y2ggZ2VhcnMgYW5kIHZlcmlmeSB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSB3aXRoaW4gYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgLiBJJiMzOTtsbCB3YW50IHRvIGNoZWNrIHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AgdG8gdW5kZXJzdGFuZCBpdHMgaW5mbHVlbmNlIG9uIHRoaXMgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vS2NvbmZpZz0xNz1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTE4LVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0yMC1cdGRlZl90cmlzdGF0ZSB5XG4tLVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ2LVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjQ3OmNvbmZpZyBLVk1fUzM5MF9VQ09OVFJPTFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtVc2Vyc3BhY2UgY29udHJvbGxlZCB2aXJ0dWFsIG1hY2hpbmVzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW5uZXIgbW9ub2xvZ3VlOgoKKipLVk0gQ29uZmlndXJhdGlvbiBhbmQgTk1JIEhhbmRsaW5nKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBgS1ZNYC4gVGhhdCYjMzk7cyB0aGUgc2V0dXAsIGdvdCBpdC4gTm93LCBnaXZlbiB0aGF0IGNvbnRleHQsIEkgbmVlZCB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyBOTUlzIGFyZSBoYW5kbGVkIG9uIHMzOTAsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYEtWTWAgYW5kIHRoZSBOTUkgY29kZSBwYXRoLiBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBhcmNoL3MzOTAva2VybmVsL25taS5jYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0JiMzOTtzIGFsd2F5cyBjb21waWxlZCBpbiwgd2hpY2ggaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCBidXQgSSYjMzk7bGwgY29uZmlybSB0aGF0IGluIHRoZSBjb2RlIGl0c2VsZiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIEl0IGlzIGltcGVyYXRpdmUgdGhhdCBJIGFtIGNlcnRhaW4gb2YgdGhlIGNvbmZpZ3VyYXRpb24sIGFzIHRoaXMgdW5kZXJwaW5zIHRoZSBlbnRpcmUgS1ZNIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm1pXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZT0zOT1vYmoteVx0Oj0gaGVhZC5vIHRyYXBzLm8gdGltZS5vIHByb2Nlc3MubyBlYXJseS5vIHNldHVwLm8gaWRsZS5vIHZ0aW1lLm9cbmFyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGU6NDA6b2JqLXlcdCYjNDM7PSBwcm9jZXNzb3IubyBzeXNjYWxsLm8gcHRyYWNlLm8gc2lnbmFsLm8gY3BjbWQubyBlYmNkaWMubyBubWkub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS00MS1vYmoteVx0JiM0Mzs9IGRlYnVnLm8gaXJxLm8gaXBsLm8gZGlzLm8gdmRzby5vIGNwdWZlYXR1cmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjI5CgkJCQkJCQlvdXRwdXQ6IDEwMAoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRhcmdldCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBgbm1pLm9gIGlzIGFsd2F5cyBjb21waWxlZCwgdGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIFRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBjbGVhcmx5IGBLVk1gLiBUaGUgZm9jdXMgc3ltYm9scyBJIG5lZWQgdG8gY29uc2lkZXIgYXJlIGBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrYCBhbmQgYHMzOTBfZG9fbWFjaGluZV9jaGVja2AuIEhtbSwgcmlnaHQsIGBzMzkwX2RvX21hY2hpbmVfY2hlY2tgIGlzIHRoZSBhY3R1YWwgbWFjaGluZSBjaGVjayBoYW5kbGVyLiBGdXp6aW5nIHRoYXQgZGlyZWN0bHkgdGhyb3VnaCBhIG5vcm1hbCBhcHByb2FjaCBtaWdodCBiZSB0cmlja3kgYmVjYXVzZSBpdCYjMzk7cyBhbiBOTUkgaGFuZGxlci4gQnV0LCBjb25zaWRlcmluZyBpdCYjMzk7cyBzMzkwIEtWTSwgc3l6a2FsbGVyIGNvdWxkIGRlZmluaXRlbHkgaGl0IGl0IGlmIGl0IGNhbiBpbmplY3QgbWFjaGluZSBjaGVja3MsIG9yIHBvdGVudGlhbGx5IHRocm91Z2ggb3RoZXIgS1ZNIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4KCkFoLCB5ZXMsIEtWTSAqY2FuKiBpbmplY3QgbWFjaGluZSBjaGVja3MuIFRoYXQgbWFrZXMgdGhpcyBtdWNoIG1vcmUgcHJvbWlzaW5nLiBUaGUgcGF0Y2ggaW4gcXVlc3Rpb24gbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgYnVnIHJlbGF0ZWQgdG8gbWFjaGluZSBjaGVjayByZWluamVjdGlvbiB3aXRoaW4gS1ZNIGd1ZXN0cy4KClRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCBhIGRlZXAgZGl2ZSB3aXRoIGZ1enppbmcuIExldCYjMzk7cyBnZXQgdGhlIHJlc3BvbnNlIHJlYWR5LgoKYGBgCldvcnRoRnV6emluZzogdHJ1ZQpGb2N1c1N5bWJvbHM6IFsmIzM0O2t2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2smIzM0OywgJiMzNDtzMzkwX2RvX21hY2hpbmVfY2hlY2smIzM0O10KRW5hYmxlQ29uZmlnczogWyYjMzQ7S1ZNJiMzNDtdClJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWFjaGluZSBjaGVjayAoTk1JKSBoYW5kbGluZyBhbmQgcmVpbmplY3Rpb24gbG9naWMgZm9yIHMzOTAgS1ZNIGd1ZXN0cy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSB2aXJ0dWFsaXphdGlvbiBmdW5jdGlvbmFsaXR5IHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OwpgYGAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2smIzM0OywKICAgICYjMzQ7czM5MF9kb19tYWNoaW5lX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1hY2hpbmUgY2hlY2sgKE5NSSkgaGFuZGxpbmcgYW5kIHJlaW5qZWN0aW9uIGxvZ2ljIGZvciBzMzkwIEtWTSBndWVzdHMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2smIzM0OywKICAgICYjMzQ7czM5MF9kb19tYWNoaW5lX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1hY2hpbmUgY2hlY2sgKE5NSSkgaGFuZGxpbmcgYW5kIHJlaW5qZWN0aW9uIGxvZ2ljIGZvciBzMzkwIEtWTSBndWVzdHMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMjo1Ny4yNDM5NDU4MDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzI1MjY3MTY1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrXCIsXG4gICAgXCJzMzkwX2RvX21hY2hpbmVfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWNoaW5lIGNoZWNrIChOTUkpIGhhbmRsaW5nIGFuZCByZWluamVjdGlvbiBsb2dpYyBmb3IgczM5MCBLVk0gZ3Vlc3RzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMjo1Ny4yNDM5NTE1NTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjkyMDc5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNDMzMDUzYzgxYTMzNGU4ZjMxZjVjYWNhODAzYTZiNjFlZjU0YmQ3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDYgMTg6MjI6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL25taS5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL25taS5oXFxuaW5kZXggNjQ1NGMxNTMxODU0NC4uNzkxOWIyYjlhYzljYyAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmhcXG4rKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbm1pLmhcXG5AQCAtMjIsNiArMjIsNyBAQFxcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TWVNURU1fREFNQUdFXFx0XFx0QklUKDYzKVxcbiAjZGVmaW5lIE1DQ0tfQ09ERV9FWFRfREFNQUdFXFx0XFx0QklUKDYzIC0gNSlcXG4gI2RlZmluZSBNQ0NLX0NPREVfQ1BcXHRcXHRcXHRCSVQoNjMgLSA5KVxcbisjZGVmaW5lIE1DQ0tfQ09ERV9DS1xcdFxcdFxcdEJJVCg2MyAtIDExKVxcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfRVJST1JcXHRcXHRCSVQoNjMgLSAxNilcXG4gI2RlZmluZSBNQ0NLX0NPREVfU1RHX0tFWV9FUlJPUlxcdFxcdEJJVCg2MyAtIDE4KVxcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfREVHUkFEXFx0XFx0QklUKDYzIC0gMTkpXFxuQEAgLTMzLDYgKzM0LDggQEBcXG4gI2RlZmluZSBNQ0NLX0NPREVfRkNfVkFMSURcXHRcXHRCSVQoNjMgLSA0MylcXG4gI2RlZmluZSBNQ0NLX0NPREVfQ1BVX1RJTUVSX1ZBTElEXFx0QklUKDYzIC0gNDYpXFxuIFxcbisjZGVmaW5lIE1DQ0tfQ09ERV9OT19HVUVTVFxcdChNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSB8IE1DQ0tfQ09ERV9DSylcXG4rXFxuICNpZm5kZWYgX19BU1NFTUJMRVJfX1xcbiBcXG4gdW5pb24gbWNpIHtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2tlcm5lbC9ubWkuYyBiL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcXG5pbmRleCBlMTdhNTlkNGQ1YTQxLi4xNzI5N2E4YjYzZDk1IDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcXG4rKysgYi9hcmNoL3MzOTAva2VybmVsL25taS5jXFxuQEAgLTM0NCw4ICszNDQsNyBAQCBzdGF0aWMgdm9pZCBub3RyYWNlIHMzOTBfYmFja3VwX21jY2tfaW5mbyhzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4gXFxuIFxcdHNpZV9wYWdlID0gY29udGFpbmVyX29mKHNpZV9ibG9jaywgc3RydWN0IHNpZV9wYWdlLCBzaWVfYmxvY2spO1xcbiBcXHRtY2NrX2JhY2t1cCA9IFxcdTAwMjZzaWVfcGFnZS1cXHUwMDNlbWNja19pbmZvO1xcbi1cXHRtY2NrX2JhY2t1cC1cXHUwMDNlbWNpYyA9IGdldF9sb3djb3JlKCktXFx1MDAzZW1jY2tfaW50ZXJydXB0aW9uX2NvZGUgXFx1MDAyNlxcbi1cXHRcXHRcXHRcXHR+KE1DQ0tfQ09ERV9DUCB8IE1DQ0tfQ09ERV9FWFRfREFNQUdFKTtcXG4rXFx0bWNja19iYWNrdXAtXFx1MDAzZW1jaWMgPSBnZXRfbG93Y29yZSgpLVxcdTAwM2VtY2NrX2ludGVycnVwdGlvbl9jb2RlIFxcdTAwMjYgfk1DQ0tfQ09ERV9OT19HVUVTVDtcXG4gXFx0bWNja19iYWNrdXAtXFx1MDAzZWV4dF9kYW1hZ2VfY29kZSA9IGdldF9sb3djb3JlKCktXFx1MDAzZWV4dGVybmFsX2RhbWFnZV9jb2RlO1xcbiBcXHRtY2NrX2JhY2t1cC1cXHUwMDNlZmFpbGluZ19zdG9yYWdlX2FkZHJlc3MgPSBnZXRfbG93Y29yZSgpLVxcdTAwM2VmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcztcXG4gfVxcbkBAIC0zNTcsOCArMzU2LDYgQEAgTk9LUFJPQkVfU1lNQk9MKHMzOTBfYmFja3VwX21jY2tfaW5mbyk7XFxuICNkZWZpbmUgRURfU1RQX0lTTEFORFxcdDZcXHQvKiBFeHRlcm5hbCBkYW1hZ2UgU1RQIGlzbGFuZCBjaGVjayAqL1xcbiAjZGVmaW5lIEVEX1NUUF9TWU5DXFx0N1xcdC8qIEV4dGVybmFsIGRhbWFnZSBTVFAgc3luYyBjaGVjayAqL1xcbiBcXG4tI2RlZmluZSBNQ0NLX0NPREVfTk9fR1VFU1RcXHQoTUNDS19DT0RFX0NQIHwgTUNDS19DT0RFX0VYVF9EQU1BR0UpXFxuLVxcbiAvKlxcbiAgKiBtYWNoaW5lIGNoZWNrIGhhbmRsZXIuXFxuICAqL1xcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jIGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xcbmluZGV4IDc1MTRkOWUyNDAzYzEuLjMzNzVhOTU2NjM3YmUgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcXG5AQCAtMzA5OSw5ICszMDk5LDcgQEAgc3RhdGljIGludCBzZXRfYWRhcHRlcl9pbnQoc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXFxuIHZvaWQga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVjayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG1jY2tfdm9sYXRpbGVfaW5mbyAqbWNja19pbmZvKVxcbiB7XFxuLVxcdHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyBpbnRpO1xcbi1cXHRzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlycTtcXG4tXFx0c3RydWN0IGt2bV9zMzkwX21jaGtfaW5mbyAqbWNoaztcXG4rXFx0c3RydWN0IGt2bV9zMzkwX2lycSBpcnEgPSB7fTtcXG4gXFx0dW5pb24gbWNpIG1jaTtcXG4gXFx0X191NjQgY3IxNCA9IDA7ICAgICAgICAgLyogdXBwZXIgYml0cyBhcmUgbm90IHVzZWQgKi9cXG4gXFx0aW50IHJjO1xcbkBAIC0zMTIwLDIwICszMTE4LDE0IEBAIHZvaWQga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVjayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdGlmIChtY2kudylcXG4gXFx0XFx0Y3IxNCB8PSBDUjE0X1dBUk5JTkdfU1VCTUFTSztcXG4gXFxuLVxcdG1jaGsgPSBtY2kuY2sgPyBcXHUwMDI2aW50aS5tY2hrIDogXFx1MDAyNmlycS51Lm1jaGs7XFxuLVxcdG1jaGstXFx1MDAzZWNyMTQgPSBjcjE0O1xcbi1cXHRtY2hrLVxcdTAwM2VtY2ljID0gbWNja19pbmZvLVxcdTAwM2VtY2ljO1xcbi1cXHRtY2hrLVxcdTAwM2VleHRfZGFtYWdlX2NvZGUgPSBtY2NrX2luZm8tXFx1MDAzZWV4dF9kYW1hZ2VfY29kZTtcXG4tXFx0bWNoay1cXHUwMDNlZmFpbGluZ19zdG9yYWdlX2FkZHJlc3MgPSBtY2NrX2luZm8tXFx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzO1xcbi1cXHRpZiAobWNpLmNrKSB7XFxuLVxcdFxcdC8qIEluamVjdCB0aGUgZmxvYXRpbmcgbWFjaGluZSBjaGVjayAqL1xcbi1cXHRcXHRpbnRpLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xcbi1cXHRcXHRyYyA9IF9faW5qZWN0X3ZtKHZjcHUtXFx1MDAzZWt2bSwgXFx1MDAyNmludGkpO1xcbi1cXHR9IGVsc2Uge1xcbi1cXHRcXHQvKiBJbmplY3QgdGhlIG1hY2hpbmUgY2hlY2sgdG8gc3BlY2lmaWVkIHZjcHUgKi9cXG4tXFx0XFx0aXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xcbi1cXHRcXHRyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsIFxcdTAwMjZpcnEpO1xcbi1cXHR9XFxuK1xcdGlycS51Lm1jaGsuY3IxNCA9IGNyMTQ7XFxuK1xcdGlycS51Lm1jaGsubWNpYyA9IG1jY2tfaW5mby1cXHUwMDNlbWNpYztcXG4rXFx0aXJxLnUubWNoay5leHRfZGFtYWdlX2NvZGUgPSBtY2NrX2luZm8tXFx1MDAzZWV4dF9kYW1hZ2VfY29kZTtcXG4rXFx0aXJxLnUubWNoay5mYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcyA9IG1jY2tfaW5mby1cXHUwMDNlZmFpbGluZ19zdG9yYWdlX2FkZHJlc3M7XFxuK1xcbitcXHQvKiBJbmplY3QgdGhlIG1hY2hpbmUgY2hlY2sgdG8gc3BlY2lmaWVkIHZjcHUgKi9cXG4rXFx0aXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xcbitcXHRyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsIFxcdTAwMjZpcnEpO1xcbiBcXHRXQVJOX09OX09OQ0UocmMpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMjo1OC40NzM4Nzc3MDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNjAyMjczMTUxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrXCIsXG4gICAgXCJzMzkwX2RvX21hY2hpbmVfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWNoaW5lIGNoZWNrIChOTUkpIGhhbmRsaW5nIGFuZCByZWluamVjdGlvbiBsb2dpYyBmb3IgczM5MCBLVk0gZ3Vlc3RzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNDMzMDUzYzgxYTMzNGU4ZjMxZjVjYWNhODAzYTZiNjFlZjU0YmQ3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxODoyMjo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9ubWkuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9ubWkuaFxuaW5kZXggNjQ1NGMxNTMxODU0NC4uNzkxOWIyYjlhYzljYyAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9ubWkuaFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL25taS5oXG5AQCAtMjIsNiArMjIsNyBAQFxuICNkZWZpbmUgTUNDS19DT0RFX1NZU1RFTV9EQU1BR0VcdFx0QklUKDYzKVxuICNkZWZpbmUgTUNDS19DT0RFX0VYVF9EQU1BR0VcdFx0QklUKDYzIC0gNSlcbiAjZGVmaW5lIE1DQ0tfQ09ERV9DUFx0XHRcdEJJVCg2MyAtIDkpXG4rI2RlZmluZSBNQ0NLX0NPREVfQ0tcdFx0XHRCSVQoNjMgLSAxMSlcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfRVJST1JcdFx0QklUKDYzIC0gMTYpXG4gI2RlZmluZSBNQ0NLX0NPREVfU1RHX0tFWV9FUlJPUlx0XHRCSVQoNjMgLSAxOClcbiAjZGVmaW5lIE1DQ0tfQ09ERV9TVEdfREVHUkFEXHRcdEJJVCg2MyAtIDE5KVxuQEAgLTMzLDYgKzM0LDggQEBcbiAjZGVmaW5lIE1DQ0tfQ09ERV9GQ19WQUxJRFx0XHRCSVQoNjMgLSA0MylcbiAjZGVmaW5lIE1DQ0tfQ09ERV9DUFVfVElNRVJfVkFMSURcdEJJVCg2MyAtIDQ2KVxuIFxuKyNkZWZpbmUgTUNDS19DT0RFX05PX0dVRVNUXHQoTUNDS19DT0RFX0NQIHwgTUNDS19DT0RFX0VYVF9EQU1BR0UgfCBNQ0NLX0NPREVfQ0spXG4rXG4gI2lmbmRlZiBfX0FTU0VNQkxFUl9fXG4gXG4gdW5pb24gbWNpIHtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL25taS5jIGIvYXJjaC9zMzkwL2tlcm5lbC9ubWkuY1xuaW5kZXggZTE3YTU5ZDRkNWE0MS4uMTcyOTdhOGI2M2Q5NSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcbisrKyBiL2FyY2gvczM5MC9rZXJuZWwvbm1pLmNcbkBAIC0zNDQsOCArMzQ0LDcgQEAgc3RhdGljIHZvaWQgbm90cmFjZSBzMzkwX2JhY2t1cF9tY2NrX2luZm8oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4gXG4gXHRzaWVfcGFnZSA9IGNvbnRhaW5lcl9vZihzaWVfYmxvY2ssIHN0cnVjdCBzaWVfcGFnZSwgc2llX2Jsb2NrKTtcbiBcdG1jY2tfYmFja3VwID0gXHUwMDI2c2llX3BhZ2UtXHUwMDNlbWNja19pbmZvO1xuLVx0bWNja19iYWNrdXAtXHUwMDNlbWNpYyA9IGdldF9sb3djb3JlKCktXHUwMDNlbWNja19pbnRlcnJ1cHRpb25fY29kZSBcdTAwMjZcbi1cdFx0XHRcdH4oTUNDS19DT0RFX0NQIHwgTUNDS19DT0RFX0VYVF9EQU1BR0UpO1xuK1x0bWNja19iYWNrdXAtXHUwMDNlbWNpYyA9IGdldF9sb3djb3JlKCktXHUwMDNlbWNja19pbnRlcnJ1cHRpb25fY29kZSBcdTAwMjYgfk1DQ0tfQ09ERV9OT19HVUVTVDtcbiBcdG1jY2tfYmFja3VwLVx1MDAzZWV4dF9kYW1hZ2VfY29kZSA9IGdldF9sb3djb3JlKCktXHUwMDNlZXh0ZXJuYWxfZGFtYWdlX2NvZGU7XG4gXHRtY2NrX2JhY2t1cC1cdTAwM2VmYWlsaW5nX3N0b3JhZ2VfYWRkcmVzcyA9IGdldF9sb3djb3JlKCktXHUwMDNlZmFpbGluZ19zdG9yYWdlX2FkZHJlc3M7XG4gfVxuQEAgLTM1Nyw4ICszNTYsNiBAQCBOT0tQUk9CRV9TWU1CT0woczM5MF9iYWNrdXBfbWNja19pbmZvKTtcbiAjZGVmaW5lIEVEX1NUUF9JU0xBTkRcdDZcdC8qIEV4dGVybmFsIGRhbWFnZSBTVFAgaXNsYW5kIGNoZWNrICovXG4gI2RlZmluZSBFRF9TVFBfU1lOQ1x0N1x0LyogRXh0ZXJuYWwgZGFtYWdlIFNUUCBzeW5jIGNoZWNrICovXG4gXG4tI2RlZmluZSBNQ0NLX0NPREVfTk9fR1VFU1RcdChNQ0NLX0NPREVfQ1AgfCBNQ0NLX0NPREVfRVhUX0RBTUFHRSlcbi1cbiAvKlxuICAqIG1hY2hpbmUgY2hlY2sgaGFuZGxlci5cbiAgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jIGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1xuaW5kZXggNzUxNGQ5ZTI0MDNjMS4uMzM3NWE5NTY2MzdiZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbisrKyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbkBAIC0zMDk5LDkgKzMwOTksNyBAQCBzdGF0aWMgaW50IHNldF9hZGFwdGVyX2ludChzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcbiB2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgbWNja192b2xhdGlsZV9pbmZvICptY2NrX2luZm8pXG4ge1xuLVx0c3RydWN0IGt2bV9zMzkwX2ludGVycnVwdF9pbmZvIGludGk7XG4tXHRzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlycTtcbi1cdHN0cnVjdCBrdm1fczM5MF9tY2hrX2luZm8gKm1jaGs7XG4rXHRzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlycSA9IHt9O1xuIFx0dW5pb24gbWNpIG1jaTtcbiBcdF9fdTY0IGNyMTQgPSAwOyAgICAgICAgIC8qIHVwcGVyIGJpdHMgYXJlIG5vdCB1c2VkICovXG4gXHRpbnQgcmM7XG5AQCAtMzEyMCwyMCArMzExOCwxNCBAQCB2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0aWYgKG1jaS53KVxuIFx0XHRjcjE0IHw9IENSMTRfV0FSTklOR19TVUJNQVNLO1xuIFxuLVx0bWNoayA9IG1jaS5jayA/IFx1MDAyNmludGkubWNoayA6IFx1MDAyNmlycS51Lm1jaGs7XG4tXHRtY2hrLVx1MDAzZWNyMTQgPSBjcjE0O1xuLVx0bWNoay1cdTAwM2VtY2ljID0gbWNja19pbmZvLVx1MDAzZW1jaWM7XG4tXHRtY2hrLVx1MDAzZWV4dF9kYW1hZ2VfY29kZSA9IG1jY2tfaW5mby1cdTAwM2VleHRfZGFtYWdlX2NvZGU7XG4tXHRtY2hrLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzID0gbWNja19pbmZvLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzO1xuLVx0aWYgKG1jaS5jaykge1xuLVx0XHQvKiBJbmplY3QgdGhlIGZsb2F0aW5nIG1hY2hpbmUgY2hlY2sgKi9cbi1cdFx0aW50aS50eXBlID0gS1ZNX1MzOTBfTUNISztcbi1cdFx0cmMgPSBfX2luamVjdF92bSh2Y3B1LVx1MDAzZWt2bSwgXHUwMDI2aW50aSk7XG4tXHR9IGVsc2Uge1xuLVx0XHQvKiBJbmplY3QgdGhlIG1hY2hpbmUgY2hlY2sgdG8gc3BlY2lmaWVkIHZjcHUgKi9cbi1cdFx0aXJxLnR5cGUgPSBLVk1fUzM5MF9NQ0hLO1xuLVx0XHRyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsIFx1MDAyNmlycSk7XG4tXHR9XG4rXHRpcnEudS5tY2hrLmNyMTQgPSBjcjE0O1xuK1x0aXJxLnUubWNoay5tY2ljID0gbWNja19pbmZvLVx1MDAzZW1jaWM7XG4rXHRpcnEudS5tY2hrLmV4dF9kYW1hZ2VfY29kZSA9IG1jY2tfaW5mby1cdTAwM2VleHRfZGFtYWdlX2NvZGU7XG4rXHRpcnEudS5tY2hrLmZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzID0gbWNja19pbmZvLVx1MDAzZWZhaWxpbmdfc3RvcmFnZV9hZGRyZXNzO1xuK1xuK1x0LyogSW5qZWN0IHRoZSBtYWNoaW5lIGNoZWNrIHRvIHNwZWNpZmllZCB2Y3B1ICovXG4rXHRpcnEudHlwZSA9IEtWTV9TMzkwX01DSEs7XG4rXHRyYyA9IGt2bV9zMzkwX2luamVjdF92Y3B1KHZjcHUsIFx1MDAyNmlycSk7XG4gXHRXQVJOX09OX09OQ0UocmMpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE4OjIyOjU4LjQ3Mzg3OTEyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5Mzg3NjM1OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggZm9yIHMzOTB4IE1hY2hpbmUgQ2hlY2sgSGFuZGxpbmcgaW4gS1ZNKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIGhvdyB0aGUgczM5MHggYXJjaGl0ZWN0dXJlIGhhbmRsZXMgbWFjaGluZSBjaGVja3MgKE5NSXMpIHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50LiBTcGVjaWZpY2FsbHksIGl0J3MgdHdlYWtpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGhvc3QgYW5kIGd1ZXN0IHdpdGggcmVzcGVjdCB0byB0aGVzZSBtYWNoaW5lIGNoZWNrIGV4Y2VwdGlvbnMuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGp1c3RpbmcgYSBmZXcga2V5IGFyZWFzOiBhZGRpbmcgYSBmbGFnIHJlbGF0ZWQgdG8gbWFjaGluZSBjaGVja3MgdG8gYSBzcGVjaWZpYyBlbnVtIGluIGBhc20vbm1pLmhgLCBtb2RpZnlpbmcgdGhlIGxvZ2ljIGluIGBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrYCB0byBlbnN1cmUgdGhlIG1hY2hpbmUgY2hlY2sgaXMgaW5qZWN0ZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCBhbmQgYWxzbyBhbHRlcmluZyBob3cgbWFjaGluZSBjaGVjayBpbmZvcm1hdGlvbiBpcyBiYWNrZWQgdXAgaW4gYHMzOTBfYmFja3VwX21jY2tfaW5mb2AgaW4gYGtlcm5lbC9ubWkuY2AuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBmdXp6YWJsZS4gU2luY2UgdGhpcyB0b3VjaGVzIEtWTSBjb2RlIGFuZCByZWxhdGVzIHRvIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgZXJyb3JzLCBpdCBkZWZpbml0ZWx5IGZhbGxzIGludG8gYW4gYXJlYSB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgY29kZSBkdXJpbmcgZnV6emluZz8gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gaWdub3JlIGNvZGUgdGhhdCBjYW4ndCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIEJ1dCwgaXMgS1ZNIG9uIHMzOTB4IFFFTVUgcmVhY2hhYmxlP1xuXG5JdCBsb29rcyBsaWtlIEkgbmVlZCB0byBjb25maXJtIHRoZSBmdXp6aW5nIGFwcHJvYWNoLiBGaXJzdCwgc2luY2Ugc3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IHMzOTB4LCBhbmQgZG9lcyBydW4gVk1zLCBteSBmaXJzdCB0aG91Z2h0IGlzIGNvcnJlY3QuIE9rYXksIHN5emthbGxlciAqY2FuKiB0YXJnZXQgczM5MHggVk1zLiBUaGVuIEkgcmVtZW1iZXIgdGhhdCBRRU1VIGNhbiBlbXVsYXRlIHMzOTB4LCBhbmQgcnVuIEtWTSwgKmlmKiB0aGUgaG9zdCBpcyBzMzkweC4gU28sIGlmIHdlIGFyZSBmdXp6aW5nIEtWTSBvbiBzMzkweCwgdGhpcyBpcyAqZGVmaW5pdGVseSogcmVhY2hhYmxlLlxuXG5Db25zaWRlcmluZyB0aGUgcGF0Y2ggbW9kaWZpZXMgYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgLCBhbmQgdGhhdCdzICpLVk0qIGNvZGUsIHdlIGNhbiwgaW4gZmFjdCwgZnV6eiB0aGlzLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBMZXQncyBzZWUsIGBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrYCBhbmQgYHMzOTBfYmFja3VwX21jY2tfaW5mb2AgYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZvY3VzLiBOZXh0LCBsZXQncyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfS1ZNYCBpcyBlbmFibGVkLCB3aGljaCBpcyBzdGFuZGFyZC4gYGFyY2gvczM5MC9rZXJuZWwvbm1pLmNgIGlzIGFsd2F5cyBjb21waWxlZCBmb3IgczM5MCwgc28gdGhhdCdzIGdvb2QuIExvb2tzIGxpa2Ugd2UncmUgc2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQ5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTg6MjM6MDguNDEyNjQ0NzE1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODEyNzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zMDcyPXN0YXRpYyBpbnQgc2V0X2FkYXB0ZXJfaW50KHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDk4LSAqL1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzA5OTp2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzEwMC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtY2NrX3ZvbGF0aWxlX2luZm8gKm1jY2tfaW5mbylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00NzI1PXN0YXRpYyBpbnQgdmNwdV9wb3N0X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzaWVfcmV0dXJuKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQ3NDQtXFx0XFx0bWNja19pbmZvID0gXFx1MDAyNnNpZV9wYWdlLVxcdTAwM2VtY2NrX2luZm87XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQ3NDU6XFx0XFx0a3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVjayh2Y3B1LCBtY2NrX2luZm8pO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00NzQ2LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTU3OD1zdGF0aWMgaW5saW5lIGludCBrdm1fczM5MF91c2Vfc2NhX2VudHJpZXModm9pZClcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC01ODYtfVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaDo1ODc6dm9pZCBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtNTg4LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG1jY2tfdm9sYXRpbGVfaW5mbyAqbWNja19pbmZvKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jPTExODc9c3RhdGljIGludCBkb192c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSwgc3RydWN0IGdtYXAgKnNnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTI1MC1cXHRpZiAoc2llX3JldHVybiA9PSBTSUU2NF9SRVRVUk5fTUNDSykge1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjEyNTE6XFx0XFx0a3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVjayh2Y3B1LCBcXHUwMDI2dnNpZV9wYWdlLVxcdTAwM2VtY2NrX2luZm8pO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTEyNTItXFx0XFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE4OjIzOjA4LjQ1NjQ1OTU0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MTc3MzI5NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogS1ZNL3MzOTAgTWFjaGluZSBDaGVjayBSZS1JbmplY3Rpb24qKlxuXG5SaWdodCwgc28gYGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2tgIGlzIGNhbGxlZCBmcm9tIHR3byBrZXkgZXhlY3V0aW9uIHBhdGhzOiBgdmNwdV9wb3N0X3J1bmAgYW5kIGBkb192c2llX3J1bmAuIFRoYXQgaW5zdGFudGx5IG1ha2VzIGl0IGludGVyZXN0aW5nIGJlY2F1c2UgdGhlc2UgYXJlIGZ1bmRhbWVudGFsIHRvIEtWTSdzIHMzOTAgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIGEgY3JpdGljYWwgYXJlYS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjb25zaWRlciBpdCBhcyBhIGZ1enppbmcgdGFyZ2V0OyB0aGF0J3MgdGhlIHN0YW5kYXJkIHByYWN0aWNlIGhlcmUuIEFuZCwgeWVzLCBmdW5jdGlvbmFsbHksIGl0IG1ha2VzIHNlbnNlIHRvIHRhcmdldCBpdC5cblxuTm93LCBsZXQncyBuYXJyb3cgdGhlIGZvY3VzLiBXZSdyZSBvYnZpb3VzbHkgbG9va2luZyBhdCBga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja2AgYXMgdGhlIHByaW1hcnkgZnVuY3Rpb24uIEJ1dCBJIG5lZWQgdG8gYWxzbyBjaGVjayBvdXQgYHMzOTBfYmFja3VwX21jY2tfaW5mb2AuIEhvbGQgb24uLi4gVGhhdCdzIHN0YXRpYywgd2hpY2ggdXN1YWxseSBtZWFucyBpdCdzIG5vdCBhIGRpcmVjdCBwb2ludCBvZiBlbnRyeSwgYnV0IGl0IGNvdWxkIHN0aWxsIGJlIGludGVyZXN0aW5nIGlmIGl0J3MgaW5saW5lZC4gV29ydGggYSBxdWljayBjaGVjayB0byBzZWUgaG93IGl0J3MgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIG1haW4gZnVuY3Rpb24sIGlmIGF0IGFsbC4gSW5saW5pbmcgY291bGQgY2hhbmdlIHRoZSBnYW1lIGluIHRlcm1zIG9mIGZ1enppbmcgcG90ZW50aWFsLCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyIGFuZCBvcHRpbWl6YXRpb24gc2V0dGluZ3MuIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGEgZGlyZWN0IHRhcmdldCwgb3IgaW5kaXJlY3RseSBkdWUgdG8gaW5saW5pbmc/IFRpbWUgdG8gbG9vayBhdCB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6NTI5OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMzoxMy44NzQxOTUyODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2MDEwMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiczM5MF9iYWNrdXBfbWNja19pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rZXJuZWwvbm1pLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2tlcm5lbC9ubWkuYz0zMjg9Tk9LUFJPQkVfU1lNQk9MKG5taV9yZWdpc3RlcnNfdmFsaWQpO1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zMzItICovXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYzozMzM6c3RhdGljIHZvaWQgbm90cmFjZSBzMzkwX2JhY2t1cF9tY2NrX2luZm8oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zMzQte1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zNTAtfVxcbmFyY2gvczM5MC9rZXJuZWwvbm1pLmM6MzUxOk5PS1BST0JFX1NZTUJPTChzMzkwX2JhY2t1cF9tY2NrX2luZm8pO1xcbmFyY2gvczM5MC9rZXJuZWwvbm1pLmMtMzUyLVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYz0zNjI9dm9pZCBub3RyYWNlIHMzOTBfZG9fbWFjaGluZV9jaGVjayhzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvbm1pLmMtNDQxLVxcdGlmICh0ZXN0X2NwdV9mbGFnKENJRl9NQ0NLX0dVRVNUKSlcXG5hcmNoL3MzOTAva2VybmVsL25taS5jOjQ0MjpcXHRcXHRzMzkwX2JhY2t1cF9tY2NrX2luZm8ocmVncyk7XFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy00NDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE4OjIzOjEzLjkxNjgwMDI1MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNzMyNTk1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTMzkwIE1hY2hpbmUgQ2hlY2sgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIGhvdyBtYWNoaW5lIGNoZWNrcyBhcmUgaGFuZGxlZCBvbiB0aGUgczM5MCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmb2N1cyBvbiBgczM5MF9iYWNrdXBfbWNja19pbmZvYCwgd2hpY2ggc2VlbXMgbGlrZSBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gSG93ZXZlciwgSSBzZWUgaXQncyBzdGF0aWMsIGFuZCBub3QgaW5saW5lZCwgYW5kIGl0J3MgY2FsbGVkIGZyb20gYHMzOTBfZG9fbWFjaGluZV9jaGVja2AuIFRoYXQgY2hhbmdlcyB0aGluZ3M7IGl0IGltcGxpZXMgaXQncyB1c2VkIGludGVybmFsbHkgd2l0aGluIGEgbGFyZ2VyIHByb2Nlc3MuXG5cbkFoLCBgczM5MF9kb19tYWNoaW5lX2NoZWNrYC4uLiByaWdodC4gVGhhdCAqaXMqIHRoZSBtYWluIG1hY2hpbmUgY2hlY2sgaGFuZGxlciwgaXNuJ3QgaXQ/IFRoYXQgZmVlbHMgbGlrZSBhIG11Y2ggbW9yZSBzaWduaWZpY2FudCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24uIExldCdzIGNvbmZpcm0gdGhhdC4gWWVzLCB0aGFua2Z1bGx5LCBgczM5MF9kb19tYWNoaW5lX2NoZWNrYCBpcywgaW4gZmFjdCwgbm9uLXN0YXRpYy4gR29vZC4gVGhhdCBzaW1wbGlmaWVzIHRoZSBhbmFseXNpcyBxdWl0ZSBhIGJpdC5cblxuTm93LCBsZXQncyBzZWUgYWJvdXQgYGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2tgLi4uIGlzICp0aGF0KiBub24tc3RhdGljPyBZZXMsIGl0IGlzLiBUaGF0J3MgZ29vZCwgdG9vLiBJdCBtZWFucyBpdCdzIGxpa2VseSB0byBiZSBpbnZvbHZlZCBpbiB0aGUgS1ZNIGludGVyYWN0aW9uLlxuXG5HaXZlbiB0aGF0LCBJJ2xsIHN3aXRjaCBnZWFycyBhbmQgdmVyaWZ5IHRoZSBLVk0gY29uZmlndXJhdGlvbiBmb3IgdGhlIGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY2AuIEknbGwgd2FudCB0byBjaGVjayB0aGUgYEtWTWAgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIGBhcmNoL3MzOTAva3ZtL0tjb25maWdgIHRvIHVuZGVyc3RhbmQgaXRzIGluZmx1ZW5jZSBvbiB0aGlzIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTg6MjM6MTkuMjkwMDYzMDQ5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjg1NTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vS2NvbmZpZz0xNz1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0yMC1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ2LVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTg6MjM6MTkuMzMzNzUyMzU1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzkxNDY5NDg3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbm5lciBtb25vbG9ndWU6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gYW5kIE5NSSBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGBLVk1gLiBUaGF0J3MgdGhlIHNldHVwLCBnb3QgaXQuIE5vdywgZ2l2ZW4gdGhhdCBjb250ZXh0LCBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgTk1JcyBhcmUgaGFuZGxlZCBvbiBzMzkwLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYEtWTWAgYW5kIHRoZSBOTUkgY29kZSBwYXRoLiBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gYGFyY2gvczM5MC9rZXJuZWwvbm1pLmNgLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQncyBhbHdheXMgY29tcGlsZWQgaW4sIHdoaWNoIGlzIHRoZSBleHBlY3RlZCBiZWhhdmlvciwgYnV0IEknbGwgY29uZmlybSB0aGF0IGluIHRoZSBjb2RlIGl0c2VsZiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIEl0IGlzIGltcGVyYXRpdmUgdGhhdCBJIGFtIGNlcnRhaW4gb2YgdGhlIGNvbmZpZ3VyYXRpb24sIGFzIHRoaXMgdW5kZXJwaW5zIHRoZSBlbnRpcmUgS1ZNIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgyNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE4OjIzOjI3LjI0ODQ0OTU0NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwMjk0NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibm1pXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZT0zOT1vYmoteVxcdDo9IGhlYWQubyB0cmFwcy5vIHRpbWUubyBwcm9jZXNzLm8gZWFybHkubyBzZXR1cC5vIGlkbGUubyB2dGltZS5vXFxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZTo0MDpvYmoteVxcdCs9IHByb2Nlc3Nvci5vIHN5c2NhbGwubyBwdHJhY2UubyBzaWduYWwubyBjcGNtZC5vIGViY2RpYy5vIG5taS5vXFxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS00MS1vYmoteVxcdCs9IGRlYnVnLm8gaXJxLm8gaXBsLm8gZGlzLm8gdmRzby5vIGNwdWZlYXR1cmUub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMzoyNy4yOTI0ODI2MjJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEyNTAxNTk2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRhcmdldCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIGBubWkub2AgaXMgYWx3YXlzIGNvbXBpbGVkLCB0aGF0J3MgZ29vZCB0byBrbm93LiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgY2xlYXJseSBgS1ZNYC4gVGhlIGZvY3VzIHN5bWJvbHMgSSBuZWVkIHRvIGNvbnNpZGVyIGFyZSBga3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja2AgYW5kIGBzMzkwX2RvX21hY2hpbmVfY2hlY2tgLiBIbW0sIHJpZ2h0LCBgczM5MF9kb19tYWNoaW5lX2NoZWNrYCBpcyB0aGUgYWN0dWFsIG1hY2hpbmUgY2hlY2sgaGFuZGxlci4gRnV6emluZyB0aGF0IGRpcmVjdGx5IHRocm91Z2ggYSBub3JtYWwgYXBwcm9hY2ggbWlnaHQgYmUgdHJpY2t5IGJlY2F1c2UgaXQncyBhbiBOTUkgaGFuZGxlci4gQnV0LCBjb25zaWRlcmluZyBpdCdzIHMzOTAgS1ZNLCBzeXprYWxsZXIgY291bGQgZGVmaW5pdGVseSBoaXQgaXQgaWYgaXQgY2FuIGluamVjdCBtYWNoaW5lIGNoZWNrcywgb3IgcG90ZW50aWFsbHkgdGhyb3VnaCBvdGhlciBLVk0gcmVsYXRlZCBmdW5jdGlvbmFsaXR5LlxuXG5BaCwgeWVzLCBLVk0gKmNhbiogaW5qZWN0IG1hY2hpbmUgY2hlY2tzLiBUaGF0IG1ha2VzIHRoaXMgbXVjaCBtb3JlIHByb21pc2luZy4gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIGxvb2tzIGxpa2UgaXQncyBhZGRyZXNzaW5nIGEgYnVnIHJlbGF0ZWQgdG8gbWFjaGluZSBjaGVjayByZWluamVjdGlvbiB3aXRoaW4gS1ZNIGd1ZXN0cy5cblxuVGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIGEgZGVlcCBkaXZlIHdpdGggZnV6emluZy4gTGV0J3MgZ2V0IHRoZSByZXNwb25zZSByZWFkeS5cblxuYGBgXG5Xb3J0aEZ1enppbmc6IHRydWVcbkZvY3VzU3ltYm9sczogW1wia3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja1wiLCBcInMzOTBfZG9fbWFjaGluZV9jaGVja1wiXVxuRW5hYmxlQ29uZmlnczogW1wiS1ZNXCJdXG5SZWFzb25pbmc6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1hY2hpbmUgY2hlY2sgKE5NSSkgaGFuZGxpbmcgYW5kIHJlaW5qZWN0aW9uIGxvZ2ljIGZvciBzMzkwIEtWTSBndWVzdHMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCJcbmBgYFxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjI5LCJPdXRwdXRUb2tlbnMiOjEwMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxODoyMzozNC40MTc1MDA3ODZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTEwNTU1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfcmVpbmplY3RfbWFjaGluZV9jaGVja1wiLFxuICAgIFwiczM5MF9kb19tYWNoaW5lX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWFjaGluZSBjaGVjayAoTk1JKSBoYW5kbGluZyBhbmQgcmVpbmplY3Rpb24gbG9naWMgZm9yIHMzOTAgS1ZNIGd1ZXN0cy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSB2aXJ0dWFsaXphdGlvbiBmdW5jdGlvbmFsaXR5IHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrXCIsXG4gICAgXCJzMzkwX2RvX21hY2hpbmVfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWNoaW5lIGNoZWNrIChOTUkpIGhhbmRsaW5nIGFuZCByZWluamVjdGlvbiBsb2dpYyBmb3IgczM5MCBLVk0gZ3Vlc3RzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkqh2h[1] Phase: Succeeded StartedAt: 2026-08-06 18:23:45 +0000 UTC FinishedAt: 2026-08-06 18:23:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 18:23:45 +0000 UTC FinishedAt: 2026-08-06 18:23:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2] Phase: Succeeded StartedAt: 2026-08-06 18:23:45 +0000 UTC FinishedAt: 2026-08-06 19:06:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 18:23:45 +0000 UTC FinishedAt: 2026-08-06 19:06:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 18:23:45 +0000 UTC FinishedAt: 2026-08-06 18:23:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 18:23:45 +0000 UTC FinishedAt: 2026-08-06 18:23:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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-workflowkqh2h/series-workflowkqh2h-convert-artifact-2563720460/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 18:23:55 +0000 UTC FinishedAt: 2026-08-06 18:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 18:23:55 +0000 UTC FinishedAt: 2026-08-06 18:40:53 +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:*a26380a4-f950-4a35-9b9c-e68d3f92ee31,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-workflowkqh2h/series-workflowkqh2h-convert-artifact-2563720460/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": "85b9834d-969c-4544-ac59-4f83ec8b6250", "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-workflowkqh2h/series-workflowkqh2h-build-action-2943224634/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 18:23:55 +0000 UTC FinishedAt: 2026-08-06 18:40:43 +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:*a26380a4-f950-4a35-9b9c-e68d3f92ee31,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-workflowkqh2h/series-workflowkqh2h-convert-artifact-2563720460/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": "85b9834d-969c-4544-ac59-4f83ec8b6250", "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-workflowkqh2h/series-workflowkqh2h-build-action-2943224634/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 18:40:53 +0000 UTC FinishedAt: 2026-08-06 18:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 18:40:53 +0000 UTC FinishedAt: 2026-08-06 18:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 18:40:53 +0000 UTC FinishedAt: 2026-08-06 18:41:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 18:40:53 +0000 UTC FinishedAt: 2026-08-06 18:40:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-workflowkqh2h/series-workflowkqh2h-convert-artifact-2049576523/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 18:41:03 +0000 UTC FinishedAt: 2026-08-06 18:43:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 18:41:03 +0000 UTC FinishedAt: 2026-08-06 18:42:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*85b9834d-969c-4544-ac59-4f83ec8b6250,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-workflowkqh2h/series-workflowkqh2h-build-action-2943224634/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-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 18:43:07 +0000 UTC FinishedAt: 2026-08-06 18:43:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 18:43:07 +0000 UTC FinishedAt: 2026-08-06 18:43:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 18:43:07 +0000 UTC FinishedAt: 2026-08-06 19:01:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 18:43:07 +0000 UTC FinishedAt: 2026-08-06 19:01:25 +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:*a26380a4-f950-4a35-9b9c-e68d3f92ee31,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-workflowkqh2h/series-workflowkqh2h-convert-artifact-2049576523/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": "7a6f74c0-0cd5-4935-8a70-3efbfadd490b", "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-workflowkqh2h/series-workflowkqh2h-build-action-631780079/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 18:43:07 +0000 UTC FinishedAt: 2026-08-06 19:01:15 +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:*a26380a4-f950-4a35-9b9c-e68d3f92ee31,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-workflowkqh2h/series-workflowkqh2h-convert-artifact-2049576523/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": "7a6f74c0-0cd5-4935-8a70-3efbfadd490b", "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-workflowkqh2h/series-workflowkqh2h-build-action-631780079/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 19:01:25 +0000 UTC FinishedAt: 2026-08-06 19:01:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 19:01:25 +0000 UTC FinishedAt: 2026-08-06 19:01:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-06 19:01:25 +0000 UTC FinishedAt: 2026-08-06 19:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 19:01:25 +0000 UTC FinishedAt: 2026-08-06 19:03:15 +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:*7a6f74c0-0cd5-4935-8a70-3efbfadd490b,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-workflowkqh2h/series-workflowkqh2h-build-action-631780079/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-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 19:03:25 +0000 UTC FinishedAt: 2026-08-06 19:06:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 19:03:25 +0000 UTC FinishedAt: 2026-08-06 19:06:38 +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_s390_reinject_machine_check","s390_do_machine_check"],"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:*85b9834d-969c-4544-ac59-4f83ec8b6250,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7a6f74c0-0cd5-4935-8a70-3efbfadd490b,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-workflowkqh2h/series-workflowkqh2h-build-action-2943224634/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-workflowkqh2h/series-workflowkqh2h-build-action-631780079/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 19:03:25 +0000 UTC FinishedAt: 2026-08-06 19:03:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 19:03:25 +0000 UTC FinishedAt: 2026-08-06 19:03:31 +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_s390_reinject_machine_check","s390_do_machine_check"],"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-workflowkqh2h/series-workflowkqh2h-convert-artifact-717288676/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 19:03:25 +0000 UTC FinishedAt: 2026-08-06 19:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 19:03:25 +0000 UTC FinishedAt: 2026-08-06 19:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 19:03:25 +0000 UTC FinishedAt: 2026-08-06 19:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 19:03:35 +0000 UTC FinishedAt: 2026-08-06 19:06:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkqh2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","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_s390_reinject_machine_check","s390_do_machine_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"26505e1b5b546e2fa9a0296b951ca158460c72d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"2a5feea4-06d8-48d1-8e79-9b168248bcd3","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-08-06 19:03:35 +0000 UTC FinishedAt: 2026-08-06 19:06:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*85b9834d-969c-4544-ac59-4f83ec8b6250,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7a6f74c0-0cd5-4935-8a70-3efbfadd490b,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-workflowkqh2h/series-workflowkqh2h-build-action-2943224634/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-workflowkqh2h/series-workflowkqh2h-build-action-631780079/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-workflowkqh2h/series-workflowkqh2h-convert-artifact-717288676/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,}