Name: series-workflowk5bln Phase: Succeeded StartedAt: 2026-07-18 04:52:12 +0000 UTC FinishedAt: 2026-07-18 06:36:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[0] Phase: Succeeded StartedAt: 2026-07-18 04:52:12 +0000 UTC FinishedAt: 2026-07-18 05:13:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[0].run-triage Phase: Succeeded StartedAt: 2026-07-18 04:52:12 +0000 UTC FinishedAt: 2026-07-18 05:13:20 +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": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "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": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "4af848d8-ecfc-4c11-b5a2-bc57568c55d5" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_local_hfence_gvma_vmid_gpa", "kvm_riscv_local_hfence_gvma_gpa", "kvm_riscv_local_hfence_vvma_asid_gva", "kvm_riscv_local_hfence_vvma_gva", "kvm_riscv_hfence_process" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9oZmVuY2VfcHJvY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zIGJ5IGFkZGluZyBvdmVyZmxvdyBjaGVja3MgYW5kIG1vZGlmeWluZyBsb29wIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGhhbmRsaW5nIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2Q3YTJkZGM0MmQ3Mjk4YTIwMjk4MWVjMmY3ZmQ5NDBiODg3MGVkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDE4IDA1OjEyOjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbmluZGV4IDk5M2IyNWVhOTRkNjc0Li5iMGM4M2UzY2NjMTVhOCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuQEAgLTgsNiAmIzQzOzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L292ZXJmbG93LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY2FjaGVmbHVzaC5oXHUwMDNlXG5AQCAtMjQsNyAmIzQzOzI1LDEyIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhKHVuc2lnbmVkIGxvbmcgdm1pZCxcbiBcdFx0XHRcdFx0ICBncGFfdCBncGEsIGdwYV90IGdwc3osXG4gXHRcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBvcmRlcilcbiB7XG4tXHRncGFfdCBwb3M7XG4mIzQzO1x0Z3BhX3QgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xuJiM0MztcbiYjNDM7XHRpZiAoY2hlY2tfYWRkX292ZXJmbG93KGdwYSwgZ3BzeiwgXHUwMDI2ZW5kKSkge1xuJiM0MztcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiBcbiBcdGlmIChQVFJTX1BFUl9QVEUgXHUwMDNjIChncHN6IFx1MDAzZVx1MDAzZSBvcmRlcikpIHtcbiBcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xuQEAgLTMzLDE0ICYjNDM7MzksMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEodW5zaWduZWQgbG9uZyB2bWlkLFxuIFxuIFx0aWYgKGhhc19zdmludmFsKCkpIHtcbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfV19JTlZBTCgpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuLVx0XHRmb3IgKHBvcyA9IGdwYTsgcG9zIFx1MDAzYyAoZ3BhICYjNDM7IGdwc3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpXG4mIzQzO1x0XHRmb3IgKHBvcyA9IGdwYTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyAmIzQzOz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZSAoSElOVkFMX0dWTUEoJTAsICUxKVxuIFx0XHRcdDogOiBcJiMzNDtyXCYjMzQ7IChwb3MgXHUwMDNlXHUwMDNlIDIpLCBcJiMzNDtyXCYjMzQ7ICh2bWlkKSA6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuIFx0fSBlbHNlIHtcbi1cdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgKGdwYSAmIzQzOyBncHN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKVxuJiM0MztcdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUgKEhGRU5DRV9HVk1BKCUwLCAlMSlcbiBcdFx0XHQ6IDogXCYjMzQ7clwmIzM0OyAocG9zIFx1MDAzZVx1MDAzZSAyKSwgXCYjMzQ7clwmIzM0OyAodm1pZCkgOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0MztcdFx0XHRpZiAoZW5kIC0gcG9zIFx1MDAzYz0gc3RlcClcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtNTIsNyAmIzQzOzY0LDEyIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZClcbiB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGEoZ3BhX3QgZ3BhLCBncGFfdCBncHN6LFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIG9yZGVyKVxuIHtcbi1cdGdwYV90IHBvcztcbiYjNDM7XHRncGFfdCBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7XG4mIzQzO1xuJiM0MztcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3BhLCBncHN6LCBcdTAwMjZlbmQpKSB7XG4mIzQzO1x0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfYWxsKCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuIFx0aWYgKFBUUlNfUEVSX1BURSBcdTAwM2MgKGdwc3ogXHUwMDNlXHUwMDNlIG9yZGVyKSkge1xuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfYWxsKCk7XG5AQCAtNjEsMTQgJiM0Mzs3OCwyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGEoZ3BhX3QgZ3BhLCBncGFfdCBncHN6LFxuIFxuIFx0aWYgKGhhc19zdmludmFsKCkpIHtcbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfV19JTlZBTCgpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuLVx0XHRmb3IgKHBvcyA9IGdwYTsgcG9zIFx1MDAzYyAoZ3BhICYjNDM7IGdwc3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpXG4mIzQzO1x0XHRmb3IgKHBvcyA9IGdwYTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyAmIzQzOz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZShISU5WQUxfR1ZNQSglMCwgemVybylcbiBcdFx0XHQ6IDogXCYjMzQ7clwmIzM0OyAocG9zIFx1MDAzZVx1MDAzZSAyKSA6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuIFx0fSBlbHNlIHtcbi1cdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgKGdwYSAmIzQzOyBncHN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKVxuJiM0MztcdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUoSEZFTkNFX0dWTUEoJTAsIHplcm8pXG4gXHRcdFx0OiA6IFwmIzM0O3JcJiMzNDsgKHBvcyBcdTAwM2VcdTAwM2UgMikgOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0MztcdFx0XHRpZiAoZW5kIC0gcG9zIFx1MDAzYz0gc3RlcClcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtODMsNyAmIzQzOzEwNiwxMyBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXG4gXHRcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBndnN6LFxuIFx0XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgb3JkZXIpXG4ge1xuLVx0dW5zaWduZWQgbG9uZyBwb3MsIGhnYXRwO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgaGdhdHA7XG4mIzQzO1xuJiM0MztcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3ZhLCBndnN6LCBcdTAwMjZlbmQpKSB7XG4mIzQzO1x0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9hbGwodm1pZCwgYXNpZCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuIFx0aWYgKFBUUlNfUEVSX1BURSBcdTAwM2MgKGd2c3ogXHUwMDNlXHUwMDNlIG9yZGVyKSkge1xuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9hbGwodm1pZCwgYXNpZCk7XG5AQCAtOTQsMTQgJiM0MzsxMjMsMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmEodW5zaWduZWQgbG9uZyB2bWlkLFxuIFxuIFx0aWYgKGhhc19zdmludmFsKCkpIHtcbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfV19JTlZBTCgpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICYjNDM7IGd2c3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpXG4mIzQzO1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyAmIzQzOz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZShISU5WQUxfVlZNQSglMCwgJTEpXG4gXHRcdFx0OiA6IFwmIzM0O3JcJiMzNDsgKHBvcyksIFwmIzM0O3JcJiMzNDsgKGFzaWQpIDogXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiYjNDM7XHRcdFx0aWYgKGVuZCAtIHBvcyBcdTAwM2M9IHN0ZXApXG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4gXHRcdGFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4gXHR9IGVsc2Uge1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICYjNDM7IGd2c3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpXG4mIzQzO1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyAmIzQzOz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZShIRkVOQ0VfVlZNQSglMCwgJTEpXG4gXHRcdFx0OiA6IFwmIzM0O3JcJiMzNDsgKHBvcyksIFwmIzM0O3JcJiMzNDsgKGFzaWQpIDogXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiYjNDM7XHRcdFx0aWYgKGVuZCAtIHBvcyBcdTAwM2M9IHN0ZXApXG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRjc3Jfd3JpdGUoQ1NSX0hHQVRQLCBoZ2F0cCk7XG5AQCAtMTIzLDcgJiM0MzsxNTgsMTMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhKHVuc2lnbmVkIGxvbmcgdm1pZCxcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBndmEsIHVuc2lnbmVkIGxvbmcgZ3ZzeixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBvcmRlcilcbiB7XG4tXHR1bnNpZ25lZCBsb25nIHBvcywgaGdhdHA7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBoZ2F0cDtcbiYjNDM7XG4mIzQzO1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhndmEsIGd2c3osIFx1MDAyNmVuZCkpIHtcbiYjNDM7XHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodm1pZCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuIFx0aWYgKFBUUlNfUEVSX1BURSBcdTAwM2MgKGd2c3ogXHUwMDNlXHUwMDNlIG9yZGVyKSkge1xuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpO1xuQEAgLTEzNCwxNCAmIzQzOzE3NSwyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmEodW5zaWduZWQgbG9uZyB2bWlkLFxuIFxuIFx0aWYgKGhhc19zdmludmFsKCkpIHtcbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfV19JTlZBTCgpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICYjNDM7IGd2c3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpXG4mIzQzO1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyAmIzQzOz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZShISU5WQUxfVlZNQSglMCwgemVybylcbiBcdFx0XHQ6IDogXCYjMzQ7clwmIzM0OyAocG9zKSA6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuIFx0fSBlbHNlIHtcbi1cdFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcdTAwM2MgKGd2YSAmIzQzOyBndnN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKVxuJiM0MztcdFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcdTAwM2MgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUoSEZFTkNFX1ZWTUEoJTAsIHplcm8pXG4gXHRcdFx0OiA6IFwmIzM0O3JcJiMzNDsgKHBvcykgOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0MztcdFx0XHRpZiAoZW5kIC0gcG9zIFx1MDAzYz0gc3RlcClcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdGNzcl93cml0ZShDU1JfSEdBVFAsIGhnYXRwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmEmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgaXNzdWVzIGluIFJJU0MtViBLVk0gVExCIGZsdXNoIGZ1bmN0aW9ucyBieSBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGFuZCBtb2RpZnlpbmcgbG9vcCBjb25kaXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIGZvciBSSVNDLVYgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBvdmVyZmxvdyBoYW5kbGluZyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2Q3YTJkZGM0MmQ3Mjk4YTIwMjk4MWVjMmY3ZmQ5NDBiODg3MGVkYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDE4IDA1OjEyOjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdGxiLmMgYi9hcmNoL3Jpc2N2L2t2bS90bGIuYwppbmRleCA5OTNiMjVlYTk0ZDY3NC4uYjBjODNlM2NjYzE1YTggMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3RsYi5jCkBAIC04LDYgJiM0Mzs4LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9lcnJuby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vyci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vdmVyZmxvdy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NtcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2t2bV9ob3N0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2NhY2hlZmx1c2guaCZndDsKQEAgLTI0LDcgJiM0MzsyNSwxMiBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYSh1bnNpZ25lZCBsb25nIHZtaWQsCiAJCQkJCSAgZ3BhX3QgZ3BhLCBncGFfdCBncHN6LAogCQkJCQkgIHVuc2lnbmVkIGxvbmcgb3JkZXIpCiB7Ci0JZ3BhX3QgcG9zOwomIzQzOwlncGFfdCBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7CiYjNDM7CiYjNDM7CWlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3BhLCBncHN6LCAmYW1wO2VuZCkpIHsKJiM0MzsJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCiAJaWYgKFBUUlNfUEVSX1BURSAmbHQ7IChncHN6ICZndDsmZ3Q7IG9yZGVyKSkgewogCQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7CkBAIC0zMywxNCAmIzQzOzM5LDIwIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhKHVuc2lnbmVkIGxvbmcgdm1pZCwKIAogCWlmIChoYXNfc3ZpbnZhbCgpKSB7CiAJCWFzbSB2b2xhdGlsZSAoU0ZFTkNFX1dfSU5WQUwoKSA6OjogJiMzNDttZW1vcnkmIzM0Oyk7Ci0JCWZvciAocG9zID0gZ3BhOyBwb3MgJmx0OyAoZ3BhICYjNDM7IGdwc3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpCiYjNDM7CQlmb3IgKHBvcyA9IGdwYTsgcG9zICZsdDsgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHsKIAkJCWFzbSB2b2xhdGlsZSAoSElOVkFMX0dWTUEoJTAsICUxKQogCQkJOiA6ICYjMzQ7ciYjMzQ7IChwb3MgJmd0OyZndDsgMiksICYjMzQ7ciYjMzQ7ICh2bWlkKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWlmIChlbmQgLSBwb3MgJmx0Oz0gc3RlcCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9CiAJCWFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6ICYjMzQ7bWVtb3J5JiMzNDspOwogCX0gZWxzZSB7Ci0JCWZvciAocG9zID0gZ3BhOyBwb3MgJmx0OyAoZ3BhICYjNDM7IGdwc3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpCiYjNDM7CQlmb3IgKHBvcyA9IGdwYTsgcG9zICZsdDsgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHsKIAkJCWFzbSB2b2xhdGlsZSAoSEZFTkNFX0dWTUEoJTAsICUxKQogCQkJOiA6ICYjMzQ7ciYjMzQ7IChwb3MgJmd0OyZndDsgMiksICYjMzQ7ciYjMzQ7ICh2bWlkKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWlmIChlbmQgLSBwb3MgJmx0Oz0gc3RlcCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9CiAJfQogfQogCkBAIC01Miw3ICYjNDM7NjQsMTIgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodW5zaWduZWQgbG9uZyB2bWlkKQogdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhKGdwYV90IGdwYSwgZ3BhX3QgZ3BzeiwKIAkJCQkgICAgIHVuc2lnbmVkIGxvbmcgb3JkZXIpCiB7Ci0JZ3BhX3QgcG9zOwomIzQzOwlncGFfdCBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7CiYjNDM7CiYjNDM7CWlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3BhLCBncHN6LCAmYW1wO2VuZCkpIHsKJiM0MzsJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9hbGwoKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCiAJaWYgKFBUUlNfUEVSX1BURSAmbHQ7IChncHN6ICZndDsmZ3Q7IG9yZGVyKSkgewogCQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfYWxsKCk7CkBAIC02MSwxNCAmIzQzOzc4LDIwIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYShncGFfdCBncGEsIGdwYV90IGdwc3osCiAKIAlpZiAoaGFzX3N2aW52YWwoKSkgewogCQlhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6ICYjMzQ7bWVtb3J5JiMzNDspOwotCQlmb3IgKHBvcyA9IGdwYTsgcG9zICZsdDsgKGdwYSAmIzQzOyBncHN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKQomIzQzOwkJZm9yIChwb3MgPSBncGE7IHBvcyAmbHQ7IGVuZDsgcG9zICYjNDM7PSBzdGVwKSB7CiAJCQlhc20gdm9sYXRpbGUoSElOVkFMX0dWTUEoJTAsIHplcm8pCiAJCQk6IDogJiMzNDtyJiMzNDsgKHBvcyAmZ3Q7Jmd0OyAyKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWlmIChlbmQgLSBwb3MgJmx0Oz0gc3RlcCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9CiAJCWFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6ICYjMzQ7bWVtb3J5JiMzNDspOwogCX0gZWxzZSB7Ci0JCWZvciAocG9zID0gZ3BhOyBwb3MgJmx0OyAoZ3BhICYjNDM7IGdwc3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpCiYjNDM7CQlmb3IgKHBvcyA9IGdwYTsgcG9zICZsdDsgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHsKIAkJCWFzbSB2b2xhdGlsZShIRkVOQ0VfR1ZNQSglMCwgemVybykKIAkJCTogOiAmIzM0O3ImIzM0OyAocG9zICZndDsmZ3Q7IDIpIDogJiMzNDttZW1vcnkmIzM0Oyk7CiYjNDM7CQkJaWYgKGVuZCAtIHBvcyAmbHQ7PSBzdGVwKQomIzQzOwkJCQlicmVhazsKJiM0MzsJCX0KIAl9CiB9CiAKQEAgLTgzLDcgJiM0MzsxMDYsMTMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmEodW5zaWduZWQgbG9uZyB2bWlkLAogCQkJCQkgIHVuc2lnbmVkIGxvbmcgZ3ZzeiwKIAkJCQkJICB1bnNpZ25lZCBsb25nIG9yZGVyKQogewotCXVuc2lnbmVkIGxvbmcgcG9zLCBoZ2F0cDsKJiM0MzsJdW5zaWduZWQgbG9uZyBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7CiYjNDM7CXVuc2lnbmVkIGxvbmcgaGdhdHA7CiYjNDM7CiYjNDM7CWlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3ZhLCBndnN6LCAmYW1wO2VuZCkpIHsKJiM0MzsJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2FsbCh2bWlkLCBhc2lkKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCiAJaWYgKFBUUlNfUEVSX1BURSAmbHQ7IChndnN6ICZndDsmZ3Q7IG9yZGVyKSkgewogCQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9hbGwodm1pZCwgYXNpZCk7CkBAIC05NCwxNCAmIzQzOzEyMywyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsCiAKIAlpZiAoaGFzX3N2aW52YWwoKSkgewogCQlhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6ICYjMzQ7bWVtb3J5JiMzNDspOwotCQlmb3IgKHBvcyA9IGd2YTsgcG9zICZsdDsgKGd2YSAmIzQzOyBndnN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKQomIzQzOwkJZm9yIChwb3MgPSBndmE7IHBvcyAmbHQ7IGVuZDsgcG9zICYjNDM7PSBzdGVwKSB7CiAJCQlhc20gdm9sYXRpbGUoSElOVkFMX1ZWTUEoJTAsICUxKQogCQkJOiA6ICYjMzQ7ciYjMzQ7IChwb3MpLCAmIzM0O3ImIzM0OyAoYXNpZCkgOiAmIzM0O21lbW9yeSYjMzQ7KTsKJiM0MzsJCQlpZiAoZW5kIC0gcG9zICZsdDs9IHN0ZXApCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJfQogCQlhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiAmIzM0O21lbW9yeSYjMzQ7KTsKIAl9IGVsc2UgewotCQlmb3IgKHBvcyA9IGd2YTsgcG9zICZsdDsgKGd2YSAmIzQzOyBndnN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKQomIzQzOwkJZm9yIChwb3MgPSBndmE7IHBvcyAmbHQ7IGVuZDsgcG9zICYjNDM7PSBzdGVwKSB7CiAJCQlhc20gdm9sYXRpbGUoSEZFTkNFX1ZWTUEoJTAsICUxKQogCQkJOiA6ICYjMzQ7ciYjMzQ7IChwb3MpLCAmIzM0O3ImIzM0OyAoYXNpZCkgOiAmIzM0O21lbW9yeSYjMzQ7KTsKJiM0MzsJCQlpZiAoZW5kIC0gcG9zICZsdDs9IHN0ZXApCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJfQogCX0KIAogCWNzcl93cml0ZShDU1JfSEdBVFAsIGhnYXRwKTsKQEAgLTEyMyw3ICYjNDM7MTU4LDEzIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsCiAJCQkJICAgICB1bnNpZ25lZCBsb25nIGd2YSwgdW5zaWduZWQgbG9uZyBndnN6LAogCQkJCSAgICAgdW5zaWduZWQgbG9uZyBvcmRlcikKIHsKLQl1bnNpZ25lZCBsb25nIHBvcywgaGdhdHA7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpOwomIzQzOwl1bnNpZ25lZCBsb25nIGhnYXRwOwomIzQzOwomIzQzOwlpZiAoY2hlY2tfYWRkX292ZXJmbG93KGd2YSwgZ3ZzeiwgJmFtcDtlbmQpKSB7CiYjNDM7CQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiAKIAlpZiAoUFRSU19QRVJfUFRFICZsdDsgKGd2c3ogJmd0OyZndDsgb3JkZXIpKSB7CiAJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodm1pZCk7CkBAIC0xMzQsMTQgJiM0MzsxNzUsMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhKHVuc2lnbmVkIGxvbmcgdm1pZCwKIAogCWlmIChoYXNfc3ZpbnZhbCgpKSB7CiAJCWFzbSB2b2xhdGlsZSAoU0ZFTkNFX1dfSU5WQUwoKSA6OjogJiMzNDttZW1vcnkmIzM0Oyk7Ci0JCWZvciAocG9zID0gZ3ZhOyBwb3MgJmx0OyAoZ3ZhICYjNDM7IGd2c3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpCiYjNDM7CQlmb3IgKHBvcyA9IGd2YTsgcG9zICZsdDsgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHsKIAkJCWFzbSB2b2xhdGlsZShISU5WQUxfVlZNQSglMCwgemVybykKIAkJCTogOiAmIzM0O3ImIzM0OyAocG9zKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWlmIChlbmQgLSBwb3MgJmx0Oz0gc3RlcCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9CiAJCWFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6ICYjMzQ7bWVtb3J5JiMzNDspOwogCX0gZWxzZSB7Ci0JCWZvciAocG9zID0gZ3ZhOyBwb3MgJmx0OyAoZ3ZhICYjNDM7IGd2c3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpCiYjNDM7CQlmb3IgKHBvcyA9IGd2YTsgcG9zICZsdDsgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHsKIAkJCWFzbSB2b2xhdGlsZShIRkVOQ0VfVlZNQSglMCwgemVybykKIAkJCTogOiAmIzM0O3ImIzM0OyAocG9zKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWlmIChlbmQgLSBwb3MgJmx0Oz0gc3RlcCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9CiAJfQogCiAJY3NyX3dyaXRlKENTUl9IR0FUUCwgaGdhdHApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODc5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJJU0MtViBLVk0gVExCIEZsdXNoIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgbW9kaWZ5aW5nIGBhcmNoL3Jpc2N2L2t2bS90bGIuY2AuIEl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIG92ZXJmbG93IGNoZWNrcyB0byBhIGZldyBrZXkgZnVuY3Rpb25zOiBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhYCwgYW5kIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYC4gU21hcnQgbW92ZS4gVGhleSYjMzk7cmUgYWxzbyBhZGp1c3RpbmcgdGhlIGxvb3AgY29uZGl0aW9uIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHMgaWYgYHBvcyAmIzQzOyBzdGVwYCBvdmVyZmxvd3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBidWdzIGR1cmluZyBUTEIgZmx1c2hpbmcgZm9yIGd1ZXN0IHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJlc3Nlcy4KClRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGNhbiB0aGlzIGJlIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBLVk0gKnNob3VsZCogYmUgaGVhdmlseSB0ZXN0ZWQgdGhlcmUsIGJ1dCB0aGlzIGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyAoUklTQy1WKS4gVGhlIHByb21wdCBtZW50aW9uZWQgc3BlY2lmaWMgZW52aXJvbm1lbnRzIHRoYXQgYXJlIHVucmVhY2hhYmxlLiBXYWl0LCBRRU1VIGlzIGxpc3RlZC4gQnV0LCBRRU1VIHN1cHBvcnRzIFJJU0MtViBLVk0hIEl0IGRlcGVuZHMgb24gdGhlIGhvc3QsIG9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gQW5kLCBzeXprYWxsZXIgZnV6emVzIFJJU0MtViBLVk0sIHJpZ2h0PyBPa2F5LCBvbmx5IGlmIGl0JiMzOTtzIGNvbXBpbGVkIGZvciBSSVNDLVYuIE9oLCB0aGUgcHJvbXB0ICpzcGVjaWZpY2FsbHkqIG1lbnRpb25lZCB0aGF0IHRoZSBwYXRocyBzaG91bGQgYmUgdW5yZWFjaGFibGUsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9ucyBJIG1lbnRpb25lZCBwcmV2aW91c2x5IHdvdWxkIGJlIHVucmVhY2hhYmxlLiBCdXQgUUVNVSAqY2FuKiBlbXVsYXRlIFJJU0MtViB3aXRoIHRoZSBoeXBlcnZpc29yIGV4dGVuc2lvbi4gQnV0LCBjYW4gS1ZNIHJ1biBpbnNpZGUgaXQ/IE5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gU28uLi4geWVzLCBpdCAqaXMqIHJlYWNoYWJsZS4KCk5vdywgbGV0JiMzOTtzIGZpbmQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gSXQmIzM5O3MgbGlrZWx5IGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYCB3aWxsIGNvbnRhaW4gYENPTkZJR19LVk1gLCBidXQgSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NTIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSYjMzk7cyBSSVNDLVYgVExCIEZsdXNoIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24gYW5kIHNwZWNpZmljYWxseSBhdCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBhcm91bmQgdGhlc2UgZm91ciBmdW5jdGlvbnM6IGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYWAsIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmFgLCBhbmQgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmFgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgYXJlIGNyaXRpY2FsIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhleSBjbGVhcmx5IGRlYWwgd2l0aCBUTEIgZmx1c2hpbmcsIGFuZCB0aG9zZSBjYW4gYmUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIFRMQiBmbHVzaGVzICphcmUqIGZyZXF1ZW50LCBidXQgbWlnaHQgbm90IG5lY2Vzc2FyaWx5IGJlIGludm9rZWQgd2l0aCBldmVyeSBzaW5nbGUgcGFja2V0IG9yIHN5c2NhbGwuCgpOb3cgSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGhpZXJhcmNoeSBhbmQgc2VlIHdoZXJlIHRoZXkmIzM5O3JlIGJlaW5nIHRyaWdnZXJlZCBmcm9tIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZWlyIGltcGFjdC4gRGV0ZXJtaW5pbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTExMT1zdGF0aWMgdm9pZCBnc3RhZ2VfdGxiX2ZsdXNoKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIHUzMiBsZXZlbCwgZ3BhX3QgYWRkcilcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0xMTktXHRpZiAoZ3N0YWdlLVx1MDAzZWZsYWdzIFx1MDAyNiBLVk1fR1NUQUdFX0ZMQUdTX0xPQ0FMKVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MTIwOlx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEoZ3N0YWdlLVx1MDAzZXZtaWQsIGFkZHIsIEJJVChvcmRlciksIG9yZGVyKTtcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTEyMS1cdGVsc2Vcbi0tXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0yMy1cbmFyY2gvcmlzY3Yva3ZtL3RsYi5jOjI0OnZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhKHVuc2lnbmVkIGxvbmcgdm1pZCxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTI1LVx0XHRcdFx0XHQgIGdwYV90IGdwYSwgZ3BhX3QgZ3Bzeixcbi0tXG5hcmNoL3Jpc2N2L2t2bS90bGIuYz0zMTU9dm9pZCBrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTMyNy1cdFx0XHRlbHNlXG5hcmNoL3Jpc2N2L2t2bS90bGIuYzozMjg6XHRcdFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEoZC52bWlkLCBkLmFkZHIsXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zMjktXHRcdFx0XHRcdFx0XHRcdCAgICAgZC5zaXplLCBkLm9yZGVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njg1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgUklTQy1WIEtWTToKCioqQW5hbHl6aW5nIFJJU0MtViBUTEIvSC1GZW5jZSBJbnRlcmFjdGlvbnMqKgoKUmlnaHQsIHNvIEkmIzM5O20gc2VlaW5nIGNhbGxzIGZyb20gYGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc2AgYW5kIGBnc3RhZ2VfdGxiX2ZsdXNoYC4gVGhhdCBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGh5cGVydmlzb3ItbWFuYWdlZCB0cmFuc2xhdGlvbiBsb29rYXNpZGUgYnVmZmVyIChUTEIpIGZsdXNoZXMgYW5kIGhhcmR3YXJlIGZlbmNlIG9wZXJhdGlvbnMsIGxpa2VseSByZWxhdGVkIHRvIHZpcnR1YWwtdG8tcGh5c2ljYWwgYWRkcmVzcyB0cmFuc2xhdGlvbi4gR2l2ZW4gdGhhdCwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGxvb2tzIHByb21pc2luZzsgdGhlICYjMzQ7bG9jYWwmIzM0OyBwYXJ0IGxpa2VseSBwb2ludHMgdG93YXJkcyBhbiBvcGVyYXRpb24gdGhhdCYjMzk7cyBzcGVjaWZpYyB0byB0aGUgY3VycmVudCB2aXJ0dWFsIG1hY2hpbmUgKFZNKSBjb250ZXh0LCB0aGUgJiMzNDtoZmVuY2UmIzM0OyBjbGVhcmx5IGluZGljYXRlcyBhIGh5cGVydmlzb3IgZmVuY2Ugb3BlcmF0aW9uLCAmIzM0O3Z2bWEmIzM0OyBpbXBsaWVzIGEgVmlydHVhbCBWaWV3IE1lbW9yeSBBZGRyZXNzLCBhbmQgJiMzNDtndmEmIzM0OyBzdWdnZXN0cyBhIEd1ZXN0IFZpcnR1YWwgQWRkcmVzcy4gVGhpcyBzdHJvbmdseSBpbXBsaWVzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYW4gb3BlcmF0aW9uIHRoYXQgdGFrZXMgYSBHVkEgKGZyb20gdGhlIGd1ZXN0KSBhbmQgYXBwbGllcyBhIGh5cGVydmlzb3ItY29udHJvbGxlZCBmZW5jZSBvciBpbnZhbGlkYXRpb24gcmVsYXRlZCB0byB0aGF0IEdWQSBpbiB0aGUgbG9jYWwgY29udGV4dCBvZiB0aGUgVk0uIFRoaXMgaXMgcHJvYmFibHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24gaW50byBleGFjdGx5IGhvdyB0aGUgaHlwZXJ2aXNvciBpcyBoYW5kbGluZyB0aGVzZSB0cmFuc2xhdGlvbiBpc3N1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgY2FsbCwgYW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiBpdCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIG92ZXJhbGwgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3RsYi5jPTE0NT12b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2FsbCh1bnNpZ25lZCBsb25nIHZtaWQsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMTU2LVxuYXJjaC9yaXNjdi9rdm0vdGxiLmM6MTU3OnZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0xNTgtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgZ3ZhLCB1bnNpZ25lZCBsb25nIGd2c3osXG4tLVxuYXJjaC9yaXNjdi9rdm0vdGxiLmM9MzE1PXZvaWQga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zNTgtXHRcdFx0ZWxzZVxuYXJjaC9yaXNjdi9rdm0vdGxiLmM6MzU5Olx0XHRcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YShkLnZtaWQsIGQuYWRkcixcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTM2MC1cdFx0XHRcdFx0XHRcdFx0ZC5zaXplLCBkLm9yZGVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzYwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGhlcmUuCgoqKkFuYWx5emluZyBQb3RlbnRpYWwgQXR0YWNrIFN1cmZhY2VzIGluIHRoZSBLVk0vUklTQy1WIEh5cGVydmlzb3IqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMgd2l0aGluIHRoZSBLVk0vUklTQy1WIGh5cGVydmlzb3IsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgZnVuY3Rpb25zIGluIHF1ZXN0aW9uIGFyZSBlaXRoZXIgZXhwb3J0ZWQgZm9yIGV4dGVybmFsIHVzZSBvciBhcmUgdXNlZCBpbnRlcm5hbGx5LiBUaGlzIG5hcnJvd3MgZG93biBteSBzY29wZSwgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc2AsIG9yIHBlcmhhcHMgdGhlIGZ1bmN0aW9ucyBpdCB1c2VzIGRpcmVjdGx5LiBJIHRoaW5rIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc2AgYW5kIHNlZSBpZiB0aGF0IHByb3ZlcyB0byBiZSBhIG1vcmUgcHJvbWlzaW5nIHBhdGguIEl0IG9mdGVuIG1ha2VzIHNlbnNlIHRvIHN0YXJ0IHdpdGggdGhlIHRvcC1sZXZlbCBmdW5jdGlvbiBoYW5kbGluZyBhIGdpdmVuIG9wZXJhdGlvbiB0byBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZyBiZWZvcmUgZGVsdmluZyBpbnRvIHRoZSBuaXR0eSBncml0dHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9oZmVuY2VfcHJvY2VzcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS90bGIuYz0yOTE9c3RhdGljIGJvb2wgdmNwdV9oZmVuY2VfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMzE0LVxuYXJjaC9yaXNjdi9rdm0vdGxiLmM6MzE1OnZvaWQga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTMxNi17XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTY2ND1zdGF0aWMgaW50IGt2bV9yaXNjdl9jaGVja192Y3B1X3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzAwLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9IRkVOQ0UsIHZjcHUpKVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjcwMTpcdFx0XHRrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3ModmNwdSk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzAyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTA1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaGZlbmNlIFByb2Nlc3NpbmcgaW4gS1ZNL1JJU0MtVioqCgpPa2F5LCBzbyBga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzYCBpcyB0cmlnZ2VyZWQgYnkgYGt2bV9yaXNjdl9jaGVja192Y3B1X3JlcXVlc3RzYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IGFjdHVhbGx5IGhhbmRsZXMgdGhlIGhmZW5jZSByZXF1ZXN0cy4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYWAsIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YWAsIGFuZCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YWAgc2VlbSBsaWtlIHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgZG8gdGhlIGhlYXZ5IGxpZnRpbmcgZm9yIHRoZSBsb2NhbCBoZmVuY2Ugb3BlcmF0aW9ucy4KCk15IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIHZlcmlmeSB3aGV0aGVyIHRoZXNlIGFyZSBwcm9wZXJseSBleHBvcnRlZC4gVGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIHBpZWNlcywgc28gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkmIzM5O3JlIGV4cG9zZWQgYW5kIGFjY2Vzc2libGUgY29ycmVjdGx5LiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgaG93IHRoZSBwcm9jZXNzaW5nIGlzIGhhbmRsZWQgYXQgdGhlIGNvcmUgbGV2ZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qa3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMTAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFJJU0MtViBLVk0gVExCIEZsdXNoIFBhdGNoKioKCk9rYXksIHNvIHRoZXNlIHZhcmlhYmxlcyBhcmVuJiMzOTt0IGV4cGxpY2l0bHkgZXhwb3J0ZWQsIGJ1dCB0aGV5JiMzOTtyZSBnbG9iYWxseSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgS1ZNIG1vZHVsZSwgd2hpY2ggaXMgd2hhdCBtYXR0ZXJzLiBXYWl0LCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYCBpcyBkZWNsYXJlZCBpbiBgYXJjaC9yaXNjdi9rdm0vdGxiLmNgIGFuZCBpcyBhY3R1YWxseSB1c2VkIGluIGBhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY2AgYW5kIGBhcmNoL3Jpc2N2L2t2bS90bGIuY2AhIFNvLCB3ZSBjYW4gZGVmaW5pdGVseSBhY2Nlc3MgaXQgYW5kIHRoZXNlIHJlbGF0ZWQgZnVuY3Rpb25zLgoKTm93LCBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBhcmNoL3Jpc2N2L2t2bS90bGIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgYWZmZWN0ZWQgYnkgdGhpcyBwYXRjaC4gT2theSwgaXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggbW9kaWZpZXM6IGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYWAsIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmFgLCBhbmQgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmFgLiBUaGVzZSBhcmUgdGhlIG9uZXMgSSBzaG91bGQgZm9jdXMgb24gZm9yIGZ1enppbmcuCgpNeSByZWFzb25pbmc/IFRoaXMgcGF0Y2ggaXMgZml4aW5nIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiB0aGUgUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zLiBJdCYjMzk7cyBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGFuZCBtb2RpZnlpbmcgbG9vcCBjb25kaXRpb25zLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gbG9naWMgZm9yIFJJU0MtViwgYW5kIGZ1enppbmcgaXMgY3JpdGljYWwgdG8gdmVyaWZ5IHRoZSBuZXcgb3ZlcmZsb3cgaGFuZGxpbmcuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGl0IGZ1bmN0aW9ucyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4KCkxldCBtZSBkb3VibGUtY2hlY2sgdGhhdCB0aGUgYEtWTWAgY29uZmlnIGlzIHRoZSBvbmx5IG9uZSB0aGF0IG1hdHRlcnMgaGVyZS4gWXVwLCBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2Agb25seSBoYXMgdGhlIGBjb25maWcgS1ZNYC4gTm93LCBsZXQmIzM5O3Mgc2VlIGlmIGBLVk1gIGhhcyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgd291bGQgYmUgdXNlZnVsIHRvIGVuYWJsZSBkdXJpbmcgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjEyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBWaXJ0dWFsaXphdGlvbioqCgpPa2F5LCBzbyB0aGUgYXBwcm9hY2ggaGVyZSByZWFsbHkgaGluZ2VzIG9uIHRoZSB0eXBlIG9mIGBWSVJUVUFMSVpBVElPTmAgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQuIEluIG1vc3QgdHlwaWNhbCBzY2VuYXJpb3MsIGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgYmFzaWMgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24sIGBLVk1gIGlzIGxpa2VseSBzdWZmaWNpZW50LiBJbiBmYWN0LCBgVklSVFVBTElaQVRJT05gIG1pZ2h0IGp1c3QgYmUgYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgcGVyaGFwcyBzb21ldGhpbmcgYWNjZXNzZWQgdGhyb3VnaCBhIGBtZW51Y29uZmlnYCBvciBldmVuIGp1c3QgYSBzdHJhaWdodGZvcndhcmQgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgZW5hYmxlcyB0aGUgZmVhdHVyZSBzZXQuIEkgbmVlZCB0byBjbGFyaWZ5IHdoYXQgYFZJUlRVQUxJWkFUSU9OYCBhY3R1YWxseSByZWZlcnMgdG8gaW4gdGhpcyBjb250ZXh0IGJlZm9yZSBJIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBzb2x1dGlvbi4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gdGhvcm91Z2hseSBpbnZlc3RpZ2F0ZSBgVklSVFVBTElaQVRJT05gIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZJUlRVQUxJWkFUSU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTY9c291cmNlIFwmIzM0O3ZpcnQva3ZtL0tjb25maWdcJiMzNDtcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctNy1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6ODptZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTktXHRib29sIFwmIzM0O1ZpcnR1YWxpemF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1MjQKCQkJCQkJCW91dHB1dDogMTkyCgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEtWTS1Gb2N1c2VkIFRob3VnaHQgUHJvY2VzcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgS1ZNIGNvbmZpZ3VyYXRpb25zLCBieXBhc3NpbmcgdGhlIGJyb2FkZXIgdmlydHVhbGl6YXRpb24gY29udGV4dCBmb3Igbm93LiBGb3IgdGhpcywgSSYjMzk7bGwganVzdCBmb2N1cyBvbiBgS1ZNYCBpdHNlbGYuCgpOb3csIGxldCYjMzk7cyBvdXRsaW5lIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbnZvbHZlZC4gSSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlc2U6CgoqICAgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYWAKKiAgIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhYAoqICAgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YWAKKiAgIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYAoKQWN0dWFsbHksIHdhaXQgYSBtaW51dGUsIHRoZSBga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzYCBmdW5jdGlvbiBpcyBjcml0aWNhbC4gSXQmIzM5O3MgdGhlIG9uZSB0aGF0IGhhbmRsZXMgdGhlIGluY29taW5nIHJlcXVlc3RzIGFuZCBvcmNoZXN0cmF0ZXMgY2FsbHMgdG8gdGhlc2Ugb3RoZXIgZnVuY3Rpb25zLiBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgaXQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB0aGUgc2VxdWVuY2UuCgpPa2F5LCB0aGF0IHNlZW1zIGxpa2UgYSBnb29kIHNldC4gTm93IEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9oZmVuY2VfcHJvY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zIGJ5IGFkZGluZyBvdmVyZmxvdyBjaGVja3MgYW5kIG1vZGlmeWluZyBsb29wIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGhhbmRsaW5nIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmEmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgaXNzdWVzIGluIFJJU0MtViBLVk0gVExCIGZsdXNoIGZ1bmN0aW9ucyBieSBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGFuZCBtb2RpZnlpbmcgbG9vcCBjb25kaXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIGZvciBSSVNDLVYgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBvdmVyZmxvdyBoYW5kbGluZyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjMyLjQ5OTMxOTc5MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NDg1OTc4NjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhXCIsXG4gICAgXCJrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zIGJ5IGFkZGluZyBvdmVyZmxvdyBjaGVja3MgYW5kIG1vZGlmeWluZyBsb29wIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGhhbmRsaW5nIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjMyLjQ5OTMyNTQ5MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk4NjU1ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgN2Q3YTJkZGM0MmQ3Mjk4YTIwMjk4MWVjMmY3ZmQ5NDBiODg3MGVkY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxOCAwNToxMjozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS90bGIuYyBiL2FyY2gvcmlzY3Yva3ZtL3RsYi5jXFxuaW5kZXggOTkzYjI1ZWE5NGQ2NzQuLmIwYzgzZTNjY2MxNWE4IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcXG5AQCAtOCw2ICs4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb3ZlcmZsb3cuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NtcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX2hvc3QuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcXHUwMDNlXFxuQEAgLTI0LDcgKzI1LDEyIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhKHVuc2lnbmVkIGxvbmcgdm1pZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICBncGFfdCBncGEsIGdwYV90IGdwc3osXFxuIFxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBvcmRlcilcXG4ge1xcbi1cXHRncGFfdCBwb3M7XFxuK1xcdGdwYV90IGVuZCwgcG9zLCBzdGVwID0gQklUKG9yZGVyKTtcXG4rXFxuK1xcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3BhLCBncHN6LCBcXHUwMDI2ZW5kKSkge1xcbitcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKFBUUlNfUEVSX1BURSBcXHUwMDNjIChncHN6IFxcdTAwM2VcXHUwMDNlIG9yZGVyKSkge1xcbiBcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7XFxuQEAgLTMzLDE0ICszOSwyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYSh1bnNpZ25lZCBsb25nIHZtaWQsXFxuIFxcbiBcXHRpZiAoaGFzX3N2aW52YWwoKSkge1xcbiBcXHRcXHRhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6IFxcXCJtZW1vcnlcXFwiKTtcXG4tXFx0XFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXFxuK1xcdFxcdGZvciAocG9zID0gZ3BhOyBwb3MgXFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XFxuIFxcdFxcdFxcdGFzbSB2b2xhdGlsZSAoSElOVkFMX0dWTUEoJTAsICUxKVxcbiBcXHRcXHRcXHQ6IDogXFxcInJcXFwiIChwb3MgXFx1MDAzZVxcdTAwM2UgMiksIFxcXCJyXFxcIiAodm1pZCkgOiBcXFwibWVtb3J5XFxcIik7XFxuK1xcdFxcdFxcdGlmIChlbmQgLSBwb3MgXFx1MDAzYz0gc3RlcClcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0XFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfSU5WQUxfSVIoKSA6OjogXFxcIm1lbW9yeVxcXCIpO1xcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHRmb3IgKHBvcyA9IGdwYTsgcG9zIFxcdTAwM2MgKGdwYSArIGdwc3opOyBwb3MgKz0gQklUKG9yZGVyKSlcXG4rXFx0XFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcXG4gXFx0XFx0XFx0YXNtIHZvbGF0aWxlIChIRkVOQ0VfR1ZNQSglMCwgJTEpXFxuIFxcdFxcdFxcdDogOiBcXFwiclxcXCIgKHBvcyBcXHUwMDNlXFx1MDAzZSAyKSwgXFxcInJcXFwiICh2bWlkKSA6IFxcXCJtZW1vcnlcXFwiKTtcXG4rXFx0XFx0XFx0aWYgKGVuZCAtIHBvcyBcXHUwMDNjPSBzdGVwKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTUyLDcgKzY0LDEyIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZClcXG4gdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhKGdwYV90IGdwYSwgZ3BhX3QgZ3BzeixcXG4gXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIG9yZGVyKVxcbiB7XFxuLVxcdGdwYV90IHBvcztcXG4rXFx0Z3BhX3QgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xcbitcXG4rXFx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhncGEsIGdwc3osIFxcdTAwMjZlbmQpKSB7XFxuK1xcdFxcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9hbGwoKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoUFRSU19QRVJfUFRFIFxcdTAwM2MgKGdwc3ogXFx1MDAzZVxcdTAwM2Ugb3JkZXIpKSB7XFxuIFxcdFxcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9hbGwoKTtcXG5AQCAtNjEsMTQgKzc4LDIwIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYShncGFfdCBncGEsIGdwYV90IGdwc3osXFxuIFxcbiBcXHRpZiAoaGFzX3N2aW52YWwoKSkge1xcbiBcXHRcXHRhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6IFxcXCJtZW1vcnlcXFwiKTtcXG4tXFx0XFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXFxuK1xcdFxcdGZvciAocG9zID0gZ3BhOyBwb3MgXFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XFxuIFxcdFxcdFxcdGFzbSB2b2xhdGlsZShISU5WQUxfR1ZNQSglMCwgemVybylcXG4gXFx0XFx0XFx0OiA6IFxcXCJyXFxcIiAocG9zIFxcdTAwM2VcXHUwMDNlIDIpIDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXHRcXHRcXHRpZiAoZW5kIC0gcG9zIFxcdTAwM2M9IHN0ZXApXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuIFxcdFxcdGFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6IFxcXCJtZW1vcnlcXFwiKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXFxuK1xcdFxcdGZvciAocG9zID0gZ3BhOyBwb3MgXFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XFxuIFxcdFxcdFxcdGFzbSB2b2xhdGlsZShIRkVOQ0VfR1ZNQSglMCwgemVybylcXG4gXFx0XFx0XFx0OiA6IFxcXCJyXFxcIiAocG9zIFxcdTAwM2VcXHUwMDNlIDIpIDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXHRcXHRcXHRpZiAoZW5kIC0gcG9zIFxcdTAwM2M9IHN0ZXApXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtODMsNyArMTA2LDEzIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhKHVuc2lnbmVkIGxvbmcgdm1pZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGd2c3osXFxuIFxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBvcmRlcilcXG4ge1xcbi1cXHR1bnNpZ25lZCBsb25nIHBvcywgaGdhdHA7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xcbitcXHR1bnNpZ25lZCBsb25nIGhnYXRwO1xcbitcXG4rXFx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhndmEsIGd2c3osIFxcdTAwMjZlbmQpKSB7XFxuK1xcdFxcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2FsbCh2bWlkLCBhc2lkKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoUFRSU19QRVJfUFRFIFxcdTAwM2MgKGd2c3ogXFx1MDAzZVxcdTAwM2Ugb3JkZXIpKSB7XFxuIFxcdFxcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2FsbCh2bWlkLCBhc2lkKTtcXG5AQCAtOTQsMTQgKzEyMywyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXFxuIFxcbiBcXHRpZiAoaGFzX3N2aW52YWwoKSkge1xcbiBcXHRcXHRhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6IFxcXCJtZW1vcnlcXFwiKTtcXG4tXFx0XFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcXHUwMDNjIChndmEgKyBndnN6KTsgcG9zICs9IEJJVChvcmRlcikpXFxuK1xcdFxcdGZvciAocG9zID0gZ3ZhOyBwb3MgXFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XFxuIFxcdFxcdFxcdGFzbSB2b2xhdGlsZShISU5WQUxfVlZNQSglMCwgJTEpXFxuIFxcdFxcdFxcdDogOiBcXFwiclxcXCIgKHBvcyksIFxcXCJyXFxcIiAoYXNpZCkgOiBcXFwibWVtb3J5XFxcIik7XFxuK1xcdFxcdFxcdGlmIChlbmQgLSBwb3MgXFx1MDAzYz0gc3RlcClcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0XFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfSU5WQUxfSVIoKSA6OjogXFxcIm1lbW9yeVxcXCIpO1xcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHRmb3IgKHBvcyA9IGd2YTsgcG9zIFxcdTAwM2MgKGd2YSArIGd2c3opOyBwb3MgKz0gQklUKG9yZGVyKSlcXG4rXFx0XFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcXG4gXFx0XFx0XFx0YXNtIHZvbGF0aWxlKEhGRU5DRV9WVk1BKCUwLCAlMSlcXG4gXFx0XFx0XFx0OiA6IFxcXCJyXFxcIiAocG9zKSwgXFxcInJcXFwiIChhc2lkKSA6IFxcXCJtZW1vcnlcXFwiKTtcXG4rXFx0XFx0XFx0aWYgKGVuZCAtIHBvcyBcXHUwMDNjPSBzdGVwKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hHQVRQLCBoZ2F0cCk7XFxuQEAgLTEyMyw3ICsxNTgsMTMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhKHVuc2lnbmVkIGxvbmcgdm1pZCxcXG4gXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIGd2YSwgdW5zaWduZWQgbG9uZyBndnN6LFxcbiBcXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgb3JkZXIpXFxuIHtcXG4tXFx0dW5zaWduZWQgbG9uZyBwb3MsIGhnYXRwO1xcbitcXHR1bnNpZ25lZCBsb25nIGVuZCwgcG9zLCBzdGVwID0gQklUKG9yZGVyKTtcXG4rXFx0dW5zaWduZWQgbG9uZyBoZ2F0cDtcXG4rXFxuK1xcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3ZhLCBndnN6LCBcXHUwMDI2ZW5kKSkge1xcbitcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChQVFJTX1BFUl9QVEUgXFx1MDAzYyAoZ3ZzeiBcXHUwMDNlXFx1MDAzZSBvcmRlcikpIHtcXG4gXFx0XFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FsbCh2bWlkKTtcXG5AQCAtMTM0LDE0ICsxNzUsMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhKHVuc2lnbmVkIGxvbmcgdm1pZCxcXG4gXFxuIFxcdGlmIChoYXNfc3ZpbnZhbCgpKSB7XFxuIFxcdFxcdGFzbSB2b2xhdGlsZSAoU0ZFTkNFX1dfSU5WQUwoKSA6OjogXFxcIm1lbW9yeVxcXCIpO1xcbi1cXHRcXHRmb3IgKHBvcyA9IGd2YTsgcG9zIFxcdTAwM2MgKGd2YSArIGd2c3opOyBwb3MgKz0gQklUKG9yZGVyKSlcXG4rXFx0XFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcXG4gXFx0XFx0XFx0YXNtIHZvbGF0aWxlKEhJTlZBTF9WVk1BKCUwLCB6ZXJvKVxcbiBcXHRcXHRcXHQ6IDogXFxcInJcXFwiIChwb3MpIDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXHRcXHRcXHRpZiAoZW5kIC0gcG9zIFxcdTAwM2M9IHN0ZXApXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuIFxcdFxcdGFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6IFxcXCJtZW1vcnlcXFwiKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcXHUwMDNjIChndmEgKyBndnN6KTsgcG9zICs9IEJJVChvcmRlcikpXFxuK1xcdFxcdGZvciAocG9zID0gZ3ZhOyBwb3MgXFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XFxuIFxcdFxcdFxcdGFzbSB2b2xhdGlsZShIRkVOQ0VfVlZNQSglMCwgemVybylcXG4gXFx0XFx0XFx0OiA6IFxcXCJyXFxcIiAocG9zKSA6IFxcXCJtZW1vcnlcXFwiKTtcXG4rXFx0XFx0XFx0aWYgKGVuZCAtIHBvcyBcXHUwMDNjPSBzdGVwKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hHQVRQLCBoZ2F0cCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjMyLjg5ODY2OTA2MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwODY2MTczMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmFcIixcbiAgICBcImt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmFcIixcbiAgICBcImt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiBSSVNDLVYgS1ZNIFRMQiBmbHVzaCBmdW5jdGlvbnMgYnkgYWRkaW5nIG92ZXJmbG93IGNoZWNrcyBhbmQgbW9kaWZ5aW5nIGxvb3AgY29uZGl0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgb3ZlcmZsb3cgaGFuZGxpbmcgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZDdhMmRkYzQyZDcyOThhMjAyOTgxZWMyZjdmZDk0MGI4ODcwZWRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTggMDU6MTI6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS90bGIuYyBiL2FyY2gvcmlzY3Yva3ZtL3RsYi5jXG5pbmRleCA5OTNiMjVlYTk0ZDY3NC4uYjBjODNlM2NjYzE1YTggMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbkBAIC04LDYgKzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb3ZlcmZsb3cuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NtcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcdTAwM2VcbkBAIC0yNCw3ICsyNSwxMiBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYSh1bnNpZ25lZCBsb25nIHZtaWQsXG4gXHRcdFx0XHRcdCAgZ3BhX3QgZ3BhLCBncGFfdCBncHN6LFxuIFx0XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgb3JkZXIpXG4ge1xuLVx0Z3BhX3QgcG9zO1xuK1x0Z3BhX3QgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xuK1xuK1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhncGEsIGdwc3osIFx1MDAyNmVuZCkpIHtcbitcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXG4gXHRpZiAoUFRSU19QRVJfUFRFIFx1MDAzYyAoZ3BzeiBcdTAwM2VcdTAwM2Ugb3JkZXIpKSB7XG4gXHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTtcbkBAIC0zMywxNCArMzksMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEodW5zaWduZWQgbG9uZyB2bWlkLFxuIFxuIFx0aWYgKGhhc19zdmludmFsKCkpIHtcbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfV19JTlZBTCgpIDo6OiBcIm1lbW9yeVwiKTtcbi1cdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgKGdwYSArIGdwc3opOyBwb3MgKz0gQklUKG9yZGVyKSlcbitcdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgZW5kOyBwb3MgKz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZSAoSElOVkFMX0dWTUEoJTAsICUxKVxuIFx0XHRcdDogOiBcInJcIiAocG9zIFx1MDAzZVx1MDAzZSAyKSwgXCJyXCIgKHZtaWQpIDogXCJtZW1vcnlcIik7XG4rXHRcdFx0aWYgKGVuZCAtIHBvcyBcdTAwM2M9IHN0ZXApXG4rXHRcdFx0XHRicmVhaztcbitcdFx0fVxuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiBcIm1lbW9yeVwiKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXG4rXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUgKEhGRU5DRV9HVk1BKCUwLCAlMSlcbiBcdFx0XHQ6IDogXCJyXCIgKHBvcyBcdTAwM2VcdTAwM2UgMiksIFwiclwiICh2bWlkKSA6IFwibWVtb3J5XCIpO1xuK1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtNTIsNyArNjQsMTIgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodW5zaWduZWQgbG9uZyB2bWlkKVxuIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYShncGFfdCBncGEsIGdwYV90IGdwc3osXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgb3JkZXIpXG4ge1xuLVx0Z3BhX3QgcG9zO1xuK1x0Z3BhX3QgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xuK1xuK1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhncGEsIGdwc3osIFx1MDAyNmVuZCkpIHtcbitcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2FsbCgpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXG4gXHRpZiAoUFRSU19QRVJfUFRFIFx1MDAzYyAoZ3BzeiBcdTAwM2VcdTAwM2Ugb3JkZXIpKSB7XG4gXHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9hbGwoKTtcbkBAIC02MSwxNCArNzgsMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhKGdwYV90IGdwYSwgZ3BhX3QgZ3BzeixcbiBcbiBcdGlmIChoYXNfc3ZpbnZhbCgpKSB7XG4gXHRcdGFzbSB2b2xhdGlsZSAoU0ZFTkNFX1dfSU5WQUwoKSA6OjogXCJtZW1vcnlcIik7XG4tXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXG4rXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUoSElOVkFMX0dWTUEoJTAsIHplcm8pXG4gXHRcdFx0OiA6IFwiclwiIChwb3MgXHUwMDNlXHUwMDNlIDIpIDogXCJtZW1vcnlcIik7XG4rXHRcdFx0aWYgKGVuZCAtIHBvcyBcdTAwM2M9IHN0ZXApXG4rXHRcdFx0XHRicmVhaztcbitcdFx0fVxuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiBcIm1lbW9yeVwiKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXG4rXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUoSEZFTkNFX0dWTUEoJTAsIHplcm8pXG4gXHRcdFx0OiA6IFwiclwiIChwb3MgXHUwMDNlXHUwMDNlIDIpIDogXCJtZW1vcnlcIik7XG4rXHRcdFx0aWYgKGVuZCAtIHBvcyBcdTAwM2M9IHN0ZXApXG4rXHRcdFx0XHRicmVhaztcbitcdFx0fVxuIFx0fVxuIH1cbiBcbkBAIC04Myw3ICsxMDYsMTMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmEodW5zaWduZWQgbG9uZyB2bWlkLFxuIFx0XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgZ3ZzeixcbiBcdFx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIG9yZGVyKVxuIHtcbi1cdHVuc2lnbmVkIGxvbmcgcG9zLCBoZ2F0cDtcbitcdHVuc2lnbmVkIGxvbmcgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xuK1x0dW5zaWduZWQgbG9uZyBoZ2F0cDtcbitcbitcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3ZhLCBndnN6LCBcdTAwMjZlbmQpKSB7XG4rXHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2FsbCh2bWlkLCBhc2lkKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFxuIFx0aWYgKFBUUlNfUEVSX1BURSBcdTAwM2MgKGd2c3ogXHUwMDNlXHUwMDNlIG9yZGVyKSkge1xuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9hbGwodm1pZCwgYXNpZCk7XG5AQCAtOTQsMTQgKzEyMywyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXG4gXG4gXHRpZiAoaGFzX3N2aW52YWwoKSkge1xuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6IFwibWVtb3J5XCIpO1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICsgZ3Zzeik7IHBvcyArPSBCSVQob3JkZXIpKVxuK1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XG4gXHRcdFx0YXNtIHZvbGF0aWxlKEhJTlZBTF9WVk1BKCUwLCAlMSlcbiBcdFx0XHQ6IDogXCJyXCIgKHBvcyksIFwiclwiIChhc2lkKSA6IFwibWVtb3J5XCIpO1xuK1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfSU5WQUxfSVIoKSA6OjogXCJtZW1vcnlcIik7XG4gXHR9IGVsc2Uge1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICsgZ3Zzeik7IHBvcyArPSBCSVQob3JkZXIpKVxuK1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XG4gXHRcdFx0YXNtIHZvbGF0aWxlKEhGRU5DRV9WVk1BKCUwLCAlMSlcbiBcdFx0XHQ6IDogXCJyXCIgKHBvcyksIFwiclwiIChhc2lkKSA6IFwibWVtb3J5XCIpO1xuK1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdGNzcl93cml0ZShDU1JfSEdBVFAsIGhnYXRwKTtcbkBAIC0xMjMsNyArMTU4LDEzIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgZ3ZhLCB1bnNpZ25lZCBsb25nIGd2c3osXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgb3JkZXIpXG4ge1xuLVx0dW5zaWduZWQgbG9uZyBwb3MsIGhnYXRwO1xuK1x0dW5zaWduZWQgbG9uZyBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7XG4rXHR1bnNpZ25lZCBsb25nIGhnYXRwO1xuK1xuK1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhndmEsIGd2c3osIFx1MDAyNmVuZCkpIHtcbitcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FsbCh2bWlkKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFxuIFx0aWYgKFBUUlNfUEVSX1BURSBcdTAwM2MgKGd2c3ogXHUwMDNlXHUwMDNlIG9yZGVyKSkge1xuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpO1xuQEAgLTEzNCwxNCArMTc1LDIwIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXG4gXG4gXHRpZiAoaGFzX3N2aW52YWwoKSkge1xuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6IFwibWVtb3J5XCIpO1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICsgZ3Zzeik7IHBvcyArPSBCSVQob3JkZXIpKVxuK1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XG4gXHRcdFx0YXNtIHZvbGF0aWxlKEhJTlZBTF9WVk1BKCUwLCB6ZXJvKVxuIFx0XHRcdDogOiBcInJcIiAocG9zKSA6IFwibWVtb3J5XCIpO1xuK1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfSU5WQUxfSVIoKSA6OjogXCJtZW1vcnlcIik7XG4gXHR9IGVsc2Uge1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICsgZ3Zzeik7IHBvcyArPSBCSVQob3JkZXIpKVxuK1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XG4gXHRcdFx0YXNtIHZvbGF0aWxlKEhGRU5DRV9WVk1BKCUwLCB6ZXJvKVxuIFx0XHRcdDogOiBcInJcIiAocG9zKSA6IFwibWVtb3J5XCIpO1xuK1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdGNzcl93cml0ZShDU1JfSEdBVFAsIGhnYXRwKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjMyLjg5ODY3MDYyMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwOTc2NDk1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUklTQy1WIEtWTSBUTEIgRmx1c2ggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtb2RpZnlpbmcgYGFyY2gvcmlzY3Yva3ZtL3RsYi5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5J3JlIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgdG8gYSBmZXcga2V5IGZ1bmN0aW9uczogYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYWAsIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YWAsIGFuZCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YWAuIFNtYXJ0IG1vdmUuIFRoZXkncmUgYWxzbyBhZGp1c3RpbmcgdGhlIGxvb3AgY29uZGl0aW9uIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHMgaWYgYHBvcyArIHN0ZXBgIG92ZXJmbG93cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4LCBhZGRyZXNzaW5nIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGJ1Z3MgZHVyaW5nIFRMQiBmbHVzaGluZyBmb3IgZ3Vlc3QgcGh5c2ljYWwgYW5kIHZpcnR1YWwgYWRkcmVzc2VzLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gdGhpcyBiZSBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gS1ZNICpzaG91bGQqIGJlIGhlYXZpbHkgdGVzdGVkIHRoZXJlLCBidXQgdGhpcyBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgKFJJU0MtVikuIFRoZSBwcm9tcHQgbWVudGlvbmVkIHNwZWNpZmljIGVudmlyb25tZW50cyB0aGF0IGFyZSB1bnJlYWNoYWJsZS4gV2FpdCwgUUVNVSBpcyBsaXN0ZWQuIEJ1dCwgUUVNVSBzdXBwb3J0cyBSSVNDLVYgS1ZNISBJdCBkZXBlbmRzIG9uIHRoZSBob3N0LCBvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIEFuZCwgc3l6a2FsbGVyIGZ1enplcyBSSVNDLVYgS1ZNLCByaWdodD8gT2theSwgb25seSBpZiBpdCdzIGNvbXBpbGVkIGZvciBSSVNDLVYuIE9oLCB0aGUgcHJvbXB0ICpzcGVjaWZpY2FsbHkqIG1lbnRpb25lZCB0aGF0IHRoZSBwYXRocyBzaG91bGQgYmUgdW5yZWFjaGFibGUsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9ucyBJIG1lbnRpb25lZCBwcmV2aW91c2x5IHdvdWxkIGJlIHVucmVhY2hhYmxlLiBCdXQgUUVNVSAqY2FuKiBlbXVsYXRlIFJJU0MtViB3aXRoIHRoZSBoeXBlcnZpc29yIGV4dGVuc2lvbi4gQnV0LCBjYW4gS1ZNIHJ1biBpbnNpZGUgaXQ/IE5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gU28uLi4geWVzLCBpdCAqaXMqIHJlYWNoYWJsZS5cblxuTm93LCBsZXQncyBmaW5kIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIEl0J3MgbGlrZWx5IGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYCB3aWxsIGNvbnRhaW4gYENPTkZJR19LVk1gLCBidXQgSSdsbCBkb3VibGUtY2hlY2sgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg3OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjM5Ljk5NjMyMTc3N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQ1NjE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMjo0MC4wNTM3ODQxMTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ2OTA5MzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0ncyBSSVNDLVYgVExCIEZsdXNoIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIGFuZCBzcGVjaWZpY2FsbHkgYXQgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIHRoZXNlIGZvdXIgZnVuY3Rpb25zOiBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhYCwgYW5kIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgYXJlIGNyaXRpY2FsIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhleSBjbGVhcmx5IGRlYWwgd2l0aCBUTEIgZmx1c2hpbmcsIGFuZCB0aG9zZSBjYW4gYmUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIFRMQiBmbHVzaGVzICphcmUqIGZyZXF1ZW50LCBidXQgbWlnaHQgbm90IG5lY2Vzc2FyaWx5IGJlIGludm9rZWQgd2l0aCBldmVyeSBzaW5nbGUgcGFja2V0IG9yIHN5c2NhbGwuXG5cbk5vdyBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgaGllcmFyY2h5IGFuZCBzZWUgd2hlcmUgdGhleSdyZSBiZWluZyB0cmlnZ2VyZWQgZnJvbSB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGVpciBpbXBhY3QuIERldGVybWluaW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODUyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjQzLjgwMDY5NTczOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkwMzgwMDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz0xMTE9c3RhdGljIHZvaWQgZ3N0YWdlX3RsYl9mbHVzaChzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLCB1MzIgbGV2ZWwsIGdwYV90IGFkZHIpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0xMTktXFx0aWYgKGdzdGFnZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLVk1fR1NUQUdFX0ZMQUdTX0xPQ0FMKVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjEyMDpcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEoZ3N0YWdlLVxcdTAwM2V2bWlkLCBhZGRyLCBCSVQob3JkZXIpLCBvcmRlcik7XFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMTIxLVxcdGVsc2VcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTIzLVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jOjI0OnZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhKHVuc2lnbmVkIGxvbmcgdm1pZCxcXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0yNS1cXHRcXHRcXHRcXHRcXHQgIGdwYV90IGdwYSwgZ3BhX3QgZ3BzeixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jPTMxNT12b2lkIGt2bV9yaXNjdl9oZmVuY2VfcHJvY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zMjctXFx0XFx0XFx0ZWxzZVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jOjMyODpcXHRcXHRcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEoZC52bWlkLCBkLmFkZHIsXFxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMzI5LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZC5zaXplLCBkLm9yZGVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTI6NDQuMDM5NzM5NTIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyMjc2NzA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIFJJU0MtViBLVk06XG5cbioqQW5hbHl6aW5nIFJJU0MtViBUTEIvSC1GZW5jZSBJbnRlcmFjdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIHNlZWluZyBjYWxscyBmcm9tIGBrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3NgIGFuZCBgZ3N0YWdlX3RsYl9mbHVzaGAuIFRoYXQgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIGh5cGVydmlzb3ItbWFuYWdlZCB0cmFuc2xhdGlvbiBsb29rYXNpZGUgYnVmZmVyIChUTEIpIGZsdXNoZXMgYW5kIGhhcmR3YXJlIGZlbmNlIG9wZXJhdGlvbnMsIGxpa2VseSByZWxhdGVkIHRvIHZpcnR1YWwtdG8tcGh5c2ljYWwgYWRkcmVzcyB0cmFuc2xhdGlvbi4gR2l2ZW4gdGhhdCwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGxvb2tzIHByb21pc2luZzsgdGhlIFwibG9jYWxcIiBwYXJ0IGxpa2VseSBwb2ludHMgdG93YXJkcyBhbiBvcGVyYXRpb24gdGhhdCdzIHNwZWNpZmljIHRvIHRoZSBjdXJyZW50IHZpcnR1YWwgbWFjaGluZSAoVk0pIGNvbnRleHQsIHRoZSBcImhmZW5jZVwiIGNsZWFybHkgaW5kaWNhdGVzIGEgaHlwZXJ2aXNvciBmZW5jZSBvcGVyYXRpb24sIFwidnZtYVwiIGltcGxpZXMgYSBWaXJ0dWFsIFZpZXcgTWVtb3J5IEFkZHJlc3MsIGFuZCBcImd2YVwiIHN1Z2dlc3RzIGEgR3Vlc3QgVmlydHVhbCBBZGRyZXNzLiBUaGlzIHN0cm9uZ2x5IGltcGxpZXMgd2UncmUgZGVhbGluZyB3aXRoIGFuIG9wZXJhdGlvbiB0aGF0IHRha2VzIGEgR1ZBIChmcm9tIHRoZSBndWVzdCkgYW5kIGFwcGxpZXMgYSBoeXBlcnZpc29yLWNvbnRyb2xsZWQgZmVuY2Ugb3IgaW52YWxpZGF0aW9uIHJlbGF0ZWQgdG8gdGhhdCBHVkEgaW4gdGhlIGxvY2FsIGNvbnRleHQgb2YgdGhlIFZNLiBUaGlzIGlzIHByb2JhYmx5IGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uIGludG8gZXhhY3RseSBob3cgdGhlIGh5cGVydmlzb3IgaXMgaGFuZGxpbmcgdGhlc2UgdHJhbnNsYXRpb24gaXNzdWVzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgY2FsbCwgYW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIGl0IHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njg1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTI6NDcuNDYyNTA4NDY0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDQ3NDYyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS90bGIuYz0xNDU9dm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9hbGwodW5zaWduZWQgbG9uZyB2bWlkLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMTU2LVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jOjE1Nzp2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmEodW5zaWduZWQgbG9uZyB2bWlkLFxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTE1OC1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgZ3ZhLCB1bnNpZ25lZCBsb25nIGd2c3osXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS90bGIuYz0zMTU9dm9pZCBrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMzU4LVxcdFxcdFxcdGVsc2VcXG5hcmNoL3Jpc2N2L2t2bS90bGIuYzozNTk6XFx0XFx0XFx0XFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YShkLnZtaWQsIGQuYWRkcixcXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zNjAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZC5zaXplLCBkLm9yZGVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTI6NDcuNTkyOTg3MDgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0NjEwNDQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IGhlcmUuXG5cbioqQW5hbHl6aW5nIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZXMgaW4gdGhlIEtWTS9SSVNDLVYgSHlwZXJ2aXNvcioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMgd2l0aGluIHRoZSBLVk0vUklTQy1WIGh5cGVydmlzb3IsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgZnVuY3Rpb25zIGluIHF1ZXN0aW9uIGFyZSBlaXRoZXIgZXhwb3J0ZWQgZm9yIGV4dGVybmFsIHVzZSBvciBhcmUgdXNlZCBpbnRlcm5hbGx5LiBUaGlzIG5hcnJvd3MgZG93biBteSBzY29wZSwgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc2AsIG9yIHBlcmhhcHMgdGhlIGZ1bmN0aW9ucyBpdCB1c2VzIGRpcmVjdGx5LiBJIHRoaW5rIEknbGwgc3RhcnQgd2l0aCBga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzYCBhbmQgc2VlIGlmIHRoYXQgcHJvdmVzIHRvIGJlIGEgbW9yZSBwcm9taXNpbmcgcGF0aC4gSXQgb2Z0ZW4gbWFrZXMgc2Vuc2UgdG8gc3RhcnQgd2l0aCB0aGUgdG9wLWxldmVsIGZ1bmN0aW9uIGhhbmRsaW5nIGEgZ2l2ZW4gb3BlcmF0aW9uIHRvIHNlZSB3aGF0IGl0J3MgZG9pbmcgYmVmb3JlIGRlbHZpbmcgaW50byB0aGUgbml0dHkgZ3JpdHR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzYwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTI6NTAuNTM5MDkzNjYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIyNTkwMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS90bGIuYz0yOTE9c3RhdGljIGJvb2wgdmNwdV9oZmVuY2VfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zMTQtXFxuYXJjaC9yaXNjdi9rdm0vdGxiLmM6MzE1OnZvaWQga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zMTYte1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTY2ND1zdGF0aWMgaW50IGt2bV9yaXNjdl9jaGVja192Y3B1X3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy03MDAtXFx0XFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfSEZFTkNFLCB2Y3B1KSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6NzAxOlxcdFxcdFxcdGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzcyh2Y3B1KTtcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzAyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMjo1MC43NDEzNTg0NThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3OTIxNzIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGhmZW5jZSBQcm9jZXNzaW5nIGluIEtWTS9SSVNDLVYqKlxuXG5Pa2F5LCBzbyBga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzYCBpcyB0cmlnZ2VyZWQgYnkgYGt2bV9yaXNjdl9jaGVja192Y3B1X3JlcXVlc3RzYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgYWN0dWFsbHkgaGFuZGxlcyB0aGUgaGZlbmNlIHJlcXVlc3RzLiBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhYCwgYW5kIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYCBzZWVtIGxpa2UgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBkbyB0aGUgaGVhdnkgbGlmdGluZyBmb3IgdGhlIGxvY2FsIGhmZW5jZSBvcGVyYXRpb25zLlxuXG5NeSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byB2ZXJpZnkgd2hldGhlciB0aGVzZSBhcmUgcHJvcGVybHkgZXhwb3J0ZWQuIFRoZXkncmUgdGhlIGNyaXRpY2FsIHBpZWNlcywgc28gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkncmUgZXhwb3NlZCBhbmQgYWNjZXNzaWJsZSBjb3JyZWN0bHkuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBob3cgdGhlIHByb2Nlc3NpbmcgaXMgaGFuZGxlZCBhdCB0aGUgY29yZSBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkwNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMjo1NC4xMjA1Nzc3MzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDgyMzIxNzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmt2bV9yaXNjdl9sb2NhbF9oZmVuY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMjo1NS40Mjg4MTkyMjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0NjY0NzE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUklTQy1WIEtWTSBUTEIgRmx1c2ggUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGVzZSB2YXJpYWJsZXMgYXJlbid0IGV4cGxpY2l0bHkgZXhwb3J0ZWQsIGJ1dCB0aGV5J3JlIGdsb2JhbGx5IGFjY2Vzc2libGUgd2l0aGluIHRoZSBLVk0gbW9kdWxlLCB3aGljaCBpcyB3aGF0IG1hdHRlcnMuIFdhaXQsIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGFgIGlzIGRlY2xhcmVkIGluIGBhcmNoL3Jpc2N2L2t2bS90bGIuY2AgYW5kIGlzIGFjdHVhbGx5IHVzZWQgaW4gYGFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jYCBhbmQgYGFyY2gvcmlzY3Yva3ZtL3RsYi5jYCEgU28sIHdlIGNhbiBkZWZpbml0ZWx5IGFjY2VzcyBpdCBhbmQgdGhlc2UgcmVsYXRlZCBmdW5jdGlvbnMuXG5cbk5vdywgSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgYXJjaC9yaXNjdi9rdm0vdGxiLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guIE9rYXksIGl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIG1vZGlmaWVzOiBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhYCwgYW5kIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYC4gVGhlc2UgYXJlIHRoZSBvbmVzIEkgc2hvdWxkIGZvY3VzIG9uIGZvciBmdXp6aW5nLlxuXG5NeSByZWFzb25pbmc/IFRoaXMgcGF0Y2ggaXMgZml4aW5nIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiB0aGUgUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zLiBJdCdzIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgYW5kIG1vZGlmeWluZyBsb29wIGNvbmRpdGlvbnMuIEl0J3MgYSBmdW5kYW1lbnRhbCBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIGxvZ2ljIGZvciBSSVNDLVYsIGFuZCBmdXp6aW5nIGlzIGNyaXRpY2FsIHRvIHZlcmlmeSB0aGUgbmV3IG92ZXJmbG93IGhhbmRsaW5nLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCBmdW5jdGlvbnMgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cblxuTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBgS1ZNYCBjb25maWcgaXMgdGhlIG9ubHkgb25lIHRoYXQgbWF0dGVycyBoZXJlLiBZdXAsIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYCBvbmx5IGhhcyB0aGUgYGNvbmZpZyBLVk1gLiBOb3csIGxldCdzIHNlZSBpZiBgS1ZNYCBoYXMgYW55IGRlcGVuZGVuY2llcyB0aGF0IHdvdWxkIGJlIHVzZWZ1bCB0byBlbmFibGUgZHVyaW5nIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMTAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTM6MDAuOTc1NDY4ODFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDM4MDc4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMzowMS4xNzU4NTQ2OTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwODc4MDM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFZpcnR1YWxpemF0aW9uKipcblxuT2theSwgc28gdGhlIGFwcHJvYWNoIGhlcmUgcmVhbGx5IGhpbmdlcyBvbiB0aGUgdHlwZSBvZiBgVklSVFVBTElaQVRJT05gIHdlJ3JlIHRhbGtpbmcgYWJvdXQuIEluIG1vc3QgdHlwaWNhbCBzY2VuYXJpb3MsIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBiYXNpYyBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiwgYEtWTWAgaXMgbGlrZWx5IHN1ZmZpY2llbnQuIEluIGZhY3QsIGBWSVJUVUFMSVpBVElPTmAgbWlnaHQganVzdCBiZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBwZXJoYXBzIHNvbWV0aGluZyBhY2Nlc3NlZCB0aHJvdWdoIGEgYG1lbnVjb25maWdgIG9yIGV2ZW4ganVzdCBhIHN0cmFpZ2h0Zm9yd2FyZCBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBlbmFibGVzIHRoZSBmZWF0dXJlIHNldC4gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCBgVklSVFVBTElaQVRJT05gIGFjdHVhbGx5IHJlZmVycyB0byBpbiB0aGlzIGNvbnRleHQgYmVmb3JlIEkgY2FuIG9mZmVyIGEgbW9yZSBwcmVjaXNlIHNvbHV0aW9uLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0aG9yb3VnaGx5IGludmVzdGlnYXRlIGBWSVJUVUFMSVpBVElPTmAgaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjEyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTM6MDMuOTg0NjM3NjQxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTE1MTUwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklSVFVBTElaQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTY9c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctNy1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjg6bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctOS1cXHRib29sIFxcXCJWaXJ0dWFsaXphdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTM6MDQuMDY5Nzk1ODU5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MzY3NDU0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS1ZNLUZvY3VzZWQgVGhvdWdodCBQcm9jZXNzKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgS1ZNIGNvbmZpZ3VyYXRpb25zLCBieXBhc3NpbmcgdGhlIGJyb2FkZXIgdmlydHVhbGl6YXRpb24gY29udGV4dCBmb3Igbm93LiBGb3IgdGhpcywgSSdsbCBqdXN0IGZvY3VzIG9uIGBLVk1gIGl0c2VsZi5cblxuTm93LCBsZXQncyBvdXRsaW5lIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbnZvbHZlZC4gSSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlc2U6XG5cbiogICBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYFxuKiAgIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhYFxuKiAgIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmFgXG4qICAgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmFgXG5cbkFjdHVhbGx5LCB3YWl0IGEgbWludXRlLCB0aGUgYGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc2AgZnVuY3Rpb24gaXMgY3JpdGljYWwuIEl0J3MgdGhlIG9uZSB0aGF0IGhhbmRsZXMgdGhlIGluY29taW5nIHJlcXVlc3RzIGFuZCBvcmNoZXN0cmF0ZXMgY2FsbHMgdG8gdGhlc2Ugb3RoZXIgZnVuY3Rpb25zLiBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgaXQuIFRoYXQncyB0aGUga2V5IHRvIHRoZSBzZXF1ZW5jZS5cblxuT2theSwgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBzZXQuIE5vdyBJJ2xsIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUyNCwiT3V0cHV0VG9rZW5zIjoxOTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTM6MDguOTA2NTQzODQ2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg3Mzc5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhXCIsXG4gICAgXCJrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zIGJ5IGFkZGluZyBvdmVyZmxvdyBjaGVja3MgYW5kIG1vZGlmeWluZyBsb29wIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGhhbmRsaW5nIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmFcIixcbiAgICBcImt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmFcIixcbiAgICBcImt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiBSSVNDLVYgS1ZNIFRMQiBmbHVzaCBmdW5jdGlvbnMgYnkgYWRkaW5nIG92ZXJmbG93IGNoZWNrcyBhbmQgbW9kaWZ5aW5nIGxvb3AgY29uZGl0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgb3ZlcmZsb3cgaGFuZGxpbmcgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowk5bln[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-18 04:52:12 +0000 UTC FinishedAt: 2026-07-18 05:13:10 +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": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "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": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "4af848d8-ecfc-4c11-b5a2-bc57568c55d5" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_local_hfence_gvma_vmid_gpa", "kvm_riscv_local_hfence_gvma_gpa", "kvm_riscv_local_hfence_vvma_asid_gva", "kvm_riscv_local_hfence_vvma_gva", "kvm_riscv_hfence_process" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9oZmVuY2VfcHJvY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zIGJ5IGFkZGluZyBvdmVyZmxvdyBjaGVja3MgYW5kIG1vZGlmeWluZyBsb29wIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGhhbmRsaW5nIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2Q3YTJkZGM0MmQ3Mjk4YTIwMjk4MWVjMmY3ZmQ5NDBiODg3MGVkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDE4IDA1OjEyOjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbmluZGV4IDk5M2IyNWVhOTRkNjc0Li5iMGM4M2UzY2NjMTVhOCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuQEAgLTgsNiAmIzQzOzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L292ZXJmbG93LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY2FjaGVmbHVzaC5oXHUwMDNlXG5AQCAtMjQsNyAmIzQzOzI1LDEyIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhKHVuc2lnbmVkIGxvbmcgdm1pZCxcbiBcdFx0XHRcdFx0ICBncGFfdCBncGEsIGdwYV90IGdwc3osXG4gXHRcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBvcmRlcilcbiB7XG4tXHRncGFfdCBwb3M7XG4mIzQzO1x0Z3BhX3QgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xuJiM0MztcbiYjNDM7XHRpZiAoY2hlY2tfYWRkX292ZXJmbG93KGdwYSwgZ3BzeiwgXHUwMDI2ZW5kKSkge1xuJiM0MztcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiBcbiBcdGlmIChQVFJTX1BFUl9QVEUgXHUwMDNjIChncHN6IFx1MDAzZVx1MDAzZSBvcmRlcikpIHtcbiBcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xuQEAgLTMzLDE0ICYjNDM7MzksMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEodW5zaWduZWQgbG9uZyB2bWlkLFxuIFxuIFx0aWYgKGhhc19zdmludmFsKCkpIHtcbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfV19JTlZBTCgpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuLVx0XHRmb3IgKHBvcyA9IGdwYTsgcG9zIFx1MDAzYyAoZ3BhICYjNDM7IGdwc3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpXG4mIzQzO1x0XHRmb3IgKHBvcyA9IGdwYTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyAmIzQzOz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZSAoSElOVkFMX0dWTUEoJTAsICUxKVxuIFx0XHRcdDogOiBcJiMzNDtyXCYjMzQ7IChwb3MgXHUwMDNlXHUwMDNlIDIpLCBcJiMzNDtyXCYjMzQ7ICh2bWlkKSA6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuIFx0fSBlbHNlIHtcbi1cdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgKGdwYSAmIzQzOyBncHN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKVxuJiM0MztcdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUgKEhGRU5DRV9HVk1BKCUwLCAlMSlcbiBcdFx0XHQ6IDogXCYjMzQ7clwmIzM0OyAocG9zIFx1MDAzZVx1MDAzZSAyKSwgXCYjMzQ7clwmIzM0OyAodm1pZCkgOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0MztcdFx0XHRpZiAoZW5kIC0gcG9zIFx1MDAzYz0gc3RlcClcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtNTIsNyAmIzQzOzY0LDEyIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZClcbiB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGEoZ3BhX3QgZ3BhLCBncGFfdCBncHN6LFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIG9yZGVyKVxuIHtcbi1cdGdwYV90IHBvcztcbiYjNDM7XHRncGFfdCBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7XG4mIzQzO1xuJiM0MztcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3BhLCBncHN6LCBcdTAwMjZlbmQpKSB7XG4mIzQzO1x0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfYWxsKCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuIFx0aWYgKFBUUlNfUEVSX1BURSBcdTAwM2MgKGdwc3ogXHUwMDNlXHUwMDNlIG9yZGVyKSkge1xuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfYWxsKCk7XG5AQCAtNjEsMTQgJiM0Mzs3OCwyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGEoZ3BhX3QgZ3BhLCBncGFfdCBncHN6LFxuIFxuIFx0aWYgKGhhc19zdmludmFsKCkpIHtcbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfV19JTlZBTCgpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuLVx0XHRmb3IgKHBvcyA9IGdwYTsgcG9zIFx1MDAzYyAoZ3BhICYjNDM7IGdwc3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpXG4mIzQzO1x0XHRmb3IgKHBvcyA9IGdwYTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyAmIzQzOz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZShISU5WQUxfR1ZNQSglMCwgemVybylcbiBcdFx0XHQ6IDogXCYjMzQ7clwmIzM0OyAocG9zIFx1MDAzZVx1MDAzZSAyKSA6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuIFx0fSBlbHNlIHtcbi1cdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgKGdwYSAmIzQzOyBncHN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKVxuJiM0MztcdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUoSEZFTkNFX0dWTUEoJTAsIHplcm8pXG4gXHRcdFx0OiA6IFwmIzM0O3JcJiMzNDsgKHBvcyBcdTAwM2VcdTAwM2UgMikgOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0MztcdFx0XHRpZiAoZW5kIC0gcG9zIFx1MDAzYz0gc3RlcClcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtODMsNyAmIzQzOzEwNiwxMyBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXG4gXHRcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBndnN6LFxuIFx0XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgb3JkZXIpXG4ge1xuLVx0dW5zaWduZWQgbG9uZyBwb3MsIGhnYXRwO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgaGdhdHA7XG4mIzQzO1xuJiM0MztcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3ZhLCBndnN6LCBcdTAwMjZlbmQpKSB7XG4mIzQzO1x0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9hbGwodm1pZCwgYXNpZCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuIFx0aWYgKFBUUlNfUEVSX1BURSBcdTAwM2MgKGd2c3ogXHUwMDNlXHUwMDNlIG9yZGVyKSkge1xuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9hbGwodm1pZCwgYXNpZCk7XG5AQCAtOTQsMTQgJiM0MzsxMjMsMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmEodW5zaWduZWQgbG9uZyB2bWlkLFxuIFxuIFx0aWYgKGhhc19zdmludmFsKCkpIHtcbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfV19JTlZBTCgpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICYjNDM7IGd2c3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpXG4mIzQzO1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyAmIzQzOz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZShISU5WQUxfVlZNQSglMCwgJTEpXG4gXHRcdFx0OiA6IFwmIzM0O3JcJiMzNDsgKHBvcyksIFwmIzM0O3JcJiMzNDsgKGFzaWQpIDogXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiYjNDM7XHRcdFx0aWYgKGVuZCAtIHBvcyBcdTAwM2M9IHN0ZXApXG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4gXHRcdGFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4gXHR9IGVsc2Uge1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICYjNDM7IGd2c3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpXG4mIzQzO1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyAmIzQzOz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZShIRkVOQ0VfVlZNQSglMCwgJTEpXG4gXHRcdFx0OiA6IFwmIzM0O3JcJiMzNDsgKHBvcyksIFwmIzM0O3JcJiMzNDsgKGFzaWQpIDogXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiYjNDM7XHRcdFx0aWYgKGVuZCAtIHBvcyBcdTAwM2M9IHN0ZXApXG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRjc3Jfd3JpdGUoQ1NSX0hHQVRQLCBoZ2F0cCk7XG5AQCAtMTIzLDcgJiM0MzsxNTgsMTMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhKHVuc2lnbmVkIGxvbmcgdm1pZCxcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBndmEsIHVuc2lnbmVkIGxvbmcgZ3ZzeixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBvcmRlcilcbiB7XG4tXHR1bnNpZ25lZCBsb25nIHBvcywgaGdhdHA7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBoZ2F0cDtcbiYjNDM7XG4mIzQzO1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhndmEsIGd2c3osIFx1MDAyNmVuZCkpIHtcbiYjNDM7XHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodm1pZCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuIFx0aWYgKFBUUlNfUEVSX1BURSBcdTAwM2MgKGd2c3ogXHUwMDNlXHUwMDNlIG9yZGVyKSkge1xuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpO1xuQEAgLTEzNCwxNCAmIzQzOzE3NSwyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmEodW5zaWduZWQgbG9uZyB2bWlkLFxuIFxuIFx0aWYgKGhhc19zdmludmFsKCkpIHtcbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfV19JTlZBTCgpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICYjNDM7IGd2c3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpXG4mIzQzO1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyAmIzQzOz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZShISU5WQUxfVlZNQSglMCwgemVybylcbiBcdFx0XHQ6IDogXCYjMzQ7clwmIzM0OyAocG9zKSA6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuIFx0fSBlbHNlIHtcbi1cdFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcdTAwM2MgKGd2YSAmIzQzOyBndnN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKVxuJiM0MztcdFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcdTAwM2MgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUoSEZFTkNFX1ZWTUEoJTAsIHplcm8pXG4gXHRcdFx0OiA6IFwmIzM0O3JcJiMzNDsgKHBvcykgOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0MztcdFx0XHRpZiAoZW5kIC0gcG9zIFx1MDAzYz0gc3RlcClcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdGNzcl93cml0ZShDU1JfSEdBVFAsIGhnYXRwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmEmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgaXNzdWVzIGluIFJJU0MtViBLVk0gVExCIGZsdXNoIGZ1bmN0aW9ucyBieSBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGFuZCBtb2RpZnlpbmcgbG9vcCBjb25kaXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIGZvciBSSVNDLVYgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBvdmVyZmxvdyBoYW5kbGluZyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2Q3YTJkZGM0MmQ3Mjk4YTIwMjk4MWVjMmY3ZmQ5NDBiODg3MGVkYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDE4IDA1OjEyOjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdGxiLmMgYi9hcmNoL3Jpc2N2L2t2bS90bGIuYwppbmRleCA5OTNiMjVlYTk0ZDY3NC4uYjBjODNlM2NjYzE1YTggMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3RsYi5jCkBAIC04LDYgJiM0Mzs4LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9lcnJuby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vyci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vdmVyZmxvdy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NtcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2t2bV9ob3N0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2NhY2hlZmx1c2guaCZndDsKQEAgLTI0LDcgJiM0MzsyNSwxMiBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYSh1bnNpZ25lZCBsb25nIHZtaWQsCiAJCQkJCSAgZ3BhX3QgZ3BhLCBncGFfdCBncHN6LAogCQkJCQkgIHVuc2lnbmVkIGxvbmcgb3JkZXIpCiB7Ci0JZ3BhX3QgcG9zOwomIzQzOwlncGFfdCBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7CiYjNDM7CiYjNDM7CWlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3BhLCBncHN6LCAmYW1wO2VuZCkpIHsKJiM0MzsJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCiAJaWYgKFBUUlNfUEVSX1BURSAmbHQ7IChncHN6ICZndDsmZ3Q7IG9yZGVyKSkgewogCQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7CkBAIC0zMywxNCAmIzQzOzM5LDIwIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhKHVuc2lnbmVkIGxvbmcgdm1pZCwKIAogCWlmIChoYXNfc3ZpbnZhbCgpKSB7CiAJCWFzbSB2b2xhdGlsZSAoU0ZFTkNFX1dfSU5WQUwoKSA6OjogJiMzNDttZW1vcnkmIzM0Oyk7Ci0JCWZvciAocG9zID0gZ3BhOyBwb3MgJmx0OyAoZ3BhICYjNDM7IGdwc3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpCiYjNDM7CQlmb3IgKHBvcyA9IGdwYTsgcG9zICZsdDsgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHsKIAkJCWFzbSB2b2xhdGlsZSAoSElOVkFMX0dWTUEoJTAsICUxKQogCQkJOiA6ICYjMzQ7ciYjMzQ7IChwb3MgJmd0OyZndDsgMiksICYjMzQ7ciYjMzQ7ICh2bWlkKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWlmIChlbmQgLSBwb3MgJmx0Oz0gc3RlcCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9CiAJCWFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6ICYjMzQ7bWVtb3J5JiMzNDspOwogCX0gZWxzZSB7Ci0JCWZvciAocG9zID0gZ3BhOyBwb3MgJmx0OyAoZ3BhICYjNDM7IGdwc3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpCiYjNDM7CQlmb3IgKHBvcyA9IGdwYTsgcG9zICZsdDsgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHsKIAkJCWFzbSB2b2xhdGlsZSAoSEZFTkNFX0dWTUEoJTAsICUxKQogCQkJOiA6ICYjMzQ7ciYjMzQ7IChwb3MgJmd0OyZndDsgMiksICYjMzQ7ciYjMzQ7ICh2bWlkKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWlmIChlbmQgLSBwb3MgJmx0Oz0gc3RlcCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9CiAJfQogfQogCkBAIC01Miw3ICYjNDM7NjQsMTIgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodW5zaWduZWQgbG9uZyB2bWlkKQogdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhKGdwYV90IGdwYSwgZ3BhX3QgZ3BzeiwKIAkJCQkgICAgIHVuc2lnbmVkIGxvbmcgb3JkZXIpCiB7Ci0JZ3BhX3QgcG9zOwomIzQzOwlncGFfdCBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7CiYjNDM7CiYjNDM7CWlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3BhLCBncHN6LCAmYW1wO2VuZCkpIHsKJiM0MzsJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9hbGwoKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCiAJaWYgKFBUUlNfUEVSX1BURSAmbHQ7IChncHN6ICZndDsmZ3Q7IG9yZGVyKSkgewogCQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfYWxsKCk7CkBAIC02MSwxNCAmIzQzOzc4LDIwIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYShncGFfdCBncGEsIGdwYV90IGdwc3osCiAKIAlpZiAoaGFzX3N2aW52YWwoKSkgewogCQlhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6ICYjMzQ7bWVtb3J5JiMzNDspOwotCQlmb3IgKHBvcyA9IGdwYTsgcG9zICZsdDsgKGdwYSAmIzQzOyBncHN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKQomIzQzOwkJZm9yIChwb3MgPSBncGE7IHBvcyAmbHQ7IGVuZDsgcG9zICYjNDM7PSBzdGVwKSB7CiAJCQlhc20gdm9sYXRpbGUoSElOVkFMX0dWTUEoJTAsIHplcm8pCiAJCQk6IDogJiMzNDtyJiMzNDsgKHBvcyAmZ3Q7Jmd0OyAyKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWlmIChlbmQgLSBwb3MgJmx0Oz0gc3RlcCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9CiAJCWFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6ICYjMzQ7bWVtb3J5JiMzNDspOwogCX0gZWxzZSB7Ci0JCWZvciAocG9zID0gZ3BhOyBwb3MgJmx0OyAoZ3BhICYjNDM7IGdwc3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpCiYjNDM7CQlmb3IgKHBvcyA9IGdwYTsgcG9zICZsdDsgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHsKIAkJCWFzbSB2b2xhdGlsZShIRkVOQ0VfR1ZNQSglMCwgemVybykKIAkJCTogOiAmIzM0O3ImIzM0OyAocG9zICZndDsmZ3Q7IDIpIDogJiMzNDttZW1vcnkmIzM0Oyk7CiYjNDM7CQkJaWYgKGVuZCAtIHBvcyAmbHQ7PSBzdGVwKQomIzQzOwkJCQlicmVhazsKJiM0MzsJCX0KIAl9CiB9CiAKQEAgLTgzLDcgJiM0MzsxMDYsMTMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmEodW5zaWduZWQgbG9uZyB2bWlkLAogCQkJCQkgIHVuc2lnbmVkIGxvbmcgZ3ZzeiwKIAkJCQkJICB1bnNpZ25lZCBsb25nIG9yZGVyKQogewotCXVuc2lnbmVkIGxvbmcgcG9zLCBoZ2F0cDsKJiM0MzsJdW5zaWduZWQgbG9uZyBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7CiYjNDM7CXVuc2lnbmVkIGxvbmcgaGdhdHA7CiYjNDM7CiYjNDM7CWlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3ZhLCBndnN6LCAmYW1wO2VuZCkpIHsKJiM0MzsJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2FsbCh2bWlkLCBhc2lkKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCiAJaWYgKFBUUlNfUEVSX1BURSAmbHQ7IChndnN6ICZndDsmZ3Q7IG9yZGVyKSkgewogCQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9hbGwodm1pZCwgYXNpZCk7CkBAIC05NCwxNCAmIzQzOzEyMywyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsCiAKIAlpZiAoaGFzX3N2aW52YWwoKSkgewogCQlhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6ICYjMzQ7bWVtb3J5JiMzNDspOwotCQlmb3IgKHBvcyA9IGd2YTsgcG9zICZsdDsgKGd2YSAmIzQzOyBndnN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKQomIzQzOwkJZm9yIChwb3MgPSBndmE7IHBvcyAmbHQ7IGVuZDsgcG9zICYjNDM7PSBzdGVwKSB7CiAJCQlhc20gdm9sYXRpbGUoSElOVkFMX1ZWTUEoJTAsICUxKQogCQkJOiA6ICYjMzQ7ciYjMzQ7IChwb3MpLCAmIzM0O3ImIzM0OyAoYXNpZCkgOiAmIzM0O21lbW9yeSYjMzQ7KTsKJiM0MzsJCQlpZiAoZW5kIC0gcG9zICZsdDs9IHN0ZXApCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJfQogCQlhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiAmIzM0O21lbW9yeSYjMzQ7KTsKIAl9IGVsc2UgewotCQlmb3IgKHBvcyA9IGd2YTsgcG9zICZsdDsgKGd2YSAmIzQzOyBndnN6KTsgcG9zICYjNDM7PSBCSVQob3JkZXIpKQomIzQzOwkJZm9yIChwb3MgPSBndmE7IHBvcyAmbHQ7IGVuZDsgcG9zICYjNDM7PSBzdGVwKSB7CiAJCQlhc20gdm9sYXRpbGUoSEZFTkNFX1ZWTUEoJTAsICUxKQogCQkJOiA6ICYjMzQ7ciYjMzQ7IChwb3MpLCAmIzM0O3ImIzM0OyAoYXNpZCkgOiAmIzM0O21lbW9yeSYjMzQ7KTsKJiM0MzsJCQlpZiAoZW5kIC0gcG9zICZsdDs9IHN0ZXApCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJfQogCX0KIAogCWNzcl93cml0ZShDU1JfSEdBVFAsIGhnYXRwKTsKQEAgLTEyMyw3ICYjNDM7MTU4LDEzIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsCiAJCQkJICAgICB1bnNpZ25lZCBsb25nIGd2YSwgdW5zaWduZWQgbG9uZyBndnN6LAogCQkJCSAgICAgdW5zaWduZWQgbG9uZyBvcmRlcikKIHsKLQl1bnNpZ25lZCBsb25nIHBvcywgaGdhdHA7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpOwomIzQzOwl1bnNpZ25lZCBsb25nIGhnYXRwOwomIzQzOwomIzQzOwlpZiAoY2hlY2tfYWRkX292ZXJmbG93KGd2YSwgZ3ZzeiwgJmFtcDtlbmQpKSB7CiYjNDM7CQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiAKIAlpZiAoUFRSU19QRVJfUFRFICZsdDsgKGd2c3ogJmd0OyZndDsgb3JkZXIpKSB7CiAJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodm1pZCk7CkBAIC0xMzQsMTQgJiM0MzsxNzUsMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhKHVuc2lnbmVkIGxvbmcgdm1pZCwKIAogCWlmIChoYXNfc3ZpbnZhbCgpKSB7CiAJCWFzbSB2b2xhdGlsZSAoU0ZFTkNFX1dfSU5WQUwoKSA6OjogJiMzNDttZW1vcnkmIzM0Oyk7Ci0JCWZvciAocG9zID0gZ3ZhOyBwb3MgJmx0OyAoZ3ZhICYjNDM7IGd2c3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpCiYjNDM7CQlmb3IgKHBvcyA9IGd2YTsgcG9zICZsdDsgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHsKIAkJCWFzbSB2b2xhdGlsZShISU5WQUxfVlZNQSglMCwgemVybykKIAkJCTogOiAmIzM0O3ImIzM0OyAocG9zKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWlmIChlbmQgLSBwb3MgJmx0Oz0gc3RlcCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9CiAJCWFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6ICYjMzQ7bWVtb3J5JiMzNDspOwogCX0gZWxzZSB7Ci0JCWZvciAocG9zID0gZ3ZhOyBwb3MgJmx0OyAoZ3ZhICYjNDM7IGd2c3opOyBwb3MgJiM0Mzs9IEJJVChvcmRlcikpCiYjNDM7CQlmb3IgKHBvcyA9IGd2YTsgcG9zICZsdDsgZW5kOyBwb3MgJiM0Mzs9IHN0ZXApIHsKIAkJCWFzbSB2b2xhdGlsZShIRkVOQ0VfVlZNQSglMCwgemVybykKIAkJCTogOiAmIzM0O3ImIzM0OyAocG9zKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwkJCWlmIChlbmQgLSBwb3MgJmx0Oz0gc3RlcCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9CiAJfQogCiAJY3NyX3dyaXRlKENTUl9IR0FUUCwgaGdhdHApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODc5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJJU0MtViBLVk0gVExCIEZsdXNoIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgbW9kaWZ5aW5nIGBhcmNoL3Jpc2N2L2t2bS90bGIuY2AuIEl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIG92ZXJmbG93IGNoZWNrcyB0byBhIGZldyBrZXkgZnVuY3Rpb25zOiBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhYCwgYW5kIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYC4gU21hcnQgbW92ZS4gVGhleSYjMzk7cmUgYWxzbyBhZGp1c3RpbmcgdGhlIGxvb3AgY29uZGl0aW9uIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHMgaWYgYHBvcyAmIzQzOyBzdGVwYCBvdmVyZmxvd3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBidWdzIGR1cmluZyBUTEIgZmx1c2hpbmcgZm9yIGd1ZXN0IHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJlc3Nlcy4KClRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGNhbiB0aGlzIGJlIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBLVk0gKnNob3VsZCogYmUgaGVhdmlseSB0ZXN0ZWQgdGhlcmUsIGJ1dCB0aGlzIGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyAoUklTQy1WKS4gVGhlIHByb21wdCBtZW50aW9uZWQgc3BlY2lmaWMgZW52aXJvbm1lbnRzIHRoYXQgYXJlIHVucmVhY2hhYmxlLiBXYWl0LCBRRU1VIGlzIGxpc3RlZC4gQnV0LCBRRU1VIHN1cHBvcnRzIFJJU0MtViBLVk0hIEl0IGRlcGVuZHMgb24gdGhlIGhvc3QsIG9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gQW5kLCBzeXprYWxsZXIgZnV6emVzIFJJU0MtViBLVk0sIHJpZ2h0PyBPa2F5LCBvbmx5IGlmIGl0JiMzOTtzIGNvbXBpbGVkIGZvciBSSVNDLVYuIE9oLCB0aGUgcHJvbXB0ICpzcGVjaWZpY2FsbHkqIG1lbnRpb25lZCB0aGF0IHRoZSBwYXRocyBzaG91bGQgYmUgdW5yZWFjaGFibGUsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9ucyBJIG1lbnRpb25lZCBwcmV2aW91c2x5IHdvdWxkIGJlIHVucmVhY2hhYmxlLiBCdXQgUUVNVSAqY2FuKiBlbXVsYXRlIFJJU0MtViB3aXRoIHRoZSBoeXBlcnZpc29yIGV4dGVuc2lvbi4gQnV0LCBjYW4gS1ZNIHJ1biBpbnNpZGUgaXQ/IE5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gU28uLi4geWVzLCBpdCAqaXMqIHJlYWNoYWJsZS4KCk5vdywgbGV0JiMzOTtzIGZpbmQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gSXQmIzM5O3MgbGlrZWx5IGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYCB3aWxsIGNvbnRhaW4gYENPTkZJR19LVk1gLCBidXQgSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NTIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSYjMzk7cyBSSVNDLVYgVExCIEZsdXNoIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24gYW5kIHNwZWNpZmljYWxseSBhdCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBhcm91bmQgdGhlc2UgZm91ciBmdW5jdGlvbnM6IGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYWAsIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmFgLCBhbmQgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmFgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgYXJlIGNyaXRpY2FsIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhleSBjbGVhcmx5IGRlYWwgd2l0aCBUTEIgZmx1c2hpbmcsIGFuZCB0aG9zZSBjYW4gYmUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIFRMQiBmbHVzaGVzICphcmUqIGZyZXF1ZW50LCBidXQgbWlnaHQgbm90IG5lY2Vzc2FyaWx5IGJlIGludm9rZWQgd2l0aCBldmVyeSBzaW5nbGUgcGFja2V0IG9yIHN5c2NhbGwuCgpOb3cgSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGhpZXJhcmNoeSBhbmQgc2VlIHdoZXJlIHRoZXkmIzM5O3JlIGJlaW5nIHRyaWdnZXJlZCBmcm9tIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZWlyIGltcGFjdC4gRGV0ZXJtaW5pbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTExMT1zdGF0aWMgdm9pZCBnc3RhZ2VfdGxiX2ZsdXNoKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIHUzMiBsZXZlbCwgZ3BhX3QgYWRkcilcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0xMTktXHRpZiAoZ3N0YWdlLVx1MDAzZWZsYWdzIFx1MDAyNiBLVk1fR1NUQUdFX0ZMQUdTX0xPQ0FMKVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MTIwOlx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEoZ3N0YWdlLVx1MDAzZXZtaWQsIGFkZHIsIEJJVChvcmRlciksIG9yZGVyKTtcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTEyMS1cdGVsc2Vcbi0tXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0yMy1cbmFyY2gvcmlzY3Yva3ZtL3RsYi5jOjI0OnZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhKHVuc2lnbmVkIGxvbmcgdm1pZCxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTI1LVx0XHRcdFx0XHQgIGdwYV90IGdwYSwgZ3BhX3QgZ3Bzeixcbi0tXG5hcmNoL3Jpc2N2L2t2bS90bGIuYz0zMTU9dm9pZCBrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTMyNy1cdFx0XHRlbHNlXG5hcmNoL3Jpc2N2L2t2bS90bGIuYzozMjg6XHRcdFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEoZC52bWlkLCBkLmFkZHIsXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zMjktXHRcdFx0XHRcdFx0XHRcdCAgICAgZC5zaXplLCBkLm9yZGVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njg1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgUklTQy1WIEtWTToKCioqQW5hbHl6aW5nIFJJU0MtViBUTEIvSC1GZW5jZSBJbnRlcmFjdGlvbnMqKgoKUmlnaHQsIHNvIEkmIzM5O20gc2VlaW5nIGNhbGxzIGZyb20gYGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc2AgYW5kIGBnc3RhZ2VfdGxiX2ZsdXNoYC4gVGhhdCBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGh5cGVydmlzb3ItbWFuYWdlZCB0cmFuc2xhdGlvbiBsb29rYXNpZGUgYnVmZmVyIChUTEIpIGZsdXNoZXMgYW5kIGhhcmR3YXJlIGZlbmNlIG9wZXJhdGlvbnMsIGxpa2VseSByZWxhdGVkIHRvIHZpcnR1YWwtdG8tcGh5c2ljYWwgYWRkcmVzcyB0cmFuc2xhdGlvbi4gR2l2ZW4gdGhhdCwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGxvb2tzIHByb21pc2luZzsgdGhlICYjMzQ7bG9jYWwmIzM0OyBwYXJ0IGxpa2VseSBwb2ludHMgdG93YXJkcyBhbiBvcGVyYXRpb24gdGhhdCYjMzk7cyBzcGVjaWZpYyB0byB0aGUgY3VycmVudCB2aXJ0dWFsIG1hY2hpbmUgKFZNKSBjb250ZXh0LCB0aGUgJiMzNDtoZmVuY2UmIzM0OyBjbGVhcmx5IGluZGljYXRlcyBhIGh5cGVydmlzb3IgZmVuY2Ugb3BlcmF0aW9uLCAmIzM0O3Z2bWEmIzM0OyBpbXBsaWVzIGEgVmlydHVhbCBWaWV3IE1lbW9yeSBBZGRyZXNzLCBhbmQgJiMzNDtndmEmIzM0OyBzdWdnZXN0cyBhIEd1ZXN0IFZpcnR1YWwgQWRkcmVzcy4gVGhpcyBzdHJvbmdseSBpbXBsaWVzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYW4gb3BlcmF0aW9uIHRoYXQgdGFrZXMgYSBHVkEgKGZyb20gdGhlIGd1ZXN0KSBhbmQgYXBwbGllcyBhIGh5cGVydmlzb3ItY29udHJvbGxlZCBmZW5jZSBvciBpbnZhbGlkYXRpb24gcmVsYXRlZCB0byB0aGF0IEdWQSBpbiB0aGUgbG9jYWwgY29udGV4dCBvZiB0aGUgVk0uIFRoaXMgaXMgcHJvYmFibHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24gaW50byBleGFjdGx5IGhvdyB0aGUgaHlwZXJ2aXNvciBpcyBoYW5kbGluZyB0aGVzZSB0cmFuc2xhdGlvbiBpc3N1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgY2FsbCwgYW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiBpdCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIG92ZXJhbGwgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3RsYi5jPTE0NT12b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2FsbCh1bnNpZ25lZCBsb25nIHZtaWQsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMTU2LVxuYXJjaC9yaXNjdi9rdm0vdGxiLmM6MTU3OnZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0xNTgtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgZ3ZhLCB1bnNpZ25lZCBsb25nIGd2c3osXG4tLVxuYXJjaC9yaXNjdi9rdm0vdGxiLmM9MzE1PXZvaWQga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zNTgtXHRcdFx0ZWxzZVxuYXJjaC9yaXNjdi9rdm0vdGxiLmM6MzU5Olx0XHRcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YShkLnZtaWQsIGQuYWRkcixcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTM2MC1cdFx0XHRcdFx0XHRcdFx0ZC5zaXplLCBkLm9yZGVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzYwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGhlcmUuCgoqKkFuYWx5emluZyBQb3RlbnRpYWwgQXR0YWNrIFN1cmZhY2VzIGluIHRoZSBLVk0vUklTQy1WIEh5cGVydmlzb3IqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMgd2l0aGluIHRoZSBLVk0vUklTQy1WIGh5cGVydmlzb3IsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgZnVuY3Rpb25zIGluIHF1ZXN0aW9uIGFyZSBlaXRoZXIgZXhwb3J0ZWQgZm9yIGV4dGVybmFsIHVzZSBvciBhcmUgdXNlZCBpbnRlcm5hbGx5LiBUaGlzIG5hcnJvd3MgZG93biBteSBzY29wZSwgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc2AsIG9yIHBlcmhhcHMgdGhlIGZ1bmN0aW9ucyBpdCB1c2VzIGRpcmVjdGx5LiBJIHRoaW5rIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc2AgYW5kIHNlZSBpZiB0aGF0IHByb3ZlcyB0byBiZSBhIG1vcmUgcHJvbWlzaW5nIHBhdGguIEl0IG9mdGVuIG1ha2VzIHNlbnNlIHRvIHN0YXJ0IHdpdGggdGhlIHRvcC1sZXZlbCBmdW5jdGlvbiBoYW5kbGluZyBhIGdpdmVuIG9wZXJhdGlvbiB0byBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZyBiZWZvcmUgZGVsdmluZyBpbnRvIHRoZSBuaXR0eSBncml0dHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9oZmVuY2VfcHJvY2VzcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS90bGIuYz0yOTE9c3RhdGljIGJvb2wgdmNwdV9oZmVuY2VfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMzE0LVxuYXJjaC9yaXNjdi9rdm0vdGxiLmM6MzE1OnZvaWQga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTMxNi17XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTY2ND1zdGF0aWMgaW50IGt2bV9yaXNjdl9jaGVja192Y3B1X3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzAwLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9IRkVOQ0UsIHZjcHUpKVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjcwMTpcdFx0XHRrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3ModmNwdSk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzAyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTA1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaGZlbmNlIFByb2Nlc3NpbmcgaW4gS1ZNL1JJU0MtVioqCgpPa2F5LCBzbyBga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzYCBpcyB0cmlnZ2VyZWQgYnkgYGt2bV9yaXNjdl9jaGVja192Y3B1X3JlcXVlc3RzYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IGFjdHVhbGx5IGhhbmRsZXMgdGhlIGhmZW5jZSByZXF1ZXN0cy4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYWAsIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YWAsIGFuZCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YWAgc2VlbSBsaWtlIHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgZG8gdGhlIGhlYXZ5IGxpZnRpbmcgZm9yIHRoZSBsb2NhbCBoZmVuY2Ugb3BlcmF0aW9ucy4KCk15IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIHZlcmlmeSB3aGV0aGVyIHRoZXNlIGFyZSBwcm9wZXJseSBleHBvcnRlZC4gVGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIHBpZWNlcywgc28gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkmIzM5O3JlIGV4cG9zZWQgYW5kIGFjY2Vzc2libGUgY29ycmVjdGx5LiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgaG93IHRoZSBwcm9jZXNzaW5nIGlzIGhhbmRsZWQgYXQgdGhlIGNvcmUgbGV2ZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qa3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMTAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFJJU0MtViBLVk0gVExCIEZsdXNoIFBhdGNoKioKCk9rYXksIHNvIHRoZXNlIHZhcmlhYmxlcyBhcmVuJiMzOTt0IGV4cGxpY2l0bHkgZXhwb3J0ZWQsIGJ1dCB0aGV5JiMzOTtyZSBnbG9iYWxseSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgS1ZNIG1vZHVsZSwgd2hpY2ggaXMgd2hhdCBtYXR0ZXJzLiBXYWl0LCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYCBpcyBkZWNsYXJlZCBpbiBgYXJjaC9yaXNjdi9rdm0vdGxiLmNgIGFuZCBpcyBhY3R1YWxseSB1c2VkIGluIGBhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY2AgYW5kIGBhcmNoL3Jpc2N2L2t2bS90bGIuY2AhIFNvLCB3ZSBjYW4gZGVmaW5pdGVseSBhY2Nlc3MgaXQgYW5kIHRoZXNlIHJlbGF0ZWQgZnVuY3Rpb25zLgoKTm93LCBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBhcmNoL3Jpc2N2L2t2bS90bGIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgYWZmZWN0ZWQgYnkgdGhpcyBwYXRjaC4gT2theSwgaXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggbW9kaWZpZXM6IGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYWAsIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmFgLCBhbmQgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmFgLiBUaGVzZSBhcmUgdGhlIG9uZXMgSSBzaG91bGQgZm9jdXMgb24gZm9yIGZ1enppbmcuCgpNeSByZWFzb25pbmc/IFRoaXMgcGF0Y2ggaXMgZml4aW5nIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiB0aGUgUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zLiBJdCYjMzk7cyBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGFuZCBtb2RpZnlpbmcgbG9vcCBjb25kaXRpb25zLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gbG9naWMgZm9yIFJJU0MtViwgYW5kIGZ1enppbmcgaXMgY3JpdGljYWwgdG8gdmVyaWZ5IHRoZSBuZXcgb3ZlcmZsb3cgaGFuZGxpbmcuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGl0IGZ1bmN0aW9ucyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4KCkxldCBtZSBkb3VibGUtY2hlY2sgdGhhdCB0aGUgYEtWTWAgY29uZmlnIGlzIHRoZSBvbmx5IG9uZSB0aGF0IG1hdHRlcnMgaGVyZS4gWXVwLCBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2Agb25seSBoYXMgdGhlIGBjb25maWcgS1ZNYC4gTm93LCBsZXQmIzM5O3Mgc2VlIGlmIGBLVk1gIGhhcyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgd291bGQgYmUgdXNlZnVsIHRvIGVuYWJsZSBkdXJpbmcgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjEyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBWaXJ0dWFsaXphdGlvbioqCgpPa2F5LCBzbyB0aGUgYXBwcm9hY2ggaGVyZSByZWFsbHkgaGluZ2VzIG9uIHRoZSB0eXBlIG9mIGBWSVJUVUFMSVpBVElPTmAgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQuIEluIG1vc3QgdHlwaWNhbCBzY2VuYXJpb3MsIGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgYmFzaWMgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24sIGBLVk1gIGlzIGxpa2VseSBzdWZmaWNpZW50LiBJbiBmYWN0LCBgVklSVFVBTElaQVRJT05gIG1pZ2h0IGp1c3QgYmUgYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgcGVyaGFwcyBzb21ldGhpbmcgYWNjZXNzZWQgdGhyb3VnaCBhIGBtZW51Y29uZmlnYCBvciBldmVuIGp1c3QgYSBzdHJhaWdodGZvcndhcmQgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgZW5hYmxlcyB0aGUgZmVhdHVyZSBzZXQuIEkgbmVlZCB0byBjbGFyaWZ5IHdoYXQgYFZJUlRVQUxJWkFUSU9OYCBhY3R1YWxseSByZWZlcnMgdG8gaW4gdGhpcyBjb250ZXh0IGJlZm9yZSBJIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBzb2x1dGlvbi4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gdGhvcm91Z2hseSBpbnZlc3RpZ2F0ZSBgVklSVFVBTElaQVRJT05gIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZJUlRVQUxJWkFUSU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTY9c291cmNlIFwmIzM0O3ZpcnQva3ZtL0tjb25maWdcJiMzNDtcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctNy1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6ODptZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTktXHRib29sIFwmIzM0O1ZpcnR1YWxpemF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1MjQKCQkJCQkJCW91dHB1dDogMTkyCgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEtWTS1Gb2N1c2VkIFRob3VnaHQgUHJvY2VzcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgS1ZNIGNvbmZpZ3VyYXRpb25zLCBieXBhc3NpbmcgdGhlIGJyb2FkZXIgdmlydHVhbGl6YXRpb24gY29udGV4dCBmb3Igbm93LiBGb3IgdGhpcywgSSYjMzk7bGwganVzdCBmb2N1cyBvbiBgS1ZNYCBpdHNlbGYuCgpOb3csIGxldCYjMzk7cyBvdXRsaW5lIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbnZvbHZlZC4gSSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlc2U6CgoqICAgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYWAKKiAgIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhYAoqICAgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YWAKKiAgIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYAoKQWN0dWFsbHksIHdhaXQgYSBtaW51dGUsIHRoZSBga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzYCBmdW5jdGlvbiBpcyBjcml0aWNhbC4gSXQmIzM5O3MgdGhlIG9uZSB0aGF0IGhhbmRsZXMgdGhlIGluY29taW5nIHJlcXVlc3RzIGFuZCBvcmNoZXN0cmF0ZXMgY2FsbHMgdG8gdGhlc2Ugb3RoZXIgZnVuY3Rpb25zLiBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgaXQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB0aGUgc2VxdWVuY2UuCgpPa2F5LCB0aGF0IHNlZW1zIGxpa2UgYSBnb29kIHNldC4gTm93IEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9oZmVuY2VfcHJvY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zIGJ5IGFkZGluZyBvdmVyZmxvdyBjaGVja3MgYW5kIG1vZGlmeWluZyBsb29wIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGhhbmRsaW5nIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmEmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgaXNzdWVzIGluIFJJU0MtViBLVk0gVExCIGZsdXNoIGZ1bmN0aW9ucyBieSBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGFuZCBtb2RpZnlpbmcgbG9vcCBjb25kaXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIGZvciBSSVNDLVYgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBvdmVyZmxvdyBoYW5kbGluZyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjMyLjQ5OTMxOTc5MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NDg1OTc4NjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhXCIsXG4gICAgXCJrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zIGJ5IGFkZGluZyBvdmVyZmxvdyBjaGVja3MgYW5kIG1vZGlmeWluZyBsb29wIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGhhbmRsaW5nIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjMyLjQ5OTMyNTQ5MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk4NjU1ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgN2Q3YTJkZGM0MmQ3Mjk4YTIwMjk4MWVjMmY3ZmQ5NDBiODg3MGVkY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxOCAwNToxMjozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS90bGIuYyBiL2FyY2gvcmlzY3Yva3ZtL3RsYi5jXFxuaW5kZXggOTkzYjI1ZWE5NGQ2NzQuLmIwYzgzZTNjY2MxNWE4IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcXG5AQCAtOCw2ICs4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb3ZlcmZsb3cuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NtcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX2hvc3QuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcXHUwMDNlXFxuQEAgLTI0LDcgKzI1LDEyIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhKHVuc2lnbmVkIGxvbmcgdm1pZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICBncGFfdCBncGEsIGdwYV90IGdwc3osXFxuIFxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBvcmRlcilcXG4ge1xcbi1cXHRncGFfdCBwb3M7XFxuK1xcdGdwYV90IGVuZCwgcG9zLCBzdGVwID0gQklUKG9yZGVyKTtcXG4rXFxuK1xcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3BhLCBncHN6LCBcXHUwMDI2ZW5kKSkge1xcbitcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKFBUUlNfUEVSX1BURSBcXHUwMDNjIChncHN6IFxcdTAwM2VcXHUwMDNlIG9yZGVyKSkge1xcbiBcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7XFxuQEAgLTMzLDE0ICszOSwyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYSh1bnNpZ25lZCBsb25nIHZtaWQsXFxuIFxcbiBcXHRpZiAoaGFzX3N2aW52YWwoKSkge1xcbiBcXHRcXHRhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6IFxcXCJtZW1vcnlcXFwiKTtcXG4tXFx0XFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXFxuK1xcdFxcdGZvciAocG9zID0gZ3BhOyBwb3MgXFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XFxuIFxcdFxcdFxcdGFzbSB2b2xhdGlsZSAoSElOVkFMX0dWTUEoJTAsICUxKVxcbiBcXHRcXHRcXHQ6IDogXFxcInJcXFwiIChwb3MgXFx1MDAzZVxcdTAwM2UgMiksIFxcXCJyXFxcIiAodm1pZCkgOiBcXFwibWVtb3J5XFxcIik7XFxuK1xcdFxcdFxcdGlmIChlbmQgLSBwb3MgXFx1MDAzYz0gc3RlcClcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0XFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfSU5WQUxfSVIoKSA6OjogXFxcIm1lbW9yeVxcXCIpO1xcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHRmb3IgKHBvcyA9IGdwYTsgcG9zIFxcdTAwM2MgKGdwYSArIGdwc3opOyBwb3MgKz0gQklUKG9yZGVyKSlcXG4rXFx0XFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcXG4gXFx0XFx0XFx0YXNtIHZvbGF0aWxlIChIRkVOQ0VfR1ZNQSglMCwgJTEpXFxuIFxcdFxcdFxcdDogOiBcXFwiclxcXCIgKHBvcyBcXHUwMDNlXFx1MDAzZSAyKSwgXFxcInJcXFwiICh2bWlkKSA6IFxcXCJtZW1vcnlcXFwiKTtcXG4rXFx0XFx0XFx0aWYgKGVuZCAtIHBvcyBcXHUwMDNjPSBzdGVwKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTUyLDcgKzY0LDEyIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZClcXG4gdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhKGdwYV90IGdwYSwgZ3BhX3QgZ3BzeixcXG4gXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIG9yZGVyKVxcbiB7XFxuLVxcdGdwYV90IHBvcztcXG4rXFx0Z3BhX3QgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xcbitcXG4rXFx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhncGEsIGdwc3osIFxcdTAwMjZlbmQpKSB7XFxuK1xcdFxcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9hbGwoKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoUFRSU19QRVJfUFRFIFxcdTAwM2MgKGdwc3ogXFx1MDAzZVxcdTAwM2Ugb3JkZXIpKSB7XFxuIFxcdFxcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9hbGwoKTtcXG5AQCAtNjEsMTQgKzc4LDIwIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYShncGFfdCBncGEsIGdwYV90IGdwc3osXFxuIFxcbiBcXHRpZiAoaGFzX3N2aW52YWwoKSkge1xcbiBcXHRcXHRhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6IFxcXCJtZW1vcnlcXFwiKTtcXG4tXFx0XFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXFxuK1xcdFxcdGZvciAocG9zID0gZ3BhOyBwb3MgXFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XFxuIFxcdFxcdFxcdGFzbSB2b2xhdGlsZShISU5WQUxfR1ZNQSglMCwgemVybylcXG4gXFx0XFx0XFx0OiA6IFxcXCJyXFxcIiAocG9zIFxcdTAwM2VcXHUwMDNlIDIpIDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXHRcXHRcXHRpZiAoZW5kIC0gcG9zIFxcdTAwM2M9IHN0ZXApXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuIFxcdFxcdGFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6IFxcXCJtZW1vcnlcXFwiKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXFxuK1xcdFxcdGZvciAocG9zID0gZ3BhOyBwb3MgXFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XFxuIFxcdFxcdFxcdGFzbSB2b2xhdGlsZShIRkVOQ0VfR1ZNQSglMCwgemVybylcXG4gXFx0XFx0XFx0OiA6IFxcXCJyXFxcIiAocG9zIFxcdTAwM2VcXHUwMDNlIDIpIDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXHRcXHRcXHRpZiAoZW5kIC0gcG9zIFxcdTAwM2M9IHN0ZXApXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtODMsNyArMTA2LDEzIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhKHVuc2lnbmVkIGxvbmcgdm1pZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGd2c3osXFxuIFxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBvcmRlcilcXG4ge1xcbi1cXHR1bnNpZ25lZCBsb25nIHBvcywgaGdhdHA7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xcbitcXHR1bnNpZ25lZCBsb25nIGhnYXRwO1xcbitcXG4rXFx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhndmEsIGd2c3osIFxcdTAwMjZlbmQpKSB7XFxuK1xcdFxcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2FsbCh2bWlkLCBhc2lkKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoUFRSU19QRVJfUFRFIFxcdTAwM2MgKGd2c3ogXFx1MDAzZVxcdTAwM2Ugb3JkZXIpKSB7XFxuIFxcdFxcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2FsbCh2bWlkLCBhc2lkKTtcXG5AQCAtOTQsMTQgKzEyMywyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXFxuIFxcbiBcXHRpZiAoaGFzX3N2aW52YWwoKSkge1xcbiBcXHRcXHRhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6IFxcXCJtZW1vcnlcXFwiKTtcXG4tXFx0XFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcXHUwMDNjIChndmEgKyBndnN6KTsgcG9zICs9IEJJVChvcmRlcikpXFxuK1xcdFxcdGZvciAocG9zID0gZ3ZhOyBwb3MgXFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XFxuIFxcdFxcdFxcdGFzbSB2b2xhdGlsZShISU5WQUxfVlZNQSglMCwgJTEpXFxuIFxcdFxcdFxcdDogOiBcXFwiclxcXCIgKHBvcyksIFxcXCJyXFxcIiAoYXNpZCkgOiBcXFwibWVtb3J5XFxcIik7XFxuK1xcdFxcdFxcdGlmIChlbmQgLSBwb3MgXFx1MDAzYz0gc3RlcClcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0XFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfSU5WQUxfSVIoKSA6OjogXFxcIm1lbW9yeVxcXCIpO1xcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHRmb3IgKHBvcyA9IGd2YTsgcG9zIFxcdTAwM2MgKGd2YSArIGd2c3opOyBwb3MgKz0gQklUKG9yZGVyKSlcXG4rXFx0XFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcXG4gXFx0XFx0XFx0YXNtIHZvbGF0aWxlKEhGRU5DRV9WVk1BKCUwLCAlMSlcXG4gXFx0XFx0XFx0OiA6IFxcXCJyXFxcIiAocG9zKSwgXFxcInJcXFwiIChhc2lkKSA6IFxcXCJtZW1vcnlcXFwiKTtcXG4rXFx0XFx0XFx0aWYgKGVuZCAtIHBvcyBcXHUwMDNjPSBzdGVwKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hHQVRQLCBoZ2F0cCk7XFxuQEAgLTEyMyw3ICsxNTgsMTMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhKHVuc2lnbmVkIGxvbmcgdm1pZCxcXG4gXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIGd2YSwgdW5zaWduZWQgbG9uZyBndnN6LFxcbiBcXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgb3JkZXIpXFxuIHtcXG4tXFx0dW5zaWduZWQgbG9uZyBwb3MsIGhnYXRwO1xcbitcXHR1bnNpZ25lZCBsb25nIGVuZCwgcG9zLCBzdGVwID0gQklUKG9yZGVyKTtcXG4rXFx0dW5zaWduZWQgbG9uZyBoZ2F0cDtcXG4rXFxuK1xcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3ZhLCBndnN6LCBcXHUwMDI2ZW5kKSkge1xcbitcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChQVFJTX1BFUl9QVEUgXFx1MDAzYyAoZ3ZzeiBcXHUwMDNlXFx1MDAzZSBvcmRlcikpIHtcXG4gXFx0XFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FsbCh2bWlkKTtcXG5AQCAtMTM0LDE0ICsxNzUsMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhKHVuc2lnbmVkIGxvbmcgdm1pZCxcXG4gXFxuIFxcdGlmIChoYXNfc3ZpbnZhbCgpKSB7XFxuIFxcdFxcdGFzbSB2b2xhdGlsZSAoU0ZFTkNFX1dfSU5WQUwoKSA6OjogXFxcIm1lbW9yeVxcXCIpO1xcbi1cXHRcXHRmb3IgKHBvcyA9IGd2YTsgcG9zIFxcdTAwM2MgKGd2YSArIGd2c3opOyBwb3MgKz0gQklUKG9yZGVyKSlcXG4rXFx0XFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcXG4gXFx0XFx0XFx0YXNtIHZvbGF0aWxlKEhJTlZBTF9WVk1BKCUwLCB6ZXJvKVxcbiBcXHRcXHRcXHQ6IDogXFxcInJcXFwiIChwb3MpIDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXHRcXHRcXHRpZiAoZW5kIC0gcG9zIFxcdTAwM2M9IHN0ZXApXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuIFxcdFxcdGFzbSB2b2xhdGlsZSAoU0ZFTkNFX0lOVkFMX0lSKCkgOjo6IFxcXCJtZW1vcnlcXFwiKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0Zm9yIChwb3MgPSBndmE7IHBvcyBcXHUwMDNjIChndmEgKyBndnN6KTsgcG9zICs9IEJJVChvcmRlcikpXFxuK1xcdFxcdGZvciAocG9zID0gZ3ZhOyBwb3MgXFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XFxuIFxcdFxcdFxcdGFzbSB2b2xhdGlsZShIRkVOQ0VfVlZNQSglMCwgemVybylcXG4gXFx0XFx0XFx0OiA6IFxcXCJyXFxcIiAocG9zKSA6IFxcXCJtZW1vcnlcXFwiKTtcXG4rXFx0XFx0XFx0aWYgKGVuZCAtIHBvcyBcXHUwMDNjPSBzdGVwKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRjc3Jfd3JpdGUoQ1NSX0hHQVRQLCBoZ2F0cCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjMyLjg5ODY2OTA2MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwODY2MTczMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmFcIixcbiAgICBcImt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmFcIixcbiAgICBcImt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiBSSVNDLVYgS1ZNIFRMQiBmbHVzaCBmdW5jdGlvbnMgYnkgYWRkaW5nIG92ZXJmbG93IGNoZWNrcyBhbmQgbW9kaWZ5aW5nIGxvb3AgY29uZGl0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgb3ZlcmZsb3cgaGFuZGxpbmcgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZDdhMmRkYzQyZDcyOThhMjAyOTgxZWMyZjdmZDk0MGI4ODcwZWRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTggMDU6MTI6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS90bGIuYyBiL2FyY2gvcmlzY3Yva3ZtL3RsYi5jXG5pbmRleCA5OTNiMjVlYTk0ZDY3NC4uYjBjODNlM2NjYzE1YTggMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbkBAIC04LDYgKzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb3ZlcmZsb3cuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NtcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcdTAwM2VcbkBAIC0yNCw3ICsyNSwxMiBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYSh1bnNpZ25lZCBsb25nIHZtaWQsXG4gXHRcdFx0XHRcdCAgZ3BhX3QgZ3BhLCBncGFfdCBncHN6LFxuIFx0XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgb3JkZXIpXG4ge1xuLVx0Z3BhX3QgcG9zO1xuK1x0Z3BhX3QgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xuK1xuK1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhncGEsIGdwc3osIFx1MDAyNmVuZCkpIHtcbitcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXG4gXHRpZiAoUFRSU19QRVJfUFRFIFx1MDAzYyAoZ3BzeiBcdTAwM2VcdTAwM2Ugb3JkZXIpKSB7XG4gXHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTtcbkBAIC0zMywxNCArMzksMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEodW5zaWduZWQgbG9uZyB2bWlkLFxuIFxuIFx0aWYgKGhhc19zdmludmFsKCkpIHtcbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfV19JTlZBTCgpIDo6OiBcIm1lbW9yeVwiKTtcbi1cdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgKGdwYSArIGdwc3opOyBwb3MgKz0gQklUKG9yZGVyKSlcbitcdFx0Zm9yIChwb3MgPSBncGE7IHBvcyBcdTAwM2MgZW5kOyBwb3MgKz0gc3RlcCkge1xuIFx0XHRcdGFzbSB2b2xhdGlsZSAoSElOVkFMX0dWTUEoJTAsICUxKVxuIFx0XHRcdDogOiBcInJcIiAocG9zIFx1MDAzZVx1MDAzZSAyKSwgXCJyXCIgKHZtaWQpIDogXCJtZW1vcnlcIik7XG4rXHRcdFx0aWYgKGVuZCAtIHBvcyBcdTAwM2M9IHN0ZXApXG4rXHRcdFx0XHRicmVhaztcbitcdFx0fVxuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiBcIm1lbW9yeVwiKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXG4rXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUgKEhGRU5DRV9HVk1BKCUwLCAlMSlcbiBcdFx0XHQ6IDogXCJyXCIgKHBvcyBcdTAwM2VcdTAwM2UgMiksIFwiclwiICh2bWlkKSA6IFwibWVtb3J5XCIpO1xuK1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtNTIsNyArNjQsMTIgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodW5zaWduZWQgbG9uZyB2bWlkKVxuIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYShncGFfdCBncGEsIGdwYV90IGdwc3osXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgb3JkZXIpXG4ge1xuLVx0Z3BhX3QgcG9zO1xuK1x0Z3BhX3QgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xuK1xuK1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhncGEsIGdwc3osIFx1MDAyNmVuZCkpIHtcbitcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2FsbCgpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXG4gXHRpZiAoUFRSU19QRVJfUFRFIFx1MDAzYyAoZ3BzeiBcdTAwM2VcdTAwM2Ugb3JkZXIpKSB7XG4gXHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9hbGwoKTtcbkBAIC02MSwxNCArNzgsMjAgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhKGdwYV90IGdwYSwgZ3BhX3QgZ3BzeixcbiBcbiBcdGlmIChoYXNfc3ZpbnZhbCgpKSB7XG4gXHRcdGFzbSB2b2xhdGlsZSAoU0ZFTkNFX1dfSU5WQUwoKSA6OjogXCJtZW1vcnlcIik7XG4tXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXG4rXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUoSElOVkFMX0dWTUEoJTAsIHplcm8pXG4gXHRcdFx0OiA6IFwiclwiIChwb3MgXHUwMDNlXHUwMDNlIDIpIDogXCJtZW1vcnlcIik7XG4rXHRcdFx0aWYgKGVuZCAtIHBvcyBcdTAwM2M9IHN0ZXApXG4rXHRcdFx0XHRicmVhaztcbitcdFx0fVxuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9JTlZBTF9JUigpIDo6OiBcIm1lbW9yeVwiKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIChncGEgKyBncHN6KTsgcG9zICs9IEJJVChvcmRlcikpXG4rXHRcdGZvciAocG9zID0gZ3BhOyBwb3MgXHUwMDNjIGVuZDsgcG9zICs9IHN0ZXApIHtcbiBcdFx0XHRhc20gdm9sYXRpbGUoSEZFTkNFX0dWTUEoJTAsIHplcm8pXG4gXHRcdFx0OiA6IFwiclwiIChwb3MgXHUwMDNlXHUwMDNlIDIpIDogXCJtZW1vcnlcIik7XG4rXHRcdFx0aWYgKGVuZCAtIHBvcyBcdTAwM2M9IHN0ZXApXG4rXHRcdFx0XHRicmVhaztcbitcdFx0fVxuIFx0fVxuIH1cbiBcbkBAIC04Myw3ICsxMDYsMTMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmEodW5zaWduZWQgbG9uZyB2bWlkLFxuIFx0XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgZ3ZzeixcbiBcdFx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIG9yZGVyKVxuIHtcbi1cdHVuc2lnbmVkIGxvbmcgcG9zLCBoZ2F0cDtcbitcdHVuc2lnbmVkIGxvbmcgZW5kLCBwb3MsIHN0ZXAgPSBCSVQob3JkZXIpO1xuK1x0dW5zaWduZWQgbG9uZyBoZ2F0cDtcbitcbitcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coZ3ZhLCBndnN6LCBcdTAwMjZlbmQpKSB7XG4rXHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2FsbCh2bWlkLCBhc2lkKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFxuIFx0aWYgKFBUUlNfUEVSX1BURSBcdTAwM2MgKGd2c3ogXHUwMDNlXHUwMDNlIG9yZGVyKSkge1xuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9hbGwodm1pZCwgYXNpZCk7XG5AQCAtOTQsMTQgKzEyMywyMCBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXG4gXG4gXHRpZiAoaGFzX3N2aW52YWwoKSkge1xuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6IFwibWVtb3J5XCIpO1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICsgZ3Zzeik7IHBvcyArPSBCSVQob3JkZXIpKVxuK1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XG4gXHRcdFx0YXNtIHZvbGF0aWxlKEhJTlZBTF9WVk1BKCUwLCAlMSlcbiBcdFx0XHQ6IDogXCJyXCIgKHBvcyksIFwiclwiIChhc2lkKSA6IFwibWVtb3J5XCIpO1xuK1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfSU5WQUxfSVIoKSA6OjogXCJtZW1vcnlcIik7XG4gXHR9IGVsc2Uge1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICsgZ3Zzeik7IHBvcyArPSBCSVQob3JkZXIpKVxuK1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XG4gXHRcdFx0YXNtIHZvbGF0aWxlKEhGRU5DRV9WVk1BKCUwLCAlMSlcbiBcdFx0XHQ6IDogXCJyXCIgKHBvcyksIFwiclwiIChhc2lkKSA6IFwibWVtb3J5XCIpO1xuK1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdGNzcl93cml0ZShDU1JfSEdBVFAsIGhnYXRwKTtcbkBAIC0xMjMsNyArMTU4LDEzIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgZ3ZhLCB1bnNpZ25lZCBsb25nIGd2c3osXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgb3JkZXIpXG4ge1xuLVx0dW5zaWduZWQgbG9uZyBwb3MsIGhnYXRwO1xuK1x0dW5zaWduZWQgbG9uZyBlbmQsIHBvcywgc3RlcCA9IEJJVChvcmRlcik7XG4rXHR1bnNpZ25lZCBsb25nIGhnYXRwO1xuK1xuK1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhndmEsIGd2c3osIFx1MDAyNmVuZCkpIHtcbitcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FsbCh2bWlkKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFxuIFx0aWYgKFBUUlNfUEVSX1BURSBcdTAwM2MgKGd2c3ogXHUwMDNlXHUwMDNlIG9yZGVyKSkge1xuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpO1xuQEAgLTEzNCwxNCArMTc1LDIwIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YSh1bnNpZ25lZCBsb25nIHZtaWQsXG4gXG4gXHRpZiAoaGFzX3N2aW52YWwoKSkge1xuIFx0XHRhc20gdm9sYXRpbGUgKFNGRU5DRV9XX0lOVkFMKCkgOjo6IFwibWVtb3J5XCIpO1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICsgZ3Zzeik7IHBvcyArPSBCSVQob3JkZXIpKVxuK1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XG4gXHRcdFx0YXNtIHZvbGF0aWxlKEhJTlZBTF9WVk1BKCUwLCB6ZXJvKVxuIFx0XHRcdDogOiBcInJcIiAocG9zKSA6IFwibWVtb3J5XCIpO1xuK1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdFx0YXNtIHZvbGF0aWxlIChTRkVOQ0VfSU5WQUxfSVIoKSA6OjogXCJtZW1vcnlcIik7XG4gXHR9IGVsc2Uge1xuLVx0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyAoZ3ZhICsgZ3Zzeik7IHBvcyArPSBCSVQob3JkZXIpKVxuK1x0XHRmb3IgKHBvcyA9IGd2YTsgcG9zIFx1MDAzYyBlbmQ7IHBvcyArPSBzdGVwKSB7XG4gXHRcdFx0YXNtIHZvbGF0aWxlKEhGRU5DRV9WVk1BKCUwLCB6ZXJvKVxuIFx0XHRcdDogOiBcInJcIiAocG9zKSA6IFwibWVtb3J5XCIpO1xuK1x0XHRcdGlmIChlbmQgLSBwb3MgXHUwMDNjPSBzdGVwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdGNzcl93cml0ZShDU1JfSEdBVFAsIGhnYXRwKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjMyLjg5ODY3MDYyMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwOTc2NDk1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUklTQy1WIEtWTSBUTEIgRmx1c2ggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtb2RpZnlpbmcgYGFyY2gvcmlzY3Yva3ZtL3RsYi5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5J3JlIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgdG8gYSBmZXcga2V5IGZ1bmN0aW9uczogYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYWAsIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkX2d2YWAsIGFuZCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YWAuIFNtYXJ0IG1vdmUuIFRoZXkncmUgYWxzbyBhZGp1c3RpbmcgdGhlIGxvb3AgY29uZGl0aW9uIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHMgaWYgYHBvcyArIHN0ZXBgIG92ZXJmbG93cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4LCBhZGRyZXNzaW5nIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGJ1Z3MgZHVyaW5nIFRMQiBmbHVzaGluZyBmb3IgZ3Vlc3QgcGh5c2ljYWwgYW5kIHZpcnR1YWwgYWRkcmVzc2VzLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gdGhpcyBiZSBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gS1ZNICpzaG91bGQqIGJlIGhlYXZpbHkgdGVzdGVkIHRoZXJlLCBidXQgdGhpcyBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgKFJJU0MtVikuIFRoZSBwcm9tcHQgbWVudGlvbmVkIHNwZWNpZmljIGVudmlyb25tZW50cyB0aGF0IGFyZSB1bnJlYWNoYWJsZS4gV2FpdCwgUUVNVSBpcyBsaXN0ZWQuIEJ1dCwgUUVNVSBzdXBwb3J0cyBSSVNDLVYgS1ZNISBJdCBkZXBlbmRzIG9uIHRoZSBob3N0LCBvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIEFuZCwgc3l6a2FsbGVyIGZ1enplcyBSSVNDLVYgS1ZNLCByaWdodD8gT2theSwgb25seSBpZiBpdCdzIGNvbXBpbGVkIGZvciBSSVNDLVYuIE9oLCB0aGUgcHJvbXB0ICpzcGVjaWZpY2FsbHkqIG1lbnRpb25lZCB0aGF0IHRoZSBwYXRocyBzaG91bGQgYmUgdW5yZWFjaGFibGUsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9ucyBJIG1lbnRpb25lZCBwcmV2aW91c2x5IHdvdWxkIGJlIHVucmVhY2hhYmxlLiBCdXQgUUVNVSAqY2FuKiBlbXVsYXRlIFJJU0MtViB3aXRoIHRoZSBoeXBlcnZpc29yIGV4dGVuc2lvbi4gQnV0LCBjYW4gS1ZNIHJ1biBpbnNpZGUgaXQ/IE5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gU28uLi4geWVzLCBpdCAqaXMqIHJlYWNoYWJsZS5cblxuTm93LCBsZXQncyBmaW5kIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIEl0J3MgbGlrZWx5IGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYCB3aWxsIGNvbnRhaW4gYENPTkZJR19LVk1gLCBidXQgSSdsbCBkb3VibGUtY2hlY2sgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg3OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjM5Ljk5NjMyMTc3N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQ1NjE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMjo0MC4wNTM3ODQxMTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ2OTA5MzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0ncyBSSVNDLVYgVExCIEZsdXNoIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIGFuZCBzcGVjaWZpY2FsbHkgYXQgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIHRoZXNlIGZvdXIgZnVuY3Rpb25zOiBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhYCwgYW5kIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgYXJlIGNyaXRpY2FsIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhleSBjbGVhcmx5IGRlYWwgd2l0aCBUTEIgZmx1c2hpbmcsIGFuZCB0aG9zZSBjYW4gYmUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIFRMQiBmbHVzaGVzICphcmUqIGZyZXF1ZW50LCBidXQgbWlnaHQgbm90IG5lY2Vzc2FyaWx5IGJlIGludm9rZWQgd2l0aCBldmVyeSBzaW5nbGUgcGFja2V0IG9yIHN5c2NhbGwuXG5cbk5vdyBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgaGllcmFyY2h5IGFuZCBzZWUgd2hlcmUgdGhleSdyZSBiZWluZyB0cmlnZ2VyZWQgZnJvbSB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGVpciBpbXBhY3QuIERldGVybWluaW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODUyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEyOjQzLjgwMDY5NTczOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkwMzgwMDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz0xMTE9c3RhdGljIHZvaWQgZ3N0YWdlX3RsYl9mbHVzaChzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLCB1MzIgbGV2ZWwsIGdwYV90IGFkZHIpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0xMTktXFx0aWYgKGdzdGFnZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLVk1fR1NUQUdFX0ZMQUdTX0xPQ0FMKVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjEyMDpcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEoZ3N0YWdlLVxcdTAwM2V2bWlkLCBhZGRyLCBCSVQob3JkZXIpLCBvcmRlcik7XFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMTIxLVxcdGVsc2VcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTIzLVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jOjI0OnZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhKHVuc2lnbmVkIGxvbmcgdm1pZCxcXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0yNS1cXHRcXHRcXHRcXHRcXHQgIGdwYV90IGdwYSwgZ3BhX3QgZ3BzeixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jPTMxNT12b2lkIGt2bV9yaXNjdl9oZmVuY2VfcHJvY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zMjctXFx0XFx0XFx0ZWxzZVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jOjMyODpcXHRcXHRcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGEoZC52bWlkLCBkLmFkZHIsXFxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMzI5LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZC5zaXplLCBkLm9yZGVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTI6NDQuMDM5NzM5NTIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyMjc2NzA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIFJJU0MtViBLVk06XG5cbioqQW5hbHl6aW5nIFJJU0MtViBUTEIvSC1GZW5jZSBJbnRlcmFjdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIHNlZWluZyBjYWxscyBmcm9tIGBrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3NgIGFuZCBgZ3N0YWdlX3RsYl9mbHVzaGAuIFRoYXQgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIGh5cGVydmlzb3ItbWFuYWdlZCB0cmFuc2xhdGlvbiBsb29rYXNpZGUgYnVmZmVyIChUTEIpIGZsdXNoZXMgYW5kIGhhcmR3YXJlIGZlbmNlIG9wZXJhdGlvbnMsIGxpa2VseSByZWxhdGVkIHRvIHZpcnR1YWwtdG8tcGh5c2ljYWwgYWRkcmVzcyB0cmFuc2xhdGlvbi4gR2l2ZW4gdGhhdCwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGxvb2tzIHByb21pc2luZzsgdGhlIFwibG9jYWxcIiBwYXJ0IGxpa2VseSBwb2ludHMgdG93YXJkcyBhbiBvcGVyYXRpb24gdGhhdCdzIHNwZWNpZmljIHRvIHRoZSBjdXJyZW50IHZpcnR1YWwgbWFjaGluZSAoVk0pIGNvbnRleHQsIHRoZSBcImhmZW5jZVwiIGNsZWFybHkgaW5kaWNhdGVzIGEgaHlwZXJ2aXNvciBmZW5jZSBvcGVyYXRpb24sIFwidnZtYVwiIGltcGxpZXMgYSBWaXJ0dWFsIFZpZXcgTWVtb3J5IEFkZHJlc3MsIGFuZCBcImd2YVwiIHN1Z2dlc3RzIGEgR3Vlc3QgVmlydHVhbCBBZGRyZXNzLiBUaGlzIHN0cm9uZ2x5IGltcGxpZXMgd2UncmUgZGVhbGluZyB3aXRoIGFuIG9wZXJhdGlvbiB0aGF0IHRha2VzIGEgR1ZBIChmcm9tIHRoZSBndWVzdCkgYW5kIGFwcGxpZXMgYSBoeXBlcnZpc29yLWNvbnRyb2xsZWQgZmVuY2Ugb3IgaW52YWxpZGF0aW9uIHJlbGF0ZWQgdG8gdGhhdCBHVkEgaW4gdGhlIGxvY2FsIGNvbnRleHQgb2YgdGhlIFZNLiBUaGlzIGlzIHByb2JhYmx5IGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uIGludG8gZXhhY3RseSBob3cgdGhlIGh5cGVydmlzb3IgaXMgaGFuZGxpbmcgdGhlc2UgdHJhbnNsYXRpb24gaXNzdWVzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgY2FsbCwgYW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIGl0IHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njg1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTI6NDcuNDYyNTA4NDY0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDQ3NDYyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS90bGIuYz0xNDU9dm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9hbGwodW5zaWduZWQgbG9uZyB2bWlkLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMTU2LVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jOjE1Nzp2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmEodW5zaWduZWQgbG9uZyB2bWlkLFxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTE1OC1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgZ3ZhLCB1bnNpZ25lZCBsb25nIGd2c3osXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS90bGIuYz0zMTU9dm9pZCBrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMzU4LVxcdFxcdFxcdGVsc2VcXG5hcmNoL3Jpc2N2L2t2bS90bGIuYzozNTk6XFx0XFx0XFx0XFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2d2YShkLnZtaWQsIGQuYWRkcixcXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zNjAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZC5zaXplLCBkLm9yZGVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTI6NDcuNTkyOTg3MDgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0NjEwNDQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IGhlcmUuXG5cbioqQW5hbHl6aW5nIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZXMgaW4gdGhlIEtWTS9SSVNDLVYgSHlwZXJ2aXNvcioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMgd2l0aGluIHRoZSBLVk0vUklTQy1WIGh5cGVydmlzb3IsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgZnVuY3Rpb25zIGluIHF1ZXN0aW9uIGFyZSBlaXRoZXIgZXhwb3J0ZWQgZm9yIGV4dGVybmFsIHVzZSBvciBhcmUgdXNlZCBpbnRlcm5hbGx5LiBUaGlzIG5hcnJvd3MgZG93biBteSBzY29wZSwgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc2AsIG9yIHBlcmhhcHMgdGhlIGZ1bmN0aW9ucyBpdCB1c2VzIGRpcmVjdGx5LiBJIHRoaW5rIEknbGwgc3RhcnQgd2l0aCBga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzYCBhbmQgc2VlIGlmIHRoYXQgcHJvdmVzIHRvIGJlIGEgbW9yZSBwcm9taXNpbmcgcGF0aC4gSXQgb2Z0ZW4gbWFrZXMgc2Vuc2UgdG8gc3RhcnQgd2l0aCB0aGUgdG9wLWxldmVsIGZ1bmN0aW9uIGhhbmRsaW5nIGEgZ2l2ZW4gb3BlcmF0aW9uIHRvIHNlZSB3aGF0IGl0J3MgZG9pbmcgYmVmb3JlIGRlbHZpbmcgaW50byB0aGUgbml0dHkgZ3JpdHR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzYwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTI6NTAuNTM5MDkzNjYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIyNTkwMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS90bGIuYz0yOTE9c3RhdGljIGJvb2wgdmNwdV9oZmVuY2VfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zMTQtXFxuYXJjaC9yaXNjdi9rdm0vdGxiLmM6MzE1OnZvaWQga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0zMTYte1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTY2ND1zdGF0aWMgaW50IGt2bV9yaXNjdl9jaGVja192Y3B1X3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy03MDAtXFx0XFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfSEZFTkNFLCB2Y3B1KSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6NzAxOlxcdFxcdFxcdGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzcyh2Y3B1KTtcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzAyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMjo1MC43NDEzNTg0NThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3OTIxNzIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGhmZW5jZSBQcm9jZXNzaW5nIGluIEtWTS9SSVNDLVYqKlxuXG5Pa2F5LCBzbyBga3ZtX3Jpc2N2X2hmZW5jZV9wcm9jZXNzYCBpcyB0cmlnZ2VyZWQgYnkgYGt2bV9yaXNjdl9jaGVja192Y3B1X3JlcXVlc3RzYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgYWN0dWFsbHkgaGFuZGxlcyB0aGUgaGZlbmNlIHJlcXVlc3RzLiBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhYCwgYW5kIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYCBzZWVtIGxpa2UgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBkbyB0aGUgaGVhdnkgbGlmdGluZyBmb3IgdGhlIGxvY2FsIGhmZW5jZSBvcGVyYXRpb25zLlxuXG5NeSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byB2ZXJpZnkgd2hldGhlciB0aGVzZSBhcmUgcHJvcGVybHkgZXhwb3J0ZWQuIFRoZXkncmUgdGhlIGNyaXRpY2FsIHBpZWNlcywgc28gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkncmUgZXhwb3NlZCBhbmQgYWNjZXNzaWJsZSBjb3JyZWN0bHkuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBob3cgdGhlIHByb2Nlc3NpbmcgaXMgaGFuZGxlZCBhdCB0aGUgY29yZSBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkwNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMjo1NC4xMjA1Nzc3MzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDgyMzIxNzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmt2bV9yaXNjdl9sb2NhbF9oZmVuY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMjo1NS40Mjg4MTkyMjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0NjY0NzE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUklTQy1WIEtWTSBUTEIgRmx1c2ggUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGVzZSB2YXJpYWJsZXMgYXJlbid0IGV4cGxpY2l0bHkgZXhwb3J0ZWQsIGJ1dCB0aGV5J3JlIGdsb2JhbGx5IGFjY2Vzc2libGUgd2l0aGluIHRoZSBLVk0gbW9kdWxlLCB3aGljaCBpcyB3aGF0IG1hdHRlcnMuIFdhaXQsIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9ncGFgIGlzIGRlY2xhcmVkIGluIGBhcmNoL3Jpc2N2L2t2bS90bGIuY2AgYW5kIGlzIGFjdHVhbGx5IHVzZWQgaW4gYGFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jYCBhbmQgYGFyY2gvcmlzY3Yva3ZtL3RsYi5jYCEgU28sIHdlIGNhbiBkZWZpbml0ZWx5IGFjY2VzcyBpdCBhbmQgdGhlc2UgcmVsYXRlZCBmdW5jdGlvbnMuXG5cbk5vdywgSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgYXJjaC9yaXNjdi9rdm0vdGxiLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guIE9rYXksIGl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIG1vZGlmaWVzOiBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYCwgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV9ncGFgLCBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhYCwgYW5kIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhYC4gVGhlc2UgYXJlIHRoZSBvbmVzIEkgc2hvdWxkIGZvY3VzIG9uIGZvciBmdXp6aW5nLlxuXG5NeSByZWFzb25pbmc/IFRoaXMgcGF0Y2ggaXMgZml4aW5nIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiB0aGUgUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zLiBJdCdzIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgYW5kIG1vZGlmeWluZyBsb29wIGNvbmRpdGlvbnMuIEl0J3MgYSBmdW5kYW1lbnRhbCBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIGxvZ2ljIGZvciBSSVNDLVYsIGFuZCBmdXp6aW5nIGlzIGNyaXRpY2FsIHRvIHZlcmlmeSB0aGUgbmV3IG92ZXJmbG93IGhhbmRsaW5nLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCBmdW5jdGlvbnMgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cblxuTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBgS1ZNYCBjb25maWcgaXMgdGhlIG9ubHkgb25lIHRoYXQgbWF0dGVycyBoZXJlLiBZdXAsIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYCBvbmx5IGhhcyB0aGUgYGNvbmZpZyBLVk1gLiBOb3csIGxldCdzIHNlZSBpZiBgS1ZNYCBoYXMgYW55IGRlcGVuZGVuY2llcyB0aGF0IHdvdWxkIGJlIHVzZWZ1bCB0byBlbmFibGUgZHVyaW5nIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMTAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTM6MDAuOTc1NDY4ODFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDM4MDc4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMzowMS4xNzU4NTQ2OTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwODc4MDM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFZpcnR1YWxpemF0aW9uKipcblxuT2theSwgc28gdGhlIGFwcHJvYWNoIGhlcmUgcmVhbGx5IGhpbmdlcyBvbiB0aGUgdHlwZSBvZiBgVklSVFVBTElaQVRJT05gIHdlJ3JlIHRhbGtpbmcgYWJvdXQuIEluIG1vc3QgdHlwaWNhbCBzY2VuYXJpb3MsIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBiYXNpYyBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiwgYEtWTWAgaXMgbGlrZWx5IHN1ZmZpY2llbnQuIEluIGZhY3QsIGBWSVJUVUFMSVpBVElPTmAgbWlnaHQganVzdCBiZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBwZXJoYXBzIHNvbWV0aGluZyBhY2Nlc3NlZCB0aHJvdWdoIGEgYG1lbnVjb25maWdgIG9yIGV2ZW4ganVzdCBhIHN0cmFpZ2h0Zm9yd2FyZCBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBlbmFibGVzIHRoZSBmZWF0dXJlIHNldC4gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCBgVklSVFVBTElaQVRJT05gIGFjdHVhbGx5IHJlZmVycyB0byBpbiB0aGlzIGNvbnRleHQgYmVmb3JlIEkgY2FuIG9mZmVyIGEgbW9yZSBwcmVjaXNlIHNvbHV0aW9uLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0aG9yb3VnaGx5IGludmVzdGlnYXRlIGBWSVJUVUFMSVpBVElPTmAgaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjEyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTM6MDMuOTg0NjM3NjQxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTE1MTUwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklSVFVBTElaQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTY9c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctNy1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjg6bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctOS1cXHRib29sIFxcXCJWaXJ0dWFsaXphdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTM6MDQuMDY5Nzk1ODU5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MzY3NDU0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS1ZNLUZvY3VzZWQgVGhvdWdodCBQcm9jZXNzKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgS1ZNIGNvbmZpZ3VyYXRpb25zLCBieXBhc3NpbmcgdGhlIGJyb2FkZXIgdmlydHVhbGl6YXRpb24gY29udGV4dCBmb3Igbm93LiBGb3IgdGhpcywgSSdsbCBqdXN0IGZvY3VzIG9uIGBLVk1gIGl0c2VsZi5cblxuTm93LCBsZXQncyBvdXRsaW5lIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbnZvbHZlZC4gSSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlc2U6XG5cbiogICBga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhYFxuKiAgIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhYFxuKiAgIGBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmFgXG4qICAgYGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmFgXG5cbkFjdHVhbGx5LCB3YWl0IGEgbWludXRlLCB0aGUgYGt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc2AgZnVuY3Rpb24gaXMgY3JpdGljYWwuIEl0J3MgdGhlIG9uZSB0aGF0IGhhbmRsZXMgdGhlIGluY29taW5nIHJlcXVlc3RzIGFuZCBvcmNoZXN0cmF0ZXMgY2FsbHMgdG8gdGhlc2Ugb3RoZXIgZnVuY3Rpb25zLiBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgaXQuIFRoYXQncyB0aGUga2V5IHRvIHRoZSBzZXF1ZW5jZS5cblxuT2theSwgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBzZXQuIE5vdyBJJ2xsIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUyNCwiT3V0cHV0VG9rZW5zIjoxOTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTM6MDguOTA2NTQzODQ2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg3Mzc5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2dwYVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX2dwYVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FzaWRfZ3ZhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfZ3ZhXCIsXG4gICAgXCJrdm1fcmlzY3ZfaGZlbmNlX3Byb2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gUklTQy1WIEtWTSBUTEIgZmx1c2ggZnVuY3Rpb25zIGJ5IGFkZGluZyBvdmVyZmxvdyBjaGVja3MgYW5kIG1vZGlmeWluZyBsb29wIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGhhbmRsaW5nIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfZ3BhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfZ3BhXCIsXG4gICAgXCJrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYXNpZF9ndmFcIixcbiAgICBcImt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9ndmFcIixcbiAgICBcImt2bV9yaXNjdl9oZmVuY2VfcHJvY2Vzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiBSSVNDLVYgS1ZNIFRMQiBmbHVzaCBmdW5jdGlvbnMgYnkgYWRkaW5nIG92ZXJmbG93IGNoZWNrcyBhbmQgbW9kaWZ5aW5nIGxvb3AgY29uZGl0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgb3ZlcmZsb3cgaGFuZGxpbmcgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowk5bln[1] Phase: Succeeded StartedAt: 2026-07-18 05:13:20 +0000 UTC FinishedAt: 2026-07-18 05:13:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-18 05:13:20 +0000 UTC FinishedAt: 2026-07-18 05:13:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2] Phase: Succeeded StartedAt: 2026-07-18 05:13:20 +0000 UTC FinishedAt: 2026-07-18 06:36:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-18 05:13:20 +0000 UTC FinishedAt: 2026-07-18 06:36:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","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-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-18 05:13:20 +0000 UTC FinishedAt: 2026-07-18 05:13:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-18 05:13:20 +0000 UTC FinishedAt: 2026-07-18 05:13:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","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-workflowk5bln/series-workflowk5bln-convert-artifact-3185164515/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-18 05:13:30 +0000 UTC FinishedAt: 2026-07-18 05:49:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-18 05:13:30 +0000 UTC FinishedAt: 2026-07-18 05:49: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:*98fa8381-fd2b-4fe9-af97-7e3c02519b30,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-workflowk5bln/series-workflowk5bln-convert-artifact-3185164515/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": "dcaa683c-0bb0-4fc5-ba69-2e0fcee5b50c", "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-workflowk5bln/series-workflowk5bln-build-action-2113264721/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-18 05:13:30 +0000 UTC FinishedAt: 2026-07-18 05:49:33 +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:*98fa8381-fd2b-4fe9-af97-7e3c02519b30,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-workflowk5bln/series-workflowk5bln-convert-artifact-3185164515/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": "dcaa683c-0bb0-4fc5-ba69-2e0fcee5b50c", "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-workflowk5bln/series-workflowk5bln-build-action-2113264721/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-18 05:49:43 +0000 UTC FinishedAt: 2026-07-18 05:49:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-18 05:49:43 +0000 UTC FinishedAt: 2026-07-18 05:49:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-18 05:49:43 +0000 UTC FinishedAt: 2026-07-18 05:49:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-18 05:49:43 +0000 UTC FinishedAt: 2026-07-18 05:49:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","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-workflowk5bln/series-workflowk5bln-convert-artifact-450038298/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-18 05:49:53 +0000 UTC FinishedAt: 2026-07-18 05:51:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-18 05:49:53 +0000 UTC FinishedAt: 2026-07-18 05:51:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dcaa683c-0bb0-4fc5-ba69-2e0fcee5b50c,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-workflowk5bln/series-workflowk5bln-build-action-2113264721/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-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-18 05:51:35 +0000 UTC FinishedAt: 2026-07-18 05:51:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-18 05:51:35 +0000 UTC FinishedAt: 2026-07-18 05:51:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-18 05:51:35 +0000 UTC FinishedAt: 2026-07-18 06:32:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-18 05:51:35 +0000 UTC FinishedAt: 2026-07-18 06:32:07 +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:*98fa8381-fd2b-4fe9-af97-7e3c02519b30,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-workflowk5bln/series-workflowk5bln-convert-artifact-450038298/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": "74dc8710-f89a-46d2-813e-43b318141ac0", "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-workflowk5bln/series-workflowk5bln-build-action-828028414/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-18 05:51:35 +0000 UTC FinishedAt: 2026-07-18 06:31:57 +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:*98fa8381-fd2b-4fe9-af97-7e3c02519b30,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-workflowk5bln/series-workflowk5bln-convert-artifact-450038298/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": "74dc8710-f89a-46d2-813e-43b318141ac0", "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-workflowk5bln/series-workflowk5bln-build-action-828028414/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-18 06:32:07 +0000 UTC FinishedAt: 2026-07-18 06:32:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-18 06:32:07 +0000 UTC FinishedAt: 2026-07-18 06:32:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-18 06:32:07 +0000 UTC FinishedAt: 2026-07-18 06:34:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-18 06:32:07 +0000 UTC FinishedAt: 2026-07-18 06:33:56 +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:*74dc8710-f89a-46d2-813e-43b318141ac0,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-workflowk5bln/series-workflowk5bln-build-action-828028414/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-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:36:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:36:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"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:*dcaa683c-0bb0-4fc5-ba69-2e0fcee5b50c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*74dc8710-f89a-46d2-813e-43b318141ac0,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-workflowk5bln/series-workflowk5bln-build-action-2113264721/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-workflowk5bln/series-workflowk5bln-build-action-828028414/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:34:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:34:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"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-workflowk5bln/series-workflowk5bln-convert-artifact-1336521423/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:34:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:34:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:34:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-18 06:34:16 +0000 UTC FinishedAt: 2026-07-18 06:36:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk5bln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_local_hfence_gvma_vmid_gpa","kvm_riscv_local_hfence_gvma_gpa","kvm_riscv_local_hfence_vvma_asid_gva","kvm_riscv_local_hfence_vvma_gva","kvm_riscv_hfence_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"4af848d8-ecfc-4c11-b5a2-bc57568c55d5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-18 06:34:16 +0000 UTC FinishedAt: 2026-07-18 06:36:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dcaa683c-0bb0-4fc5-ba69-2e0fcee5b50c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*74dc8710-f89a-46d2-813e-43b318141ac0,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-workflowk5bln/series-workflowk5bln-build-action-2113264721/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-workflowk5bln/series-workflowk5bln-build-action-828028414/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-workflowk5bln/series-workflowk5bln-convert-artifact-1336521423/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,}