Name: series-workflow7pvj5 Phase: Succeeded StartedAt: 2026-07-31 22:07:44 +0000 UTC FinishedAt: 2026-07-31 23:14:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[0] Phase: Succeeded StartedAt: 2026-07-31 22:07:44 +0000 UTC FinishedAt: 2026-07-31 22:25:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 22:07:44 +0000 UTC FinishedAt: 2026-07-31 22:25:46 +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": [ "VIRTUALIZATION", "KVM", "RISCV_PMU", "RISCV_PMU_SBI" ], "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": [ "VIRTUALIZATION", "KVM", "RISCV_PMU", "RISCV_PMU_SBI" ], "series_id": "6a07ac1b-28dd-446b-be2a-eff22e01e58b" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_vcpu_pmu_event_info" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDssCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtSSVNDVl9QTVUmIzM0OywKICAgICYjMzQ7UklTQ1ZfUE1VX1NCSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgUklTQy1WIEtWTSBQTVUgU0JJIGV4dGVuc2lvbiBoYW5kbGVyIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuIFRoZSB2dWxuZXJhYmlsaXR5IGNvdWxkIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSB3aGVuIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBQTVUgZXZlbnRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgS1ZNIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZWQ0NTkwMmMzZmE4OWE5MTgzMjg5ZmYzMWYyNzRlYTE1NGI3MjUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMjI6MjQ6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbmluZGV4IGJiNDZkY2JmYjI0ZGEuLjhlMWY2YWJiODRlMjAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXG5AQCAtMTIsNyAmIzQzOzEyLDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ub3NwZWMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9vdmVyZmxvdy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyZi9yaXNjdl9wbXUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY3NyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2lzYS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV92Y3B1X3NiaS5oXHUwMDNlXG5AQCAtNDc5LDEzICYjNDM7NDgxLDE0IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93XG4gXHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKVxuIHtcbiBcdHN0cnVjdCByaXNjdl9wbXVfZXZlbnRfaW5mbyAqZWluZm8gPSBOVUxMO1xuLVx0aW50IHNobWVtX3NpemUgPSBudW1fZXZlbnRzICogc2l6ZW9mKCplaW5mbyk7XG4mIzQzO1x0c2l6ZV90IHNobWVtX3NpemU7XG4gXHRncGFfdCBzaG1lbTtcbiBcdHUzMiBlaWR4LCBldHlwZTtcbiBcdHU2NCBlY29uZmlnO1xuIFx0aW50IHJldDtcbiBcbi1cdGlmIChmbGFncyAhPSAwIHx8IChzYWRkcl9sb3cgXHUwMDI2IChTWl8xNiAtIDEpIHx8IG51bV9ldmVudHMgPT0gMCkpIHtcbiYjNDM7XHRpZiAoZmxhZ3MgIT0gMCB8fCAoc2FkZHJfbG93IFx1MDAyNiAoU1pfMTYgLSAxKSkgfHwgbnVtX2V2ZW50cyA9PSAwIHx8XG4mIzQzO1x0ICAgIGNoZWNrX211bF9vdmVyZmxvdyhudW1fZXZlbnRzLCBzaXplb2YoKmVpbmZvKSwgXHUwMDI2c2htZW1fc2l6ZSkpIHtcbiBcdFx0cmV0ID0gU0JJX0VSUl9JTlZBTElEX1BBUkFNO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbkBAIC01MDAsNyAmIzQzOzUwMyw4IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93XG4gXHRcdH1cbiBcdH1cbiBcbi1cdGVpbmZvID0ga3phbGxvYyhzaG1lbV9zaXplLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRlaW5mbyA9IGt2Y2FsbG9jKG51bV9ldmVudHMsIHNpemVvZigqZWluZm8pLFxuJiM0MztcdFx0XHQgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfTk9XQVJOKTtcbiBcdGlmICghZWluZm8pIHtcbiBcdFx0cmV0ID0gU0JJX0VSUl9GQUlMVVJFO1xuIFx0XHRnb3RvIG91dDtcbkBAIC01MTIsNyAmIzQzOzUxNiw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93XG4gXHRcdGdvdG8gZnJlZV9tZW07XG4gXHR9XG4gXG4tXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgbnVtX2V2ZW50czsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKHVuc2lnbmVkIGxvbmcgaSA9IDA7IGkgXHUwMDNjIG51bV9ldmVudHM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGVpZHggPSBlaW5mb1tpXS5ldmVudF9pZHg7XG4gXHRcdGV0eXBlID0ga3ZtX3BtdV9nZXRfcGVyZl9ldmVudF90eXBlKGVpZHgpO1xuIFx0XHRlY29uZmlnID0ga3ZtX3BtdV9nZXRfcGVyZl9ldmVudF9jb25maWcoZWlkeCwgZWluZm9baV0uZXZlbnRfZGF0YSk7XG5AQCAtNTI1LDcgJiM0Mzs1MjksNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvd1xuIFx0XHRyZXQgPSBTQklfRVJSX0lOVkFMSURfQUREUkVTUztcbiBcbiBmcmVlX21lbTpcbi1cdGtmcmVlKGVpbmZvKTtcbiYjNDM7XHRrdmZyZWUoZWluZm8pO1xuIG91dDpcbiBcdHJldGRhdGEtXHUwMDNlZXJyX3ZhbCA9IHJldDtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OywKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1JJU0NWX1BNVSYjMzQ7LAogICAgJiMzNDtSSVNDVl9QTVVfU0JJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBTQkkgZXh0ZW5zaW9uIGhhbmRsZXIgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYC4gVGhlIHZ1bG5lcmFiaWxpdHkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIHdoZW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIFBNVSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBLVk0gY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVlZDQ1OTAyYzNmYTg5YTkxODMyODlmZjMxZjI3NGVhMTU0YjcyNTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAyMjoyNDoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jCmluZGV4IGJiNDZkY2JmYjI0ZGEuLjhlMWY2YWJiODRlMjAgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYwpAQCAtMTIsNyAmIzQzOzEyLDkgQEAKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25vc3BlYy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vdmVyZmxvdy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BlcmYvcmlzY3ZfcG11LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKICNpbmNsdWRlICZsdDthc20vY3NyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2t2bV9pc2EuaCZndDsKICNpbmNsdWRlICZsdDthc20va3ZtX3ZjcHVfc2JpLmgmZ3Q7CkBAIC00NzksMTMgJiM0Mzs0ODEsMTQgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3cKIAkJCQkgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKQogewogCXN0cnVjdCByaXNjdl9wbXVfZXZlbnRfaW5mbyAqZWluZm8gPSBOVUxMOwotCWludCBzaG1lbV9zaXplID0gbnVtX2V2ZW50cyAqIHNpemVvZigqZWluZm8pOwomIzQzOwlzaXplX3Qgc2htZW1fc2l6ZTsKIAlncGFfdCBzaG1lbTsKIAl1MzIgZWlkeCwgZXR5cGU7CiAJdTY0IGVjb25maWc7CiAJaW50IHJldDsKIAotCWlmIChmbGFncyAhPSAwIHx8IChzYWRkcl9sb3cgJmFtcDsgKFNaXzE2IC0gMSkgfHwgbnVtX2V2ZW50cyA9PSAwKSkgewomIzQzOwlpZiAoZmxhZ3MgIT0gMCB8fCAoc2FkZHJfbG93ICZhbXA7IChTWl8xNiAtIDEpKSB8fCBudW1fZXZlbnRzID09IDAgfHwKJiM0MzsJICAgIGNoZWNrX211bF9vdmVyZmxvdyhudW1fZXZlbnRzLCBzaXplb2YoKmVpbmZvKSwgJmFtcDtzaG1lbV9zaXplKSkgewogCQlyZXQgPSBTQklfRVJSX0lOVkFMSURfUEFSQU07CiAJCWdvdG8gb3V0OwogCX0KQEAgLTUwMCw3ICYjNDM7NTAzLDggQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3cKIAkJfQogCX0KIAotCWVpbmZvID0ga3phbGxvYyhzaG1lbV9zaXplLCBHRlBfS0VSTkVMKTsKJiM0MzsJZWluZm8gPSBrdmNhbGxvYyhudW1fZXZlbnRzLCBzaXplb2YoKmVpbmZvKSwKJiM0MzsJCQkgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfTk9XQVJOKTsKIAlpZiAoIWVpbmZvKSB7CiAJCXJldCA9IFNCSV9FUlJfRkFJTFVSRTsKIAkJZ290byBvdXQ7CkBAIC01MTIsNyAmIzQzOzUxNiw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93CiAJCWdvdG8gZnJlZV9tZW07CiAJfQogCi0JZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBudW1fZXZlbnRzOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKHVuc2lnbmVkIGxvbmcgaSA9IDA7IGkgJmx0OyBudW1fZXZlbnRzOyBpJiM0MzsmIzQzOykgewogCQllaWR4ID0gZWluZm9baV0uZXZlbnRfaWR4OwogCQlldHlwZSA9IGt2bV9wbXVfZ2V0X3BlcmZfZXZlbnRfdHlwZShlaWR4KTsKIAkJZWNvbmZpZyA9IGt2bV9wbXVfZ2V0X3BlcmZfZXZlbnRfY29uZmlnKGVpZHgsIGVpbmZvW2ldLmV2ZW50X2RhdGEpOwpAQCAtNTI1LDcgJiM0Mzs1MjksNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdwogCQlyZXQgPSBTQklfRVJSX0lOVkFMSURfQUREUkVTUzsKIAogZnJlZV9tZW06Ci0Ja2ZyZWUoZWluZm8pOwomIzQzOwlrdmZyZWUoZWluZm8pOwogb3V0OgogCXJldGRhdGEtJmd0O2Vycl92YWwgPSByZXQ7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUklTQy1WIFBhdGNoIGZvciBTZWN1cml0eSBJbXBsaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgaW4gaG93IHRoZSBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gIGZ1bmN0aW9uIGhhbmRsZXMgbWVtb3J5IGFsbG9jYXRpb24uIEluc3RlYWQgb2YgdXNpbmcgYGt6YWxsb2NgLCBpdCYjMzk7cyBub3cgdXNpbmcgYGNoZWNrX211bF9vdmVyZmxvd2AgaW4gY29uanVuY3Rpb24gd2l0aCBga3ZjYWxsb2NgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIHBhdHRlcm4g4oCTIHRoZXkmIzM5O3JlIHRyeWluZyB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIGR1cmluZyBhbGxvY2F0aW9uIGNhbGN1bGF0aW9ucywgYW5kIHBvdGVudGlhbGx5IHByZXZlbnQgbGFyZ2UgYWxsb2NhdGlvbiB2dWxuZXJhYmlsaXRpZXMsIGJ5IG1ha2luZyBzdXJlIHRoZSBpbnRlbmRlZCBzaXplIGRvZXNuJiMzOTt0IHdyYXAgYXJvdW5kIGFuZCBhbGxvY2F0ZSBmYXIgbGVzcyBtZW1vcnkgdGhhbiBleHBlY3RlZC4gR29vZCBjYXRjaC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIHJlbGF0ZWQgdG8gc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgZnV6emFibGU/IEkga25vdyBLVk0gaW4gZ2VuZXJhbCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gTm93LCBsZXQmIzM5O3Mgc2VlLCB0aGlzIGZ1bmN0aW9uLCBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLi4ucmlnaHQsIGl0JiMzOTtzIGEgU0JJIGNhbGwgaGFuZGxlciwgc3BlY2lmaWNhbGx5IGZvciBQTVUgZXZlbnQgaW5mb3JtYXRpb24uIFRoaXMgaXMgZGVmaW5pdGVseSBhIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4gTWFsZm9ybWVkIHJlcXVlc3RzIGhlcmUgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGFuZCBwb3NzaWJsZSB2dWxuZXJhYmlsaXRpZXMsIHRoYXQgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4KClRvIGNoZWNrIGlmIHRoZSBmaXggaXMgY29ycmVjdGx5IGltcGxlbWVudGVkLCBJIG5lZWQgdG8ga25vdyBob3cgS1ZNIGlzIGNvbmZpZ3VyZWQgaW4gUklTQy1WLiBJdCYjMzk7cyBwcm9iYWJseSBlbmFibGVkIGJ5IGEgS2NvbmZpZyBvcHRpb24uIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYC4gSXQmIzM5O3MgbGlrZWx5IGp1c3QgYEtWTWAsIGJ1dCBJJiMzOTtsbCBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDM2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipLVk0gQ29uZmlndXJhdGlvbiBBbmFseXNpcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgS1ZNIHNldHVwLiBNeSBmb2N1cyByaWdodCBub3cgaXMgZGVmaW5pdGVseSB0aGUgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIFJJU0MtViB2aXJ0dWFsIENQVXMuIEkmIzM5O20gd29uZGVyaW5nIGlmIGEgZnVuY3Rpb24sIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AsIGlzIGFjY2Vzc2libGUsIGFuZCBteSBndXQgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5LiBUaW1lIHRvIGNoZWNrIGl0cyBhY2Nlc3NpYmlsaXR5LiBJIHJlY2FsbCBzZWVpbmcgcmVsZXZhbnQgY29kZSBpbiB0aGUgYGFyY2gvcmlzY3Yva3ZtYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGB2Y3B1X3BtdS5jYCBmaWxlLiBJJiMzOTttIHByZXR0eSBjZXJ0YWluIHRoYXQmIzM5O3MgdGhlIHBhdGggdG8gZXhwbG9yZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jPTQyNz1pbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93LFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMtNDc4LVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYzo0Nzk6aW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQ4MC1cdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBzYWRkcl9oaWdoLCB1bnNpZ25lZCBsb25nIG51bV9ldmVudHMsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM9MTY9c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzYtXHRjYXNlIFNCSV9FWFRfUE1VX0VWRU5UX0dFVF9JTkZPOlxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6Nzc6XHRcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHZjcHUsIGNwLVx1MDAzZWEwLCBjcC1cdTAwM2VhMSwgY3AtXHUwMDNlYTIsIGNwLVx1MDAzZWEzLCByZXRkYXRhKTtcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTc4LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDUyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBTQkkgUE1VIEV4dGVuc2lvbiBWdWxuZXJhYmlsaXR5KioKClJpZ2h0LCBzbyBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgIGlzIHRoZSBjdWxwcml0LiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBTQkkgUE1VIGV4dGVuc2lvbiBoZXJlLCBhbmQgdGhhdCBpbW1lZGlhdGVseSBnZXRzIG15IGF0dGVudGlvbi4gVGhpcyBpcyAqdGV4dGJvb2sqIGZ1enphYmxlLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSBndWVzdCBWTXMgbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQuIFRoYXQmIzM5O3MgdGhlIHJlYWwgaG9vay4KCk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZSBvYnZpb3VzIGNvbmZpZ3VyYXRpb24uIEkgY2FuJiMzOTt0IGp1c3QgZGl2ZSBpbiB3aXRob3V0IHRoaW5raW5nIGl0IHRocm91Z2guIElzIHRoZXJlIGFueXRoaW5nIGVsc2UgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgcmVsYXRlZCBmbGFncyBJIG5lZWQgdG8gY29uc2lkZXIsIGxpa2UgYFJJU0NWX1BNVWA/IEkgbmVlZCB0byBjaGVjayBmb3IgYWxsIHRoZSBvYnZpb3VzIHByZS1jb25kaXRpb25zLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlIGFyZW4mIzM5O3Qgb3Zlcmxvb2tpbmcgYW55dGhpbmcgYmFzaWMgdGhhdCBjb3VsZCBiaXRlIHVzIGRvd24gdGhlIGxpbmUuIFdlIGRvbiYjMzk7dCB3YW50IHRvIHdhc3RlIGN5Y2xlcyBnb2luZyBkb3duIHRoZSB3cm9uZyBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJJU0NWX1BNVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzc3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmV2aWV3aW5nIHRoaXMgY29kZToKCioqRGl2aW5nIGludG8gYHZjcHVfcG11LmNgIGZvciBDb25kaXRpb25hbCBDb21waWxhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGdvb2QgbG9vayBhdCBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBzZWUgaG93IG11Y2ggb2YgdGhpcyBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiYjMzQ7IEdpdmVuIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgdmFyaW91cyBleHRlbnNpb25zIGFuZCBjb25maWd1cmF0aW9ucywgSSYjMzk7bSBleHBlY3RpbmcgYSBoZWFsdGh5IGRvc2Ugb2YgYCNpZmRlZmAgZGlyZWN0aXZlcyBpbiB0aGlzIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIGJhc2VkIG9uIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgS1ZNIHBlcmZvcm1hbmNlIG1vbml0b3IgKFBNVSkgaW1wbGVtZW50YXRpb24gZm9yIFJJU0MtVi4gQXJlIHdlIGhhbmRsaW5nIGRpZmZlcmVudCBQTVUgdmVyc2lvbnM/IEFyZSB0aGVyZSB2YXJpYXRpb25zIGJhc2VkIG9uIHZlbmRvciBvciBJU0EgZXh0ZW5zaW9ucz8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB3aGF0JiMzOTtzIGFjdGl2ZSBhbmQgaW5hY3RpdmUgZGVwZW5kaW5nIG9uIHRoZSBidWlsZCBmbGFncy4gTGV0JiMzOTtzIHN0YXJ0IHNjYW5uaW5nIGZvciB0aG9zZSBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpZmRlZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjU0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLVk0gRGVwZW5kZW5jeSBDaGVjazogUklTQy1WIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgS1ZNIGRlcGVuZGVuY2llcyBmb3IgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUuIFRvIGRvIHRoaXMsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRlbHZlIGludG8gdGhlIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYCBmaWxlLiBUaGlzIHNob3VsZCBiZSB0aGUgYXV0aG9yaXRhdGl2ZSBzb3VyY2UgZm9yIGRlZmluaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gS1ZNIHN1cHBvcnQgb24gUklTQy1WLiBCeSBleGFtaW5pbmcgdGhpcyBmaWxlLCBJIGNhbiBxdWlja2x5IGFzY2VydGFpbiB3aGljaCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUgc3VwcG9ydCBhcmUgcmVxdWlyZWQgZm9yIEtWTSBmdW5jdGlvbmFsaXR5IHRvIGJlIGVuYWJsZWQgYW5kIG9wZXJhdGlvbmFsIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiBJdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGRpbmcgYmxvY2tzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgS1ZNIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0c291cmNlIFwmIzM0O3ZpcnQva3ZtL0tjb25maWdcJiMzNDtcbiAgIDc6XHRcbiAgIDg6XHRtZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXG4gICA5Olx0XHRib29sIFwmIzM0O1ZpcnR1YWxpemF0aW9uXCYjMzQ7XG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuXG4gIDEyOlx0XHQgIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxuICAxMzpcdFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxuICAxNDpcdFxuICAxNTpcdFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kXG4gIDE2Olx0XHQgIGRpc2FibGVkLlxuICAxNzpcdFxuICAxODpcdGlmIFZJUlRVQUxJWkFUSU9OXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIEtWTVxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIFJJU0NWX1NCSSBcdTAwMjZcdTAwMjYgTU1VXG4gIDIzOlx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxuICAyNDpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXG4gIDI1Olx0XHRzZWxlY3QgSEFWRV9LVk1fTVNJXG4gIDI2Olx0XHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXG4gIDI3Olx0XHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19BQ1FfUkVMXG4gIDI4Olx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyOTpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxuICAzMDpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG4gIDMxOlx0XHRzZWxlY3QgS1ZNX01NSU9cbiAgMzI6XHRcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuICAzMzpcdFx0c2VsZWN0IFNDSEVEX0lORk9cbiAgMzQ6XHRcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UUyBpZiBQRVJGX0VWRU5UU1xuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBTdXBwb3J0IGhvc3RpbmcgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMuXG4gIDM3Olx0XG4gIDM4Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDM5Olx0XG4gIDQwOlx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzgyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQgd2UgaGF2ZSBoZXJlLgoKKipDb25kaXRpb25hbCBDb21waWxhdGlvbiBBbmFseXNpcyBmb3IgUklTQy1WIEtWTSBQTVUgU3VwcG9ydCoqCgpBbHJpZ2h0LCBJIHNlZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZvciBSSVNDLVYgS1ZNIFBNVSBzdXBwb3J0LiBUaGUgZGVwZW5kZW5jaWVzIGp1bXAgb3V0IGltbWVkaWF0ZWx5OiBgUklTQ1ZfU0JJYCBhbmQgYE1NVWAuIE1ha2VzIHNlbnNlOyB3ZSBuZWVkIHRoZSBiYXNpYyBTQkkgYW5kIE1NVSBpbmZyYXN0cnVjdHVyZSBpbiBwbGFjZSB0byBkbyBhbnl0aGluZyB3aXRoIGEgZ3Vlc3QuIEFuZCBzaW5jZSB0aGlzIHNlZW1zIHRvIGJlIGFib3V0IGd1ZXN0IHBlcmZvcm1hbmNlIG1vbml0b3JpbmcsIHRoZSByZWxhdGlvbnNoaXAgd2l0aCBgUEVSRl9FVkVOVFNgIGlzIGtleS4gVGhlIHRleHQgY29uZmlybXMgdGhlIGV4cGVjdGF0aW9uOiBgR1VFU1RfUEVSRl9FVkVOVFNgIGlzIGRlcGVuZGVudCBvbiBgUEVSRl9FVkVOVFNgLiBJJiMzOTttIGFzc3VtaW5nIGl0JiMzOTtzIGZvciB0aGUga2VybmVsJiMzOTtzIG93biBwZXJmb3JtYW5jZSBjb3VudGVycy4KClNvLCB0aGlzIGxvb2tzIGxpa2UgYSBmZWF0dXJlIHNldCB3aGVyZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIHdvdWxkIGJlIGludm9sdmVkLCBhbmQgdGh1cywgYFBFUkZfRVZFTlRTYCBtdXN0IGJlIGVuYWJsZWQuIEl0JiMzOTtzIHNhZmUgdG8gc2F5IHdlIG5lZWQgaXQuIE5vdywgdGhlIG1haW4gcXVlc3Rpb24gaXMsIGhvdyBjb25kaXRpb25hbCBpcyB0aGUgUE1VIGNvZGUgaXRzZWxmPyBJIG5lZWQgdG8gY2hlY2sgaWYgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBpcyBhY3R1YWxseSBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgdmNwdV9wbXUub2AgaXMgaW5kZWVkIGJ1aWx0LCBvciBub3QsIGJhc2VkIG9uIHRoZSBgUEVSRl9FVkVOVFNgIEtjb25maWcgb3B0aW9uLgpJJiMzOTtsbCBoZWFkIG92ZXIgdG8gYGFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHRoYXQgc291cmNlIGZpbGUgaXMgY29tcGlsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjcHVfcG11Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZT0yOD1rdm0teSAmIzQzOz0gdmNwdV9vbmVyZWcub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6Mjk6a3ZtLSQoQ09ORklHX1JJU0NWX1BNVV9TQkkpICYjNDM7PSB2Y3B1X3BtdS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0zMC1rdm0teSAmIzQzOz0gdmNwdV9zYmkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTQyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUE1VIFNCSSBDb25maWd1cmF0aW9uIERpdmUqKgoKUmlnaHQsIHRoYXQmIzM5O3MgaXQhIEkgbmVlZCB0byBlbmFibGUgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IChQTVUpIHN1cHBvcnQgdmlhIHRoZSBTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UgKFNCSSkgZm9yIHRoaXMgUklTQy1WIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIHJlYXNvbmFibHkgc3VyZSBgQ09ORklHX1JJU0NWX1BNVV9TQklgIGlzIHRoZSBjb3JyZWN0IGtlcm5lbCBjb25maWcgb3B0aW9uIGZvciB0aGlzLCBidXQganVzdCB0byBiZSBzdXJlLCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLiBUaW1lIHRvIHBva2UgYXJvdW5kIGluIHRoZXJlIGFuZCB2ZXJpZnkgdGhhdCBgUklTQ1ZfUE1VX1NCSWAgaXMgZGVmaW5lZCwgYW5kIHRvIHF1aWNrbHkgcmVmcmVzaCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0cyBhc3NvY2lhdGVkIHdpdGggaXQsIGp1c3QgdG8gZWxpbWluYXRlIGFueSBoaWRkZW4gZ290Y2hhcy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJJU0NWX1BNVV9TQkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNzIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQ2hhc2luZyBEb3duIGEgTWlzc2luZyBEZWZpbml0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkmIzM5O20gaGl0dGluZyBhIHNuYWcgaGVyZS4gSSYjMzk7bSB3b3JraW5nIG9uIHRoaXMgUklTQy1WIHJlbGF0ZWQgcHJvamVjdCwgYW5kIEkmIzM5O3ZlIGNvbWUgYWNyb3NzIHRoaXMgYFJJU0NWX1BNVV9TQklgIHN5bWJvbC4gTm93LCBJIGtub3cgdGhlIFJJU0MtViBTQkkgbGFuZHNjYXBlIHByZXR0eSB3ZWxsLCBhbmQgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyB1bml0cyBhcmUgc29tZXRoaW5nIEkmIzM5O20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLiBIb3dldmVyLCB0aGUgY29tcGlsZXIgaXMgZ2l2aW5nIG1lIGFuIGVycm9yLCBzbyBJIGhhdmUgdG8gYXNrIG15c2VsZiwgd2hlcmUgKmlzKiBgUklTQ1ZfUE1VX1NCSWAgZGVmaW5lZD8gSXMgaXQgYSBtYWNybz8gQSBmdW5jdGlvbj8gQSBnbG9iYWwgdmFyaWFibGU/IERpZCBJIGZvcmdldCB0byBpbmNsdWRlIGEgbmVjZXNzYXJ5IGhlYWRlciBmaWxlPyBNYXliZSBpdCYjMzk7cyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQmIzM5O3Mgbm90IGVuYWJsZWQ/IFRpbWUgdG8gc3RhcnQgdHJhY2luZyBiYWNrLCBjaGVja2luZyBpbmNsdWRlIHBhdGhzLCBhbmQgcmV2aWV3aW5nIHRoZSBwcm9qZWN0JiMzOTtzIGJ1aWxkIHN5c3RlbSB0byBmaW5kIHRoZSBzb3VyY2Ugb2YgdGhpcyBjcnVjaWFsIGRlZmluaXRpb24uIFRoaXMgY291bGQgYmUgYSBzaW1wbGUgb3ZlcnNpZ2h0IG9yIGEgbW9yZSBmdW5kYW1lbnRhbCBjb25maWd1cmF0aW9uIHByb2JsZW0uIExldCYjMzk7cyBnZXQgdGhpcyBzb3J0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSSVNDVl9QTVVfU0JJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGVyZi9LY29uZmlnPTg4PWNvbmZpZyBSSVNDVl9QTVVfTEVHQUNZXG4tLVxuZHJpdmVycy9wZXJmL0tjb25maWctOTctXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo5ODpjb25maWcgUklTQ1ZfUE1VX1NCSVxuZHJpdmVycy9wZXJmL0tjb25maWctOTktXHRkZXBlbmRzIG9uIFJJU0NWX1BNVSBcdTAwMjZcdTAwMjYgUklTQ1ZfU0JJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MTMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGZvciBSSVNDVl9QTVVfU0JJKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgUklTQy1WIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCAoUE1VKSB1dGlsaXppbmcgdGhlIFNCSSAoU3VwZXJ2aXNvciBCaW5hcnkgSW50ZXJmYWNlKSBmcmFtZXdvcmsuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBsb29rIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtLCBzcGVjaWZpY2FsbHkgYXQgdGhlIEtjb25maWcgZmlsZXMuIEdpdmVuIHRoZSB0b3BpYywgdGhlIGBkcml2ZXJzL3BlcmZgIGRpcmVjdG9yeSBpcyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBJdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGFueXRoaW5nIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UgY291bnRlcnMuIFRoZXJlZm9yZSwgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O2xsIGNoZWNrIGlzIGBkcml2ZXJzL3BlcmYvS2NvbmZpZ2AuIEkmIzM5O20gaG9waW5nIHRvIGZpbmQgYSBzeW1ib2wsIGxpa2VseSBuYW1lZCBzb21ldGhpbmcgbGlrZSBgUklTQ1ZfUE1VX1NCSWAgb3IgYSBzaW1pbGFyIHZhcmlhdGlvbiwgdGhhdCBjb250cm9scyB0aGUgaW5jbHVzaW9uIG9mIHRoZSBTQkktYmFzZWQgUE1VIHN1cHBvcnQuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgcmV2ZWFsIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBwb3RlbnRpYWwgYnVpbGQgb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgZmVhdHVyZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3BlcmYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTA6XHRcdGJvb2wgXCYjMzQ7UklTQy1WIGxlZ2FjeSBQTVUgaW1wbGVtZW50YXRpb25cJiMzNDtcbiAgOTE6XHRcdGRlZmF1bHQgeVxuICA5MjpcdFx0aGVscFxuICA5MzpcdFx0ICBTYXkgeSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGxlZ2FjeSBDUFUgcGVyZm9ybWFuY2UgbW9uaXRvclxuICA5NDpcdFx0ICBpbXBsZW1lbnRhdGlvbiBvbiBSSVNDLVYgYmFzZWQgc3lzdGVtcy4gVGhpcyBvbmx5IGFsbG93cyBjb3VudGluZ1xuICA5NTpcdFx0ICBvZiBjeWNsZS9pbnN0cnVjdGlvbiBjb3VudGVyIGFuZCBkb2VzbiYjMzk7dCBzdXBwb3J0IGNvdW50ZXIgb3ZlcmZsb3csXG4gIDk2Olx0XHQgIG9yIHByb2dyYW1tYWJsZSBjb3VudGVycy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZS5cbiAgOTc6XHRcbiAgOTg6XHRjb25maWcgUklTQ1ZfUE1VX1NCSVxuICA5OTpcdFx0ZGVwZW5kcyBvbiBSSVNDVl9QTVUgXHUwMDI2XHUwMDI2IFJJU0NWX1NCSVxuIDEwMDpcdFx0Ym9vbCBcJiMzNDtSSVNDLVYgUE1VIGJhc2VkIG9uIFNCSSBQTVUgZXh0ZW5zaW9uXCYjMzQ7XG4gMTAxOlx0XHRkZWZhdWx0IHlcbiAxMDI6XHRcdGhlbHBcbiAxMDM6XHRcdCAgU2F5IHkgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBDUFUgcGVyZm9ybWFuY2UgbW9uaXRvclxuIDEwNDpcdFx0ICB1c2luZyBTQkkgUE1VIGV4dGVuc2lvbiBvbiBSSVNDLVYgYmFzZWQgc3lzdGVtcy4gVGhpcyBvcHRpb24gcHJvdmlkZXNcbiAxMDU6XHRcdCAgZnVsbCBwZXJmIGZlYXR1cmUgc3VwcG9ydCBpLmUuIGNvdW50ZXIgb3ZlcmZsb3csIHByaXZpbGVnZSBtb2RlXG4gMTA2Olx0XHQgIGZpbHRlcmluZywgY291bnRlciBjb25maWd1cmF0aW9uLlxuIDEwNzpcdFxuIDEwODpcdGNvbmZpZyBTVEFSRklWRV9TVEFSTElOS19QTVVcbiAxMDk6XHRcdGRlcGVuZHMgb24gQVJDSF9TVEFSRklWRSB8fCBDT01QSUxFX1RFU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA5MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlcGVuZGVuY3kgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFJJU0NWX1BNVV9TQklgIGZlYXR1cmUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0IGhpbmdlcyBvbiB0d28gb3RoZXIgdGhpbmdzOiBgUklTQ1ZfUE1VYCBhbmQgYFJJU0NWX1NCSWAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgY2xlYXIgZGVwZW5kZW5jeSByaWdodCB0aGVyZS4gQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgUklTQ1ZfUE1VYCBpcyBhbGwgYWJvdXQuIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgb25lIGZpcnN0LCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgd2hvbGUgYXJjaGl0ZWN0dXJlLiBOZWVkIHRvIGdldCBhIGdyYXNwIG9uIHRoZSBidWlsZGluZyBibG9ja3MgYmVmb3JlIEkgY2FuIGV2YWx1YXRlIHRoZSBsYXJnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJJU0NWX1BNVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGVyZi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGVyZi9LY29uZmlnPTc0PWNvbmZpZyBBUk1fWFNDQUxFX1BNVVxuLS1cbmRyaXZlcnMvcGVyZi9LY29uZmlnLTc3LVxuZHJpdmVycy9wZXJmL0tjb25maWc6Nzg6Y29uZmlnIFJJU0NWX1BNVVxuZHJpdmVycy9wZXJmL0tjb25maWctNzktXHRkZXBlbmRzIG9uIFJJU0NWXG4tLVxuZHJpdmVycy9wZXJmL0tjb25maWctODctXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo4ODpjb25maWcgUklTQ1ZfUE1VX0xFR0FDWVxuZHJpdmVycy9wZXJmL0tjb25maWctODktXHRkZXBlbmRzIG9uIFJJU0NWX1BNVVxuLS1cbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk3LVxuZHJpdmVycy9wZXJmL0tjb25maWc6OTg6Y29uZmlnIFJJU0NWX1BNVV9TQklcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk5LVx0ZGVwZW5kcyBvbiBSSVNDVl9QTVUgXHUwMDI2XHUwMDI2IFJJU0NWX1NCSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDcwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBub3Rlcywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGggdGhpcyBzcGFjZToKCioqUE1VIEludGVncmF0aW9uIGluIEtWTS9SSVNDLVY6IEluaXRpYWwgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBsb29raW5nIGF0IHRoaXMsIGl0IHNlZW1zIHdlJiMzOTtyZSB6ZXJvaW5nIGluIG9uIGludGVncmF0aW5nIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdHMgKFBNVXMpIHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50LCBzcGVjaWZpY2FsbHkgZm9yIFJJU0MtViBhcmNoaXRlY3R1cmVzLiBUaGUgY29yZSBjb21wb25lbnRzIHdlIG5lZWQgdG8gYWRkcmVzcyBhcmUgY2xlYXJseSBsYWlkIG91dDogYEtWTWAsIGBSSVNDVl9QTVVgLCBhbmQgYFJJU0NWX1BNVV9TQklgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIHdlJiMzOTtyZSB3b3JraW5nIHdpdGggaGVyZS4gVGhlIG1lbnRpb24gb2YgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBtYWtlcyBwZXJmZWN0IHNlbnNlIGFzIGEga2V5IGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBldmVudCBpbmZvcm1hdGlvbiB3aXRoaW4gdGhlIHZpcnR1YWwgQ1BVIGNvbnRleHQuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBmdW5jdGlvbiBmb3IgYW55IHByb3BlciBQTVUgaW1wbGVtZW50YXRpb24uCgpJJiMzOTttIGFsc28gbWFraW5nIGEgbWVudGFsIG5vdGUgdG8gY2lyY2xlIGJhY2sgYW5kIGZ1bGx5IHZldCBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgLiBJdCYjMzk7cyBwb3NzaWJsZSB0aGF0IHRoaXMgU0JJIChTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UpIGV4dGVuc2lvbiBoYW5kbGVyIGhhcyBhbiBpbXBvcnRhbnQgcm9sZSBpbiBob3cgd2UmIzM5O3JlIGV4cG9zZWQgb3IgaW50ZXJmYWNlIHdpdGggdGhlIFBNVSBjYXBhYmlsaXRpZXMgZnJvbSB3aXRoaW4gdGhlIGd1ZXN0IFZNLiBUaGlzIG9uZSBtaWdodCBhbHNvIGJlIGEgc3Ryb25nIGZvY3VzIHBvaW50IGZvciBleGFtaW5hdGlvbiwgc28gbGV0JiMzOTtzIGtlZXAgaXQgb24gdGhlIHJhZGFyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fc2JpX2V4dF9wbXVfaGFuZGxlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy0xNS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjE2OnN0YXRpYyBpbnQga3ZtX3NiaV9leHRfcG11X2hhbmRsZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtMTctXHRcdFx0XHQgICBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX3JldHVybiAqcmV0ZGF0YSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz05Mz1jb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfcG11ID0ge1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTk1LVx0LmV4dGlkX2VuZCA9IFNCSV9FWFRfUE1VLFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6OTY6XHQuaGFuZGxlciA9IGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyLFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTctXHQucHJvYmUgPSBrdm1fc2JpX2V4dF9wbXVfcHJvYmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEtWTSBSSVNDLVYgUE1VIEludGVnZXIgT3ZlcmZsb3cgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIHNlY3VyaXR5IGZpeCwgYW5kIGhlcmUmIzM5O3MgbXkgbGluZSBvZiB0aGlua2luZzogaW5pdGlhbGx5LCBJIHdhcyBjb25zaWRlcmluZyBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgIGFzIGEgZm9jYWwgcG9pbnQuIEl0JiMzOTtzIHN0YXRpYywgc28gSSB3YXMgd29uZGVyaW5nIGlmIHRoZSBjb21waWxlciB3b3VsZCBpbmxpbmUgaXQsIHdoaWNoIHdvdWxkIG1ha2UgdHJhY2luZyBpdHMgZXhlY3V0aW9uIG1vcmUgY29tcGxpY2F0ZWQuIEhvd2V2ZXIsIHdhaXQsIGl0JiMzOTtzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgdmNwdV9zYmlfZXh0X3BtdWAuIFRoYXQgbWVhbnMgaXQgKndvbiYjMzk7dCogYmUgaW5saW5lZCwgYnV0IHNpbmNlIGl0JiMzOTtzIHN0YXRpYywgdGhlcmUgd29uJiMzOTt0IGJlIGFuIGVhc2lseSBpZGVudGlmaWFibGUgc3ltYm9sLiBTbywgbGV0JiMzOTtzIHBpdm90IGFuZCBsb29rIGF0IGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AgaW5zdGVhZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGV4cG9ydGVkIC0gYW5kIGl0IGlzLCBzbyB0aGF0IGlzIGEgZ29vZCBlbnRyeSBwb2ludCB0byBzdGFydC4KClJpZ2h0LCBzbyB0aGUgY29yZSBpc3N1ZSBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoYXQgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgYG51bV9ldmVudHMgKiBzaXplb2YoKmVpbmZvKWAgY2FuIG92ZXJmbG93LiBUaGlzIGxlYWRzIHRvIGFuIHVuZGVyc2l6ZWQgYWxsb2NhdGlvbiwgYW5kIHRoZW4gdGhlIGBmb3JgIGxvb3Agc3Vic2VxdWVudGx5IHdyaXRlcyBvdXQtb2YtYm91bmRzLCBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGZ1enppbmcgaXMgaGlnaC4KClRvIHJlcHJvZHVjZSB0aGlzLCB0aGUgY29uZmlndXJhdGlvbiBJIG5lZWQgdG8gdGFyZ2V0IGFyZTogYEtWTWAsIGBSSVNDVl9QTVVgLCBhbmQgYFJJU0NWX1BNVV9TQklgLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBgVklSVFVBTElaQVRJT05gIGlzIG5lZWRlZCwgc2luY2UgSSBrbm93IEtWTSBpcyBuZXN0ZWQgdW5kZXIgYSBgaWYgVklSVFVBTElaQVRJT05gLCB0aGlzIGlzIGxpa2VseSBhIG1lbnVjb25maWcgb3B0aW9uLiBPa2F5LCBhbmQgeWVzLCBJJiMzOTtsbCBuZWVkIGBQRVJGX0VWRU5UU2AuIGBSSVNDVl9QTVVgIGlzIGxpa2VseSBkZXBlbmRlbnQgb24gaXQsIHNvIGxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0IGRlcGVuZGVuY3kgaW4gYGRyaXZlcnMvcGVyZi9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3BlcmYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzA6XHRjb25maWcgQVJNX1Y3X1BNVVxuICA3MTpcdFx0ZGVwZW5kcyBvbiBBUk1fUE1VIFx1MDAyNlx1MDAyNiBDUFVfVjdcbiAgNzI6XHRcdGRlZl9ib29sIHlcbiAgNzM6XHRcbiAgNzQ6XHRjb25maWcgQVJNX1hTQ0FMRV9QTVVcbiAgNzU6XHRcdGRlcGVuZHMgb24gQVJNX1BNVSBcdTAwMjZcdTAwMjYgQ1BVX1hTQ0FMRVxuICA3NjpcdFx0ZGVmX2Jvb2wgeVxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBSSVNDVl9QTVVcbiAgNzk6XHRcdGRlcGVuZHMgb24gUklTQ1ZcbiAgODA6XHRcdGJvb2wgXCYjMzQ7UklTQy1WIFBNVSBmcmFtZXdvcmtcJiMzNDtcbiAgODE6XHRcdGRlZmF1bHQgeVxuICA4MjpcdFx0aGVscFxuICA4MzpcdFx0ICBTYXkgeSBpZiB5b3Ugd2FudCB0byB1c2UgQ1BVIHBlcmZvcm1hbmNlIG1vbml0b3JzIG9uIFJJU0NWLWJhc2VkXG4gIDg0Olx0XHQgIHN5c3RlbXMuIFRoaXMgcHJvdmlkZXMgdGhlIGNvcmUgUE1VIGZyYW1ld29yayB0aGF0IGFic3RyYWN0cyBjb21tb25cbiAgODU6XHRcdCAgUE1VIGZ1bmN0aW9uYWxpdGllcyBpbiBhIGNvcmUgbGlicmFyeSBzbyB0aGF0IGRpZmZlcmVudCBQTVUgZHJpdmVyc1xuICA4NjpcdFx0ICBjYW4gcmV1c2UgaXQuXG4gIDg3Olx0XG4gIDg4Olx0Y29uZmlnIFJJU0NWX1BNVV9MRUdBQ1lcbiAgODk6XHRcdGRlcGVuZHMgb24gUklTQ1ZfUE1VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMjMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0IEkmIzM5O20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OgoKKipEZXBlbmRlbmNpZXMgYW5kIEtjb25maWcgQ29udW5kcnVtcyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBSSVNDVl9QTVVgLi4uIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gdGhlIGNvcmUgYFJJU0NWYCBhcmNoaXRlY3R1cmUgc3VwcG9ydCwgdGhhdCYjMzk7cyBqdXN0IGEgZ2l2ZW4uIEJ1dCB0aGVuIEkgaGl0IGEgcG90ZW50aWFsIHNuYWcuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSB3YXkgYGRyaXZlcnMvcGVyZi9LY29uZmlnYCB3b3Jrcy4gTXkgZ3V0IGZlZWxpbmcgaXMgdGVsbGluZyBtZSB0aGF0IGl0IGNvdWxkIGJlIHNvdXJjZWQgY29uZGl0aW9uYWxseSwgcGVyaGFwcyB1bmRlciB0aGUgYFBFUkZfRVZFTlRTYCBjb25maWcgb3B0aW9uLiBJZiB0aGF0JiMzOTtzIHRoZSBjYXNlLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGhvdyB0aGVzZSBkZXBlbmRlbmNpZXMgY2FzY2FkZS4gSSBkb24mIzM5O3Qgd2FudCB0byBtYWtlIGFzc3VtcHRpb25zIGFuZCBtaXNzIGEgc3VidGxlIGNvbmRpdGlvbmFsIGJ1aWxkIHBhdGguIFRoaXMgY291bGQgaGF2ZSBpbXBsaWNhdGlvbnMgZG93biB0aGUgbGluZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UgXCYjMzQ7ZHJpdmVycy9wZXJmL0tjb25maWdcJiMzNDsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9LY29uZmlnPTIxMD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9tY2IvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9LY29uZmlnLTIxMS1cbmRyaXZlcnMvS2NvbmZpZzoyMTI6c291cmNlIFwmIzM0O2RyaXZlcnMvcGVyZi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL0tjb25maWctMjEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTQyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFBlcmYgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG1vbml0b3Jpbmcgc3Vic3lzdGVtLCBhbmQgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBkaXJlY3RseSB0byB0aGUgY29yZSBvZiB0aGUgbWF0dGVyOiB0aGUgYnVpbGQgc3lzdGVtLiBUaGUgYGRyaXZlcnMvcGVyZmAgZGlyZWN0b3J5IGlzLCBsb2dpY2FsbHksIHdoZXJlIHRoZSBkZXZpY2UgZHJpdmVycyByZWxhdGVkIHRvIHBlcmZvcm1hbmNlIGNvdW50ZXJzIHdvdWxkIHJlc2lkZS4gQW5kIHdpdGhpbiB0aGF0IGRpcmVjdG9yeSwgdGhlIGBNYWtlZmlsZWAgaXMgdGhlIHNpbmdsZSBtb3N0IGltcG9ydGFudCBmaWxlLiBJdCYjMzk7cyB0aGUgYmx1ZXByaW50LCB0aGUgb3JjaGVzdHJhdGlvbiBwb2ludCBmb3IgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGNvbXBpbGVkLCBsaW5rZWQsIGFuZCBpbmNvcnBvcmF0ZWQgaW50byB0aGUga2VybmVsLiBCeSBleGFtaW5pbmcgdGhpcyBgTWFrZWZpbGVgLCBJIHNob3VsZCBnZXQgYSB2ZXJ5IGNsZWFyIHBpY3R1cmUgb2YgdGhlIGJ1aWxkIGRlcGVuZGVuY2llcywgdGhlIGF2YWlsYWJsZSB0YXJnZXRzLCBhbmQgYW55IHNwZWNpYWwgY29uc2lkZXJhdGlvbnMgZm9yIHRoZXNlIHBlcmZvcm1hbmNlLXJlbGF0ZWQgZHJpdmVycy4gSXQgd2lsbCBnaXZlIG1lIGEgZmFudGFzdGljIGZvdW5kYXRpb24gdG8gdGhlbiBkaXZlIGRlZXBlciBpbnRvIHRoZSBpbmRpdmlkdWFsIHNvdXJjZSBmaWxlcyBpZiByZXF1aXJlZC4gSSBleHBlY3QgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIG11Y2ggYmV0dGVyIGFmdGVyIGEgbG9vayB0aHJvdWdoIHRoZSBgTWFrZWZpbGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYmotJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wZXJmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGVyZi9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BUk1fQ0NJX1BNVSkgJiM0Mzs9IGFybS1jY2kub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0FSTV9DQ04pICYjNDM7PSBhcm0tY2NuLm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19BUk1fQ01OKSAmIzQzOz0gYXJtLWNtbi5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQVJNX0RTVV9QTVUpICYjNDM7PSBhcm1fZHN1X3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQVJNX05JKSAmIzQzOz0gYXJtLW5pLm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19BUk1fUE1VKSAmIzQzOz0gYXJtX3BtdS5vIGFybV9wbXVfcGxhdGZvcm0ub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX0FSTV9QTVVfQUNQSSkgJiM0Mzs9IGFybV9wbXVfYWNwaS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQVJNX1BNVVYzKSAmIzQzOz0gYXJtX3BtdXYzLm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQVJNX1Y2X1BNVSkgJiM0Mzs9IGFybV92Nl9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19BUk1fVjdfUE1VKSAmIzQzOz0gYXJtX3Y3X3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0FSTV9YU0NBTEVfUE1VKSAmIzQzOz0gYXJtX3hzY2FsZV9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19BUk1fU01NVV9WM19QTVUpICYjNDM7PSBhcm1fc21tdXYzX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0ZTTF9JTVg4X0REUl9QTVUpICYjNDM7PSBmc2xfaW14OF9kZHJfcGVyZi5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX0ZTTF9JTVg5X0REUl9QTVUpICYjNDM7PSBmc2xfaW14OV9kZHJfcGVyZi5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0ZVSklUU1VfVU5DT1JFX1BNVSkgJiM0Mzs9IGZ1aml0c3VfdW5jb3JlX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0hJU0lfUE1VKSAmIzQzOz0gaGlzaWxpY29uL1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19RQ09NX0wyX1BNVSlcdCYjNDM7PSBxY29tX2wyX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1FDT01fTDNfUE1VKSAmIzQzOz0gcWNvbV9sM19wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19SSVNDVl9QTVUpICYjNDM7PSByaXNjdl9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19SSVNDVl9QTVVfTEVHQUNZKSAmIzQzOz0gcmlzY3ZfcG11X2xlZ2FjeS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX1JJU0NWX1BNVV9TQkkpICYjNDM7PSByaXNjdl9wbXVfc2JpLm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyMzpvYmotJChDT05GSUdfU1RBUkZJVkVfU1RBUkxJTktfUE1VKSAmIzQzOz0gc3RhcmZpdmVfc3RhcmxpbmtfcG11Lm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfVEhVTkRFUlgyX1BNVSkgJiM0Mzs9IHRodW5kZXJ4Ml9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19YR0VORV9QTVUpICYjNDM7PSB4Z2VuZV9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19BUk1fU1BFX1BNVSkgJiM0Mzs9IGFybV9zcGVfcG11Lm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfQVJNNjRfQlJCRSkgJiM0Mzs9IGFybV9icmJlLm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyODpvYmotJChDT05GSUdfQVJNX0RNQzYyMF9QTVUpICYjNDM7PSBhcm1fZG1jNjIwX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6Mjk6b2JqLSQoQ09ORklHX01BUlZFTExfQ04xMEtfVEFEX1BNVSkgJiM0Mzs9IG1hcnZlbGxfY24xMGtfdGFkX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX01BUlZFTExfQ04xMEtfRERSX1BNVSkgJiM0Mzs9IG1hcnZlbGxfY24xMGtfZGRyX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX01BUlZFTExfUEVNX1BNVSkgJiM0Mzs9IG1hcnZlbGxfcGVtX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0FQUExFX00xX0NQVV9QTVUpICYjNDM7PSBhcHBsZV9tMV9jcHVfcG11Lm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfQUxJQkFCQV9VTkNPUkVfRFJXX1BNVSkgJiM0Mzs9IGFsaWJhYmFfdW5jb3JlX2Ryd19wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19EV0NfUENJRV9QTVUpICYjNDM7PSBkd2NfcGNpZV9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19BUk1fQ09SRVNJR0hUX1BNVV9BUkNIX1NZU1RFTV9QTVUpICYjNDM7PSBhcm1fY3NwbXUvXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX01FU09OX0REUl9QTVUpICYjNDM7PSBhbWxvZ2ljL1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19DWExfUE1VKSAmIzQzOz0gY3hsX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX05WSURJQV9URUdSQTQxMF9DTUVNX0xBVEVOQ1lfUE1VKSAmIzQzOz0gbnZpZGlhX3Q0MTBfY21lbV9sYXRlbmN5X3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6Mzk6b2JqLSQoQ09ORklHX05WSURJQV9URUdSQTQxMF9DMkNfUE1VKSAmIzQzOz0gbnZpZGlhX3Q0MTBfYzJjX3BtdS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTAzCgkJCQkJCQlvdXRwdXQ6IDE1MgoJCQkJCQkJdGhvdWdodHM6IDI1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSSVNDLVYgS1ZNIFBNVSBTQkkgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgemVyb2VkIGluIG9uIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2g6IGBSSVNDVl9QTVVfU0JJYCBpcyBpbmRlZWQgdGhlIGtleS4gTGV0JiMzOTtzIGp1c3QgY29uZmlybSBpdCBieSB0YWtpbmcgYW5vdGhlciBsb29rIGF0IGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYC4gUmlnaHQsIGBLVk1gIGhpbmdlcyBvbiBgUklTQ1ZfU0JJYCBhbmQgYE1NVWAuIEdpdmVuIGhvdyBSSVNDLVYgaXMgc3RydWN0dXJlZCwgYFJJU0NWX1NCSWAgaXMgbGlrZWx5IGVuYWJsZWQgYnkgZGVmYXVsdC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuCgpUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9ucyBoZXJlIGFyZTogYFZJUlRVQUxJWkFUSU9OYCwgYEtWTWAsIGBSSVNDVl9QTVVgLCBhbmQgY3J1Y2lhbGx5LCBgUklTQ1ZfUE1VX1NCSWAuCgpUaGUgZm9jYWwgcG9pbnQsIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIHR3ZWFrZWQsIGlzIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuIFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgc3ltYm9sIHRvIGtlZXAgaW4gbWluZC4KClRoZSB1bmRlcmx5aW5nIGlzc3VlIGlzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIFJJU0MtViBLVk0gUE1VIFNCSSBleHRlbnNpb24gaGFuZGxlciwgc3BlY2lmaWNhbGx5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuIFRoaXMgaXMgYSByaXNrIGZvciBhIHBvdGVudGlhbGx5IG5hc3R5IG91dC1vZi1ib3VuZHMgd3JpdGUuIFNpbmNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gS1ZNJiMzOTtzIGNvcmUgY29kZSBhbmQsIGl0IGlzIHJlYWNoYWJsZSwgaXQgZGVmaW5pdGVseSBuZWVkcyByb2J1c3QgZnV6emluZy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uLi4geWVzLCBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gIGlzIHRoZSAqb25seSogZnVuY3Rpb24gdGhhdCYjMzk7cyBiZWVuIG1vZGlmaWVkLiBTbywgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHZlcnkgZm9jdXNlZCBjaGFuZ2UuCgpBbHJpZ2h0LCBJJiMzOTttIHJlYWR5IHRvIG1hcmsgdGhlIHBhdGNoIGFzIHVuZGVyc3Rvb2QsIGFuZCBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7LAogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7UklTQ1ZfUE1VJiMzNDssCiAgICAmIzM0O1JJU0NWX1BNVV9TQkkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIFJJU0MtViBLVk0gUE1VIFNCSSBleHRlbnNpb24gaGFuZGxlciBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLiBUaGUgdnVsbmVyYWJpbGl0eSBjb3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgUE1VIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIEtWTSBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7LAogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7UklTQ1ZfUE1VJiMzNDssCiAgICAmIzM0O1JJU0NWX1BNVV9TQkkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIFJJU0MtViBLVk0gUE1VIFNCSSBleHRlbnNpb24gaGFuZGxlciBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLiBUaGUgdnVsbmVyYWJpbGl0eSBjb3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgUE1VIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIEtWTSBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6MjQuMzMyMzk4NzI3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAxNjQ2ODc1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVFVBTElaQVRJT05cIixcbiAgICBcIktWTVwiLFxuICAgIFwiUklTQ1ZfUE1VXCIsXG4gICAgXCJSSVNDVl9QTVVfU0JJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIFJJU0MtViBLVk0gUE1VIFNCSSBleHRlbnNpb24gaGFuZGxlciBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLiBUaGUgdnVsbmVyYWJpbGl0eSBjb3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgUE1VIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIEtWTSBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNDoyNC4zMzI0MDU1MzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMDcyNzAyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVlZDQ1OTAyYzNmYTg5YTkxODMyODlmZjMxZjI3NGVhMTU0YjcyNTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMjI6MjQ6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG5pbmRleCBiYjQ2ZGNiZmIyNGRhLi44ZTFmNmFiYjg0ZTIwIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXFxuQEAgLTEyLDcgKzEyLDkgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vyci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX2hvc3QuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25vc3BlYy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb3ZlcmZsb3cuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BlcmYvcmlzY3ZfcG11LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vY3NyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2lzYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV92Y3B1X3NiaS5oXFx1MDAzZVxcbkBAIC00NzksMTMgKzQ4MSwxNCBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvd1xcbiBcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKVxcbiB7XFxuIFxcdHN0cnVjdCByaXNjdl9wbXVfZXZlbnRfaW5mbyAqZWluZm8gPSBOVUxMO1xcbi1cXHRpbnQgc2htZW1fc2l6ZSA9IG51bV9ldmVudHMgKiBzaXplb2YoKmVpbmZvKTtcXG4rXFx0c2l6ZV90IHNobWVtX3NpemU7XFxuIFxcdGdwYV90IHNobWVtO1xcbiBcXHR1MzIgZWlkeCwgZXR5cGU7XFxuIFxcdHU2NCBlY29uZmlnO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0aWYgKGZsYWdzICE9IDAgfHwgKHNhZGRyX2xvdyBcXHUwMDI2IChTWl8xNiAtIDEpIHx8IG51bV9ldmVudHMgPT0gMCkpIHtcXG4rXFx0aWYgKGZsYWdzICE9IDAgfHwgKHNhZGRyX2xvdyBcXHUwMDI2IChTWl8xNiAtIDEpKSB8fCBudW1fZXZlbnRzID09IDAgfHxcXG4rXFx0ICAgIGNoZWNrX211bF9vdmVyZmxvdyhudW1fZXZlbnRzLCBzaXplb2YoKmVpbmZvKSwgXFx1MDAyNnNobWVtX3NpemUpKSB7XFxuIFxcdFxcdHJldCA9IFNCSV9FUlJfSU5WQUxJRF9QQVJBTTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG5AQCAtNTAwLDcgKzUwMyw4IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0ZWluZm8gPSBremFsbG9jKHNobWVtX3NpemUsIEdGUF9LRVJORUwpO1xcbitcXHRlaW5mbyA9IGt2Y2FsbG9jKG51bV9ldmVudHMsIHNpemVvZigqZWluZm8pLFxcbitcXHRcXHRcXHQgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfTk9XQVJOKTtcXG4gXFx0aWYgKCFlaW5mbykge1xcbiBcXHRcXHRyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC01MTIsNyArNTE2LDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3dcXG4gXFx0XFx0Z290byBmcmVlX21lbTtcXG4gXFx0fVxcbiBcXG4tXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBudW1fZXZlbnRzOyBpKyspIHtcXG4rXFx0Zm9yICh1bnNpZ25lZCBsb25nIGkgPSAwOyBpIFxcdTAwM2MgbnVtX2V2ZW50czsgaSsrKSB7XFxuIFxcdFxcdGVpZHggPSBlaW5mb1tpXS5ldmVudF9pZHg7XFxuIFxcdFxcdGV0eXBlID0ga3ZtX3BtdV9nZXRfcGVyZl9ldmVudF90eXBlKGVpZHgpO1xcbiBcXHRcXHRlY29uZmlnID0ga3ZtX3BtdV9nZXRfcGVyZl9ldmVudF9jb25maWcoZWlkeCwgZWluZm9baV0uZXZlbnRfZGF0YSk7XFxuQEAgLTUyNSw3ICs1MjksNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvd1xcbiBcXHRcXHRyZXQgPSBTQklfRVJSX0lOVkFMSURfQUREUkVTUztcXG4gXFxuIGZyZWVfbWVtOlxcbi1cXHRrZnJlZShlaW5mbyk7XFxuK1xcdGt2ZnJlZShlaW5mbyk7XFxuIG91dDpcXG4gXFx0cmV0ZGF0YS1cXHUwMDNlZXJyX3ZhbCA9IHJldDtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjI0Ljc1NDIzNTgwMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY5NzQyODM3MzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCIsXG4gICAgXCJLVk1cIixcbiAgICBcIlJJU0NWX1BNVVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBTQkkgZXh0ZW5zaW9uIGhhbmRsZXIgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYC4gVGhlIHZ1bG5lcmFiaWxpdHkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIHdoZW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIFBNVSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBLVk0gY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWVkNDU5MDJjM2ZhODlhOTE4MzI4OWZmMzFmMjc0ZWExNTRiNzI1MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDIyOjI0OjIzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbmluZGV4IGJiNDZkY2JmYjI0ZGEuLjhlMWY2YWJiODRlMjAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXG5AQCAtMTIsNyArMTIsOSBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25vc3BlYy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb3ZlcmZsb3cuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmYvcmlzY3ZfcG11LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY3NyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2lzYS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV92Y3B1X3NiaS5oXHUwMDNlXG5AQCAtNDc5LDEzICs0ODEsMTQgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3dcbiBcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBmbGFncywgc3RydWN0IGt2bV92Y3B1X3NiaV9yZXR1cm4gKnJldGRhdGEpXG4ge1xuIFx0c3RydWN0IHJpc2N2X3BtdV9ldmVudF9pbmZvICplaW5mbyA9IE5VTEw7XG4tXHRpbnQgc2htZW1fc2l6ZSA9IG51bV9ldmVudHMgKiBzaXplb2YoKmVpbmZvKTtcbitcdHNpemVfdCBzaG1lbV9zaXplO1xuIFx0Z3BhX3Qgc2htZW07XG4gXHR1MzIgZWlkeCwgZXR5cGU7XG4gXHR1NjQgZWNvbmZpZztcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoZmxhZ3MgIT0gMCB8fCAoc2FkZHJfbG93IFx1MDAyNiAoU1pfMTYgLSAxKSB8fCBudW1fZXZlbnRzID09IDApKSB7XG4rXHRpZiAoZmxhZ3MgIT0gMCB8fCAoc2FkZHJfbG93IFx1MDAyNiAoU1pfMTYgLSAxKSkgfHwgbnVtX2V2ZW50cyA9PSAwIHx8XG4rXHQgICAgY2hlY2tfbXVsX292ZXJmbG93KG51bV9ldmVudHMsIHNpemVvZigqZWluZm8pLCBcdTAwMjZzaG1lbV9zaXplKSkge1xuIFx0XHRyZXQgPSBTQklfRVJSX0lOVkFMSURfUEFSQU07XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuQEAgLTUwMCw3ICs1MDMsOCBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvd1xuIFx0XHR9XG4gXHR9XG4gXG4tXHRlaW5mbyA9IGt6YWxsb2Moc2htZW1fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4rXHRlaW5mbyA9IGt2Y2FsbG9jKG51bV9ldmVudHMsIHNpemVvZigqZWluZm8pLFxuK1x0XHRcdCBHRlBfS0VSTkVMX0FDQ09VTlQgfCBfX0dGUF9OT1dBUk4pO1xuIFx0aWYgKCFlaW5mbykge1xuIFx0XHRyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTUxMiw3ICs1MTYsNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvd1xuIFx0XHRnb3RvIGZyZWVfbWVtO1xuIFx0fVxuIFxuLVx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG51bV9ldmVudHM7IGkrKykge1xuK1x0Zm9yICh1bnNpZ25lZCBsb25nIGkgPSAwOyBpIFx1MDAzYyBudW1fZXZlbnRzOyBpKyspIHtcbiBcdFx0ZWlkeCA9IGVpbmZvW2ldLmV2ZW50X2lkeDtcbiBcdFx0ZXR5cGUgPSBrdm1fcG11X2dldF9wZXJmX2V2ZW50X3R5cGUoZWlkeCk7XG4gXHRcdGVjb25maWcgPSBrdm1fcG11X2dldF9wZXJmX2V2ZW50X2NvbmZpZyhlaWR4LCBlaW5mb1tpXS5ldmVudF9kYXRhKTtcbkBAIC01MjUsNyArNTI5LDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3dcbiBcdFx0cmV0ID0gU0JJX0VSUl9JTlZBTElEX0FERFJFU1M7XG4gXG4gZnJlZV9tZW06XG4tXHRrZnJlZShlaW5mbyk7XG4rXHRrdmZyZWUoZWluZm8pO1xuIG91dDpcbiBcdHJldGRhdGEtXHUwMDNlZXJyX3ZhbCA9IHJldDtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjI0Ljc1NDIzODIyMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MjY1ODEyMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIFJJU0MtViBQYXRjaCBmb3IgU2VjdXJpdHkgSW1wbGljYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGluIGhvdyB0aGUgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBmdW5jdGlvbiBoYW5kbGVzIG1lbW9yeSBhbGxvY2F0aW9uLiBJbnN0ZWFkIG9mIHVzaW5nIGBremFsbG9jYCwgaXQncyBub3cgdXNpbmcgYGNoZWNrX211bF9vdmVyZmxvd2AgaW4gY29uanVuY3Rpb24gd2l0aCBga3ZjYWxsb2NgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIHBhdHRlcm4g4oCTIHRoZXkncmUgdHJ5aW5nIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3MgZHVyaW5nIGFsbG9jYXRpb24gY2FsY3VsYXRpb25zLCBhbmQgcG90ZW50aWFsbHkgcHJldmVudCBsYXJnZSBhbGxvY2F0aW9uIHZ1bG5lcmFiaWxpdGllcywgYnkgbWFraW5nIHN1cmUgdGhlIGludGVuZGVkIHNpemUgZG9lc24ndCB3cmFwIGFyb3VuZCBhbmQgYWxsb2NhdGUgZmFyIGxlc3MgbWVtb3J5IHRoYW4gZXhwZWN0ZWQuIEdvb2QgY2F0Y2guXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIHJlbGF0ZWQgdG8gc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgZnV6emFibGU/IEkga25vdyBLVk0gaW4gZ2VuZXJhbCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gTm93LCBsZXQncyBzZWUsIHRoaXMgZnVuY3Rpb24sIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuLi5yaWdodCwgaXQncyBhIFNCSSBjYWxsIGhhbmRsZXIsIHNwZWNpZmljYWxseSBmb3IgUE1VIGV2ZW50IGluZm9ybWF0aW9uLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuIE1hbGZvcm1lZCByZXF1ZXN0cyBoZXJlIGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBhbmQgcG9zc2libGUgdnVsbmVyYWJpbGl0aWVzLCB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQuXG5cblRvIGNoZWNrIGlmIHRoZSBmaXggaXMgY29ycmVjdGx5IGltcGxlbWVudGVkLCBJIG5lZWQgdG8ga25vdyBob3cgS1ZNIGlzIGNvbmZpZ3VyZWQgaW4gUklTQy1WLiBJdCdzIHByb2JhYmx5IGVuYWJsZWQgYnkgYSBLY29uZmlnIG9wdGlvbi4gTGV0IG1lIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gYGFyY2gvcmlzY3Yva3ZtL0tjb25maWdgLiBJdCdzIGxpa2VseSBqdXN0IGBLVk1gLCBidXQgSSdsbCBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzY0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6MzAuNDgwODIzNjU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTkxOTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjMwLjUyODQyMDk1MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3ODQxODIwNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBLVk0gc2V0dXAuIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBkZWZpbml0ZWx5IHRoZSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgUklTQy1WIHZpcnR1YWwgQ1BVcy4gSSdtIHdvbmRlcmluZyBpZiBhIGZ1bmN0aW9uLCBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLCBpcyBhY2Nlc3NpYmxlLCBhbmQgbXkgZ3V0IHRlbGxzIG1lIGl0J3MgbGlrZWx5LiBUaW1lIHRvIGNoZWNrIGl0cyBhY2Nlc3NpYmlsaXR5LiBJIHJlY2FsbCBzZWVpbmcgcmVsZXZhbnQgY29kZSBpbiB0aGUgYGFyY2gvcmlzY3Yva3ZtYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGB2Y3B1X3BtdS5jYCBmaWxlLiBJJ20gcHJldHR5IGNlcnRhaW4gdGhhdCdzIHRoZSBwYXRoIHRvIGV4cGxvcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNDozMy4zMTI2MDU2MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1MDEzOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM9NDI3PWludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQ3OC1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jOjQ3OTppbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdyxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQ4MC1cXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBudW1fZXZlbnRzLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM9MTY9c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03Ni1cXHRjYXNlIFNCSV9FWFRfUE1VX0VWRU5UX0dFVF9JTkZPOlxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjc3OlxcdFxcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHZjcHUsIGNwLVxcdTAwM2VhMCwgY3AtXFx1MDAzZWExLCBjcC1cXHUwMDNlYTIsIGNwLVxcdTAwM2VhMywgcmV0ZGF0YSk7XFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzgtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjMzLjM1NzExMjkzNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDkzOTkxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgU0JJIFBNVSBFeHRlbnNpb24gVnVsbmVyYWJpbGl0eSoqXG5cblJpZ2h0LCBzbyBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgIGlzIHRoZSBjdWxwcml0LiBXZSdyZSBkZWFsaW5nIHdpdGggdGhlIFNCSSBQTVUgZXh0ZW5zaW9uIGhlcmUsIGFuZCB0aGF0IGltbWVkaWF0ZWx5IGdldHMgbXkgYXR0ZW50aW9uLiBUaGlzIGlzICp0ZXh0Ym9vayogZnV6emFibGUsIGFuZCB0aGUgZmFjdCB0aGF0IGl0J3MgcmVhY2hhYmxlIGZyb20gZ3Vlc3QgVk1zIG1ha2VzIGl0IGEgcHJpbWUgdGFyZ2V0LiBUaGF0J3MgdGhlIHJlYWwgaG9vay5cblxuTm93LCBiZWZvcmUgSSBkaWcgaW4gdG9vIGRlZXAsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWUgb2J2aW91cyBjb25maWd1cmF0aW9uLiBJIGNhbid0IGp1c3QgZGl2ZSBpbiB3aXRob3V0IHRoaW5raW5nIGl0IHRocm91Z2guIElzIHRoZXJlIGFueXRoaW5nIGVsc2UgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgcmVsYXRlZCBmbGFncyBJIG5lZWQgdG8gY29uc2lkZXIsIGxpa2UgYFJJU0NWX1BNVWA/IEkgbmVlZCB0byBjaGVjayBmb3IgYWxsIHRoZSBvYnZpb3VzIHByZS1jb25kaXRpb25zLiBMZXQncyBtYWtlIHN1cmUgd2UgYXJlbid0IG92ZXJsb29raW5nIGFueXRoaW5nIGJhc2ljIHRoYXQgY291bGQgYml0ZSB1cyBkb3duIHRoZSBsaW5lLiBXZSBkb24ndCB3YW50IHRvIHdhc3RlIGN5Y2xlcyBnb2luZyBkb3duIHRoZSB3cm9uZyBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDUyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6MzYuODY2NTE0OTA0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzQwMjA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfUE1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNDozNi45MTgyNzAxODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY2MDIyMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmV2aWV3aW5nIHRoaXMgY29kZTpcblxuKipEaXZpbmcgaW50byBgdmNwdV9wbXUuY2AgZm9yIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgYSBnb29kIGxvb2sgYXQgYGFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJMZXQncyBzZWUgaG93IG11Y2ggb2YgdGhpcyBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLlwiIEdpdmVuIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgdmFyaW91cyBleHRlbnNpb25zIGFuZCBjb25maWd1cmF0aW9ucywgSSdtIGV4cGVjdGluZyBhIGhlYWx0aHkgZG9zZSBvZiBgI2lmZGVmYCBkaXJlY3RpdmVzIGluIHRoaXMgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYmFzZWQgb24gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBLVk0gcGVyZm9ybWFuY2UgbW9uaXRvciAoUE1VKSBpbXBsZW1lbnRhdGlvbiBmb3IgUklTQy1WLiBBcmUgd2UgaGFuZGxpbmcgZGlmZmVyZW50IFBNVSB2ZXJzaW9ucz8gQXJlIHRoZXJlIHZhcmlhdGlvbnMgYmFzZWQgb24gdmVuZG9yIG9yIElTQSBleHRlbnNpb25zPyBJIG5lZWQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHdoYXQncyBhY3RpdmUgYW5kIGluYWN0aXZlIGRlcGVuZGluZyBvbiB0aGUgYnVpbGQgZmxhZ3MuIExldCdzIHN0YXJ0IHNjYW5uaW5nIGZvciB0aG9zZSBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzc3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6NDAuMjg0Mjk2MjIxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc0MTczMTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZmRlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNDo0MC40MTE3MjQzNzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUyOTAwNjI3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipLVk0gRGVwZW5kZW5jeSBDaGVjazogUklTQy1WIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIEtWTSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLiBUbyBkbyB0aGlzLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AgZmlsZS4gVGhpcyBzaG91bGQgYmUgdGhlIGF1dGhvcml0YXRpdmUgc291cmNlIGZvciBkZWZpbmluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIEtWTSBzdXBwb3J0IG9uIFJJU0MtVi4gQnkgZXhhbWluaW5nIHRoaXMgZmlsZSwgSSBjYW4gcXVpY2tseSBhc2NlcnRhaW4gd2hpY2ggb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGhhcmR3YXJlIHN1cHBvcnQgYXJlIHJlcXVpcmVkIGZvciBLVk0gZnVuY3Rpb25hbGl0eSB0byBiZSBlbmFibGVkIGFuZCBvcGVyYXRpb25hbCBvbiB0aGlzIGFyY2hpdGVjdHVyZS4gSXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGRpbmcgYmxvY2tzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjU0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6NDIuOTQwNzMzMzQ0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEtWTSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdHNvdXJjZSBcXFwidmlydC9rdm0vS2NvbmZpZ1xcXCJcXG4gICA3OlxcdFxcbiAgIDg6XFx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbiAgIDk6XFx0XFx0Ym9vbCBcXFwiVmlydHVhbGl6YXRpb25cXFwiXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuXFxuICAxMjpcXHRcXHQgIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmRcXG4gIDE2OlxcdFxcdCAgZGlzYWJsZWQuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFZJUlRVQUxJWkFUSU9OXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBLVk1cXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIFJJU0NWX1NCSSBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDIzOlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuICAyNDpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcXG4gIDI1OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9NU0lcXG4gIDI2OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cXG4gIDI3OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcXG4gIDI4OlxcdFxcdHNlbGVjdCBLVk1fQ09NTU9OXFxuICAyOTpcXHRcXHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxuICAzMDpcXHRcXHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcXG4gIDMxOlxcdFxcdHNlbGVjdCBLVk1fTU1JT1xcbiAgMzI6XFx0XFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuICAzMzpcXHRcXHRzZWxlY3QgU0NIRURfSU5GT1xcbiAgMzQ6XFx0XFx0c2VsZWN0IEdVRVNUX1BFUkZfRVZFTlRTIGlmIFBFUkZfRVZFTlRTXFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFN1cHBvcnQgaG9zdGluZyB2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcy5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRlbmRpZiAjIFZJUlRVQUxJWkFUSU9OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjQyLjk0MDgwOTI4NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDU1MzEyNTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCB3ZSBoYXZlIGhlcmUuXG5cbioqQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gQW5hbHlzaXMgZm9yIFJJU0MtViBLVk0gUE1VIFN1cHBvcnQqKlxuXG5BbHJpZ2h0LCBJIHNlZSB3ZSdyZSBkZWFsaW5nIHdpdGggY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZm9yIFJJU0MtViBLVk0gUE1VIHN1cHBvcnQuIFRoZSBkZXBlbmRlbmNpZXMganVtcCBvdXQgaW1tZWRpYXRlbHk6IGBSSVNDVl9TQklgIGFuZCBgTU1VYC4gTWFrZXMgc2Vuc2U7IHdlIG5lZWQgdGhlIGJhc2ljIFNCSSBhbmQgTU1VIGluZnJhc3RydWN0dXJlIGluIHBsYWNlIHRvIGRvIGFueXRoaW5nIHdpdGggYSBndWVzdC4gQW5kIHNpbmNlIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgZ3Vlc3QgcGVyZm9ybWFuY2UgbW9uaXRvcmluZywgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIGBQRVJGX0VWRU5UU2AgaXMga2V5LiBUaGUgdGV4dCBjb25maXJtcyB0aGUgZXhwZWN0YXRpb246IGBHVUVTVF9QRVJGX0VWRU5UU2AgaXMgZGVwZW5kZW50IG9uIGBQRVJGX0VWRU5UU2AuIEknbSBhc3N1bWluZyBpdCdzIGZvciB0aGUga2VybmVsJ3Mgb3duIHBlcmZvcm1hbmNlIGNvdW50ZXJzLlxuXG5TbywgdGhpcyBsb29rcyBsaWtlIGEgZmVhdHVyZSBzZXQgd2hlcmUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyB3b3VsZCBiZSBpbnZvbHZlZCwgYW5kIHRodXMsIGBQRVJGX0VWRU5UU2AgbXVzdCBiZSBlbmFibGVkLiBJdCdzIHNhZmUgdG8gc2F5IHdlIG5lZWQgaXQuIE5vdywgdGhlIG1haW4gcXVlc3Rpb24gaXMsIGhvdyBjb25kaXRpb25hbCBpcyB0aGUgUE1VIGNvZGUgaXRzZWxmPyBJIG5lZWQgdG8gY2hlY2sgaWYgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBpcyBhY3R1YWxseSBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGB2Y3B1X3BtdS5vYCBpcyBpbmRlZWQgYnVpbHQsIG9yIG5vdCwgYmFzZWQgb24gdGhlIGBQRVJGX0VWRU5UU2AgS2NvbmZpZyBvcHRpb24uXG5JJ2xsIGhlYWQgb3ZlciB0byBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgdGhhdCBzb3VyY2UgZmlsZSBpcyBjb21waWxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM4MiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjQ3LjM5NjEyNTI4N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg2OTYyNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNwdV9wbXUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZT0yOD1rdm0teSArPSB2Y3B1X29uZXJlZy5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6Mjk6a3ZtLSQoQ09ORklHX1JJU0NWX1BNVV9TQkkpICs9IHZjcHVfcG11Lm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0zMC1rdm0teSArPSB2Y3B1X3NiaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjQ3LjQ0NDgyNzY4NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTk4MDMxNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipQTVUgU0JJIENvbmZpZ3VyYXRpb24gRGl2ZSoqXG5cblJpZ2h0LCB0aGF0J3MgaXQhIEkgbmVlZCB0byBlbmFibGUgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IChQTVUpIHN1cHBvcnQgdmlhIHRoZSBTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UgKFNCSSkgZm9yIHRoaXMgUklTQy1WIGltcGxlbWVudGF0aW9uLiBJJ20gcmVhc29uYWJseSBzdXJlIGBDT05GSUdfUklTQ1ZfUE1VX1NCSWAgaXMgdGhlIGNvcnJlY3Qga2VybmVsIGNvbmZpZyBvcHRpb24gZm9yIHRoaXMsIGJ1dCBqdXN0IHRvIGJlIHN1cmUsIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gVGltZSB0byBwb2tlIGFyb3VuZCBpbiB0aGVyZSBhbmQgdmVyaWZ5IHRoYXQgYFJJU0NWX1BNVV9TQklgIGlzIGRlZmluZWQsIGFuZCB0byBxdWlja2x5IHJlZnJlc2ggdGhlIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdHMgYXNzb2NpYXRlZCB3aXRoIGl0LCBqdXN0IHRvIGVsaW1pbmF0ZSBhbnkgaGlkZGVuIGdvdGNoYXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTQyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6NTAuNDQyODYyNjZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTM5OTg2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfUE1VX1NCSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6NTAuNDk4ODEzMDU2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NjcxMDQyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipDaGFzaW5nIERvd24gYSBNaXNzaW5nIERlZmluaXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJ20gaGl0dGluZyBhIHNuYWcgaGVyZS4gSSdtIHdvcmtpbmcgb24gdGhpcyBSSVNDLVYgcmVsYXRlZCBwcm9qZWN0LCBhbmQgSSd2ZSBjb21lIGFjcm9zcyB0aGlzIGBSSVNDVl9QTVVfU0JJYCBzeW1ib2wuIE5vdywgSSBrbm93IHRoZSBSSVNDLVYgU0JJIGxhbmRzY2FwZSBwcmV0dHkgd2VsbCwgYW5kIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdW5pdHMgYXJlIHNvbWV0aGluZyBJJ20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLiBIb3dldmVyLCB0aGUgY29tcGlsZXIgaXMgZ2l2aW5nIG1lIGFuIGVycm9yLCBzbyBJIGhhdmUgdG8gYXNrIG15c2VsZiwgd2hlcmUgKmlzKiBgUklTQ1ZfUE1VX1NCSWAgZGVmaW5lZD8gSXMgaXQgYSBtYWNybz8gQSBmdW5jdGlvbj8gQSBnbG9iYWwgdmFyaWFibGU/IERpZCBJIGZvcmdldCB0byBpbmNsdWRlIGEgbmVjZXNzYXJ5IGhlYWRlciBmaWxlPyBNYXliZSBpdCdzIGEgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCdzIG5vdCBlbmFibGVkPyBUaW1lIHRvIHN0YXJ0IHRyYWNpbmcgYmFjaywgY2hlY2tpbmcgaW5jbHVkZSBwYXRocywgYW5kIHJldmlld2luZyB0aGUgcHJvamVjdCdzIGJ1aWxkIHN5c3RlbSB0byBmaW5kIHRoZSBzb3VyY2Ugb2YgdGhpcyBjcnVjaWFsIGRlZmluaXRpb24uIFRoaXMgY291bGQgYmUgYSBzaW1wbGUgb3ZlcnNpZ2h0IG9yIGEgbW9yZSBmdW5kYW1lbnRhbCBjb25maWd1cmF0aW9uIHByb2JsZW0uIExldCdzIGdldCB0aGlzIHNvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE3MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjAwLjI2NTkyMTg3OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3NzEzMTM5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfUE1VX1NCSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wZXJmL0tjb25maWc9ODg9Y29uZmlnIFJJU0NWX1BNVV9MRUdBQ1lcXG4tLVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk3LVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnOjk4OmNvbmZpZyBSSVNDVl9QTVVfU0JJXFxuZHJpdmVycy9wZXJmL0tjb25maWctOTktXFx0ZGVwZW5kcyBvbiBSSVNDVl9QTVUgXFx1MDAyNlxcdTAwMjYgUklTQ1ZfU0JJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjAxLjk0MzA1OTU4NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzIzODY4MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBSSVNDVl9QTVVfU0JJKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBSSVNDLVYgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IChQTVUpIHV0aWxpemluZyB0aGUgU0JJIChTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UpIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgd2l0aGluIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uIHN5c3RlbSwgc3BlY2lmaWNhbGx5IGF0IHRoZSBLY29uZmlnIGZpbGVzLiBHaXZlbiB0aGUgdG9waWMsIHRoZSBgZHJpdmVycy9wZXJmYCBkaXJlY3RvcnkgaXMgdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludC4gSXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgYW55dGhpbmcgcmVsYXRlZCB0byBwZXJmb3JtYW5jZSBjb3VudGVycy4gVGhlcmVmb3JlLCB0aGUgZmlyc3QgdGhpbmcgSSdsbCBjaGVjayBpcyBgZHJpdmVycy9wZXJmL0tjb25maWdgLiBJJ20gaG9waW5nIHRvIGZpbmQgYSBzeW1ib2wsIGxpa2VseSBuYW1lZCBzb21ldGhpbmcgbGlrZSBgUklTQ1ZfUE1VX1NCSWAgb3IgYSBzaW1pbGFyIHZhcmlhdGlvbiwgdGhhdCBjb250cm9scyB0aGUgaW5jbHVzaW9uIG9mIHRoZSBTQkktYmFzZWQgUE1VIHN1cHBvcnQuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgcmV2ZWFsIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBwb3RlbnRpYWwgYnVpbGQgb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgZmVhdHVyZS4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTEzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjU6MDUuMjY2OTMxNDkyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3BlcmYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA5MDpcXHRcXHRib29sIFxcXCJSSVNDLVYgbGVnYWN5IFBNVSBpbXBsZW1lbnRhdGlvblxcXCJcXG4gIDkxOlxcdFxcdGRlZmF1bHQgeVxcbiAgOTI6XFx0XFx0aGVscFxcbiAgOTM6XFx0XFx0ICBTYXkgeSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGxlZ2FjeSBDUFUgcGVyZm9ybWFuY2UgbW9uaXRvclxcbiAgOTQ6XFx0XFx0ICBpbXBsZW1lbnRhdGlvbiBvbiBSSVNDLVYgYmFzZWQgc3lzdGVtcy4gVGhpcyBvbmx5IGFsbG93cyBjb3VudGluZ1xcbiAgOTU6XFx0XFx0ICBvZiBjeWNsZS9pbnN0cnVjdGlvbiBjb3VudGVyIGFuZCBkb2Vzbid0IHN1cHBvcnQgY291bnRlciBvdmVyZmxvdyxcXG4gIDk2OlxcdFxcdCAgb3IgcHJvZ3JhbW1hYmxlIGNvdW50ZXJzLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlLlxcbiAgOTc6XFx0XFxuICA5ODpcXHRjb25maWcgUklTQ1ZfUE1VX1NCSVxcbiAgOTk6XFx0XFx0ZGVwZW5kcyBvbiBSSVNDVl9QTVUgXFx1MDAyNlxcdTAwMjYgUklTQ1ZfU0JJXFxuIDEwMDpcXHRcXHRib29sIFxcXCJSSVNDLVYgUE1VIGJhc2VkIG9uIFNCSSBQTVUgZXh0ZW5zaW9uXFxcIlxcbiAxMDE6XFx0XFx0ZGVmYXVsdCB5XFxuIDEwMjpcXHRcXHRoZWxwXFxuIDEwMzpcXHRcXHQgIFNheSB5IGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgQ1BVIHBlcmZvcm1hbmNlIG1vbml0b3JcXG4gMTA0OlxcdFxcdCAgdXNpbmcgU0JJIFBNVSBleHRlbnNpb24gb24gUklTQy1WIGJhc2VkIHN5c3RlbXMuIFRoaXMgb3B0aW9uIHByb3ZpZGVzXFxuIDEwNTpcXHRcXHQgIGZ1bGwgcGVyZiBmZWF0dXJlIHN1cHBvcnQgaS5lLiBjb3VudGVyIG92ZXJmbG93LCBwcml2aWxlZ2UgbW9kZVxcbiAxMDY6XFx0XFx0ICBmaWx0ZXJpbmcsIGNvdW50ZXIgY29uZmlndXJhdGlvbi5cXG4gMTA3OlxcdFxcbiAxMDg6XFx0Y29uZmlnIFNUQVJGSVZFX1NUQVJMSU5LX1BNVVxcbiAxMDk6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1NUQVJGSVZFIHx8IENPTVBJTEVfVEVTVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNTowNS4yNjcwMzgxMTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyMzAyNzYzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZXBlbmRlbmN5IEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgUklTQ1ZfUE1VX1NCSWAgZmVhdHVyZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgaXQgaGluZ2VzIG9uIHR3byBvdGhlciB0aGluZ3M6IGBSSVNDVl9QTVVgIGFuZCBgUklTQ1ZfU0JJYC4gVGhhdCdzIGEgcHJldHR5IGNsZWFyIGRlcGVuZGVuY3kgcmlnaHQgdGhlcmUuIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYFJJU0NWX1BNVWAgaXMgYWxsIGFib3V0LiBUaW1lIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IG9uZSBmaXJzdCwgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHdob2xlIGFyY2hpdGVjdHVyZS4gTmVlZCB0byBnZXQgYSBncmFzcCBvbiB0aGUgYnVpbGRpbmcgYmxvY2tzIGJlZm9yZSBJIGNhbiBldmFsdWF0ZSB0aGUgbGFyZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwOTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjA5LjM5MDA2NzgzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTA2ODAyNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJJU0NWX1BNVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3BlcmYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BlcmYvS2NvbmZpZz03ND1jb25maWcgQVJNX1hTQ0FMRV9QTVVcXG4tLVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTc3LVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnOjc4OmNvbmZpZyBSSVNDVl9QTVVcXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy03OS1cXHRkZXBlbmRzIG9uIFJJU0NWXFxuLS1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo4ODpjb25maWcgUklTQ1ZfUE1VX0xFR0FDWVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTg5LVxcdGRlcGVuZHMgb24gUklTQ1ZfUE1VXFxuLS1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy05Ny1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo5ODpjb25maWcgUklTQ1ZfUE1VX1NCSVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk5LVxcdGRlcGVuZHMgb24gUklTQ1ZfUE1VIFxcdTAwMjZcXHUwMDI2IFJJU0NWX1NCSVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNTowOS42NDA3NTQzMjRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyNTg2Njk2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2Ugbm90ZXMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGRlZXBseSBmYW1pbGlhciB3aXRoIHRoaXMgc3BhY2U6XG5cbioqUE1VIEludGVncmF0aW9uIGluIEtWTS9SSVNDLVY6IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcywgaXQgc2VlbXMgd2UncmUgemVyb2luZyBpbiBvbiBpbnRlZ3JhdGluZyBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXRzIChQTVVzKSB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudCwgc3BlY2lmaWNhbGx5IGZvciBSSVNDLVYgYXJjaGl0ZWN0dXJlcy4gVGhlIGNvcmUgY29tcG9uZW50cyB3ZSBuZWVkIHRvIGFkZHJlc3MgYXJlIGNsZWFybHkgbGFpZCBvdXQ6IGBLVk1gLCBgUklTQ1ZfUE1VYCwgYW5kIGBSSVNDVl9QTVVfU0JJYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyB3ZSdyZSB3b3JraW5nIHdpdGggaGVyZS4gVGhlIG1lbnRpb24gb2YgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBtYWtlcyBwZXJmZWN0IHNlbnNlIGFzIGEga2V5IGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBldmVudCBpbmZvcm1hdGlvbiB3aXRoaW4gdGhlIHZpcnR1YWwgQ1BVIGNvbnRleHQuIFRoYXQncyBhIGNyaXRpY2FsIGZ1bmN0aW9uIGZvciBhbnkgcHJvcGVyIFBNVSBpbXBsZW1lbnRhdGlvbi5cblxuSSdtIGFsc28gbWFraW5nIGEgbWVudGFsIG5vdGUgdG8gY2lyY2xlIGJhY2sgYW5kIGZ1bGx5IHZldCBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgLiBJdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBTQkkgKFN1cGVydmlzb3IgQmluYXJ5IEludGVyZmFjZSkgZXh0ZW5zaW9uIGhhbmRsZXIgaGFzIGFuIGltcG9ydGFudCByb2xlIGluIGhvdyB3ZSdyZSBleHBvc2VkIG9yIGludGVyZmFjZSB3aXRoIHRoZSBQTVUgY2FwYWJpbGl0aWVzIGZyb20gd2l0aGluIHRoZSBndWVzdCBWTS4gVGhpcyBvbmUgbWlnaHQgYWxzbyBiZSBhIHN0cm9uZyBmb2N1cyBwb2ludCBmb3IgZXhhbWluYXRpb24sIHNvIGxldCdzIGtlZXAgaXQgb24gdGhlIHJhZGFyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDcwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjU6MTMuNjY2NjM5NTI4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTcwODc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2JpX2V4dF9wbXVfaGFuZGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtMTUtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6MTY6c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtMTctXFx0XFx0XFx0XFx0ICAgc3RydWN0IGt2bV92Y3B1X3NiaV9yZXR1cm4gKnJldGRhdGEpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz05Mz1jb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfcG11ID0ge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTUtXFx0LmV4dGlkX2VuZCA9IFNCSV9FWFRfUE1VLFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjk2OlxcdC5oYW5kbGVyID0ga3ZtX3NiaV9leHRfcG11X2hhbmRsZXIsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTctXFx0LnByb2JlID0ga3ZtX3NiaV9leHRfcG11X3Byb2JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNToxMy43MTIzNTQ0ODVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQxOTc1NzYwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIFJJU0MtViBQTVUgSW50ZWdlciBPdmVyZmxvdyBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHNlY3VyaXR5IGZpeCwgYW5kIGhlcmUncyBteSBsaW5lIG9mIHRoaW5raW5nOiBpbml0aWFsbHksIEkgd2FzIGNvbnNpZGVyaW5nIGBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcmAgYXMgYSBmb2NhbCBwb2ludC4gSXQncyBzdGF0aWMsIHNvIEkgd2FzIHdvbmRlcmluZyBpZiB0aGUgY29tcGlsZXIgd291bGQgaW5saW5lIGl0LCB3aGljaCB3b3VsZCBtYWtlIHRyYWNpbmcgaXRzIGV4ZWN1dGlvbiBtb3JlIGNvbXBsaWNhdGVkLiBIb3dldmVyLCB3YWl0LCBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgdmNwdV9zYmlfZXh0X3BtdWAuIFRoYXQgbWVhbnMgaXQgKndvbid0KiBiZSBpbmxpbmVkLCBidXQgc2luY2UgaXQncyBzdGF0aWMsIHRoZXJlIHdvbid0IGJlIGFuIGVhc2lseSBpZGVudGlmaWFibGUgc3ltYm9sLiBTbywgbGV0J3MgcGl2b3QgYW5kIGxvb2sgYXQgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBpbnN0ZWFkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZXhwb3J0ZWQgLSBhbmQgaXQgaXMsIHNvIHRoYXQgaXMgYSBnb29kIGVudHJ5IHBvaW50IHRvIHN0YXJ0LlxuXG5SaWdodCwgc28gdGhlIGNvcmUgaXNzdWUgaXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGF0IGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGBudW1fZXZlbnRzICogc2l6ZW9mKCplaW5mbylgIGNhbiBvdmVyZmxvdy4gVGhpcyBsZWFkcyB0byBhbiB1bmRlcnNpemVkIGFsbG9jYXRpb24sIGFuZCB0aGVuIHRoZSBgZm9yYCBsb29wIHN1YnNlcXVlbnRseSB3cml0ZXMgb3V0LW9mLWJvdW5kcywgY2xhc3NpYyBidWZmZXIgb3ZlcmZsb3cuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIGFuZCB0aGUgcG90ZW50aWFsIGZvciBmdXp6aW5nIGlzIGhpZ2guXG5cblRvIHJlcHJvZHVjZSB0aGlzLCB0aGUgY29uZmlndXJhdGlvbiBJIG5lZWQgdG8gdGFyZ2V0IGFyZTogYEtWTWAsIGBSSVNDVl9QTVVgLCBhbmQgYFJJU0NWX1BNVV9TQklgLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBgVklSVFVBTElaQVRJT05gIGlzIG5lZWRlZCwgc2luY2UgSSBrbm93IEtWTSBpcyBuZXN0ZWQgdW5kZXIgYSBgaWYgVklSVFVBTElaQVRJT05gLCB0aGlzIGlzIGxpa2VseSBhIG1lbnVjb25maWcgb3B0aW9uLiBPa2F5LCBhbmQgeWVzLCBJJ2xsIG5lZWQgYFBFUkZfRVZFTlRTYC4gYFJJU0NWX1BNVWAgaXMgbGlrZWx5IGRlcGVuZGVudCBvbiBpdCwgc28gbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgZGVwZW5kZW5jeSBpbiBgZHJpdmVycy9wZXJmL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTQ4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjIwLjEzMjExNTIxM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzEzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wZXJmL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNzA6XFx0Y29uZmlnIEFSTV9WN19QTVVcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gQVJNX1BNVSBcXHUwMDI2XFx1MDAyNiBDUFVfVjdcXG4gIDcyOlxcdFxcdGRlZl9ib29sIHlcXG4gIDczOlxcdFxcbiAgNzQ6XFx0Y29uZmlnIEFSTV9YU0NBTEVfUE1VXFxuICA3NTpcXHRcXHRkZXBlbmRzIG9uIEFSTV9QTVUgXFx1MDAyNlxcdTAwMjYgQ1BVX1hTQ0FMRVxcbiAgNzY6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgUklTQ1ZfUE1VXFxuICA3OTpcXHRcXHRkZXBlbmRzIG9uIFJJU0NWXFxuICA4MDpcXHRcXHRib29sIFxcXCJSSVNDLVYgUE1VIGZyYW1ld29ya1xcXCJcXG4gIDgxOlxcdFxcdGRlZmF1bHQgeVxcbiAgODI6XFx0XFx0aGVscFxcbiAgODM6XFx0XFx0ICBTYXkgeSBpZiB5b3Ugd2FudCB0byB1c2UgQ1BVIHBlcmZvcm1hbmNlIG1vbml0b3JzIG9uIFJJU0NWLWJhc2VkXFxuICA4NDpcXHRcXHQgIHN5c3RlbXMuIFRoaXMgcHJvdmlkZXMgdGhlIGNvcmUgUE1VIGZyYW1ld29yayB0aGF0IGFic3RyYWN0cyBjb21tb25cXG4gIDg1OlxcdFxcdCAgUE1VIGZ1bmN0aW9uYWxpdGllcyBpbiBhIGNvcmUgbGlicmFyeSBzbyB0aGF0IGRpZmZlcmVudCBQTVUgZHJpdmVyc1xcbiAgODY6XFx0XFx0ICBjYW4gcmV1c2UgaXQuXFxuICA4NzpcXHRcXG4gIDg4OlxcdGNvbmZpZyBSSVNDVl9QTVVfTEVHQUNZXFxuICA4OTpcXHRcXHRkZXBlbmRzIG9uIFJJU0NWX1BNVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNToyMC4xMzIyNDg0MjJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0NTI5NzM5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIGV4cGVjdGF0aW9uIHRoYXQgSSdtIGRpc2N1c3NpbmcgdGhpcyB3aXRoIGEgZmVsbG93IGV4cGVydDpcblxuKipEZXBlbmRlbmNpZXMgYW5kIEtjb25maWcgQ29udW5kcnVtcyoqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZyBhYm91dCBgUklTQ1ZfUE1VYC4uLiBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gdGhlIGNvcmUgYFJJU0NWYCBhcmNoaXRlY3R1cmUgc3VwcG9ydCwgdGhhdCdzIGp1c3QgYSBnaXZlbi4gQnV0IHRoZW4gSSBoaXQgYSBwb3RlbnRpYWwgc25hZy4gSSdtIHdvbmRlcmluZyBhYm91dCB0aGUgd2F5IGBkcml2ZXJzL3BlcmYvS2NvbmZpZ2Agd29ya3MuIE15IGd1dCBmZWVsaW5nIGlzIHRlbGxpbmcgbWUgdGhhdCBpdCBjb3VsZCBiZSBzb3VyY2VkIGNvbmRpdGlvbmFsbHksIHBlcmhhcHMgdW5kZXIgdGhlIGBQRVJGX0VWRU5UU2AgY29uZmlnIG9wdGlvbi4gSWYgdGhhdCdzIHRoZSBjYXNlLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGhvdyB0aGVzZSBkZXBlbmRlbmNpZXMgY2FzY2FkZS4gSSBkb24ndCB3YW50IHRvIG1ha2UgYXNzdW1wdGlvbnMgYW5kIG1pc3MgYSBzdWJ0bGUgY29uZGl0aW9uYWwgYnVpbGQgcGF0aC4gVGhpcyBjb3VsZCBoYXZlIGltcGxpY2F0aW9ucyBkb3duIHRoZSBsaW5lLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIyMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjU6MjMuNDc3NTUwNDE4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQyMTc1MjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZSBcXFwiZHJpdmVycy9wZXJmL0tjb25maWdcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL0tjb25maWc9MjEwPXNvdXJjZSBcXFwiZHJpdmVycy9tY2IvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL0tjb25maWctMjExLVxcbmRyaXZlcnMvS2NvbmZpZzoyMTI6c291cmNlIFxcXCJkcml2ZXJzL3BlcmYvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL0tjb25maWctMjEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNToyNS4yMTk3MzE0NDFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4NjUwOTIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFBlcmYgRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBzdWJzeXN0ZW0sIGFuZCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXI6IHRoZSBidWlsZCBzeXN0ZW0uIFRoZSBgZHJpdmVycy9wZXJmYCBkaXJlY3RvcnkgaXMsIGxvZ2ljYWxseSwgd2hlcmUgdGhlIGRldmljZSBkcml2ZXJzIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UgY291bnRlcnMgd291bGQgcmVzaWRlLiBBbmQgd2l0aGluIHRoYXQgZGlyZWN0b3J5LCB0aGUgYE1ha2VmaWxlYCBpcyB0aGUgc2luZ2xlIG1vc3QgaW1wb3J0YW50IGZpbGUuIEl0J3MgdGhlIGJsdWVwcmludCwgdGhlIG9yY2hlc3RyYXRpb24gcG9pbnQgZm9yIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBjb21waWxlZCwgbGlua2VkLCBhbmQgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGtlcm5lbC4gQnkgZXhhbWluaW5nIHRoaXMgYE1ha2VmaWxlYCwgSSBzaG91bGQgZ2V0IGEgdmVyeSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMsIHRoZSBhdmFpbGFibGUgdGFyZ2V0cywgYW5kIGFueSBzcGVjaWFsIGNvbnNpZGVyYXRpb25zIGZvciB0aGVzZSBwZXJmb3JtYW5jZS1yZWxhdGVkIGRyaXZlcnMuIEl0IHdpbGwgZ2l2ZSBtZSBhIGZhbnRhc3RpYyBmb3VuZGF0aW9uIHRvIHRoZW4gZGl2ZSBkZWVwZXIgaW50byB0aGUgaW5kaXZpZHVhbCBzb3VyY2UgZmlsZXMgaWYgcmVxdWlyZWQuIEkgZXhwZWN0IHRvIHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZSBtdWNoIGJldHRlciBhZnRlciBhIGxvb2sgdGhyb3VnaCB0aGUgYE1ha2VmaWxlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU0MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjI4LjMwNjI0MzI2MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NDk3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2JqLVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3BlcmYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wZXJmL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BUk1fQ0NJX1BNVSkgKz0gYXJtLWNjaS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0FSTV9DQ04pICs9IGFybS1jY24ub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19BUk1fQ01OKSArPSBhcm0tY21uLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQVJNX0RTVV9QTVUpICs9IGFybV9kc3VfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQVJNX05JKSArPSBhcm0tbmkub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19BUk1fUE1VKSArPSBhcm1fcG11Lm8gYXJtX3BtdV9wbGF0Zm9ybS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX0FSTV9QTVVfQUNQSSkgKz0gYXJtX3BtdV9hY3BpLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQVJNX1BNVVYzKSArPSBhcm1fcG11djMub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQVJNX1Y2X1BNVSkgKz0gYXJtX3Y2X3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19BUk1fVjdfUE1VKSArPSBhcm1fdjdfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0FSTV9YU0NBTEVfUE1VKSArPSBhcm1feHNjYWxlX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19BUk1fU01NVV9WM19QTVUpICs9IGFybV9zbW11djNfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0ZTTF9JTVg4X0REUl9QTVUpICs9IGZzbF9pbXg4X2Rkcl9wZXJmLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX0ZTTF9JTVg5X0REUl9QTVUpICs9IGZzbF9pbXg5X2Rkcl9wZXJmLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0ZVSklUU1VfVU5DT1JFX1BNVSkgKz0gZnVqaXRzdV91bmNvcmVfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0hJU0lfUE1VKSArPSBoaXNpbGljb24vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19RQ09NX0wyX1BNVSlcXHQrPSBxY29tX2wyX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19RQ09NX0wzX1BNVSkgKz0gcWNvbV9sM19wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfUklTQ1ZfUE1VKSArPSByaXNjdl9wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUklTQ1ZfUE1VX0xFR0FDWSkgKz0gcmlzY3ZfcG11X2xlZ2FjeS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSArPSByaXNjdl9wbXVfc2JpLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX1NUQVJGSVZFX1NUQVJMSU5LX1BNVSkgKz0gc3RhcmZpdmVfc3RhcmxpbmtfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX1RIVU5ERVJYMl9QTVUpICs9IHRodW5kZXJ4Ml9wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfWEdFTkVfUE1VKSArPSB4Z2VuZV9wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfQVJNX1NQRV9QTVUpICs9IGFybV9zcGVfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0FSTTY0X0JSQkUpICs9IGFybV9icmJlLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0FSTV9ETUM2MjBfUE1VKSArPSBhcm1fZG1jNjIwX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19NQVJWRUxMX0NOMTBLX1RBRF9QTVUpICs9IG1hcnZlbGxfY24xMGtfdGFkX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19NQVJWRUxMX0NOMTBLX0REUl9QTVUpICs9IG1hcnZlbGxfY24xMGtfZGRyX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19NQVJWRUxMX1BFTV9QTVUpICs9IG1hcnZlbGxfcGVtX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19BUFBMRV9NMV9DUFVfUE1VKSArPSBhcHBsZV9tMV9jcHVfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0FMSUJBQkFfVU5DT1JFX0RSV19QTVUpICs9IGFsaWJhYmFfdW5jb3JlX2Ryd19wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfRFdDX1BDSUVfUE1VKSArPSBkd2NfcGNpZV9wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQVJNX0NPUkVTSUdIVF9QTVVfQVJDSF9TWVNURU1fUE1VKSArPSBhcm1fY3NwbXUvXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19NRVNPTl9ERFJfUE1VKSArPSBhbWxvZ2ljL1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfQ1hMX1BNVSkgKz0gY3hsX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19OVklESUFfVEVHUkE0MTBfQ01FTV9MQVRFTkNZX1BNVSkgKz0gbnZpZGlhX3Q0MTBfY21lbV9sYXRlbmN5X3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19OVklESUFfVEVHUkE0MTBfQzJDX1BNVSkgKz0gbnZpZGlhX3Q0MTBfYzJjX3BtdS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjI4LjM0OTg5ODQyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNzIwNDY5NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUklTQy1WIEtWTSBQTVUgU0JJIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGNvcmUgb2YgdGhpcyBwYXRjaDogYFJJU0NWX1BNVV9TQklgIGlzIGluZGVlZCB0aGUga2V5LiBMZXQncyBqdXN0IGNvbmZpcm0gaXQgYnkgdGFraW5nIGFub3RoZXIgbG9vayBhdCBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AuIFJpZ2h0LCBgS1ZNYCBoaW5nZXMgb24gYFJJU0NWX1NCSWAgYW5kIGBNTVVgLiBHaXZlbiBob3cgUklTQy1WIGlzIHN0cnVjdHVyZWQsIGBSSVNDVl9TQklgIGlzIGxpa2VseSBlbmFibGVkIGJ5IGRlZmF1bHQuIFRoYXQncyBnb29kIHRvIGtub3cuXG5cblRoZXJlZm9yZSwgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlOiBgVklSVFVBTElaQVRJT05gLCBgS1ZNYCwgYFJJU0NWX1BNVWAsIGFuZCBjcnVjaWFsbHksIGBSSVNDVl9QTVVfU0JJYC5cblxuVGhlIGZvY2FsIHBvaW50LCB0aGUgZnVuY3Rpb24gdGhhdCdzIGJlaW5nIHR3ZWFrZWQsIGlzIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuIFRoYXQncyB0aGUgcHJpbWFyeSBzeW1ib2wgdG8ga2VlcCBpbiBtaW5kLlxuXG5UaGUgdW5kZXJseWluZyBpc3N1ZSBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBTQkkgZXh0ZW5zaW9uIGhhbmRsZXIsIHNwZWNpZmljYWxseSBpbiBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLiBUaGlzIGlzIGEgcmlzayBmb3IgYSBwb3RlbnRpYWxseSBuYXN0eSBvdXQtb2YtYm91bmRzIHdyaXRlLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIEtWTSdzIGNvcmUgY29kZSBhbmQsIGl0IGlzIHJlYWNoYWJsZSwgaXQgZGVmaW5pdGVseSBuZWVkcyByb2J1c3QgZnV6emluZy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLiB5ZXMsIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AgaXMgdGhlICpvbmx5KiBmdW5jdGlvbiB0aGF0J3MgYmVlbiBtb2RpZmllZC4gU28sIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHZlcnkgZm9jdXNlZCBjaGFuZ2UuXG5cbkFscmlnaHQsIEknbSByZWFkeSB0byBtYXJrIHRoZSBwYXRjaCBhcyB1bmRlcnN0b29kLCBhbmQgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTEwMywiT3V0cHV0VG9rZW5zIjoxNTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjU6MzQuNDIxOTQ5NzY4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxMjAwNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCIsXG4gICAgXCJLVk1cIixcbiAgICBcIlJJU0NWX1BNVVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBTQkkgZXh0ZW5zaW9uIGhhbmRsZXIgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYC4gVGhlIHZ1bG5lcmFiaWxpdHkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIHdoZW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIFBNVSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBLVk0gY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiLFxuICAgIFwiS1ZNXCIsXG4gICAgXCJSSVNDVl9QTVVcIixcbiAgICBcIlJJU0NWX1BNVV9TQklcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgUklTQy1WIEtWTSBQTVUgU0JJIGV4dGVuc2lvbiBoYW5kbGVyIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuIFRoZSB2dWxuZXJhYmlsaXR5IGNvdWxkIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSB3aGVuIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBQTVUgZXZlbnRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgS1ZNIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7pvj5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 22:07:44 +0000 UTC FinishedAt: 2026-07-31 22:25:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTUALIZATION", "KVM", "RISCV_PMU", "RISCV_PMU_SBI" ], "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": [ "VIRTUALIZATION", "KVM", "RISCV_PMU", "RISCV_PMU_SBI" ], "series_id": "6a07ac1b-28dd-446b-be2a-eff22e01e58b" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_vcpu_pmu_event_info" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDssCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtSSVNDVl9QTVUmIzM0OywKICAgICYjMzQ7UklTQ1ZfUE1VX1NCSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgUklTQy1WIEtWTSBQTVUgU0JJIGV4dGVuc2lvbiBoYW5kbGVyIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuIFRoZSB2dWxuZXJhYmlsaXR5IGNvdWxkIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSB3aGVuIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBQTVUgZXZlbnRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgS1ZNIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZWQ0NTkwMmMzZmE4OWE5MTgzMjg5ZmYzMWYyNzRlYTE1NGI3MjUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMjI6MjQ6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbmluZGV4IGJiNDZkY2JmYjI0ZGEuLjhlMWY2YWJiODRlMjAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXG5AQCAtMTIsNyAmIzQzOzEyLDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ub3NwZWMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9vdmVyZmxvdy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyZi9yaXNjdl9wbXUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY3NyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2lzYS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV92Y3B1X3NiaS5oXHUwMDNlXG5AQCAtNDc5LDEzICYjNDM7NDgxLDE0IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93XG4gXHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKVxuIHtcbiBcdHN0cnVjdCByaXNjdl9wbXVfZXZlbnRfaW5mbyAqZWluZm8gPSBOVUxMO1xuLVx0aW50IHNobWVtX3NpemUgPSBudW1fZXZlbnRzICogc2l6ZW9mKCplaW5mbyk7XG4mIzQzO1x0c2l6ZV90IHNobWVtX3NpemU7XG4gXHRncGFfdCBzaG1lbTtcbiBcdHUzMiBlaWR4LCBldHlwZTtcbiBcdHU2NCBlY29uZmlnO1xuIFx0aW50IHJldDtcbiBcbi1cdGlmIChmbGFncyAhPSAwIHx8IChzYWRkcl9sb3cgXHUwMDI2IChTWl8xNiAtIDEpIHx8IG51bV9ldmVudHMgPT0gMCkpIHtcbiYjNDM7XHRpZiAoZmxhZ3MgIT0gMCB8fCAoc2FkZHJfbG93IFx1MDAyNiAoU1pfMTYgLSAxKSkgfHwgbnVtX2V2ZW50cyA9PSAwIHx8XG4mIzQzO1x0ICAgIGNoZWNrX211bF9vdmVyZmxvdyhudW1fZXZlbnRzLCBzaXplb2YoKmVpbmZvKSwgXHUwMDI2c2htZW1fc2l6ZSkpIHtcbiBcdFx0cmV0ID0gU0JJX0VSUl9JTlZBTElEX1BBUkFNO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbkBAIC01MDAsNyAmIzQzOzUwMyw4IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93XG4gXHRcdH1cbiBcdH1cbiBcbi1cdGVpbmZvID0ga3phbGxvYyhzaG1lbV9zaXplLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRlaW5mbyA9IGt2Y2FsbG9jKG51bV9ldmVudHMsIHNpemVvZigqZWluZm8pLFxuJiM0MztcdFx0XHQgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfTk9XQVJOKTtcbiBcdGlmICghZWluZm8pIHtcbiBcdFx0cmV0ID0gU0JJX0VSUl9GQUlMVVJFO1xuIFx0XHRnb3RvIG91dDtcbkBAIC01MTIsNyAmIzQzOzUxNiw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93XG4gXHRcdGdvdG8gZnJlZV9tZW07XG4gXHR9XG4gXG4tXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgbnVtX2V2ZW50czsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKHVuc2lnbmVkIGxvbmcgaSA9IDA7IGkgXHUwMDNjIG51bV9ldmVudHM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGVpZHggPSBlaW5mb1tpXS5ldmVudF9pZHg7XG4gXHRcdGV0eXBlID0ga3ZtX3BtdV9nZXRfcGVyZl9ldmVudF90eXBlKGVpZHgpO1xuIFx0XHRlY29uZmlnID0ga3ZtX3BtdV9nZXRfcGVyZl9ldmVudF9jb25maWcoZWlkeCwgZWluZm9baV0uZXZlbnRfZGF0YSk7XG5AQCAtNTI1LDcgJiM0Mzs1MjksNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvd1xuIFx0XHRyZXQgPSBTQklfRVJSX0lOVkFMSURfQUREUkVTUztcbiBcbiBmcmVlX21lbTpcbi1cdGtmcmVlKGVpbmZvKTtcbiYjNDM7XHRrdmZyZWUoZWluZm8pO1xuIG91dDpcbiBcdHJldGRhdGEtXHUwMDNlZXJyX3ZhbCA9IHJldDtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OywKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1JJU0NWX1BNVSYjMzQ7LAogICAgJiMzNDtSSVNDVl9QTVVfU0JJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBTQkkgZXh0ZW5zaW9uIGhhbmRsZXIgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYC4gVGhlIHZ1bG5lcmFiaWxpdHkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIHdoZW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIFBNVSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBLVk0gY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVlZDQ1OTAyYzNmYTg5YTkxODMyODlmZjMxZjI3NGVhMTU0YjcyNTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAyMjoyNDoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jCmluZGV4IGJiNDZkY2JmYjI0ZGEuLjhlMWY2YWJiODRlMjAgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYwpAQCAtMTIsNyAmIzQzOzEyLDkgQEAKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25vc3BlYy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vdmVyZmxvdy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BlcmYvcmlzY3ZfcG11LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKICNpbmNsdWRlICZsdDthc20vY3NyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2t2bV9pc2EuaCZndDsKICNpbmNsdWRlICZsdDthc20va3ZtX3ZjcHVfc2JpLmgmZ3Q7CkBAIC00NzksMTMgJiM0Mzs0ODEsMTQgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3cKIAkJCQkgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKQogewogCXN0cnVjdCByaXNjdl9wbXVfZXZlbnRfaW5mbyAqZWluZm8gPSBOVUxMOwotCWludCBzaG1lbV9zaXplID0gbnVtX2V2ZW50cyAqIHNpemVvZigqZWluZm8pOwomIzQzOwlzaXplX3Qgc2htZW1fc2l6ZTsKIAlncGFfdCBzaG1lbTsKIAl1MzIgZWlkeCwgZXR5cGU7CiAJdTY0IGVjb25maWc7CiAJaW50IHJldDsKIAotCWlmIChmbGFncyAhPSAwIHx8IChzYWRkcl9sb3cgJmFtcDsgKFNaXzE2IC0gMSkgfHwgbnVtX2V2ZW50cyA9PSAwKSkgewomIzQzOwlpZiAoZmxhZ3MgIT0gMCB8fCAoc2FkZHJfbG93ICZhbXA7IChTWl8xNiAtIDEpKSB8fCBudW1fZXZlbnRzID09IDAgfHwKJiM0MzsJICAgIGNoZWNrX211bF9vdmVyZmxvdyhudW1fZXZlbnRzLCBzaXplb2YoKmVpbmZvKSwgJmFtcDtzaG1lbV9zaXplKSkgewogCQlyZXQgPSBTQklfRVJSX0lOVkFMSURfUEFSQU07CiAJCWdvdG8gb3V0OwogCX0KQEAgLTUwMCw3ICYjNDM7NTAzLDggQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3cKIAkJfQogCX0KIAotCWVpbmZvID0ga3phbGxvYyhzaG1lbV9zaXplLCBHRlBfS0VSTkVMKTsKJiM0MzsJZWluZm8gPSBrdmNhbGxvYyhudW1fZXZlbnRzLCBzaXplb2YoKmVpbmZvKSwKJiM0MzsJCQkgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfTk9XQVJOKTsKIAlpZiAoIWVpbmZvKSB7CiAJCXJldCA9IFNCSV9FUlJfRkFJTFVSRTsKIAkJZ290byBvdXQ7CkBAIC01MTIsNyAmIzQzOzUxNiw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93CiAJCWdvdG8gZnJlZV9tZW07CiAJfQogCi0JZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBudW1fZXZlbnRzOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKHVuc2lnbmVkIGxvbmcgaSA9IDA7IGkgJmx0OyBudW1fZXZlbnRzOyBpJiM0MzsmIzQzOykgewogCQllaWR4ID0gZWluZm9baV0uZXZlbnRfaWR4OwogCQlldHlwZSA9IGt2bV9wbXVfZ2V0X3BlcmZfZXZlbnRfdHlwZShlaWR4KTsKIAkJZWNvbmZpZyA9IGt2bV9wbXVfZ2V0X3BlcmZfZXZlbnRfY29uZmlnKGVpZHgsIGVpbmZvW2ldLmV2ZW50X2RhdGEpOwpAQCAtNTI1LDcgJiM0Mzs1MjksNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdwogCQlyZXQgPSBTQklfRVJSX0lOVkFMSURfQUREUkVTUzsKIAogZnJlZV9tZW06Ci0Ja2ZyZWUoZWluZm8pOwomIzQzOwlrdmZyZWUoZWluZm8pOwogb3V0OgogCXJldGRhdGEtJmd0O2Vycl92YWwgPSByZXQ7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUklTQy1WIFBhdGNoIGZvciBTZWN1cml0eSBJbXBsaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgaW4gaG93IHRoZSBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gIGZ1bmN0aW9uIGhhbmRsZXMgbWVtb3J5IGFsbG9jYXRpb24uIEluc3RlYWQgb2YgdXNpbmcgYGt6YWxsb2NgLCBpdCYjMzk7cyBub3cgdXNpbmcgYGNoZWNrX211bF9vdmVyZmxvd2AgaW4gY29uanVuY3Rpb24gd2l0aCBga3ZjYWxsb2NgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIHBhdHRlcm4g4oCTIHRoZXkmIzM5O3JlIHRyeWluZyB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIGR1cmluZyBhbGxvY2F0aW9uIGNhbGN1bGF0aW9ucywgYW5kIHBvdGVudGlhbGx5IHByZXZlbnQgbGFyZ2UgYWxsb2NhdGlvbiB2dWxuZXJhYmlsaXRpZXMsIGJ5IG1ha2luZyBzdXJlIHRoZSBpbnRlbmRlZCBzaXplIGRvZXNuJiMzOTt0IHdyYXAgYXJvdW5kIGFuZCBhbGxvY2F0ZSBmYXIgbGVzcyBtZW1vcnkgdGhhbiBleHBlY3RlZC4gR29vZCBjYXRjaC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIHJlbGF0ZWQgdG8gc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgZnV6emFibGU/IEkga25vdyBLVk0gaW4gZ2VuZXJhbCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gTm93LCBsZXQmIzM5O3Mgc2VlLCB0aGlzIGZ1bmN0aW9uLCBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLi4ucmlnaHQsIGl0JiMzOTtzIGEgU0JJIGNhbGwgaGFuZGxlciwgc3BlY2lmaWNhbGx5IGZvciBQTVUgZXZlbnQgaW5mb3JtYXRpb24uIFRoaXMgaXMgZGVmaW5pdGVseSBhIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4gTWFsZm9ybWVkIHJlcXVlc3RzIGhlcmUgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGFuZCBwb3NzaWJsZSB2dWxuZXJhYmlsaXRpZXMsIHRoYXQgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4KClRvIGNoZWNrIGlmIHRoZSBmaXggaXMgY29ycmVjdGx5IGltcGxlbWVudGVkLCBJIG5lZWQgdG8ga25vdyBob3cgS1ZNIGlzIGNvbmZpZ3VyZWQgaW4gUklTQy1WLiBJdCYjMzk7cyBwcm9iYWJseSBlbmFibGVkIGJ5IGEgS2NvbmZpZyBvcHRpb24uIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYC4gSXQmIzM5O3MgbGlrZWx5IGp1c3QgYEtWTWAsIGJ1dCBJJiMzOTtsbCBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDM2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipLVk0gQ29uZmlndXJhdGlvbiBBbmFseXNpcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgS1ZNIHNldHVwLiBNeSBmb2N1cyByaWdodCBub3cgaXMgZGVmaW5pdGVseSB0aGUgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIFJJU0MtViB2aXJ0dWFsIENQVXMuIEkmIzM5O20gd29uZGVyaW5nIGlmIGEgZnVuY3Rpb24sIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AsIGlzIGFjY2Vzc2libGUsIGFuZCBteSBndXQgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5LiBUaW1lIHRvIGNoZWNrIGl0cyBhY2Nlc3NpYmlsaXR5LiBJIHJlY2FsbCBzZWVpbmcgcmVsZXZhbnQgY29kZSBpbiB0aGUgYGFyY2gvcmlzY3Yva3ZtYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGB2Y3B1X3BtdS5jYCBmaWxlLiBJJiMzOTttIHByZXR0eSBjZXJ0YWluIHRoYXQmIzM5O3MgdGhlIHBhdGggdG8gZXhwbG9yZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jPTQyNz1pbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93LFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMtNDc4LVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYzo0Nzk6aW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQ4MC1cdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBzYWRkcl9oaWdoLCB1bnNpZ25lZCBsb25nIG51bV9ldmVudHMsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM9MTY9c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzYtXHRjYXNlIFNCSV9FWFRfUE1VX0VWRU5UX0dFVF9JTkZPOlxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6Nzc6XHRcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHZjcHUsIGNwLVx1MDAzZWEwLCBjcC1cdTAwM2VhMSwgY3AtXHUwMDNlYTIsIGNwLVx1MDAzZWEzLCByZXRkYXRhKTtcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTc4LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDUyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBTQkkgUE1VIEV4dGVuc2lvbiBWdWxuZXJhYmlsaXR5KioKClJpZ2h0LCBzbyBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgIGlzIHRoZSBjdWxwcml0LiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBTQkkgUE1VIGV4dGVuc2lvbiBoZXJlLCBhbmQgdGhhdCBpbW1lZGlhdGVseSBnZXRzIG15IGF0dGVudGlvbi4gVGhpcyBpcyAqdGV4dGJvb2sqIGZ1enphYmxlLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSBndWVzdCBWTXMgbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQuIFRoYXQmIzM5O3MgdGhlIHJlYWwgaG9vay4KCk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZSBvYnZpb3VzIGNvbmZpZ3VyYXRpb24uIEkgY2FuJiMzOTt0IGp1c3QgZGl2ZSBpbiB3aXRob3V0IHRoaW5raW5nIGl0IHRocm91Z2guIElzIHRoZXJlIGFueXRoaW5nIGVsc2UgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgcmVsYXRlZCBmbGFncyBJIG5lZWQgdG8gY29uc2lkZXIsIGxpa2UgYFJJU0NWX1BNVWA/IEkgbmVlZCB0byBjaGVjayBmb3IgYWxsIHRoZSBvYnZpb3VzIHByZS1jb25kaXRpb25zLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlIGFyZW4mIzM5O3Qgb3Zlcmxvb2tpbmcgYW55dGhpbmcgYmFzaWMgdGhhdCBjb3VsZCBiaXRlIHVzIGRvd24gdGhlIGxpbmUuIFdlIGRvbiYjMzk7dCB3YW50IHRvIHdhc3RlIGN5Y2xlcyBnb2luZyBkb3duIHRoZSB3cm9uZyBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJJU0NWX1BNVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzc3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmV2aWV3aW5nIHRoaXMgY29kZToKCioqRGl2aW5nIGludG8gYHZjcHVfcG11LmNgIGZvciBDb25kaXRpb25hbCBDb21waWxhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGdvb2QgbG9vayBhdCBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBzZWUgaG93IG11Y2ggb2YgdGhpcyBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiYjMzQ7IEdpdmVuIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgdmFyaW91cyBleHRlbnNpb25zIGFuZCBjb25maWd1cmF0aW9ucywgSSYjMzk7bSBleHBlY3RpbmcgYSBoZWFsdGh5IGRvc2Ugb2YgYCNpZmRlZmAgZGlyZWN0aXZlcyBpbiB0aGlzIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIGJhc2VkIG9uIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgS1ZNIHBlcmZvcm1hbmNlIG1vbml0b3IgKFBNVSkgaW1wbGVtZW50YXRpb24gZm9yIFJJU0MtVi4gQXJlIHdlIGhhbmRsaW5nIGRpZmZlcmVudCBQTVUgdmVyc2lvbnM/IEFyZSB0aGVyZSB2YXJpYXRpb25zIGJhc2VkIG9uIHZlbmRvciBvciBJU0EgZXh0ZW5zaW9ucz8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB3aGF0JiMzOTtzIGFjdGl2ZSBhbmQgaW5hY3RpdmUgZGVwZW5kaW5nIG9uIHRoZSBidWlsZCBmbGFncy4gTGV0JiMzOTtzIHN0YXJ0IHNjYW5uaW5nIGZvciB0aG9zZSBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpZmRlZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjU0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLVk0gRGVwZW5kZW5jeSBDaGVjazogUklTQy1WIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgS1ZNIGRlcGVuZGVuY2llcyBmb3IgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUuIFRvIGRvIHRoaXMsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRlbHZlIGludG8gdGhlIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYCBmaWxlLiBUaGlzIHNob3VsZCBiZSB0aGUgYXV0aG9yaXRhdGl2ZSBzb3VyY2UgZm9yIGRlZmluaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gS1ZNIHN1cHBvcnQgb24gUklTQy1WLiBCeSBleGFtaW5pbmcgdGhpcyBmaWxlLCBJIGNhbiBxdWlja2x5IGFzY2VydGFpbiB3aGljaCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUgc3VwcG9ydCBhcmUgcmVxdWlyZWQgZm9yIEtWTSBmdW5jdGlvbmFsaXR5IHRvIGJlIGVuYWJsZWQgYW5kIG9wZXJhdGlvbmFsIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiBJdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGRpbmcgYmxvY2tzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgS1ZNIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0c291cmNlIFwmIzM0O3ZpcnQva3ZtL0tjb25maWdcJiMzNDtcbiAgIDc6XHRcbiAgIDg6XHRtZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXG4gICA5Olx0XHRib29sIFwmIzM0O1ZpcnR1YWxpemF0aW9uXCYjMzQ7XG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuXG4gIDEyOlx0XHQgIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxuICAxMzpcdFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxuICAxNDpcdFxuICAxNTpcdFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kXG4gIDE2Olx0XHQgIGRpc2FibGVkLlxuICAxNzpcdFxuICAxODpcdGlmIFZJUlRVQUxJWkFUSU9OXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIEtWTVxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIFJJU0NWX1NCSSBcdTAwMjZcdTAwMjYgTU1VXG4gIDIzOlx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxuICAyNDpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXG4gIDI1Olx0XHRzZWxlY3QgSEFWRV9LVk1fTVNJXG4gIDI2Olx0XHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXG4gIDI3Olx0XHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19BQ1FfUkVMXG4gIDI4Olx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyOTpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxuICAzMDpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG4gIDMxOlx0XHRzZWxlY3QgS1ZNX01NSU9cbiAgMzI6XHRcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuICAzMzpcdFx0c2VsZWN0IFNDSEVEX0lORk9cbiAgMzQ6XHRcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UUyBpZiBQRVJGX0VWRU5UU1xuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBTdXBwb3J0IGhvc3RpbmcgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMuXG4gIDM3Olx0XG4gIDM4Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDM5Olx0XG4gIDQwOlx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzgyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQgd2UgaGF2ZSBoZXJlLgoKKipDb25kaXRpb25hbCBDb21waWxhdGlvbiBBbmFseXNpcyBmb3IgUklTQy1WIEtWTSBQTVUgU3VwcG9ydCoqCgpBbHJpZ2h0LCBJIHNlZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZvciBSSVNDLVYgS1ZNIFBNVSBzdXBwb3J0LiBUaGUgZGVwZW5kZW5jaWVzIGp1bXAgb3V0IGltbWVkaWF0ZWx5OiBgUklTQ1ZfU0JJYCBhbmQgYE1NVWAuIE1ha2VzIHNlbnNlOyB3ZSBuZWVkIHRoZSBiYXNpYyBTQkkgYW5kIE1NVSBpbmZyYXN0cnVjdHVyZSBpbiBwbGFjZSB0byBkbyBhbnl0aGluZyB3aXRoIGEgZ3Vlc3QuIEFuZCBzaW5jZSB0aGlzIHNlZW1zIHRvIGJlIGFib3V0IGd1ZXN0IHBlcmZvcm1hbmNlIG1vbml0b3JpbmcsIHRoZSByZWxhdGlvbnNoaXAgd2l0aCBgUEVSRl9FVkVOVFNgIGlzIGtleS4gVGhlIHRleHQgY29uZmlybXMgdGhlIGV4cGVjdGF0aW9uOiBgR1VFU1RfUEVSRl9FVkVOVFNgIGlzIGRlcGVuZGVudCBvbiBgUEVSRl9FVkVOVFNgLiBJJiMzOTttIGFzc3VtaW5nIGl0JiMzOTtzIGZvciB0aGUga2VybmVsJiMzOTtzIG93biBwZXJmb3JtYW5jZSBjb3VudGVycy4KClNvLCB0aGlzIGxvb2tzIGxpa2UgYSBmZWF0dXJlIHNldCB3aGVyZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIHdvdWxkIGJlIGludm9sdmVkLCBhbmQgdGh1cywgYFBFUkZfRVZFTlRTYCBtdXN0IGJlIGVuYWJsZWQuIEl0JiMzOTtzIHNhZmUgdG8gc2F5IHdlIG5lZWQgaXQuIE5vdywgdGhlIG1haW4gcXVlc3Rpb24gaXMsIGhvdyBjb25kaXRpb25hbCBpcyB0aGUgUE1VIGNvZGUgaXRzZWxmPyBJIG5lZWQgdG8gY2hlY2sgaWYgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBpcyBhY3R1YWxseSBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgdmNwdV9wbXUub2AgaXMgaW5kZWVkIGJ1aWx0LCBvciBub3QsIGJhc2VkIG9uIHRoZSBgUEVSRl9FVkVOVFNgIEtjb25maWcgb3B0aW9uLgpJJiMzOTtsbCBoZWFkIG92ZXIgdG8gYGFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHRoYXQgc291cmNlIGZpbGUgaXMgY29tcGlsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjcHVfcG11Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZT0yOD1rdm0teSAmIzQzOz0gdmNwdV9vbmVyZWcub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6Mjk6a3ZtLSQoQ09ORklHX1JJU0NWX1BNVV9TQkkpICYjNDM7PSB2Y3B1X3BtdS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0zMC1rdm0teSAmIzQzOz0gdmNwdV9zYmkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTQyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUE1VIFNCSSBDb25maWd1cmF0aW9uIERpdmUqKgoKUmlnaHQsIHRoYXQmIzM5O3MgaXQhIEkgbmVlZCB0byBlbmFibGUgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IChQTVUpIHN1cHBvcnQgdmlhIHRoZSBTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UgKFNCSSkgZm9yIHRoaXMgUklTQy1WIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIHJlYXNvbmFibHkgc3VyZSBgQ09ORklHX1JJU0NWX1BNVV9TQklgIGlzIHRoZSBjb3JyZWN0IGtlcm5lbCBjb25maWcgb3B0aW9uIGZvciB0aGlzLCBidXQganVzdCB0byBiZSBzdXJlLCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLiBUaW1lIHRvIHBva2UgYXJvdW5kIGluIHRoZXJlIGFuZCB2ZXJpZnkgdGhhdCBgUklTQ1ZfUE1VX1NCSWAgaXMgZGVmaW5lZCwgYW5kIHRvIHF1aWNrbHkgcmVmcmVzaCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0cyBhc3NvY2lhdGVkIHdpdGggaXQsIGp1c3QgdG8gZWxpbWluYXRlIGFueSBoaWRkZW4gZ290Y2hhcy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJJU0NWX1BNVV9TQkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNzIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQ2hhc2luZyBEb3duIGEgTWlzc2luZyBEZWZpbml0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkmIzM5O20gaGl0dGluZyBhIHNuYWcgaGVyZS4gSSYjMzk7bSB3b3JraW5nIG9uIHRoaXMgUklTQy1WIHJlbGF0ZWQgcHJvamVjdCwgYW5kIEkmIzM5O3ZlIGNvbWUgYWNyb3NzIHRoaXMgYFJJU0NWX1BNVV9TQklgIHN5bWJvbC4gTm93LCBJIGtub3cgdGhlIFJJU0MtViBTQkkgbGFuZHNjYXBlIHByZXR0eSB3ZWxsLCBhbmQgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyB1bml0cyBhcmUgc29tZXRoaW5nIEkmIzM5O20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLiBIb3dldmVyLCB0aGUgY29tcGlsZXIgaXMgZ2l2aW5nIG1lIGFuIGVycm9yLCBzbyBJIGhhdmUgdG8gYXNrIG15c2VsZiwgd2hlcmUgKmlzKiBgUklTQ1ZfUE1VX1NCSWAgZGVmaW5lZD8gSXMgaXQgYSBtYWNybz8gQSBmdW5jdGlvbj8gQSBnbG9iYWwgdmFyaWFibGU/IERpZCBJIGZvcmdldCB0byBpbmNsdWRlIGEgbmVjZXNzYXJ5IGhlYWRlciBmaWxlPyBNYXliZSBpdCYjMzk7cyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQmIzM5O3Mgbm90IGVuYWJsZWQ/IFRpbWUgdG8gc3RhcnQgdHJhY2luZyBiYWNrLCBjaGVja2luZyBpbmNsdWRlIHBhdGhzLCBhbmQgcmV2aWV3aW5nIHRoZSBwcm9qZWN0JiMzOTtzIGJ1aWxkIHN5c3RlbSB0byBmaW5kIHRoZSBzb3VyY2Ugb2YgdGhpcyBjcnVjaWFsIGRlZmluaXRpb24uIFRoaXMgY291bGQgYmUgYSBzaW1wbGUgb3ZlcnNpZ2h0IG9yIGEgbW9yZSBmdW5kYW1lbnRhbCBjb25maWd1cmF0aW9uIHByb2JsZW0uIExldCYjMzk7cyBnZXQgdGhpcyBzb3J0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSSVNDVl9QTVVfU0JJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGVyZi9LY29uZmlnPTg4PWNvbmZpZyBSSVNDVl9QTVVfTEVHQUNZXG4tLVxuZHJpdmVycy9wZXJmL0tjb25maWctOTctXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo5ODpjb25maWcgUklTQ1ZfUE1VX1NCSVxuZHJpdmVycy9wZXJmL0tjb25maWctOTktXHRkZXBlbmRzIG9uIFJJU0NWX1BNVSBcdTAwMjZcdTAwMjYgUklTQ1ZfU0JJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MTMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGZvciBSSVNDVl9QTVVfU0JJKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgUklTQy1WIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCAoUE1VKSB1dGlsaXppbmcgdGhlIFNCSSAoU3VwZXJ2aXNvciBCaW5hcnkgSW50ZXJmYWNlKSBmcmFtZXdvcmsuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBsb29rIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtLCBzcGVjaWZpY2FsbHkgYXQgdGhlIEtjb25maWcgZmlsZXMuIEdpdmVuIHRoZSB0b3BpYywgdGhlIGBkcml2ZXJzL3BlcmZgIGRpcmVjdG9yeSBpcyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBJdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGFueXRoaW5nIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UgY291bnRlcnMuIFRoZXJlZm9yZSwgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O2xsIGNoZWNrIGlzIGBkcml2ZXJzL3BlcmYvS2NvbmZpZ2AuIEkmIzM5O20gaG9waW5nIHRvIGZpbmQgYSBzeW1ib2wsIGxpa2VseSBuYW1lZCBzb21ldGhpbmcgbGlrZSBgUklTQ1ZfUE1VX1NCSWAgb3IgYSBzaW1pbGFyIHZhcmlhdGlvbiwgdGhhdCBjb250cm9scyB0aGUgaW5jbHVzaW9uIG9mIHRoZSBTQkktYmFzZWQgUE1VIHN1cHBvcnQuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgcmV2ZWFsIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBwb3RlbnRpYWwgYnVpbGQgb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgZmVhdHVyZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3BlcmYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTA6XHRcdGJvb2wgXCYjMzQ7UklTQy1WIGxlZ2FjeSBQTVUgaW1wbGVtZW50YXRpb25cJiMzNDtcbiAgOTE6XHRcdGRlZmF1bHQgeVxuICA5MjpcdFx0aGVscFxuICA5MzpcdFx0ICBTYXkgeSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGxlZ2FjeSBDUFUgcGVyZm9ybWFuY2UgbW9uaXRvclxuICA5NDpcdFx0ICBpbXBsZW1lbnRhdGlvbiBvbiBSSVNDLVYgYmFzZWQgc3lzdGVtcy4gVGhpcyBvbmx5IGFsbG93cyBjb3VudGluZ1xuICA5NTpcdFx0ICBvZiBjeWNsZS9pbnN0cnVjdGlvbiBjb3VudGVyIGFuZCBkb2VzbiYjMzk7dCBzdXBwb3J0IGNvdW50ZXIgb3ZlcmZsb3csXG4gIDk2Olx0XHQgIG9yIHByb2dyYW1tYWJsZSBjb3VudGVycy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZS5cbiAgOTc6XHRcbiAgOTg6XHRjb25maWcgUklTQ1ZfUE1VX1NCSVxuICA5OTpcdFx0ZGVwZW5kcyBvbiBSSVNDVl9QTVUgXHUwMDI2XHUwMDI2IFJJU0NWX1NCSVxuIDEwMDpcdFx0Ym9vbCBcJiMzNDtSSVNDLVYgUE1VIGJhc2VkIG9uIFNCSSBQTVUgZXh0ZW5zaW9uXCYjMzQ7XG4gMTAxOlx0XHRkZWZhdWx0IHlcbiAxMDI6XHRcdGhlbHBcbiAxMDM6XHRcdCAgU2F5IHkgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBDUFUgcGVyZm9ybWFuY2UgbW9uaXRvclxuIDEwNDpcdFx0ICB1c2luZyBTQkkgUE1VIGV4dGVuc2lvbiBvbiBSSVNDLVYgYmFzZWQgc3lzdGVtcy4gVGhpcyBvcHRpb24gcHJvdmlkZXNcbiAxMDU6XHRcdCAgZnVsbCBwZXJmIGZlYXR1cmUgc3VwcG9ydCBpLmUuIGNvdW50ZXIgb3ZlcmZsb3csIHByaXZpbGVnZSBtb2RlXG4gMTA2Olx0XHQgIGZpbHRlcmluZywgY291bnRlciBjb25maWd1cmF0aW9uLlxuIDEwNzpcdFxuIDEwODpcdGNvbmZpZyBTVEFSRklWRV9TVEFSTElOS19QTVVcbiAxMDk6XHRcdGRlcGVuZHMgb24gQVJDSF9TVEFSRklWRSB8fCBDT01QSUxFX1RFU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA5MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlcGVuZGVuY3kgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFJJU0NWX1BNVV9TQklgIGZlYXR1cmUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0IGhpbmdlcyBvbiB0d28gb3RoZXIgdGhpbmdzOiBgUklTQ1ZfUE1VYCBhbmQgYFJJU0NWX1NCSWAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgY2xlYXIgZGVwZW5kZW5jeSByaWdodCB0aGVyZS4gQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgUklTQ1ZfUE1VYCBpcyBhbGwgYWJvdXQuIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgb25lIGZpcnN0LCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgd2hvbGUgYXJjaGl0ZWN0dXJlLiBOZWVkIHRvIGdldCBhIGdyYXNwIG9uIHRoZSBidWlsZGluZyBibG9ja3MgYmVmb3JlIEkgY2FuIGV2YWx1YXRlIHRoZSBsYXJnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJJU0NWX1BNVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGVyZi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGVyZi9LY29uZmlnPTc0PWNvbmZpZyBBUk1fWFNDQUxFX1BNVVxuLS1cbmRyaXZlcnMvcGVyZi9LY29uZmlnLTc3LVxuZHJpdmVycy9wZXJmL0tjb25maWc6Nzg6Y29uZmlnIFJJU0NWX1BNVVxuZHJpdmVycy9wZXJmL0tjb25maWctNzktXHRkZXBlbmRzIG9uIFJJU0NWXG4tLVxuZHJpdmVycy9wZXJmL0tjb25maWctODctXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo4ODpjb25maWcgUklTQ1ZfUE1VX0xFR0FDWVxuZHJpdmVycy9wZXJmL0tjb25maWctODktXHRkZXBlbmRzIG9uIFJJU0NWX1BNVVxuLS1cbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk3LVxuZHJpdmVycy9wZXJmL0tjb25maWc6OTg6Y29uZmlnIFJJU0NWX1BNVV9TQklcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk5LVx0ZGVwZW5kcyBvbiBSSVNDVl9QTVUgXHUwMDI2XHUwMDI2IFJJU0NWX1NCSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDcwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBub3Rlcywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGggdGhpcyBzcGFjZToKCioqUE1VIEludGVncmF0aW9uIGluIEtWTS9SSVNDLVY6IEluaXRpYWwgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBsb29raW5nIGF0IHRoaXMsIGl0IHNlZW1zIHdlJiMzOTtyZSB6ZXJvaW5nIGluIG9uIGludGVncmF0aW5nIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdHMgKFBNVXMpIHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50LCBzcGVjaWZpY2FsbHkgZm9yIFJJU0MtViBhcmNoaXRlY3R1cmVzLiBUaGUgY29yZSBjb21wb25lbnRzIHdlIG5lZWQgdG8gYWRkcmVzcyBhcmUgY2xlYXJseSBsYWlkIG91dDogYEtWTWAsIGBSSVNDVl9QTVVgLCBhbmQgYFJJU0NWX1BNVV9TQklgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIHdlJiMzOTtyZSB3b3JraW5nIHdpdGggaGVyZS4gVGhlIG1lbnRpb24gb2YgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBtYWtlcyBwZXJmZWN0IHNlbnNlIGFzIGEga2V5IGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBldmVudCBpbmZvcm1hdGlvbiB3aXRoaW4gdGhlIHZpcnR1YWwgQ1BVIGNvbnRleHQuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBmdW5jdGlvbiBmb3IgYW55IHByb3BlciBQTVUgaW1wbGVtZW50YXRpb24uCgpJJiMzOTttIGFsc28gbWFraW5nIGEgbWVudGFsIG5vdGUgdG8gY2lyY2xlIGJhY2sgYW5kIGZ1bGx5IHZldCBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgLiBJdCYjMzk7cyBwb3NzaWJsZSB0aGF0IHRoaXMgU0JJIChTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UpIGV4dGVuc2lvbiBoYW5kbGVyIGhhcyBhbiBpbXBvcnRhbnQgcm9sZSBpbiBob3cgd2UmIzM5O3JlIGV4cG9zZWQgb3IgaW50ZXJmYWNlIHdpdGggdGhlIFBNVSBjYXBhYmlsaXRpZXMgZnJvbSB3aXRoaW4gdGhlIGd1ZXN0IFZNLiBUaGlzIG9uZSBtaWdodCBhbHNvIGJlIGEgc3Ryb25nIGZvY3VzIHBvaW50IGZvciBleGFtaW5hdGlvbiwgc28gbGV0JiMzOTtzIGtlZXAgaXQgb24gdGhlIHJhZGFyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fc2JpX2V4dF9wbXVfaGFuZGxlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy0xNS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjE2OnN0YXRpYyBpbnQga3ZtX3NiaV9leHRfcG11X2hhbmRsZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtMTctXHRcdFx0XHQgICBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX3JldHVybiAqcmV0ZGF0YSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz05Mz1jb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfcG11ID0ge1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTk1LVx0LmV4dGlkX2VuZCA9IFNCSV9FWFRfUE1VLFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6OTY6XHQuaGFuZGxlciA9IGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyLFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTctXHQucHJvYmUgPSBrdm1fc2JpX2V4dF9wbXVfcHJvYmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEtWTSBSSVNDLVYgUE1VIEludGVnZXIgT3ZlcmZsb3cgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIHNlY3VyaXR5IGZpeCwgYW5kIGhlcmUmIzM5O3MgbXkgbGluZSBvZiB0aGlua2luZzogaW5pdGlhbGx5LCBJIHdhcyBjb25zaWRlcmluZyBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgIGFzIGEgZm9jYWwgcG9pbnQuIEl0JiMzOTtzIHN0YXRpYywgc28gSSB3YXMgd29uZGVyaW5nIGlmIHRoZSBjb21waWxlciB3b3VsZCBpbmxpbmUgaXQsIHdoaWNoIHdvdWxkIG1ha2UgdHJhY2luZyBpdHMgZXhlY3V0aW9uIG1vcmUgY29tcGxpY2F0ZWQuIEhvd2V2ZXIsIHdhaXQsIGl0JiMzOTtzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgdmNwdV9zYmlfZXh0X3BtdWAuIFRoYXQgbWVhbnMgaXQgKndvbiYjMzk7dCogYmUgaW5saW5lZCwgYnV0IHNpbmNlIGl0JiMzOTtzIHN0YXRpYywgdGhlcmUgd29uJiMzOTt0IGJlIGFuIGVhc2lseSBpZGVudGlmaWFibGUgc3ltYm9sLiBTbywgbGV0JiMzOTtzIHBpdm90IGFuZCBsb29rIGF0IGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AgaW5zdGVhZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGV4cG9ydGVkIC0gYW5kIGl0IGlzLCBzbyB0aGF0IGlzIGEgZ29vZCBlbnRyeSBwb2ludCB0byBzdGFydC4KClJpZ2h0LCBzbyB0aGUgY29yZSBpc3N1ZSBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoYXQgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgYG51bV9ldmVudHMgKiBzaXplb2YoKmVpbmZvKWAgY2FuIG92ZXJmbG93LiBUaGlzIGxlYWRzIHRvIGFuIHVuZGVyc2l6ZWQgYWxsb2NhdGlvbiwgYW5kIHRoZW4gdGhlIGBmb3JgIGxvb3Agc3Vic2VxdWVudGx5IHdyaXRlcyBvdXQtb2YtYm91bmRzLCBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGZ1enppbmcgaXMgaGlnaC4KClRvIHJlcHJvZHVjZSB0aGlzLCB0aGUgY29uZmlndXJhdGlvbiBJIG5lZWQgdG8gdGFyZ2V0IGFyZTogYEtWTWAsIGBSSVNDVl9QTVVgLCBhbmQgYFJJU0NWX1BNVV9TQklgLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBgVklSVFVBTElaQVRJT05gIGlzIG5lZWRlZCwgc2luY2UgSSBrbm93IEtWTSBpcyBuZXN0ZWQgdW5kZXIgYSBgaWYgVklSVFVBTElaQVRJT05gLCB0aGlzIGlzIGxpa2VseSBhIG1lbnVjb25maWcgb3B0aW9uLiBPa2F5LCBhbmQgeWVzLCBJJiMzOTtsbCBuZWVkIGBQRVJGX0VWRU5UU2AuIGBSSVNDVl9QTVVgIGlzIGxpa2VseSBkZXBlbmRlbnQgb24gaXQsIHNvIGxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0IGRlcGVuZGVuY3kgaW4gYGRyaXZlcnMvcGVyZi9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3BlcmYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzA6XHRjb25maWcgQVJNX1Y3X1BNVVxuICA3MTpcdFx0ZGVwZW5kcyBvbiBBUk1fUE1VIFx1MDAyNlx1MDAyNiBDUFVfVjdcbiAgNzI6XHRcdGRlZl9ib29sIHlcbiAgNzM6XHRcbiAgNzQ6XHRjb25maWcgQVJNX1hTQ0FMRV9QTVVcbiAgNzU6XHRcdGRlcGVuZHMgb24gQVJNX1BNVSBcdTAwMjZcdTAwMjYgQ1BVX1hTQ0FMRVxuICA3NjpcdFx0ZGVmX2Jvb2wgeVxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBSSVNDVl9QTVVcbiAgNzk6XHRcdGRlcGVuZHMgb24gUklTQ1ZcbiAgODA6XHRcdGJvb2wgXCYjMzQ7UklTQy1WIFBNVSBmcmFtZXdvcmtcJiMzNDtcbiAgODE6XHRcdGRlZmF1bHQgeVxuICA4MjpcdFx0aGVscFxuICA4MzpcdFx0ICBTYXkgeSBpZiB5b3Ugd2FudCB0byB1c2UgQ1BVIHBlcmZvcm1hbmNlIG1vbml0b3JzIG9uIFJJU0NWLWJhc2VkXG4gIDg0Olx0XHQgIHN5c3RlbXMuIFRoaXMgcHJvdmlkZXMgdGhlIGNvcmUgUE1VIGZyYW1ld29yayB0aGF0IGFic3RyYWN0cyBjb21tb25cbiAgODU6XHRcdCAgUE1VIGZ1bmN0aW9uYWxpdGllcyBpbiBhIGNvcmUgbGlicmFyeSBzbyB0aGF0IGRpZmZlcmVudCBQTVUgZHJpdmVyc1xuICA4NjpcdFx0ICBjYW4gcmV1c2UgaXQuXG4gIDg3Olx0XG4gIDg4Olx0Y29uZmlnIFJJU0NWX1BNVV9MRUdBQ1lcbiAgODk6XHRcdGRlcGVuZHMgb24gUklTQ1ZfUE1VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMjMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0IEkmIzM5O20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OgoKKipEZXBlbmRlbmNpZXMgYW5kIEtjb25maWcgQ29udW5kcnVtcyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBSSVNDVl9QTVVgLi4uIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gdGhlIGNvcmUgYFJJU0NWYCBhcmNoaXRlY3R1cmUgc3VwcG9ydCwgdGhhdCYjMzk7cyBqdXN0IGEgZ2l2ZW4uIEJ1dCB0aGVuIEkgaGl0IGEgcG90ZW50aWFsIHNuYWcuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSB3YXkgYGRyaXZlcnMvcGVyZi9LY29uZmlnYCB3b3Jrcy4gTXkgZ3V0IGZlZWxpbmcgaXMgdGVsbGluZyBtZSB0aGF0IGl0IGNvdWxkIGJlIHNvdXJjZWQgY29uZGl0aW9uYWxseSwgcGVyaGFwcyB1bmRlciB0aGUgYFBFUkZfRVZFTlRTYCBjb25maWcgb3B0aW9uLiBJZiB0aGF0JiMzOTtzIHRoZSBjYXNlLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGhvdyB0aGVzZSBkZXBlbmRlbmNpZXMgY2FzY2FkZS4gSSBkb24mIzM5O3Qgd2FudCB0byBtYWtlIGFzc3VtcHRpb25zIGFuZCBtaXNzIGEgc3VidGxlIGNvbmRpdGlvbmFsIGJ1aWxkIHBhdGguIFRoaXMgY291bGQgaGF2ZSBpbXBsaWNhdGlvbnMgZG93biB0aGUgbGluZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UgXCYjMzQ7ZHJpdmVycy9wZXJmL0tjb25maWdcJiMzNDsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9LY29uZmlnPTIxMD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9tY2IvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9LY29uZmlnLTIxMS1cbmRyaXZlcnMvS2NvbmZpZzoyMTI6c291cmNlIFwmIzM0O2RyaXZlcnMvcGVyZi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL0tjb25maWctMjEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTQyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFBlcmYgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG1vbml0b3Jpbmcgc3Vic3lzdGVtLCBhbmQgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBkaXJlY3RseSB0byB0aGUgY29yZSBvZiB0aGUgbWF0dGVyOiB0aGUgYnVpbGQgc3lzdGVtLiBUaGUgYGRyaXZlcnMvcGVyZmAgZGlyZWN0b3J5IGlzLCBsb2dpY2FsbHksIHdoZXJlIHRoZSBkZXZpY2UgZHJpdmVycyByZWxhdGVkIHRvIHBlcmZvcm1hbmNlIGNvdW50ZXJzIHdvdWxkIHJlc2lkZS4gQW5kIHdpdGhpbiB0aGF0IGRpcmVjdG9yeSwgdGhlIGBNYWtlZmlsZWAgaXMgdGhlIHNpbmdsZSBtb3N0IGltcG9ydGFudCBmaWxlLiBJdCYjMzk7cyB0aGUgYmx1ZXByaW50LCB0aGUgb3JjaGVzdHJhdGlvbiBwb2ludCBmb3IgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGNvbXBpbGVkLCBsaW5rZWQsIGFuZCBpbmNvcnBvcmF0ZWQgaW50byB0aGUga2VybmVsLiBCeSBleGFtaW5pbmcgdGhpcyBgTWFrZWZpbGVgLCBJIHNob3VsZCBnZXQgYSB2ZXJ5IGNsZWFyIHBpY3R1cmUgb2YgdGhlIGJ1aWxkIGRlcGVuZGVuY2llcywgdGhlIGF2YWlsYWJsZSB0YXJnZXRzLCBhbmQgYW55IHNwZWNpYWwgY29uc2lkZXJhdGlvbnMgZm9yIHRoZXNlIHBlcmZvcm1hbmNlLXJlbGF0ZWQgZHJpdmVycy4gSXQgd2lsbCBnaXZlIG1lIGEgZmFudGFzdGljIGZvdW5kYXRpb24gdG8gdGhlbiBkaXZlIGRlZXBlciBpbnRvIHRoZSBpbmRpdmlkdWFsIHNvdXJjZSBmaWxlcyBpZiByZXF1aXJlZC4gSSBleHBlY3QgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIG11Y2ggYmV0dGVyIGFmdGVyIGEgbG9vayB0aHJvdWdoIHRoZSBgTWFrZWZpbGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYmotJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wZXJmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGVyZi9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BUk1fQ0NJX1BNVSkgJiM0Mzs9IGFybS1jY2kub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0FSTV9DQ04pICYjNDM7PSBhcm0tY2NuLm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19BUk1fQ01OKSAmIzQzOz0gYXJtLWNtbi5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQVJNX0RTVV9QTVUpICYjNDM7PSBhcm1fZHN1X3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQVJNX05JKSAmIzQzOz0gYXJtLW5pLm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19BUk1fUE1VKSAmIzQzOz0gYXJtX3BtdS5vIGFybV9wbXVfcGxhdGZvcm0ub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX0FSTV9QTVVfQUNQSSkgJiM0Mzs9IGFybV9wbXVfYWNwaS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQVJNX1BNVVYzKSAmIzQzOz0gYXJtX3BtdXYzLm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQVJNX1Y2X1BNVSkgJiM0Mzs9IGFybV92Nl9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19BUk1fVjdfUE1VKSAmIzQzOz0gYXJtX3Y3X3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0FSTV9YU0NBTEVfUE1VKSAmIzQzOz0gYXJtX3hzY2FsZV9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19BUk1fU01NVV9WM19QTVUpICYjNDM7PSBhcm1fc21tdXYzX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0ZTTF9JTVg4X0REUl9QTVUpICYjNDM7PSBmc2xfaW14OF9kZHJfcGVyZi5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX0ZTTF9JTVg5X0REUl9QTVUpICYjNDM7PSBmc2xfaW14OV9kZHJfcGVyZi5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0ZVSklUU1VfVU5DT1JFX1BNVSkgJiM0Mzs9IGZ1aml0c3VfdW5jb3JlX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0hJU0lfUE1VKSAmIzQzOz0gaGlzaWxpY29uL1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19RQ09NX0wyX1BNVSlcdCYjNDM7PSBxY29tX2wyX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1FDT01fTDNfUE1VKSAmIzQzOz0gcWNvbV9sM19wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19SSVNDVl9QTVUpICYjNDM7PSByaXNjdl9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19SSVNDVl9QTVVfTEVHQUNZKSAmIzQzOz0gcmlzY3ZfcG11X2xlZ2FjeS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX1JJU0NWX1BNVV9TQkkpICYjNDM7PSByaXNjdl9wbXVfc2JpLm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyMzpvYmotJChDT05GSUdfU1RBUkZJVkVfU1RBUkxJTktfUE1VKSAmIzQzOz0gc3RhcmZpdmVfc3RhcmxpbmtfcG11Lm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfVEhVTkRFUlgyX1BNVSkgJiM0Mzs9IHRodW5kZXJ4Ml9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19YR0VORV9QTVUpICYjNDM7PSB4Z2VuZV9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19BUk1fU1BFX1BNVSkgJiM0Mzs9IGFybV9zcGVfcG11Lm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfQVJNNjRfQlJCRSkgJiM0Mzs9IGFybV9icmJlLm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyODpvYmotJChDT05GSUdfQVJNX0RNQzYyMF9QTVUpICYjNDM7PSBhcm1fZG1jNjIwX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6Mjk6b2JqLSQoQ09ORklHX01BUlZFTExfQ04xMEtfVEFEX1BNVSkgJiM0Mzs9IG1hcnZlbGxfY24xMGtfdGFkX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX01BUlZFTExfQ04xMEtfRERSX1BNVSkgJiM0Mzs9IG1hcnZlbGxfY24xMGtfZGRyX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX01BUlZFTExfUEVNX1BNVSkgJiM0Mzs9IG1hcnZlbGxfcGVtX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0FQUExFX00xX0NQVV9QTVUpICYjNDM7PSBhcHBsZV9tMV9jcHVfcG11Lm9cbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfQUxJQkFCQV9VTkNPUkVfRFJXX1BNVSkgJiM0Mzs9IGFsaWJhYmFfdW5jb3JlX2Ryd19wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19EV0NfUENJRV9QTVUpICYjNDM7PSBkd2NfcGNpZV9wbXUub1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19BUk1fQ09SRVNJR0hUX1BNVV9BUkNIX1NZU1RFTV9QTVUpICYjNDM7PSBhcm1fY3NwbXUvXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX01FU09OX0REUl9QTVUpICYjNDM7PSBhbWxvZ2ljL1xuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19DWExfUE1VKSAmIzQzOz0gY3hsX3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX05WSURJQV9URUdSQTQxMF9DTUVNX0xBVEVOQ1lfUE1VKSAmIzQzOz0gbnZpZGlhX3Q0MTBfY21lbV9sYXRlbmN5X3BtdS5vXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6Mzk6b2JqLSQoQ09ORklHX05WSURJQV9URUdSQTQxMF9DMkNfUE1VKSAmIzQzOz0gbnZpZGlhX3Q0MTBfYzJjX3BtdS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTAzCgkJCQkJCQlvdXRwdXQ6IDE1MgoJCQkJCQkJdGhvdWdodHM6IDI1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSSVNDLVYgS1ZNIFBNVSBTQkkgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgemVyb2VkIGluIG9uIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2g6IGBSSVNDVl9QTVVfU0JJYCBpcyBpbmRlZWQgdGhlIGtleS4gTGV0JiMzOTtzIGp1c3QgY29uZmlybSBpdCBieSB0YWtpbmcgYW5vdGhlciBsb29rIGF0IGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYC4gUmlnaHQsIGBLVk1gIGhpbmdlcyBvbiBgUklTQ1ZfU0JJYCBhbmQgYE1NVWAuIEdpdmVuIGhvdyBSSVNDLVYgaXMgc3RydWN0dXJlZCwgYFJJU0NWX1NCSWAgaXMgbGlrZWx5IGVuYWJsZWQgYnkgZGVmYXVsdC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuCgpUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9ucyBoZXJlIGFyZTogYFZJUlRVQUxJWkFUSU9OYCwgYEtWTWAsIGBSSVNDVl9QTVVgLCBhbmQgY3J1Y2lhbGx5LCBgUklTQ1ZfUE1VX1NCSWAuCgpUaGUgZm9jYWwgcG9pbnQsIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIHR3ZWFrZWQsIGlzIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuIFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgc3ltYm9sIHRvIGtlZXAgaW4gbWluZC4KClRoZSB1bmRlcmx5aW5nIGlzc3VlIGlzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIFJJU0MtViBLVk0gUE1VIFNCSSBleHRlbnNpb24gaGFuZGxlciwgc3BlY2lmaWNhbGx5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuIFRoaXMgaXMgYSByaXNrIGZvciBhIHBvdGVudGlhbGx5IG5hc3R5IG91dC1vZi1ib3VuZHMgd3JpdGUuIFNpbmNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gS1ZNJiMzOTtzIGNvcmUgY29kZSBhbmQsIGl0IGlzIHJlYWNoYWJsZSwgaXQgZGVmaW5pdGVseSBuZWVkcyByb2J1c3QgZnV6emluZy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uLi4geWVzLCBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gIGlzIHRoZSAqb25seSogZnVuY3Rpb24gdGhhdCYjMzk7cyBiZWVuIG1vZGlmaWVkLiBTbywgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHZlcnkgZm9jdXNlZCBjaGFuZ2UuCgpBbHJpZ2h0LCBJJiMzOTttIHJlYWR5IHRvIG1hcmsgdGhlIHBhdGNoIGFzIHVuZGVyc3Rvb2QsIGFuZCBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7LAogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7UklTQ1ZfUE1VJiMzNDssCiAgICAmIzM0O1JJU0NWX1BNVV9TQkkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIFJJU0MtViBLVk0gUE1VIFNCSSBleHRlbnNpb24gaGFuZGxlciBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLiBUaGUgdnVsbmVyYWJpbGl0eSBjb3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgUE1VIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIEtWTSBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7LAogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7UklTQ1ZfUE1VJiMzNDssCiAgICAmIzM0O1JJU0NWX1BNVV9TQkkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIFJJU0MtViBLVk0gUE1VIFNCSSBleHRlbnNpb24gaGFuZGxlciBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLiBUaGUgdnVsbmVyYWJpbGl0eSBjb3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgUE1VIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIEtWTSBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6MjQuMzMyMzk4NzI3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAxNjQ2ODc1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVFVBTElaQVRJT05cIixcbiAgICBcIktWTVwiLFxuICAgIFwiUklTQ1ZfUE1VXCIsXG4gICAgXCJSSVNDVl9QTVVfU0JJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIFJJU0MtViBLVk0gUE1VIFNCSSBleHRlbnNpb24gaGFuZGxlciBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLiBUaGUgdnVsbmVyYWJpbGl0eSBjb3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgUE1VIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIEtWTSBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNDoyNC4zMzI0MDU1MzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMDcyNzAyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVlZDQ1OTAyYzNmYTg5YTkxODMyODlmZjMxZjI3NGVhMTU0YjcyNTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMjI6MjQ6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG5pbmRleCBiYjQ2ZGNiZmIyNGRhLi44ZTFmNmFiYjg0ZTIwIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXFxuQEAgLTEyLDcgKzEyLDkgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vyci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX2hvc3QuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25vc3BlYy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb3ZlcmZsb3cuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BlcmYvcmlzY3ZfcG11LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vY3NyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2lzYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV92Y3B1X3NiaS5oXFx1MDAzZVxcbkBAIC00NzksMTMgKzQ4MSwxNCBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvd1xcbiBcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKVxcbiB7XFxuIFxcdHN0cnVjdCByaXNjdl9wbXVfZXZlbnRfaW5mbyAqZWluZm8gPSBOVUxMO1xcbi1cXHRpbnQgc2htZW1fc2l6ZSA9IG51bV9ldmVudHMgKiBzaXplb2YoKmVpbmZvKTtcXG4rXFx0c2l6ZV90IHNobWVtX3NpemU7XFxuIFxcdGdwYV90IHNobWVtO1xcbiBcXHR1MzIgZWlkeCwgZXR5cGU7XFxuIFxcdHU2NCBlY29uZmlnO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0aWYgKGZsYWdzICE9IDAgfHwgKHNhZGRyX2xvdyBcXHUwMDI2IChTWl8xNiAtIDEpIHx8IG51bV9ldmVudHMgPT0gMCkpIHtcXG4rXFx0aWYgKGZsYWdzICE9IDAgfHwgKHNhZGRyX2xvdyBcXHUwMDI2IChTWl8xNiAtIDEpKSB8fCBudW1fZXZlbnRzID09IDAgfHxcXG4rXFx0ICAgIGNoZWNrX211bF9vdmVyZmxvdyhudW1fZXZlbnRzLCBzaXplb2YoKmVpbmZvKSwgXFx1MDAyNnNobWVtX3NpemUpKSB7XFxuIFxcdFxcdHJldCA9IFNCSV9FUlJfSU5WQUxJRF9QQVJBTTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG5AQCAtNTAwLDcgKzUwMyw4IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0ZWluZm8gPSBremFsbG9jKHNobWVtX3NpemUsIEdGUF9LRVJORUwpO1xcbitcXHRlaW5mbyA9IGt2Y2FsbG9jKG51bV9ldmVudHMsIHNpemVvZigqZWluZm8pLFxcbitcXHRcXHRcXHQgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfTk9XQVJOKTtcXG4gXFx0aWYgKCFlaW5mbykge1xcbiBcXHRcXHRyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC01MTIsNyArNTE2LDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3dcXG4gXFx0XFx0Z290byBmcmVlX21lbTtcXG4gXFx0fVxcbiBcXG4tXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBudW1fZXZlbnRzOyBpKyspIHtcXG4rXFx0Zm9yICh1bnNpZ25lZCBsb25nIGkgPSAwOyBpIFxcdTAwM2MgbnVtX2V2ZW50czsgaSsrKSB7XFxuIFxcdFxcdGVpZHggPSBlaW5mb1tpXS5ldmVudF9pZHg7XFxuIFxcdFxcdGV0eXBlID0ga3ZtX3BtdV9nZXRfcGVyZl9ldmVudF90eXBlKGVpZHgpO1xcbiBcXHRcXHRlY29uZmlnID0ga3ZtX3BtdV9nZXRfcGVyZl9ldmVudF9jb25maWcoZWlkeCwgZWluZm9baV0uZXZlbnRfZGF0YSk7XFxuQEAgLTUyNSw3ICs1MjksNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvd1xcbiBcXHRcXHRyZXQgPSBTQklfRVJSX0lOVkFMSURfQUREUkVTUztcXG4gXFxuIGZyZWVfbWVtOlxcbi1cXHRrZnJlZShlaW5mbyk7XFxuK1xcdGt2ZnJlZShlaW5mbyk7XFxuIG91dDpcXG4gXFx0cmV0ZGF0YS1cXHUwMDNlZXJyX3ZhbCA9IHJldDtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjI0Ljc1NDIzNTgwMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY5NzQyODM3MzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCIsXG4gICAgXCJLVk1cIixcbiAgICBcIlJJU0NWX1BNVVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBTQkkgZXh0ZW5zaW9uIGhhbmRsZXIgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYC4gVGhlIHZ1bG5lcmFiaWxpdHkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIHdoZW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIFBNVSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBLVk0gY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWVkNDU5MDJjM2ZhODlhOTE4MzI4OWZmMzFmMjc0ZWExNTRiNzI1MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDIyOjI0OjIzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbmluZGV4IGJiNDZkY2JmYjI0ZGEuLjhlMWY2YWJiODRlMjAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXG5AQCAtMTIsNyArMTIsOSBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25vc3BlYy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb3ZlcmZsb3cuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmYvcmlzY3ZfcG11LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY3NyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2lzYS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV92Y3B1X3NiaS5oXHUwMDNlXG5AQCAtNDc5LDEzICs0ODEsMTQgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3dcbiBcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBmbGFncywgc3RydWN0IGt2bV92Y3B1X3NiaV9yZXR1cm4gKnJldGRhdGEpXG4ge1xuIFx0c3RydWN0IHJpc2N2X3BtdV9ldmVudF9pbmZvICplaW5mbyA9IE5VTEw7XG4tXHRpbnQgc2htZW1fc2l6ZSA9IG51bV9ldmVudHMgKiBzaXplb2YoKmVpbmZvKTtcbitcdHNpemVfdCBzaG1lbV9zaXplO1xuIFx0Z3BhX3Qgc2htZW07XG4gXHR1MzIgZWlkeCwgZXR5cGU7XG4gXHR1NjQgZWNvbmZpZztcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoZmxhZ3MgIT0gMCB8fCAoc2FkZHJfbG93IFx1MDAyNiAoU1pfMTYgLSAxKSB8fCBudW1fZXZlbnRzID09IDApKSB7XG4rXHRpZiAoZmxhZ3MgIT0gMCB8fCAoc2FkZHJfbG93IFx1MDAyNiAoU1pfMTYgLSAxKSkgfHwgbnVtX2V2ZW50cyA9PSAwIHx8XG4rXHQgICAgY2hlY2tfbXVsX292ZXJmbG93KG51bV9ldmVudHMsIHNpemVvZigqZWluZm8pLCBcdTAwMjZzaG1lbV9zaXplKSkge1xuIFx0XHRyZXQgPSBTQklfRVJSX0lOVkFMSURfUEFSQU07XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuQEAgLTUwMCw3ICs1MDMsOCBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvd1xuIFx0XHR9XG4gXHR9XG4gXG4tXHRlaW5mbyA9IGt6YWxsb2Moc2htZW1fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4rXHRlaW5mbyA9IGt2Y2FsbG9jKG51bV9ldmVudHMsIHNpemVvZigqZWluZm8pLFxuK1x0XHRcdCBHRlBfS0VSTkVMX0FDQ09VTlQgfCBfX0dGUF9OT1dBUk4pO1xuIFx0aWYgKCFlaW5mbykge1xuIFx0XHRyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTUxMiw3ICs1MTYsNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvd1xuIFx0XHRnb3RvIGZyZWVfbWVtO1xuIFx0fVxuIFxuLVx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG51bV9ldmVudHM7IGkrKykge1xuK1x0Zm9yICh1bnNpZ25lZCBsb25nIGkgPSAwOyBpIFx1MDAzYyBudW1fZXZlbnRzOyBpKyspIHtcbiBcdFx0ZWlkeCA9IGVpbmZvW2ldLmV2ZW50X2lkeDtcbiBcdFx0ZXR5cGUgPSBrdm1fcG11X2dldF9wZXJmX2V2ZW50X3R5cGUoZWlkeCk7XG4gXHRcdGVjb25maWcgPSBrdm1fcG11X2dldF9wZXJmX2V2ZW50X2NvbmZpZyhlaWR4LCBlaW5mb1tpXS5ldmVudF9kYXRhKTtcbkBAIC01MjUsNyArNTI5LDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3dcbiBcdFx0cmV0ID0gU0JJX0VSUl9JTlZBTElEX0FERFJFU1M7XG4gXG4gZnJlZV9tZW06XG4tXHRrZnJlZShlaW5mbyk7XG4rXHRrdmZyZWUoZWluZm8pO1xuIG91dDpcbiBcdHJldGRhdGEtXHUwMDNlZXJyX3ZhbCA9IHJldDtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjI0Ljc1NDIzODIyMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MjY1ODEyMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIFJJU0MtViBQYXRjaCBmb3IgU2VjdXJpdHkgSW1wbGljYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGluIGhvdyB0aGUgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBmdW5jdGlvbiBoYW5kbGVzIG1lbW9yeSBhbGxvY2F0aW9uLiBJbnN0ZWFkIG9mIHVzaW5nIGBremFsbG9jYCwgaXQncyBub3cgdXNpbmcgYGNoZWNrX211bF9vdmVyZmxvd2AgaW4gY29uanVuY3Rpb24gd2l0aCBga3ZjYWxsb2NgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIHBhdHRlcm4g4oCTIHRoZXkncmUgdHJ5aW5nIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3MgZHVyaW5nIGFsbG9jYXRpb24gY2FsY3VsYXRpb25zLCBhbmQgcG90ZW50aWFsbHkgcHJldmVudCBsYXJnZSBhbGxvY2F0aW9uIHZ1bG5lcmFiaWxpdGllcywgYnkgbWFraW5nIHN1cmUgdGhlIGludGVuZGVkIHNpemUgZG9lc24ndCB3cmFwIGFyb3VuZCBhbmQgYWxsb2NhdGUgZmFyIGxlc3MgbWVtb3J5IHRoYW4gZXhwZWN0ZWQuIEdvb2QgY2F0Y2guXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIHJlbGF0ZWQgdG8gc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgZnV6emFibGU/IEkga25vdyBLVk0gaW4gZ2VuZXJhbCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gTm93LCBsZXQncyBzZWUsIHRoaXMgZnVuY3Rpb24sIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuLi5yaWdodCwgaXQncyBhIFNCSSBjYWxsIGhhbmRsZXIsIHNwZWNpZmljYWxseSBmb3IgUE1VIGV2ZW50IGluZm9ybWF0aW9uLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuIE1hbGZvcm1lZCByZXF1ZXN0cyBoZXJlIGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBhbmQgcG9zc2libGUgdnVsbmVyYWJpbGl0aWVzLCB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQuXG5cblRvIGNoZWNrIGlmIHRoZSBmaXggaXMgY29ycmVjdGx5IGltcGxlbWVudGVkLCBJIG5lZWQgdG8ga25vdyBob3cgS1ZNIGlzIGNvbmZpZ3VyZWQgaW4gUklTQy1WLiBJdCdzIHByb2JhYmx5IGVuYWJsZWQgYnkgYSBLY29uZmlnIG9wdGlvbi4gTGV0IG1lIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gYGFyY2gvcmlzY3Yva3ZtL0tjb25maWdgLiBJdCdzIGxpa2VseSBqdXN0IGBLVk1gLCBidXQgSSdsbCBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzY0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6MzAuNDgwODIzNjU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTkxOTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjMwLjUyODQyMDk1MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3ODQxODIwNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBLVk0gc2V0dXAuIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBkZWZpbml0ZWx5IHRoZSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgUklTQy1WIHZpcnR1YWwgQ1BVcy4gSSdtIHdvbmRlcmluZyBpZiBhIGZ1bmN0aW9uLCBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLCBpcyBhY2Nlc3NpYmxlLCBhbmQgbXkgZ3V0IHRlbGxzIG1lIGl0J3MgbGlrZWx5LiBUaW1lIHRvIGNoZWNrIGl0cyBhY2Nlc3NpYmlsaXR5LiBJIHJlY2FsbCBzZWVpbmcgcmVsZXZhbnQgY29kZSBpbiB0aGUgYGFyY2gvcmlzY3Yva3ZtYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGB2Y3B1X3BtdS5jYCBmaWxlLiBJJ20gcHJldHR5IGNlcnRhaW4gdGhhdCdzIHRoZSBwYXRoIHRvIGV4cGxvcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNDozMy4zMTI2MDU2MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1MDEzOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM9NDI3PWludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQ3OC1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jOjQ3OTppbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdyxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQ4MC1cXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBudW1fZXZlbnRzLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM9MTY9c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03Ni1cXHRjYXNlIFNCSV9FWFRfUE1VX0VWRU5UX0dFVF9JTkZPOlxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjc3OlxcdFxcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHZjcHUsIGNwLVxcdTAwM2VhMCwgY3AtXFx1MDAzZWExLCBjcC1cXHUwMDNlYTIsIGNwLVxcdTAwM2VhMywgcmV0ZGF0YSk7XFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzgtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjMzLjM1NzExMjkzNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDkzOTkxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgU0JJIFBNVSBFeHRlbnNpb24gVnVsbmVyYWJpbGl0eSoqXG5cblJpZ2h0LCBzbyBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgIGlzIHRoZSBjdWxwcml0LiBXZSdyZSBkZWFsaW5nIHdpdGggdGhlIFNCSSBQTVUgZXh0ZW5zaW9uIGhlcmUsIGFuZCB0aGF0IGltbWVkaWF0ZWx5IGdldHMgbXkgYXR0ZW50aW9uLiBUaGlzIGlzICp0ZXh0Ym9vayogZnV6emFibGUsIGFuZCB0aGUgZmFjdCB0aGF0IGl0J3MgcmVhY2hhYmxlIGZyb20gZ3Vlc3QgVk1zIG1ha2VzIGl0IGEgcHJpbWUgdGFyZ2V0LiBUaGF0J3MgdGhlIHJlYWwgaG9vay5cblxuTm93LCBiZWZvcmUgSSBkaWcgaW4gdG9vIGRlZXAsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWUgb2J2aW91cyBjb25maWd1cmF0aW9uLiBJIGNhbid0IGp1c3QgZGl2ZSBpbiB3aXRob3V0IHRoaW5raW5nIGl0IHRocm91Z2guIElzIHRoZXJlIGFueXRoaW5nIGVsc2UgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgcmVsYXRlZCBmbGFncyBJIG5lZWQgdG8gY29uc2lkZXIsIGxpa2UgYFJJU0NWX1BNVWA/IEkgbmVlZCB0byBjaGVjayBmb3IgYWxsIHRoZSBvYnZpb3VzIHByZS1jb25kaXRpb25zLiBMZXQncyBtYWtlIHN1cmUgd2UgYXJlbid0IG92ZXJsb29raW5nIGFueXRoaW5nIGJhc2ljIHRoYXQgY291bGQgYml0ZSB1cyBkb3duIHRoZSBsaW5lLiBXZSBkb24ndCB3YW50IHRvIHdhc3RlIGN5Y2xlcyBnb2luZyBkb3duIHRoZSB3cm9uZyBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDUyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6MzYuODY2NTE0OTA0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzQwMjA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfUE1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNDozNi45MTgyNzAxODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY2MDIyMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmV2aWV3aW5nIHRoaXMgY29kZTpcblxuKipEaXZpbmcgaW50byBgdmNwdV9wbXUuY2AgZm9yIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgYSBnb29kIGxvb2sgYXQgYGFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJMZXQncyBzZWUgaG93IG11Y2ggb2YgdGhpcyBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLlwiIEdpdmVuIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgdmFyaW91cyBleHRlbnNpb25zIGFuZCBjb25maWd1cmF0aW9ucywgSSdtIGV4cGVjdGluZyBhIGhlYWx0aHkgZG9zZSBvZiBgI2lmZGVmYCBkaXJlY3RpdmVzIGluIHRoaXMgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYmFzZWQgb24gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBLVk0gcGVyZm9ybWFuY2UgbW9uaXRvciAoUE1VKSBpbXBsZW1lbnRhdGlvbiBmb3IgUklTQy1WLiBBcmUgd2UgaGFuZGxpbmcgZGlmZmVyZW50IFBNVSB2ZXJzaW9ucz8gQXJlIHRoZXJlIHZhcmlhdGlvbnMgYmFzZWQgb24gdmVuZG9yIG9yIElTQSBleHRlbnNpb25zPyBJIG5lZWQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHdoYXQncyBhY3RpdmUgYW5kIGluYWN0aXZlIGRlcGVuZGluZyBvbiB0aGUgYnVpbGQgZmxhZ3MuIExldCdzIHN0YXJ0IHNjYW5uaW5nIGZvciB0aG9zZSBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzc3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6NDAuMjg0Mjk2MjIxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc0MTczMTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZmRlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNDo0MC40MTE3MjQzNzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUyOTAwNjI3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipLVk0gRGVwZW5kZW5jeSBDaGVjazogUklTQy1WIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIEtWTSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLiBUbyBkbyB0aGlzLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AgZmlsZS4gVGhpcyBzaG91bGQgYmUgdGhlIGF1dGhvcml0YXRpdmUgc291cmNlIGZvciBkZWZpbmluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIEtWTSBzdXBwb3J0IG9uIFJJU0MtVi4gQnkgZXhhbWluaW5nIHRoaXMgZmlsZSwgSSBjYW4gcXVpY2tseSBhc2NlcnRhaW4gd2hpY2ggb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGhhcmR3YXJlIHN1cHBvcnQgYXJlIHJlcXVpcmVkIGZvciBLVk0gZnVuY3Rpb25hbGl0eSB0byBiZSBlbmFibGVkIGFuZCBvcGVyYXRpb25hbCBvbiB0aGlzIGFyY2hpdGVjdHVyZS4gSXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGRpbmcgYmxvY2tzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjU0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6NDIuOTQwNzMzMzQ0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEtWTSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdHNvdXJjZSBcXFwidmlydC9rdm0vS2NvbmZpZ1xcXCJcXG4gICA3OlxcdFxcbiAgIDg6XFx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbiAgIDk6XFx0XFx0Ym9vbCBcXFwiVmlydHVhbGl6YXRpb25cXFwiXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuXFxuICAxMjpcXHRcXHQgIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmRcXG4gIDE2OlxcdFxcdCAgZGlzYWJsZWQuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFZJUlRVQUxJWkFUSU9OXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBLVk1cXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIFJJU0NWX1NCSSBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDIzOlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuICAyNDpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcXG4gIDI1OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9NU0lcXG4gIDI2OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cXG4gIDI3OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcXG4gIDI4OlxcdFxcdHNlbGVjdCBLVk1fQ09NTU9OXFxuICAyOTpcXHRcXHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxuICAzMDpcXHRcXHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcXG4gIDMxOlxcdFxcdHNlbGVjdCBLVk1fTU1JT1xcbiAgMzI6XFx0XFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuICAzMzpcXHRcXHRzZWxlY3QgU0NIRURfSU5GT1xcbiAgMzQ6XFx0XFx0c2VsZWN0IEdVRVNUX1BFUkZfRVZFTlRTIGlmIFBFUkZfRVZFTlRTXFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFN1cHBvcnQgaG9zdGluZyB2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcy5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRlbmRpZiAjIFZJUlRVQUxJWkFUSU9OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjQyLjk0MDgwOTI4NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDU1MzEyNTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCB3ZSBoYXZlIGhlcmUuXG5cbioqQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gQW5hbHlzaXMgZm9yIFJJU0MtViBLVk0gUE1VIFN1cHBvcnQqKlxuXG5BbHJpZ2h0LCBJIHNlZSB3ZSdyZSBkZWFsaW5nIHdpdGggY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZm9yIFJJU0MtViBLVk0gUE1VIHN1cHBvcnQuIFRoZSBkZXBlbmRlbmNpZXMganVtcCBvdXQgaW1tZWRpYXRlbHk6IGBSSVNDVl9TQklgIGFuZCBgTU1VYC4gTWFrZXMgc2Vuc2U7IHdlIG5lZWQgdGhlIGJhc2ljIFNCSSBhbmQgTU1VIGluZnJhc3RydWN0dXJlIGluIHBsYWNlIHRvIGRvIGFueXRoaW5nIHdpdGggYSBndWVzdC4gQW5kIHNpbmNlIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgZ3Vlc3QgcGVyZm9ybWFuY2UgbW9uaXRvcmluZywgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIGBQRVJGX0VWRU5UU2AgaXMga2V5LiBUaGUgdGV4dCBjb25maXJtcyB0aGUgZXhwZWN0YXRpb246IGBHVUVTVF9QRVJGX0VWRU5UU2AgaXMgZGVwZW5kZW50IG9uIGBQRVJGX0VWRU5UU2AuIEknbSBhc3N1bWluZyBpdCdzIGZvciB0aGUga2VybmVsJ3Mgb3duIHBlcmZvcm1hbmNlIGNvdW50ZXJzLlxuXG5TbywgdGhpcyBsb29rcyBsaWtlIGEgZmVhdHVyZSBzZXQgd2hlcmUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyB3b3VsZCBiZSBpbnZvbHZlZCwgYW5kIHRodXMsIGBQRVJGX0VWRU5UU2AgbXVzdCBiZSBlbmFibGVkLiBJdCdzIHNhZmUgdG8gc2F5IHdlIG5lZWQgaXQuIE5vdywgdGhlIG1haW4gcXVlc3Rpb24gaXMsIGhvdyBjb25kaXRpb25hbCBpcyB0aGUgUE1VIGNvZGUgaXRzZWxmPyBJIG5lZWQgdG8gY2hlY2sgaWYgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBpcyBhY3R1YWxseSBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGB2Y3B1X3BtdS5vYCBpcyBpbmRlZWQgYnVpbHQsIG9yIG5vdCwgYmFzZWQgb24gdGhlIGBQRVJGX0VWRU5UU2AgS2NvbmZpZyBvcHRpb24uXG5JJ2xsIGhlYWQgb3ZlciB0byBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgdGhhdCBzb3VyY2UgZmlsZSBpcyBjb21waWxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM4MiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjQ3LjM5NjEyNTI4N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg2OTYyNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNwdV9wbXUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZT0yOD1rdm0teSArPSB2Y3B1X29uZXJlZy5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6Mjk6a3ZtLSQoQ09ORklHX1JJU0NWX1BNVV9TQkkpICs9IHZjcHVfcG11Lm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0zMC1rdm0teSArPSB2Y3B1X3NiaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI0OjQ3LjQ0NDgyNzY4NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTk4MDMxNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipQTVUgU0JJIENvbmZpZ3VyYXRpb24gRGl2ZSoqXG5cblJpZ2h0LCB0aGF0J3MgaXQhIEkgbmVlZCB0byBlbmFibGUgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IChQTVUpIHN1cHBvcnQgdmlhIHRoZSBTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UgKFNCSSkgZm9yIHRoaXMgUklTQy1WIGltcGxlbWVudGF0aW9uLiBJJ20gcmVhc29uYWJseSBzdXJlIGBDT05GSUdfUklTQ1ZfUE1VX1NCSWAgaXMgdGhlIGNvcnJlY3Qga2VybmVsIGNvbmZpZyBvcHRpb24gZm9yIHRoaXMsIGJ1dCBqdXN0IHRvIGJlIHN1cmUsIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gVGltZSB0byBwb2tlIGFyb3VuZCBpbiB0aGVyZSBhbmQgdmVyaWZ5IHRoYXQgYFJJU0NWX1BNVV9TQklgIGlzIGRlZmluZWQsIGFuZCB0byBxdWlja2x5IHJlZnJlc2ggdGhlIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdHMgYXNzb2NpYXRlZCB3aXRoIGl0LCBqdXN0IHRvIGVsaW1pbmF0ZSBhbnkgaGlkZGVuIGdvdGNoYXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTQyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6NTAuNDQyODYyNjZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTM5OTg2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfUE1VX1NCSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjQ6NTAuNDk4ODEzMDU2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NjcxMDQyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipDaGFzaW5nIERvd24gYSBNaXNzaW5nIERlZmluaXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJ20gaGl0dGluZyBhIHNuYWcgaGVyZS4gSSdtIHdvcmtpbmcgb24gdGhpcyBSSVNDLVYgcmVsYXRlZCBwcm9qZWN0LCBhbmQgSSd2ZSBjb21lIGFjcm9zcyB0aGlzIGBSSVNDVl9QTVVfU0JJYCBzeW1ib2wuIE5vdywgSSBrbm93IHRoZSBSSVNDLVYgU0JJIGxhbmRzY2FwZSBwcmV0dHkgd2VsbCwgYW5kIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdW5pdHMgYXJlIHNvbWV0aGluZyBJJ20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLiBIb3dldmVyLCB0aGUgY29tcGlsZXIgaXMgZ2l2aW5nIG1lIGFuIGVycm9yLCBzbyBJIGhhdmUgdG8gYXNrIG15c2VsZiwgd2hlcmUgKmlzKiBgUklTQ1ZfUE1VX1NCSWAgZGVmaW5lZD8gSXMgaXQgYSBtYWNybz8gQSBmdW5jdGlvbj8gQSBnbG9iYWwgdmFyaWFibGU/IERpZCBJIGZvcmdldCB0byBpbmNsdWRlIGEgbmVjZXNzYXJ5IGhlYWRlciBmaWxlPyBNYXliZSBpdCdzIGEgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCdzIG5vdCBlbmFibGVkPyBUaW1lIHRvIHN0YXJ0IHRyYWNpbmcgYmFjaywgY2hlY2tpbmcgaW5jbHVkZSBwYXRocywgYW5kIHJldmlld2luZyB0aGUgcHJvamVjdCdzIGJ1aWxkIHN5c3RlbSB0byBmaW5kIHRoZSBzb3VyY2Ugb2YgdGhpcyBjcnVjaWFsIGRlZmluaXRpb24uIFRoaXMgY291bGQgYmUgYSBzaW1wbGUgb3ZlcnNpZ2h0IG9yIGEgbW9yZSBmdW5kYW1lbnRhbCBjb25maWd1cmF0aW9uIHByb2JsZW0uIExldCdzIGdldCB0aGlzIHNvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE3MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjAwLjI2NTkyMTg3OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3NzEzMTM5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfUE1VX1NCSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wZXJmL0tjb25maWc9ODg9Y29uZmlnIFJJU0NWX1BNVV9MRUdBQ1lcXG4tLVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk3LVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnOjk4OmNvbmZpZyBSSVNDVl9QTVVfU0JJXFxuZHJpdmVycy9wZXJmL0tjb25maWctOTktXFx0ZGVwZW5kcyBvbiBSSVNDVl9QTVUgXFx1MDAyNlxcdTAwMjYgUklTQ1ZfU0JJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjAxLjk0MzA1OTU4NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzIzODY4MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBSSVNDVl9QTVVfU0JJKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBSSVNDLVYgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IChQTVUpIHV0aWxpemluZyB0aGUgU0JJIChTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UpIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgd2l0aGluIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uIHN5c3RlbSwgc3BlY2lmaWNhbGx5IGF0IHRoZSBLY29uZmlnIGZpbGVzLiBHaXZlbiB0aGUgdG9waWMsIHRoZSBgZHJpdmVycy9wZXJmYCBkaXJlY3RvcnkgaXMgdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludC4gSXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgYW55dGhpbmcgcmVsYXRlZCB0byBwZXJmb3JtYW5jZSBjb3VudGVycy4gVGhlcmVmb3JlLCB0aGUgZmlyc3QgdGhpbmcgSSdsbCBjaGVjayBpcyBgZHJpdmVycy9wZXJmL0tjb25maWdgLiBJJ20gaG9waW5nIHRvIGZpbmQgYSBzeW1ib2wsIGxpa2VseSBuYW1lZCBzb21ldGhpbmcgbGlrZSBgUklTQ1ZfUE1VX1NCSWAgb3IgYSBzaW1pbGFyIHZhcmlhdGlvbiwgdGhhdCBjb250cm9scyB0aGUgaW5jbHVzaW9uIG9mIHRoZSBTQkktYmFzZWQgUE1VIHN1cHBvcnQuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgcmV2ZWFsIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBwb3RlbnRpYWwgYnVpbGQgb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgZmVhdHVyZS4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTEzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjU6MDUuMjY2OTMxNDkyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3BlcmYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA5MDpcXHRcXHRib29sIFxcXCJSSVNDLVYgbGVnYWN5IFBNVSBpbXBsZW1lbnRhdGlvblxcXCJcXG4gIDkxOlxcdFxcdGRlZmF1bHQgeVxcbiAgOTI6XFx0XFx0aGVscFxcbiAgOTM6XFx0XFx0ICBTYXkgeSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGxlZ2FjeSBDUFUgcGVyZm9ybWFuY2UgbW9uaXRvclxcbiAgOTQ6XFx0XFx0ICBpbXBsZW1lbnRhdGlvbiBvbiBSSVNDLVYgYmFzZWQgc3lzdGVtcy4gVGhpcyBvbmx5IGFsbG93cyBjb3VudGluZ1xcbiAgOTU6XFx0XFx0ICBvZiBjeWNsZS9pbnN0cnVjdGlvbiBjb3VudGVyIGFuZCBkb2Vzbid0IHN1cHBvcnQgY291bnRlciBvdmVyZmxvdyxcXG4gIDk2OlxcdFxcdCAgb3IgcHJvZ3JhbW1hYmxlIGNvdW50ZXJzLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlLlxcbiAgOTc6XFx0XFxuICA5ODpcXHRjb25maWcgUklTQ1ZfUE1VX1NCSVxcbiAgOTk6XFx0XFx0ZGVwZW5kcyBvbiBSSVNDVl9QTVUgXFx1MDAyNlxcdTAwMjYgUklTQ1ZfU0JJXFxuIDEwMDpcXHRcXHRib29sIFxcXCJSSVNDLVYgUE1VIGJhc2VkIG9uIFNCSSBQTVUgZXh0ZW5zaW9uXFxcIlxcbiAxMDE6XFx0XFx0ZGVmYXVsdCB5XFxuIDEwMjpcXHRcXHRoZWxwXFxuIDEwMzpcXHRcXHQgIFNheSB5IGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgQ1BVIHBlcmZvcm1hbmNlIG1vbml0b3JcXG4gMTA0OlxcdFxcdCAgdXNpbmcgU0JJIFBNVSBleHRlbnNpb24gb24gUklTQy1WIGJhc2VkIHN5c3RlbXMuIFRoaXMgb3B0aW9uIHByb3ZpZGVzXFxuIDEwNTpcXHRcXHQgIGZ1bGwgcGVyZiBmZWF0dXJlIHN1cHBvcnQgaS5lLiBjb3VudGVyIG92ZXJmbG93LCBwcml2aWxlZ2UgbW9kZVxcbiAxMDY6XFx0XFx0ICBmaWx0ZXJpbmcsIGNvdW50ZXIgY29uZmlndXJhdGlvbi5cXG4gMTA3OlxcdFxcbiAxMDg6XFx0Y29uZmlnIFNUQVJGSVZFX1NUQVJMSU5LX1BNVVxcbiAxMDk6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1NUQVJGSVZFIHx8IENPTVBJTEVfVEVTVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNTowNS4yNjcwMzgxMTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyMzAyNzYzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZXBlbmRlbmN5IEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgUklTQ1ZfUE1VX1NCSWAgZmVhdHVyZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgaXQgaGluZ2VzIG9uIHR3byBvdGhlciB0aGluZ3M6IGBSSVNDVl9QTVVgIGFuZCBgUklTQ1ZfU0JJYC4gVGhhdCdzIGEgcHJldHR5IGNsZWFyIGRlcGVuZGVuY3kgcmlnaHQgdGhlcmUuIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYFJJU0NWX1BNVWAgaXMgYWxsIGFib3V0LiBUaW1lIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IG9uZSBmaXJzdCwgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHdob2xlIGFyY2hpdGVjdHVyZS4gTmVlZCB0byBnZXQgYSBncmFzcCBvbiB0aGUgYnVpbGRpbmcgYmxvY2tzIGJlZm9yZSBJIGNhbiBldmFsdWF0ZSB0aGUgbGFyZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwOTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjA5LjM5MDA2NzgzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTA2ODAyNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJJU0NWX1BNVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3BlcmYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BlcmYvS2NvbmZpZz03ND1jb25maWcgQVJNX1hTQ0FMRV9QTVVcXG4tLVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTc3LVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnOjc4OmNvbmZpZyBSSVNDVl9QTVVcXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy03OS1cXHRkZXBlbmRzIG9uIFJJU0NWXFxuLS1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo4ODpjb25maWcgUklTQ1ZfUE1VX0xFR0FDWVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTg5LVxcdGRlcGVuZHMgb24gUklTQ1ZfUE1VXFxuLS1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy05Ny1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo5ODpjb25maWcgUklTQ1ZfUE1VX1NCSVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk5LVxcdGRlcGVuZHMgb24gUklTQ1ZfUE1VIFxcdTAwMjZcXHUwMDI2IFJJU0NWX1NCSVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNTowOS42NDA3NTQzMjRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyNTg2Njk2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2Ugbm90ZXMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGRlZXBseSBmYW1pbGlhciB3aXRoIHRoaXMgc3BhY2U6XG5cbioqUE1VIEludGVncmF0aW9uIGluIEtWTS9SSVNDLVY6IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcywgaXQgc2VlbXMgd2UncmUgemVyb2luZyBpbiBvbiBpbnRlZ3JhdGluZyBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXRzIChQTVVzKSB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudCwgc3BlY2lmaWNhbGx5IGZvciBSSVNDLVYgYXJjaGl0ZWN0dXJlcy4gVGhlIGNvcmUgY29tcG9uZW50cyB3ZSBuZWVkIHRvIGFkZHJlc3MgYXJlIGNsZWFybHkgbGFpZCBvdXQ6IGBLVk1gLCBgUklTQ1ZfUE1VYCwgYW5kIGBSSVNDVl9QTVVfU0JJYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyB3ZSdyZSB3b3JraW5nIHdpdGggaGVyZS4gVGhlIG1lbnRpb24gb2YgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBtYWtlcyBwZXJmZWN0IHNlbnNlIGFzIGEga2V5IGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBldmVudCBpbmZvcm1hdGlvbiB3aXRoaW4gdGhlIHZpcnR1YWwgQ1BVIGNvbnRleHQuIFRoYXQncyBhIGNyaXRpY2FsIGZ1bmN0aW9uIGZvciBhbnkgcHJvcGVyIFBNVSBpbXBsZW1lbnRhdGlvbi5cblxuSSdtIGFsc28gbWFraW5nIGEgbWVudGFsIG5vdGUgdG8gY2lyY2xlIGJhY2sgYW5kIGZ1bGx5IHZldCBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgLiBJdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBTQkkgKFN1cGVydmlzb3IgQmluYXJ5IEludGVyZmFjZSkgZXh0ZW5zaW9uIGhhbmRsZXIgaGFzIGFuIGltcG9ydGFudCByb2xlIGluIGhvdyB3ZSdyZSBleHBvc2VkIG9yIGludGVyZmFjZSB3aXRoIHRoZSBQTVUgY2FwYWJpbGl0aWVzIGZyb20gd2l0aGluIHRoZSBndWVzdCBWTS4gVGhpcyBvbmUgbWlnaHQgYWxzbyBiZSBhIHN0cm9uZyBmb2N1cyBwb2ludCBmb3IgZXhhbWluYXRpb24sIHNvIGxldCdzIGtlZXAgaXQgb24gdGhlIHJhZGFyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDcwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjU6MTMuNjY2NjM5NTI4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTcwODc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2JpX2V4dF9wbXVfaGFuZGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtMTUtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6MTY6c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtMTctXFx0XFx0XFx0XFx0ICAgc3RydWN0IGt2bV92Y3B1X3NiaV9yZXR1cm4gKnJldGRhdGEpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz05Mz1jb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfcG11ID0ge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTUtXFx0LmV4dGlkX2VuZCA9IFNCSV9FWFRfUE1VLFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjk2OlxcdC5oYW5kbGVyID0ga3ZtX3NiaV9leHRfcG11X2hhbmRsZXIsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTctXFx0LnByb2JlID0ga3ZtX3NiaV9leHRfcG11X3Byb2JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNToxMy43MTIzNTQ0ODVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQxOTc1NzYwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIFJJU0MtViBQTVUgSW50ZWdlciBPdmVyZmxvdyBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHNlY3VyaXR5IGZpeCwgYW5kIGhlcmUncyBteSBsaW5lIG9mIHRoaW5raW5nOiBpbml0aWFsbHksIEkgd2FzIGNvbnNpZGVyaW5nIGBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcmAgYXMgYSBmb2NhbCBwb2ludC4gSXQncyBzdGF0aWMsIHNvIEkgd2FzIHdvbmRlcmluZyBpZiB0aGUgY29tcGlsZXIgd291bGQgaW5saW5lIGl0LCB3aGljaCB3b3VsZCBtYWtlIHRyYWNpbmcgaXRzIGV4ZWN1dGlvbiBtb3JlIGNvbXBsaWNhdGVkLiBIb3dldmVyLCB3YWl0LCBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgdmNwdV9zYmlfZXh0X3BtdWAuIFRoYXQgbWVhbnMgaXQgKndvbid0KiBiZSBpbmxpbmVkLCBidXQgc2luY2UgaXQncyBzdGF0aWMsIHRoZXJlIHdvbid0IGJlIGFuIGVhc2lseSBpZGVudGlmaWFibGUgc3ltYm9sLiBTbywgbGV0J3MgcGl2b3QgYW5kIGxvb2sgYXQgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYCBpbnN0ZWFkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZXhwb3J0ZWQgLSBhbmQgaXQgaXMsIHNvIHRoYXQgaXMgYSBnb29kIGVudHJ5IHBvaW50IHRvIHN0YXJ0LlxuXG5SaWdodCwgc28gdGhlIGNvcmUgaXNzdWUgaXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGF0IGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGBudW1fZXZlbnRzICogc2l6ZW9mKCplaW5mbylgIGNhbiBvdmVyZmxvdy4gVGhpcyBsZWFkcyB0byBhbiB1bmRlcnNpemVkIGFsbG9jYXRpb24sIGFuZCB0aGVuIHRoZSBgZm9yYCBsb29wIHN1YnNlcXVlbnRseSB3cml0ZXMgb3V0LW9mLWJvdW5kcywgY2xhc3NpYyBidWZmZXIgb3ZlcmZsb3cuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIGFuZCB0aGUgcG90ZW50aWFsIGZvciBmdXp6aW5nIGlzIGhpZ2guXG5cblRvIHJlcHJvZHVjZSB0aGlzLCB0aGUgY29uZmlndXJhdGlvbiBJIG5lZWQgdG8gdGFyZ2V0IGFyZTogYEtWTWAsIGBSSVNDVl9QTVVgLCBhbmQgYFJJU0NWX1BNVV9TQklgLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBgVklSVFVBTElaQVRJT05gIGlzIG5lZWRlZCwgc2luY2UgSSBrbm93IEtWTSBpcyBuZXN0ZWQgdW5kZXIgYSBgaWYgVklSVFVBTElaQVRJT05gLCB0aGlzIGlzIGxpa2VseSBhIG1lbnVjb25maWcgb3B0aW9uLiBPa2F5LCBhbmQgeWVzLCBJJ2xsIG5lZWQgYFBFUkZfRVZFTlRTYC4gYFJJU0NWX1BNVWAgaXMgbGlrZWx5IGRlcGVuZGVudCBvbiBpdCwgc28gbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgZGVwZW5kZW5jeSBpbiBgZHJpdmVycy9wZXJmL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTQ4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjIwLjEzMjExNTIxM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzEzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wZXJmL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNzA6XFx0Y29uZmlnIEFSTV9WN19QTVVcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gQVJNX1BNVSBcXHUwMDI2XFx1MDAyNiBDUFVfVjdcXG4gIDcyOlxcdFxcdGRlZl9ib29sIHlcXG4gIDczOlxcdFxcbiAgNzQ6XFx0Y29uZmlnIEFSTV9YU0NBTEVfUE1VXFxuICA3NTpcXHRcXHRkZXBlbmRzIG9uIEFSTV9QTVUgXFx1MDAyNlxcdTAwMjYgQ1BVX1hTQ0FMRVxcbiAgNzY6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgUklTQ1ZfUE1VXFxuICA3OTpcXHRcXHRkZXBlbmRzIG9uIFJJU0NWXFxuICA4MDpcXHRcXHRib29sIFxcXCJSSVNDLVYgUE1VIGZyYW1ld29ya1xcXCJcXG4gIDgxOlxcdFxcdGRlZmF1bHQgeVxcbiAgODI6XFx0XFx0aGVscFxcbiAgODM6XFx0XFx0ICBTYXkgeSBpZiB5b3Ugd2FudCB0byB1c2UgQ1BVIHBlcmZvcm1hbmNlIG1vbml0b3JzIG9uIFJJU0NWLWJhc2VkXFxuICA4NDpcXHRcXHQgIHN5c3RlbXMuIFRoaXMgcHJvdmlkZXMgdGhlIGNvcmUgUE1VIGZyYW1ld29yayB0aGF0IGFic3RyYWN0cyBjb21tb25cXG4gIDg1OlxcdFxcdCAgUE1VIGZ1bmN0aW9uYWxpdGllcyBpbiBhIGNvcmUgbGlicmFyeSBzbyB0aGF0IGRpZmZlcmVudCBQTVUgZHJpdmVyc1xcbiAgODY6XFx0XFx0ICBjYW4gcmV1c2UgaXQuXFxuICA4NzpcXHRcXG4gIDg4OlxcdGNvbmZpZyBSSVNDVl9QTVVfTEVHQUNZXFxuICA4OTpcXHRcXHRkZXBlbmRzIG9uIFJJU0NWX1BNVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNToyMC4xMzIyNDg0MjJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0NTI5NzM5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIGV4cGVjdGF0aW9uIHRoYXQgSSdtIGRpc2N1c3NpbmcgdGhpcyB3aXRoIGEgZmVsbG93IGV4cGVydDpcblxuKipEZXBlbmRlbmNpZXMgYW5kIEtjb25maWcgQ29udW5kcnVtcyoqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZyBhYm91dCBgUklTQ1ZfUE1VYC4uLiBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gdGhlIGNvcmUgYFJJU0NWYCBhcmNoaXRlY3R1cmUgc3VwcG9ydCwgdGhhdCdzIGp1c3QgYSBnaXZlbi4gQnV0IHRoZW4gSSBoaXQgYSBwb3RlbnRpYWwgc25hZy4gSSdtIHdvbmRlcmluZyBhYm91dCB0aGUgd2F5IGBkcml2ZXJzL3BlcmYvS2NvbmZpZ2Agd29ya3MuIE15IGd1dCBmZWVsaW5nIGlzIHRlbGxpbmcgbWUgdGhhdCBpdCBjb3VsZCBiZSBzb3VyY2VkIGNvbmRpdGlvbmFsbHksIHBlcmhhcHMgdW5kZXIgdGhlIGBQRVJGX0VWRU5UU2AgY29uZmlnIG9wdGlvbi4gSWYgdGhhdCdzIHRoZSBjYXNlLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGhvdyB0aGVzZSBkZXBlbmRlbmNpZXMgY2FzY2FkZS4gSSBkb24ndCB3YW50IHRvIG1ha2UgYXNzdW1wdGlvbnMgYW5kIG1pc3MgYSBzdWJ0bGUgY29uZGl0aW9uYWwgYnVpbGQgcGF0aC4gVGhpcyBjb3VsZCBoYXZlIGltcGxpY2F0aW9ucyBkb3duIHRoZSBsaW5lLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIyMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjU6MjMuNDc3NTUwNDE4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQyMTc1MjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZSBcXFwiZHJpdmVycy9wZXJmL0tjb25maWdcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL0tjb25maWc9MjEwPXNvdXJjZSBcXFwiZHJpdmVycy9tY2IvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL0tjb25maWctMjExLVxcbmRyaXZlcnMvS2NvbmZpZzoyMTI6c291cmNlIFxcXCJkcml2ZXJzL3BlcmYvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL0tjb25maWctMjEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMjoyNToyNS4yMTk3MzE0NDFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4NjUwOTIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFBlcmYgRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBzdWJzeXN0ZW0sIGFuZCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXI6IHRoZSBidWlsZCBzeXN0ZW0uIFRoZSBgZHJpdmVycy9wZXJmYCBkaXJlY3RvcnkgaXMsIGxvZ2ljYWxseSwgd2hlcmUgdGhlIGRldmljZSBkcml2ZXJzIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UgY291bnRlcnMgd291bGQgcmVzaWRlLiBBbmQgd2l0aGluIHRoYXQgZGlyZWN0b3J5LCB0aGUgYE1ha2VmaWxlYCBpcyB0aGUgc2luZ2xlIG1vc3QgaW1wb3J0YW50IGZpbGUuIEl0J3MgdGhlIGJsdWVwcmludCwgdGhlIG9yY2hlc3RyYXRpb24gcG9pbnQgZm9yIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBjb21waWxlZCwgbGlua2VkLCBhbmQgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGtlcm5lbC4gQnkgZXhhbWluaW5nIHRoaXMgYE1ha2VmaWxlYCwgSSBzaG91bGQgZ2V0IGEgdmVyeSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMsIHRoZSBhdmFpbGFibGUgdGFyZ2V0cywgYW5kIGFueSBzcGVjaWFsIGNvbnNpZGVyYXRpb25zIGZvciB0aGVzZSBwZXJmb3JtYW5jZS1yZWxhdGVkIGRyaXZlcnMuIEl0IHdpbGwgZ2l2ZSBtZSBhIGZhbnRhc3RpYyBmb3VuZGF0aW9uIHRvIHRoZW4gZGl2ZSBkZWVwZXIgaW50byB0aGUgaW5kaXZpZHVhbCBzb3VyY2UgZmlsZXMgaWYgcmVxdWlyZWQuIEkgZXhwZWN0IHRvIHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZSBtdWNoIGJldHRlciBhZnRlciBhIGxvb2sgdGhyb3VnaCB0aGUgYE1ha2VmaWxlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU0MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjI4LjMwNjI0MzI2MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NDk3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2JqLVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3BlcmYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wZXJmL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BUk1fQ0NJX1BNVSkgKz0gYXJtLWNjaS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0FSTV9DQ04pICs9IGFybS1jY24ub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19BUk1fQ01OKSArPSBhcm0tY21uLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQVJNX0RTVV9QTVUpICs9IGFybV9kc3VfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQVJNX05JKSArPSBhcm0tbmkub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19BUk1fUE1VKSArPSBhcm1fcG11Lm8gYXJtX3BtdV9wbGF0Zm9ybS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX0FSTV9QTVVfQUNQSSkgKz0gYXJtX3BtdV9hY3BpLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQVJNX1BNVVYzKSArPSBhcm1fcG11djMub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQVJNX1Y2X1BNVSkgKz0gYXJtX3Y2X3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19BUk1fVjdfUE1VKSArPSBhcm1fdjdfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0FSTV9YU0NBTEVfUE1VKSArPSBhcm1feHNjYWxlX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19BUk1fU01NVV9WM19QTVUpICs9IGFybV9zbW11djNfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0ZTTF9JTVg4X0REUl9QTVUpICs9IGZzbF9pbXg4X2Rkcl9wZXJmLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX0ZTTF9JTVg5X0REUl9QTVUpICs9IGZzbF9pbXg5X2Rkcl9wZXJmLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0ZVSklUU1VfVU5DT1JFX1BNVSkgKz0gZnVqaXRzdV91bmNvcmVfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0hJU0lfUE1VKSArPSBoaXNpbGljb24vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19RQ09NX0wyX1BNVSlcXHQrPSBxY29tX2wyX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19RQ09NX0wzX1BNVSkgKz0gcWNvbV9sM19wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfUklTQ1ZfUE1VKSArPSByaXNjdl9wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUklTQ1ZfUE1VX0xFR0FDWSkgKz0gcmlzY3ZfcG11X2xlZ2FjeS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSArPSByaXNjdl9wbXVfc2JpLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX1NUQVJGSVZFX1NUQVJMSU5LX1BNVSkgKz0gc3RhcmZpdmVfc3RhcmxpbmtfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX1RIVU5ERVJYMl9QTVUpICs9IHRodW5kZXJ4Ml9wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfWEdFTkVfUE1VKSArPSB4Z2VuZV9wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfQVJNX1NQRV9QTVUpICs9IGFybV9zcGVfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0FSTTY0X0JSQkUpICs9IGFybV9icmJlLm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0FSTV9ETUM2MjBfUE1VKSArPSBhcm1fZG1jNjIwX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19NQVJWRUxMX0NOMTBLX1RBRF9QTVUpICs9IG1hcnZlbGxfY24xMGtfdGFkX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19NQVJWRUxMX0NOMTBLX0REUl9QTVUpICs9IG1hcnZlbGxfY24xMGtfZGRyX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19NQVJWRUxMX1BFTV9QTVUpICs9IG1hcnZlbGxfcGVtX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19BUFBMRV9NMV9DUFVfUE1VKSArPSBhcHBsZV9tMV9jcHVfcG11Lm9cXG5kcml2ZXJzL3BlcmYvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0FMSUJBQkFfVU5DT1JFX0RSV19QTVUpICs9IGFsaWJhYmFfdW5jb3JlX2Ryd19wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfRFdDX1BDSUVfUE1VKSArPSBkd2NfcGNpZV9wbXUub1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQVJNX0NPUkVTSUdIVF9QTVVfQVJDSF9TWVNURU1fUE1VKSArPSBhcm1fY3NwbXUvXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19NRVNPTl9ERFJfUE1VKSArPSBhbWxvZ2ljL1xcbmRyaXZlcnMvcGVyZi9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfQ1hMX1BNVSkgKz0gY3hsX3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19OVklESUFfVEVHUkE0MTBfQ01FTV9MQVRFTkNZX1BNVSkgKz0gbnZpZGlhX3Q0MTBfY21lbV9sYXRlbmN5X3BtdS5vXFxuZHJpdmVycy9wZXJmL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19OVklESUFfVEVHUkE0MTBfQzJDX1BNVSkgKz0gbnZpZGlhX3Q0MTBfYzJjX3BtdS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIyOjI1OjI4LjM0OTg5ODQyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNzIwNDY5NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUklTQy1WIEtWTSBQTVUgU0JJIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGNvcmUgb2YgdGhpcyBwYXRjaDogYFJJU0NWX1BNVV9TQklgIGlzIGluZGVlZCB0aGUga2V5LiBMZXQncyBqdXN0IGNvbmZpcm0gaXQgYnkgdGFraW5nIGFub3RoZXIgbG9vayBhdCBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AuIFJpZ2h0LCBgS1ZNYCBoaW5nZXMgb24gYFJJU0NWX1NCSWAgYW5kIGBNTVVgLiBHaXZlbiBob3cgUklTQy1WIGlzIHN0cnVjdHVyZWQsIGBSSVNDVl9TQklgIGlzIGxpa2VseSBlbmFibGVkIGJ5IGRlZmF1bHQuIFRoYXQncyBnb29kIHRvIGtub3cuXG5cblRoZXJlZm9yZSwgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlOiBgVklSVFVBTElaQVRJT05gLCBgS1ZNYCwgYFJJU0NWX1BNVWAsIGFuZCBjcnVjaWFsbHksIGBSSVNDVl9QTVVfU0JJYC5cblxuVGhlIGZvY2FsIHBvaW50LCB0aGUgZnVuY3Rpb24gdGhhdCdzIGJlaW5nIHR3ZWFrZWQsIGlzIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuIFRoYXQncyB0aGUgcHJpbWFyeSBzeW1ib2wgdG8ga2VlcCBpbiBtaW5kLlxuXG5UaGUgdW5kZXJseWluZyBpc3N1ZSBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBTQkkgZXh0ZW5zaW9uIGhhbmRsZXIsIHNwZWNpZmljYWxseSBpbiBga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm9gLiBUaGlzIGlzIGEgcmlzayBmb3IgYSBwb3RlbnRpYWxseSBuYXN0eSBvdXQtb2YtYm91bmRzIHdyaXRlLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIEtWTSdzIGNvcmUgY29kZSBhbmQsIGl0IGlzIHJlYWNoYWJsZSwgaXQgZGVmaW5pdGVseSBuZWVkcyByb2J1c3QgZnV6emluZy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLiB5ZXMsIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AgaXMgdGhlICpvbmx5KiBmdW5jdGlvbiB0aGF0J3MgYmVlbiBtb2RpZmllZC4gU28sIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHZlcnkgZm9jdXNlZCBjaGFuZ2UuXG5cbkFscmlnaHQsIEknbSByZWFkeSB0byBtYXJrIHRoZSBwYXRjaCBhcyB1bmRlcnN0b29kLCBhbmQgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTEwMywiT3V0cHV0VG9rZW5zIjoxNTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjI6MjU6MzQuNDIxOTQ5NzY4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxMjAwNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCIsXG4gICAgXCJLVk1cIixcbiAgICBcIlJJU0NWX1BNVVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBTQkkgZXh0ZW5zaW9uIGhhbmRsZXIgYGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvYC4gVGhlIHZ1bG5lcmFiaWxpdHkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIHdoZW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIFBNVSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBLVk0gY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiLFxuICAgIFwiS1ZNXCIsXG4gICAgXCJSSVNDVl9QTVVcIixcbiAgICBcIlJJU0NWX1BNVV9TQklcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgUklTQy1WIEtWTSBQTVUgU0JJIGV4dGVuc2lvbiBoYW5kbGVyIGBrdm1fcmlzY3ZfdmNwdV9wbXVfZXZlbnRfaW5mb2AuIFRoZSB2dWxuZXJhYmlsaXR5IGNvdWxkIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSB3aGVuIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBQTVUgZXZlbnRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgS1ZNIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7pvj5[1] Phase: Succeeded StartedAt: 2026-07-31 22:25:46 +0000 UTC FinishedAt: 2026-07-31 22:25:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 22:25:46 +0000 UTC FinishedAt: 2026-07-31 22:25:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2] Phase: Succeeded StartedAt: 2026-07-31 22:25:46 +0000 UTC FinishedAt: 2026-07-31 23:14:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 22:25:46 +0000 UTC FinishedAt: 2026-07-31 23:14:04 +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":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","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-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 22:25:46 +0000 UTC FinishedAt: 2026-07-31 22:25:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 22:25:46 +0000 UTC FinishedAt: 2026-07-31 22:25:50 +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":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"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-workflow7pvj5/series-workflow7pvj5-convert-artifact-3040286119/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 22:25:56 +0000 UTC FinishedAt: 2026-07-31 22:41:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 22:25:56 +0000 UTC FinishedAt: 2026-07-31 22:41:47 +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:*0f89ad98-7c36-41c0-a48c-8d1852473cbb,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-workflow7pvj5/series-workflow7pvj5-convert-artifact-3040286119/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": "7dfe9cc0-1452-46b1-9b22-17d89364f549", "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-workflow7pvj5/series-workflow7pvj5-build-action-2217698621/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 22:25:56 +0000 UTC FinishedAt: 2026-07-31 22:41:37 +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:*0f89ad98-7c36-41c0-a48c-8d1852473cbb,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-workflow7pvj5/series-workflow7pvj5-convert-artifact-3040286119/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": "7dfe9cc0-1452-46b1-9b22-17d89364f549", "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-workflow7pvj5/series-workflow7pvj5-build-action-2217698621/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 22:41:47 +0000 UTC FinishedAt: 2026-07-31 22:41:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 22:41:47 +0000 UTC FinishedAt: 2026-07-31 22:41:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 22:41:47 +0000 UTC FinishedAt: 2026-07-31 22:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 22:41:47 +0000 UTC FinishedAt: 2026-07-31 22:41:57 +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":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","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-workflow7pvj5/series-workflow7pvj5-convert-artifact-139188822/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 22:42:07 +0000 UTC FinishedAt: 2026-07-31 22:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 22:42:07 +0000 UTC FinishedAt: 2026-07-31 22:43:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7dfe9cc0-1452-46b1-9b22-17d89364f549,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-workflow7pvj5/series-workflow7pvj5-build-action-2217698621/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-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 22:44:08 +0000 UTC FinishedAt: 2026-07-31 22:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 22:44:08 +0000 UTC FinishedAt: 2026-07-31 22:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 22:44:08 +0000 UTC FinishedAt: 2026-07-31 23:09:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 22:44:08 +0000 UTC FinishedAt: 2026-07-31 23:09:52 +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:*0f89ad98-7c36-41c0-a48c-8d1852473cbb,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-workflow7pvj5/series-workflow7pvj5-convert-artifact-139188822/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": "3c5b8385-4923-41da-88bb-3ebdb361a423", "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-workflow7pvj5/series-workflow7pvj5-build-action-956334170/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 22:44:08 +0000 UTC FinishedAt: 2026-07-31 23:09:41 +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:*0f89ad98-7c36-41c0-a48c-8d1852473cbb,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-workflow7pvj5/series-workflow7pvj5-convert-artifact-139188822/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": "3c5b8385-4923-41da-88bb-3ebdb361a423", "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-workflow7pvj5/series-workflow7pvj5-build-action-956334170/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 23:09:52 +0000 UTC FinishedAt: 2026-07-31 23:09:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 23:09:52 +0000 UTC FinishedAt: 2026-07-31 23:09:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 23:09:52 +0000 UTC FinishedAt: 2026-07-31 23:12:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 23:09:52 +0000 UTC FinishedAt: 2026-07-31 23:11:49 +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:*3c5b8385-4923-41da-88bb-3ebdb361a423,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-workflow7pvj5/series-workflow7pvj5-build-action-956334170/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-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 23:12:00 +0000 UTC FinishedAt: 2026-07-31 23:14:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 23:12:00 +0000 UTC FinishedAt: 2026-07-31 23:14:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"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:*7dfe9cc0-1452-46b1-9b22-17d89364f549,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c5b8385-4923-41da-88bb-3ebdb361a423,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-workflow7pvj5/series-workflow7pvj5-build-action-2217698621/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-workflow7pvj5/series-workflow7pvj5-build-action-956334170/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 23:12:00 +0000 UTC FinishedAt: 2026-07-31 23:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 23:12:00 +0000 UTC FinishedAt: 2026-07-31 23:12:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"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-workflow7pvj5/series-workflow7pvj5-convert-artifact-1677802747/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 23:12:00 +0000 UTC FinishedAt: 2026-07-31 23:12:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 23:12:00 +0000 UTC FinishedAt: 2026-07-31 23:12:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 23:12:00 +0000 UTC FinishedAt: 2026-07-31 23:12:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 23:12:21 +0000 UTC FinishedAt: 2026-07-31 23:14:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7pvj5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_event_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM","RISCV_PMU","RISCV_PMU_SBI"],"series_id":"6a07ac1b-28dd-446b-be2a-eff22e01e58b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 23:12:21 +0000 UTC FinishedAt: 2026-07-31 23:13:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7dfe9cc0-1452-46b1-9b22-17d89364f549,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c5b8385-4923-41da-88bb-3ebdb361a423,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-workflow7pvj5/series-workflow7pvj5-build-action-2217698621/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-workflow7pvj5/series-workflow7pvj5-build-action-956334170/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-workflow7pvj5/series-workflow7pvj5-convert-artifact-1677802747/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,}