Name: series-workflowxrc5p Phase: Failed StartedAt: 2026-09-07 06:26:50 +0000 UTC FinishedAt: 2026-09-07 07:10:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxrc5p[0] Phase: Succeeded StartedAt: 2026-09-07 06:26:50 +0000 UTC FinishedAt: 2026-09-07 07:10:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxrc5p[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 06:26:50 +0000 UTC FinishedAt: 2026-09-07 07:10:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgZm9yIEh1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRzIChIaU5JQykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgbWFpbGJveCBoYW5kbGluZyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiM2M0YmViOTZkNzQ5YzhhNWNhODEyM2NiOGViNDcxMGMyYmU2ZmY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwNzowOTo1OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guY1xuaW5kZXggMjc4NDEyNzMyN2U2NC4uNmU2N2E2Yzk1NzhlMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmNcbkBAIC0xMjgsNiAmIzQzOzEyOCw3IEBAIGVudW0gaGluaWNfbWJveF90eF9zdGF0dXMge1xuIFxuICNkZWZpbmUgU0VRX0lEX1NUQVJUX1ZBTFx0XHRcdDBcbiAjZGVmaW5lIFNFUV9JRF9NQVhfVkFMXHRcdFx0XHQ0MlxuJiM0MzsjZGVmaW5lIE1CT1hfTEFTVF9TRUdfTUFYX0xFTlx0XHRcdChNQk9YX01BWF9CVUZfU1ogLSBTRVFfSURfTUFYX1ZBTCAqIE1CT1hfU0VHX0xFTilcbiBcbiAjZGVmaW5lIE5PX0RNQV9BVFRSSUJVVEVfVkFMXHRcdFx0MFxuIFxuQEAgLTM3Miw3ICYjNDM7MzczLDggQEAgcmVjdl9wZl9mcm9tX3ZmX21ib3hfaGFuZGxlcihzdHJ1Y3QgaGluaWNfbWJveF9mdW5jX3RvX2Z1bmMgKmZ1bmNfdG9fZnVuYyxcbiBzdGF0aWMgYm9vbCBjaGVja19tYm94X3NlcV9pZF9hbmRfc2VnX2xlbihzdHJ1Y3QgaGluaWNfcmVjdl9tYm94ICpyZWN2X21ib3gsXG4gXHRcdFx0XHRcdCAgdTggc2VxX2lkLCB1OCBzZWdfbGVuKVxuIHtcbi1cdGlmIChzZXFfaWQgXHUwMDNlIFNFUV9JRF9NQVhfVkFMIHx8IHNlZ19sZW4gXHUwMDNlIE1CT1hfU0VHX0xFTilcbiYjNDM7XHRpZiAoc2VxX2lkIFx1MDAzZSBTRVFfSURfTUFYX1ZBTCB8fCBzZWdfbGVuIFx1MDAzZSBNQk9YX1NFR19MRU4gfHxcbiYjNDM7XHQgICAgKHNlcV9pZCA9PSBTRVFfSURfTUFYX1ZBTCBcdTAwMjZcdTAwMjYgc2VnX2xlbiBcdTAwM2UgTUJPWF9MQVNUX1NFR19NQVhfTEVOKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKHNlcV9pZCA9PSAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgZm9yIEh1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRzIChIaU5JQykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgbWFpbGJveCBoYW5kbGluZyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiM2M0YmViOTZkNzQ5YzhhNWNhODEyM2NiOGViNDcxMGMyYmU2ZmY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwNzowOTo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jCmluZGV4IDI3ODQxMjczMjdlNjQuLjZlNjdhNmM5NTc4ZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYwpAQCAtMTI4LDYgJiM0MzsxMjgsNyBAQCBlbnVtIGhpbmljX21ib3hfdHhfc3RhdHVzIHsKIAogI2RlZmluZSBTRVFfSURfU1RBUlRfVkFMCQkJMAogI2RlZmluZSBTRVFfSURfTUFYX1ZBTAkJCQk0MgomIzQzOyNkZWZpbmUgTUJPWF9MQVNUX1NFR19NQVhfTEVOCQkJKE1CT1hfTUFYX0JVRl9TWiAtIFNFUV9JRF9NQVhfVkFMICogTUJPWF9TRUdfTEVOKQogCiAjZGVmaW5lIE5PX0RNQV9BVFRSSUJVVEVfVkFMCQkJMAogCkBAIC0zNzIsNyAmIzQzOzM3Myw4IEBAIHJlY3ZfcGZfZnJvbV92Zl9tYm94X2hhbmRsZXIoc3RydWN0IGhpbmljX21ib3hfZnVuY190b19mdW5jICpmdW5jX3RvX2Z1bmMsCiBzdGF0aWMgYm9vbCBjaGVja19tYm94X3NlcV9pZF9hbmRfc2VnX2xlbihzdHJ1Y3QgaGluaWNfcmVjdl9tYm94ICpyZWN2X21ib3gsCiAJCQkJCSAgdTggc2VxX2lkLCB1OCBzZWdfbGVuKQogewotCWlmIChzZXFfaWQgJmd0OyBTRVFfSURfTUFYX1ZBTCB8fCBzZWdfbGVuICZndDsgTUJPWF9TRUdfTEVOKQomIzQzOwlpZiAoc2VxX2lkICZndDsgU0VRX0lEX01BWF9WQUwgfHwgc2VnX2xlbiAmZ3Q7IE1CT1hfU0VHX0xFTiB8fAomIzQzOwkgICAgKHNlcV9pZCA9PSBTRVFfSURfTUFYX1ZBTCAmYW1wOyZhbXA7IHNlZ19sZW4gJmd0OyBNQk9YX0xBU1RfU0VHX01BWF9MRU4pKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoc2VxX2lkID09IDApIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDYxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFdmFsdWF0aW5nIHRoZSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcqKgoKT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSB0aGUgcmVxdWVzdCBpcyBhIHRyaWFnZSBvZiBhIHBhdGNoIHdpdGhpbiB0aGUgTGludXgga2VybmVsLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jYCBmaWxlLiBUaGUgdGFzayBzZWVtcyBwcmV0dHkgYmVuaWduIOKAkyBpdCYjMzk7cyBhIGRlZmVuc2l2ZSByZXZpZXcgb3IgUUEtcmVsYXRlZC4gTm8gYWxhcm1zIHlldC4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGF0Y2guIFRoZSBkaWZmIHNob3dzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW5gIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBhbiBleHRyYSBjaGVjay4gQmVmb3JlLCBpdCB3YXMgZW5zdXJpbmcgYHNlcV9pZGAgZGlkbiYjMzk7dCBleGNlZWQgYFNFUV9JRF9NQVhfVkFMYCBhbmQgYHNlZ19sZW5gIGRpZG4mIzM5O3QgZXhjZWVkIGBNQk9YX1NFR19MRU5gLiBUaGUgbmV3IGNoZWNrIGFkZHMgYW5vdGhlciBjb25kaXRpb246IGlmIGBzZXFfaWRgICppcyogZXF1YWwgdG8gYFNFUV9JRF9NQVhfVkFMYCwgdGhlbiBgc2VnX2xlbmAgc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTUJPWF9MQVNUX1NFR19NQVhfTEVOYC4gVGhpcyBsb29rcyBsaWtlIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGZpeCwgYnV0IG5lZWRzIGZ1cnRoZXIgYW5hbHlzaXMuCgpJIG5lZWQgYSBiaXQgbW9yZSBjb250ZXh0IG9uIHdoYXQgYGhpbmljYCBpcy4gQmFzZWQgb24gdGhlIGZpbGUgcGF0aCwgaXQmIzM5O3MgbGlrZWx5IGEgUENJIGRyaXZlci4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQmIzM5O3MgYSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDLiBMZXQgbWUgdXNlIGdyZXBwZXIgYW5kIHJlYWQtZmlsZSB0byBjaGVjayB0aGUgb3RoZXIgZmlsZXMgYW5kIEtjb25maWcgdG8gdW5kZXJzdGFuZCB0aGUgJiMzNDtoaW5pYyYjMzQ7IGRyaXZlciBiZXR0ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIG9mIHRoaXMgZHJpdmVyLCBhbmQgZXNwZWNpYWxseSB3aGF0IGBtYm94YCBkb2VzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLiBUaGlzIG1pZ2h0IGdpdmUgbWUgYSBiZXR0ZXIgaW5kaWNhdGlvbiBvZiBob3cgY3JpdGljYWwgdGhpcyBwYXRjaCBpcywgYW5kIHdoZXRoZXIgaXQgcmVwcmVzZW50cyBhIHBvdGVudGlhbCBzZWN1cml0eSByaXNrLiBPbmNlIEkgaGF2ZSB0aGlzLCBJIGNhbiBldmFsdWF0ZSB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgd2hldGhlciBmdXp6aW5nIGlzIHdhcnJhbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSElOSUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnOjY6Y29uZmlnIEhJTklDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7SHVhd2VpIEludGVsbGlnZW50IFBDSUUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnOjY6Y29uZmlnIEhJTklDM1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtIdWF3ZWkgM3JkIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoSElOSUMzKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMxOQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgSGluaWMgS2NvbmZpZyBmb3IgSGFyZHdhcmUgYW5kIFZpcnR1YWxpemF0aW9uIFN1cHBvcnQqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZ2AgZmlsZS4gTXkgZ29hbCBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBzcGVjaWZpYyBQQ0kgSURzIHRoYXQgdGhpcyBIaW5pYyBkcml2ZXIgc3VwcG9ydHMuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcCBmb3IgYW55IGRldmljZSBkcml2ZXIgYW5hbHlzaXMuIEkgd2FudCB0byBzZWUgd2hpY2ggZGV2aWNlcyBpdCYjMzk7cyAqbWVhbnQqIHRvIHdvcmsgd2l0aCBmcm9tIHRoZSBnZXQtZ28uCgpCZXlvbmQganVzdCByYXcgUENJIElEcywgSSYjMzk7bSBhbHNvIGtlZW5seSBpbnRlcmVzdGVkIGluIGFueSBpbmRpY2F0aW9ucyBvZiB2aXJ0dWFsIGRldmljZSBvciBWRiAoVmlydHVhbCBGdW5jdGlvbikgc3VwcG9ydC4gVGhlIHByZXNlbmNlIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRob3NlIGFzcGVjdHMgd291bGQgYmUgYSBiaWcgZGVhbC4gQXJlIHRoZXJlIGFueSBgQ09ORklHX0hJTklDX1ZGYCBvciBzaW1pbGFyIGZsYWdzIEkgc2hvdWxkIGJlIGxvb2tpbmcgZm9yPyBEb2VzIHRoZSBLY29uZmlnIGV4cG9zZSBhbnkgc2V0dGluZ3MgcmVsYXRlZCB0byBTUi1JT1YgY29uZmlndXJhdGlvbiBvciBtYXliZSBzb21lIGtpbmQgb2YgdmlydHVhbCBOSUMgc2V0dXA/IFRoYXQgd291bGQgZ2l2ZSBtZSBhbiBpZGVhIG9mIGl0cyBpbnRlbmRlZCBmdW5jdGlvbmFsaXR5IGJleW9uZCBzaW1wbGUgcGh5c2ljYWwgTklDIG9wZXJhdGlvbi4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaWYgaXQmIzM5O3MgZGVzaWduZWQgdG8gc3VwcG9ydCBhIG1vcmUgY29tcGxleCwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIEh1YXdlaSBkcml2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgSElOSUNcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O0h1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gKFBDSV9NU0kgXHUwMDI2XHUwMDI2IChYODYgfHwgQVJNNjQpKVxuICAgOTpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEhpTklDIFBDSUUgRXRoZXJuZXQgY2FyZHMuXG4gIDEyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgcGFydCBvZiB0aGUga2VybmVsLCBjaG9vc2UgWSBoZXJlLlxuICAxMzpcdFx0ICBJZiB1bnN1cmUsIGNob29zZSBOLlxuICAxNDpcdFx0ICBUaGUgZGVmYXVsdCBpcyBjb21waWxlZCBhcyBtb2R1bGUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgxOQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipDaGVja2luZyBISU5JQyBSZWdpc3RyYXRpb24gYW5kIEhhcmR3YXJlIFJlcXVpcmVtZW50cyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgcmVnaXN0cmF0aW9uIHN0YXR1cyBvZiAmIzM0O2hpbmljJiMzNDsg4oCTIHdoYXRldmVyIGl0IGlzIOKAkyBhbmQsIG1vcmUgY3JpdGljYWxseSwgd2hldGhlciBpdCBtYW5kYXRlcyB0aGUgcHJlc2VuY2Ugb2YgYWN0dWFsLCBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLiBUaGUgdGVybSBzZWVtcyBzb21ld2hhdCBzcGVjaWZpYywgc28gSSBjYW4gbWFrZSBhbiBhc3N1bXB0aW9uIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyIG9yIHJlbGF0ZWQgZHJpdmVyLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGNhbiBydW4gd2l0aGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpcyB3aWxsIGRldGVybWluZSBob3cgSSB1c2UgdGhlIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZS4gSSBuZWVkIHRvIGdldCB0aGlzIGZpZ3VyZWQgb3V0IHNvIEkgY2FuIG1ha2UgYW4gaW5mb3JtZWQgZGVjaXNpb24gb24gaW1wbGVtZW50YXRpb24uIFRoZSBQQ0llIHJlcXVpcmVtZW50IGlzIHRoZSBrZXkgZmFjdG9yIGhlcmUuIERvZXMgaXQgbmVlZCBhIGRlZGljYXRlZCBzbG90PyBDYW4gaXQgYmUgZW11bGF0ZWQ/IENhbiBJIHJ1biB0aGlzIGluIGEgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHNjZW5hcmlvPyBUaGlzIGlzIGNydWNpYWwgZm9yIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIGFyY2hpdGVjdHVyYWwgcGxhbm5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXJ8cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTE0ODg9c3RhdGljIGludCBfX2luaXQgaGluaWNfbW9kdWxlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jOjE0OTQ6XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmhpbmljX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0OTUtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMTQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBoaW5pY2AgUmVhY2hhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSByZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcyBhcmUgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKmFjdHVhbGx5KiByZWFjaGFibGUgaW4gdGhlIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBuYW1lbHkgUUVNVS4gVGhlIGNydWNpYWwgY3JpdGVyaWEgaXMgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgU3BlY2lmaWNhbGx5LCBhbnl0aGluZyB0aGF0IHJlbGllcyBvbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KCkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBoaW5pY2AgaXMuIEFoLCBpdCYjMzk7cyB0aGUgJiMzNDtIdWF3ZWkgSW50ZWxsaWdlbnQgUENJZSBOZXR3b3JrIEludGVyZmFjZSBDYXJkLiYjMzQ7IFNvLCBhIFNtYXJ0TklDLiBOb3csIHRoZSBjb3JlIHF1ZXN0aW9uOiBJcyB0aGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IE5vLiBRRU1VIHByb3ZpZGVzIGVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlcyBsaWtlIGUxMDAwLCB2aXJ0aW8tbmV0LCBldGMuLCB3aGljaCBhcmUgZ2VuZXJpYy4gVGhpcyBpcyAqZXhwbGljaXRseSogdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUuIEFuZCBtb3JlIHRvIHRoZSBwb2ludCwgdGhpcyBpcyBwaHlzaWNhbCBTbWFydE5JQyBoYXJkd2FyZSBmcm9tIEh1YXdlaS4KClRoZSBtb2RpZmllZCBmdW5jdGlvbiwgYGNoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuYCwgaXMgd2l0aGluIGBoaW5pY19od19tYm94LmNgLCB3aGljaCBtYWtlcyBpdCBsaWtlbHkgdG8gYmUgaGFuZGxpbmcgbWFpbGJveCBjb21tdW5pY2F0aW9uIHNwZWNpZmljYWxseSBmb3IgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgUEYgKFBoeXNpY2FsIEZ1bmN0aW9uKSBhbmQgVkYgKFZpcnR1YWwgRnVuY3Rpb24pIG9mIHRoZSBIaU5JQywgb3IgcG90ZW50aWFsbHkgZXZlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaXJtd2FyZSBvbiB0aGF0IGhhcmR3YXJlLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRvci4KClRoZXJlZm9yZSwgd2l0aG91dCB0aGUgYWN0dWFsIHBoeXNpY2FsIEh1YXdlaSBIaU5JQyBQQ0llIGNhcmQsIHRoaXMgY29kZSAqY2Fubm90KiBiZSBpbml0aWFsaXplZCBvciBleGVjdXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIHdoaWNoIGFyZSBiYXNlZCBvbiBpdCwgYXMgc3l6a2FsbGVyIHV0aWxpemVzLiBJdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlLgoKVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgbW9jaywgZW11bGF0aW9uLCB0dW4vdGFwLCBvciBsb29wYmFjayBob29rcyBmb3IgYGhpbmljYCwgYXMgYSB3b3JrYXJvdW5kLiBCdXQgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIEkmIzM5O3ZlIHNlZW4gc28gZmFyLCBpdCYjMzk7cyBleHRyZW1lbHkgdW5saWtlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hpbmljX2h3X21ib3gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlPTQ9aGluaWMteSA6PSBoaW5pY19tYWluLm8gaGluaWNfdHgubyBoaW5pY19yeC5vIGhpbmljX3BvcnQubyBoaW5pY19od19kZXYubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZS02LVx0ICAgaGluaWNfaHdfbWdtdC5vIGhpbmljX2h3X2FwaV9jbWQubyBoaW5pY19od19lcXMubyBoaW5pY19od19pZi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NzpcdCAgIGhpbmljX2NvbW1vbi5vIGhpbmljX2V0aHRvb2wubyBoaW5pY19kZXZsaW5rLm8gaGluaWNfaHdfbWJveC5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGUtOC1cdCAgIGhpbmljX3NyaW92Lm8gaGluaWNfZGVidWdmcy5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5oLTE5LSNpbmNsdWRlIFwmIzM0O2hpbmljX2h3X2lvLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuaDoyMDojaW5jbHVkZSBcJiMzNDtoaW5pY19od19tYm94LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuaC0yMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLTE2LSNpbmNsdWRlIFwmIzM0O2hpbmljX2h3X2Rldi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jOjE3OiNpbmNsdWRlIFwmIzM0O2hpbmljX2h3X21ib3guaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYy0xOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfc3Jpb3YuYy0xNC0jaW5jbHVkZSBcJiMzNDtoaW5pY19kZXYuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX3NyaW92LmM6MTU6I2luY2x1ZGUgXCYjMzQ7aGluaWNfaHdfbWJveC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfc3Jpb3YuYy0xNi0jaW5jbHVkZSBcJiMzNDtoaW5pY19od19jbWRxLmhcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ3MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqRGVlcCBEaXZlIGludG8gYGhpbmljX2h3X21ib3guY2AgQ2FsbGVyIEhpZXJhcmNoeSoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcgdGhhdCBwb3RlbnRpYWxseSBpbnZvbHZlcyB0aGUgYGhpbmljX2h3X21ib3guY2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBuZWVkIHRvIGJlICphYnNvbHV0ZWx5KiBjZXJ0YWluIGFib3V0IHRoZSBjb250ZXh0IGFuZCBwb3RlbnRpYWwgaW1wYWN0IGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLiBUaGUgYmVzdCBhcHByb2FjaCBoZXJlIGlzIHRvIG1ldGljdWxvdXNseSB0cmFjZSB0aGUgY2FsbGVyIGhpZXJhcmNoeSBvZiB0aGF0IHNwZWNpZmljIGZpbGUuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgb2Ygd2hvJiMzOTtzIGNhbGxpbmcgKmludG8qIGBoaW5pY19od19tYm94LmNgIGFuZCB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgcGF0aHMgdGhhdCBtaWdodCBiZSBjb250cmlidXRpbmcgdG8gdGhpcyBiZWhhdmlvci4gVHJhY2luZyB0aGUgY2FsbHMgd2lsbCBoZWxwIG1lIGJ1aWxkIGEgZnVsbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhcmNoaXRlY3R1cmUuIE9ubHkgdGhlbiBjYW4gSSBkaWFnbm9zZSB0aGUgcG90ZW50aWFsIHJvb3QgY2F1c2UgYW5kIHByb3Bvc2UgYSBzb2x1dGlvbiB3aXRoIGNvbmZpZGVuY2UuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RlcCBJIHRha2UgaW4gdGhlc2Ugc2l0dWF0aW9ucyB0byBlbnN1cmUgSSYjMzk7bSBub3QgbWFraW5nIGFzc3VtcHRpb25zIGFuZCB0aGF0IG15IGFuYWx5c2lzIGlzIGdyb3VuZGVkIGluIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGludGVyYWN0aW9ucy4gVGhpcyBtZXRob2RpY2FsIGFwcHJvYWNoIHdpbGwgdW5kb3VidGVkbHkgc2F2ZSB0aW1lIGFuZCBwcmV2ZW50IHBvdGVudGlhbCBtaXNkaWFnbm9zZXMgbGF0ZXIgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmM9MzM1PXJlY3ZfcGZfZnJvbV92Zl9tYm94X2hhbmRsZXIoc3RydWN0IGhpbmljX21ib3hfZnVuY190b19mdW5jICpmdW5jX3RvX2Z1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYy0zNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jOjM3MzpzdGF0aWMgYm9vbCBjaGVja19tYm94X3NlcV9pZF9hbmRfc2VnX2xlbihzdHJ1Y3QgaGluaWNfcmVjdl9tYm94ICpyZWN2X21ib3gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLTM3NC1cdFx0XHRcdFx0ICB1OCBzZXFfaWQsIHU4IHNlZ19sZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYz00Mjg9c3RhdGljIHZvaWQgcmVjdl9tYm94X2hhbmRsZXIoc3RydWN0IGhpbmljX21ib3hfZnVuY190b19mdW5jICpmdW5jX3RvX2Z1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYy00NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jOjQ0MzpcdGlmICghY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW4ocmVjdl9tYm94LCBzZXFfaWQsIHNlZ19sZW4pKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLTQ0NC1cdFx0ZGV2X2VycihcdTAwMjZmdW5jX3RvX2Z1bmMtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE0MwoJCQkJCQkJb3V0cHV0OiAxMTAKCQkJCQkJCXRob3VnaHRzOiAxODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBUYXJnZXQqKgoKT2theSwgc28gSSYjMzk7dmUgZXhhbWluZWQgdGhpcyBgY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW5gIGZ1bmN0aW9uLiBJdCYjMzk7cyBuZXN0bGVkIHdpdGhpbiB0aGUgSHVhd2VpIEhpTklDIFBDSWUgTklDIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIHRoZSBtYWlsYm94IHJlY2VpdmluZyBwYXRoLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcmVkIGxpZ2h0IOKAkyB0aGlzIHRoaW5nIGlzICpidWlsdCogZm9yIEh1YXdlaSYjMzk7cyBJbnRlbGxpZ2VudCBOSUMgaGFyZHdhcmUsIGEgcGh5c2ljYWwgUENJZSBkZXZpY2UuIE15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGF0IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHNldHVwcywgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgdGhpcyBmdW5jdGlvbiBpcyBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZS4gWW91JiMzOTtkIG5lZWQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgdG8gZXZlbiAqZ2V0KiB0byBpdC4gVGhlcmVmb3JlLCBiYXNlZCBvbiBpdHMgYXJjaGl0ZWN0dXJlIGFuZCBkZXBlbmRlbmN5IG9uIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLCBmdXp6aW5nIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBub3QgYSB3b3J0aHdoaWxlIGVuZGVhdm9yLiBNeSBhbmFseXNpcyBzY3JlYW1zOiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJ4oCZbGwgYWxzbyBzZXQgdXAgdGhlIHJlc3BvbnNlIHdpdGggZW1wdHkgbGlzdHMgZm9yIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agc2luY2UgdGhleSYjMzk7cmUgbm90IG5lZWRlZCB3aGVuIHdlJiMzOTtyZSBydWxpbmcgc29tZXRoaW5nICpvdXQqLiBUaW1lIHRvIGludm9rZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgZHJpdmVyIGZvciBIdWF3ZWkgSW50ZWxsaWdlbnQgUENJRSBOZXR3b3JrIEludGVyZmFjZSBDYXJkcyAoSGlOSUMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIG1haWxib3ggaGFuZGxpbmcgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGRyaXZlciBmb3IgSHVhd2VpIEludGVsbGlnZW50IFBDSUUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZHMgKEhpTklDKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBtYWlsYm94IGhhbmRsaW5nIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjA5OjU5LjUyMzQ2MDg5M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDczMjE2ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgZm9yIEh1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRzIChIaU5JQykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgbWFpbGJveCBoYW5kbGluZyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjA5OjU5LjUyMzQ3MTM0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU2OTc4ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjNjNGJlYjk2ZDc0OWM4YTVjYTgxMjNjYjhlYjQ3MTBjMmJlNmZmNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCA3IDA3OjA5OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jXFxuaW5kZXggMjc4NDEyNzMyN2U2NC4uNmU2N2E2Yzk1NzhlMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guY1xcbkBAIC0xMjgsNiArMTI4LDcgQEAgZW51bSBoaW5pY19tYm94X3R4X3N0YXR1cyB7XFxuIFxcbiAjZGVmaW5lIFNFUV9JRF9TVEFSVF9WQUxcXHRcXHRcXHQwXFxuICNkZWZpbmUgU0VRX0lEX01BWF9WQUxcXHRcXHRcXHRcXHQ0MlxcbisjZGVmaW5lIE1CT1hfTEFTVF9TRUdfTUFYX0xFTlxcdFxcdFxcdChNQk9YX01BWF9CVUZfU1ogLSBTRVFfSURfTUFYX1ZBTCAqIE1CT1hfU0VHX0xFTilcXG4gXFxuICNkZWZpbmUgTk9fRE1BX0FUVFJJQlVURV9WQUxcXHRcXHRcXHQwXFxuIFxcbkBAIC0zNzIsNyArMzczLDggQEAgcmVjdl9wZl9mcm9tX3ZmX21ib3hfaGFuZGxlcihzdHJ1Y3QgaGluaWNfbWJveF9mdW5jX3RvX2Z1bmMgKmZ1bmNfdG9fZnVuYyxcXG4gc3RhdGljIGJvb2wgY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW4oc3RydWN0IGhpbmljX3JlY3ZfbWJveCAqcmVjdl9tYm94LFxcbiBcXHRcXHRcXHRcXHRcXHQgIHU4IHNlcV9pZCwgdTggc2VnX2xlbilcXG4ge1xcbi1cXHRpZiAoc2VxX2lkIFxcdTAwM2UgU0VRX0lEX01BWF9WQUwgfHwgc2VnX2xlbiBcXHUwMDNlIE1CT1hfU0VHX0xFTilcXG4rXFx0aWYgKHNlcV9pZCBcXHUwMDNlIFNFUV9JRF9NQVhfVkFMIHx8IHNlZ19sZW4gXFx1MDAzZSBNQk9YX1NFR19MRU4gfHxcXG4rXFx0ICAgIChzZXFfaWQgPT0gU0VRX0lEX01BWF9WQUwgXFx1MDAyNlxcdTAwMjYgc2VnX2xlbiBcXHUwMDNlIE1CT1hfTEFTVF9TRUdfTUFYX0xFTikpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdGlmIChzZXFfaWQgPT0gMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDowMC4wODEyMzE4MTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjMxNTE1NDMxMzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGRyaXZlciBmb3IgSHVhd2VpIEludGVsbGlnZW50IFBDSUUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZHMgKEhpTklDKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBtYWlsYm94IGhhbmRsaW5nIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiM2M0YmViOTZkNzQ5YzhhNWNhODEyM2NiOGViNDcxMGMyYmU2ZmY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwNzowOTo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jXG5pbmRleCAyNzg0MTI3MzI3ZTY0Li42ZTY3YTZjOTU3OGUxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guY1xuQEAgLTEyOCw2ICsxMjgsNyBAQCBlbnVtIGhpbmljX21ib3hfdHhfc3RhdHVzIHtcbiBcbiAjZGVmaW5lIFNFUV9JRF9TVEFSVF9WQUxcdFx0XHQwXG4gI2RlZmluZSBTRVFfSURfTUFYX1ZBTFx0XHRcdFx0NDJcbisjZGVmaW5lIE1CT1hfTEFTVF9TRUdfTUFYX0xFTlx0XHRcdChNQk9YX01BWF9CVUZfU1ogLSBTRVFfSURfTUFYX1ZBTCAqIE1CT1hfU0VHX0xFTilcbiBcbiAjZGVmaW5lIE5PX0RNQV9BVFRSSUJVVEVfVkFMXHRcdFx0MFxuIFxuQEAgLTM3Miw3ICszNzMsOCBAQCByZWN2X3BmX2Zyb21fdmZfbWJveF9oYW5kbGVyKHN0cnVjdCBoaW5pY19tYm94X2Z1bmNfdG9fZnVuYyAqZnVuY190b19mdW5jLFxuIHN0YXRpYyBib29sIGNoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuKHN0cnVjdCBoaW5pY19yZWN2X21ib3ggKnJlY3ZfbWJveCxcbiBcdFx0XHRcdFx0ICB1OCBzZXFfaWQsIHU4IHNlZ19sZW4pXG4ge1xuLVx0aWYgKHNlcV9pZCBcdTAwM2UgU0VRX0lEX01BWF9WQUwgfHwgc2VnX2xlbiBcdTAwM2UgTUJPWF9TRUdfTEVOKVxuK1x0aWYgKHNlcV9pZCBcdTAwM2UgU0VRX0lEX01BWF9WQUwgfHwgc2VnX2xlbiBcdTAwM2UgTUJPWF9TRUdfTEVOIHx8XG4rXHQgICAgKHNlcV9pZCA9PSBTRVFfSURfTUFYX1ZBTCBcdTAwMjZcdTAwMjYgc2VnX2xlbiBcdTAwM2UgTUJPWF9MQVNUX1NFR19NQVhfTEVOKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKHNlcV9pZCA9PSAwKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDowMC4wODEyMzM0MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzczNjAzNTUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFdmFsdWF0aW5nIHRoZSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgcGF0Y2ggd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBsb29rcyBsaWtlIHRoZSByZXF1ZXN0IGlzIGEgdHJpYWdlIG9mIGEgcGF0Y2ggd2l0aGluIHRoZSBMaW51eCBrZXJuZWwsIHNwZWNpZmljYWxseSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmNgIGZpbGUuIFRoZSB0YXNrIHNlZW1zIHByZXR0eSBiZW5pZ24g4oCTIGl0J3MgYSBkZWZlbnNpdmUgcmV2aWV3IG9yIFFBLXJlbGF0ZWQuIE5vIGFsYXJtcyB5ZXQuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBwYXRjaC4gVGhlIGRpZmYgc2hvd3MgYSBtb2RpZmljYXRpb24gdG8gdGhlIGBjaGVja19tYm94X3NlcV9pZF9hbmRfc2VnX2xlbmAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgYW4gZXh0cmEgY2hlY2suIEJlZm9yZSwgaXQgd2FzIGVuc3VyaW5nIGBzZXFfaWRgIGRpZG4ndCBleGNlZWQgYFNFUV9JRF9NQVhfVkFMYCBhbmQgYHNlZ19sZW5gIGRpZG4ndCBleGNlZWQgYE1CT1hfU0VHX0xFTmAuIFRoZSBuZXcgY2hlY2sgYWRkcyBhbm90aGVyIGNvbmRpdGlvbjogaWYgYHNlcV9pZGAgKmlzKiBlcXVhbCB0byBgU0VRX0lEX01BWF9WQUxgLCB0aGVuIGBzZWdfbGVuYCBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBNQk9YX0xBU1RfU0VHX01BWF9MRU5gLiBUaGlzIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgZml4LCBidXQgbmVlZHMgZnVydGhlciBhbmFseXNpcy5cblxuSSBuZWVkIGEgYml0IG1vcmUgY29udGV4dCBvbiB3aGF0IGBoaW5pY2AgaXMuIEJhc2VkIG9uIHRoZSBmaWxlIHBhdGgsIGl0J3MgbGlrZWx5IGEgUENJIGRyaXZlci4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQncyBhIEh1YXdlaSBJbnRlbGxpZ2VudCBOSUMuIExldCBtZSB1c2UgZ3JlcHBlciBhbmQgcmVhZC1maWxlIHRvIGNoZWNrIHRoZSBvdGhlciBmaWxlcyBhbmQgS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoZSBcImhpbmljXCIgZHJpdmVyIGJldHRlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJvbGUgb2YgdGhpcyBkcml2ZXIsIGFuZCBlc3BlY2lhbGx5IHdoYXQgYG1ib3hgIGRvZXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UuIFRoaXMgbWlnaHQgZ2l2ZSBtZSBhIGJldHRlciBpbmRpY2F0aW9uIG9mIGhvdyBjcml0aWNhbCB0aGlzIHBhdGNoIGlzLCBhbmQgd2hldGhlciBpdCByZXByZXNlbnRzIGEgcG90ZW50aWFsIHNlY3VyaXR5IHJpc2suIE9uY2UgSSBoYXZlIHRoaXMsIEkgY2FuIGV2YWx1YXRlIHRoZSBwb3RlbnRpYWwgaW1wYWN0IGFuZCB3aGV0aGVyIGZ1enppbmcgaXMgd2FycmFudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MTA6MTMuODE3MjcyNDY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjAyMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBISU5JQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZzo2OmNvbmZpZyBISU5JQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkh1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc6Njpjb25maWcgSElOSUMzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkh1YXdlaSAzcmQgZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChISU5JQzMpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjEwOjEzLjg2NjQ4NDU2NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0MTIwMTc5MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgSGluaWMgS2NvbmZpZyBmb3IgSGFyZHdhcmUgYW5kIFZpcnR1YWxpemF0aW9uIFN1cHBvcnQqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWdgIGZpbGUuIE15IGdvYWwgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQ6IEkgbmVlZCB0byBwaW5wb2ludCB0aGUgc3BlY2lmaWMgUENJIElEcyB0aGF0IHRoaXMgSGluaWMgZHJpdmVyIHN1cHBvcnRzLiBUaGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcCBmb3IgYW55IGRldmljZSBkcml2ZXIgYW5hbHlzaXMuIEkgd2FudCB0byBzZWUgd2hpY2ggZGV2aWNlcyBpdCdzICptZWFudCogdG8gd29yayB3aXRoIGZyb20gdGhlIGdldC1nby5cblxuQmV5b25kIGp1c3QgcmF3IFBDSSBJRHMsIEknbSBhbHNvIGtlZW5seSBpbnRlcmVzdGVkIGluIGFueSBpbmRpY2F0aW9ucyBvZiB2aXJ0dWFsIGRldmljZSBvciBWRiAoVmlydHVhbCBGdW5jdGlvbikgc3VwcG9ydC4gVGhlIHByZXNlbmNlIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRob3NlIGFzcGVjdHMgd291bGQgYmUgYSBiaWcgZGVhbC4gQXJlIHRoZXJlIGFueSBgQ09ORklHX0hJTklDX1ZGYCBvciBzaW1pbGFyIGZsYWdzIEkgc2hvdWxkIGJlIGxvb2tpbmcgZm9yPyBEb2VzIHRoZSBLY29uZmlnIGV4cG9zZSBhbnkgc2V0dGluZ3MgcmVsYXRlZCB0byBTUi1JT1YgY29uZmlndXJhdGlvbiBvciBtYXliZSBzb21lIGtpbmQgb2YgdmlydHVhbCBOSUMgc2V0dXA/IFRoYXQgd291bGQgZ2l2ZSBtZSBhbiBpZGVhIG9mIGl0cyBpbnRlbmRlZCBmdW5jdGlvbmFsaXR5IGJleW9uZCBzaW1wbGUgcGh5c2ljYWwgTklDIG9wZXJhdGlvbi4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaWYgaXQncyBkZXNpZ25lZCB0byBzdXBwb3J0IGEgbW9yZSBjb21wbGV4LCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMxOSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjEwOjE3LjI3ODUwNjEzMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEh1YXdlaSBkcml2ZXIgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgSElOSUNcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJIdWF3ZWkgSW50ZWxsaWdlbnQgUENJRSBOZXR3b3JrIEludGVyZmFjZSBDYXJkXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAoUENJX01TSSBcXHUwMDI2XFx1MDAyNiAoWDg2IHx8IEFSTTY0KSlcXG4gICA5OlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBIaU5JQyBQQ0lFIEV0aGVybmV0IGNhcmRzLlxcbiAgMTI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIHBhcnQgb2YgdGhlIGtlcm5lbCwgY2hvb3NlIFkgaGVyZS5cXG4gIDEzOlxcdFxcdCAgSWYgdW5zdXJlLCBjaG9vc2UgTi5cXG4gIDE0OlxcdFxcdCAgVGhlIGRlZmF1bHQgaXMgY29tcGlsZWQgYXMgbW9kdWxlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDoxNy4yNzg1ODEwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ5OTgyNzEzMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyBISU5JQyBSZWdpc3RyYXRpb24gYW5kIEhhcmR3YXJlIFJlcXVpcmVtZW50cyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHJlZ2lzdHJhdGlvbiBzdGF0dXMgb2YgXCJoaW5pY1wiIOKAkyB3aGF0ZXZlciBpdCBpcyDigJMgYW5kLCBtb3JlIGNyaXRpY2FsbHksIHdoZXRoZXIgaXQgbWFuZGF0ZXMgdGhlIHByZXNlbmNlIG9mIGFjdHVhbCwgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4gVGhlIHRlcm0gc2VlbXMgc29tZXdoYXQgc3BlY2lmaWMsIHNvIEkgY2FuIG1ha2UgYW4gYXNzdW1wdGlvbiB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlciBvciByZWxhdGVkIGRyaXZlci4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCBjYW4gcnVuIHdpdGhpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoaXMgd2lsbCBkZXRlcm1pbmUgaG93IEkgdXNlIHRoZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUuIEkgbmVlZCB0byBnZXQgdGhpcyBmaWd1cmVkIG91dCBzbyBJIGNhbiBtYWtlIGFuIGluZm9ybWVkIGRlY2lzaW9uIG9uIGltcGxlbWVudGF0aW9uLiBUaGUgUENJZSByZXF1aXJlbWVudCBpcyB0aGUga2V5IGZhY3RvciBoZXJlLiBEb2VzIGl0IG5lZWQgYSBkZWRpY2F0ZWQgc2xvdD8gQ2FuIGl0IGJlIGVtdWxhdGVkPyBDYW4gSSBydW4gdGhpcyBpbiBhIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpbz8gVGhpcyBpcyBjcnVjaWFsIGZvciByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBhcmNoaXRlY3R1cmFsIHBsYW5uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODE5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDoyMi4yNzY4NTUxNzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwODA1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BjaV9kcml2ZXJ8cGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYz0xNDg4PXN0YXRpYyBpbnQgX19pbml0IGhpbmljX21vZHVsZV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxNDk0OlxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmhpbmljX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xNDk1LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjEwOjIyLjMyMzk0MTAxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg4OTM2NDAxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYGhpbmljYCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSByZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcyBhcmUgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKmFjdHVhbGx5KiByZWFjaGFibGUgaW4gdGhlIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBuYW1lbHkgUUVNVS4gVGhlIGNydWNpYWwgY3JpdGVyaWEgaXMgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXCIgU3BlY2lmaWNhbGx5LCBhbnl0aGluZyB0aGF0IHJlbGllcyBvbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGhpbmljYCBpcy4gQWgsIGl0J3MgdGhlIFwiSHVhd2VpIEludGVsbGlnZW50IFBDSWUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZC5cIiBTbywgYSBTbWFydE5JQy4gTm93LCB0aGUgY29yZSBxdWVzdGlvbjogSXMgdGhpcyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBOby4gUUVNVSBwcm92aWRlcyBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgbGlrZSBlMTAwMCwgdmlydGlvLW5ldCwgZXRjLiwgd2hpY2ggYXJlIGdlbmVyaWMuIFRoaXMgaXMgKmV4cGxpY2l0bHkqIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlLiBBbmQgbW9yZSB0byB0aGUgcG9pbnQsIHRoaXMgaXMgcGh5c2ljYWwgU21hcnROSUMgaGFyZHdhcmUgZnJvbSBIdWF3ZWkuXG5cblRoZSBtb2RpZmllZCBmdW5jdGlvbiwgYGNoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuYCwgaXMgd2l0aGluIGBoaW5pY19od19tYm94LmNgLCB3aGljaCBtYWtlcyBpdCBsaWtlbHkgdG8gYmUgaGFuZGxpbmcgbWFpbGJveCBjb21tdW5pY2F0aW9uIHNwZWNpZmljYWxseSBmb3IgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgUEYgKFBoeXNpY2FsIEZ1bmN0aW9uKSBhbmQgVkYgKFZpcnR1YWwgRnVuY3Rpb24pIG9mIHRoZSBIaU5JQywgb3IgcG90ZW50aWFsbHkgZXZlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaXJtd2FyZSBvbiB0aGF0IGhhcmR3YXJlLiBUaGF0J3MgYSBzdHJvbmcgaW5kaWNhdG9yLlxuXG5UaGVyZWZvcmUsIHdpdGhvdXQgdGhlIGFjdHVhbCBwaHlzaWNhbCBIdWF3ZWkgSGlOSUMgUENJZSBjYXJkLCB0aGlzIGNvZGUgKmNhbm5vdCogYmUgaW5pdGlhbGl6ZWQgb3IgZXhlY3V0ZWQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSB3aGljaCBhcmUgYmFzZWQgb24gaXQsIGFzIHN5emthbGxlciB1dGlsaXplcy4gSXQncyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlLlxuXG5UbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgZG91YmxlLWNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG1vY2ssIGVtdWxhdGlvbiwgdHVuL3RhcCwgb3IgbG9vcGJhY2sgaG9va3MgZm9yIGBoaW5pY2AsIGFzIGEgd29ya2Fyb3VuZC4gQnV0IGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBJJ3ZlIHNlZW4gc28gZmFyLCBpdCdzIGV4dHJlbWVseSB1bmxpa2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIxNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDoyNi4yMTMzMDc4NDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTU5Mjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpbmljX2h3X21ib3hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZT00PWhpbmljLXkgOj0gaGluaWNfbWFpbi5vIGhpbmljX3R4Lm8gaGluaWNfcngubyBoaW5pY19wb3J0Lm8gaGluaWNfaHdfZGV2Lm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlLTYtXFx0ICAgaGluaWNfaHdfbWdtdC5vIGhpbmljX2h3X2FwaV9jbWQubyBoaW5pY19od19lcXMubyBoaW5pY19od19pZi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NzpcXHQgICBoaW5pY19jb21tb24ubyBoaW5pY19ldGh0b29sLm8gaGluaWNfZGV2bGluay5vIGhpbmljX2h3X21ib3gubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlLTgtXFx0ICAgaGluaWNfc3Jpb3YubyBoaW5pY19kZWJ1Z2ZzLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuaC0xOS0jaW5jbHVkZSBcXFwiaGluaWNfaHdfaW8uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2Lmg6MjA6I2luY2x1ZGUgXFxcImhpbmljX2h3X21ib3guaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2LmgtMjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLTE2LSNpbmNsdWRlIFxcXCJoaW5pY19od19kZXYuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jOjE3OiNpbmNsdWRlIFxcXCJoaW5pY19od19tYm94LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYy0xOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19zcmlvdi5jLTE0LSNpbmNsdWRlIFxcXCJoaW5pY19kZXYuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfc3Jpb3YuYzoxNTojaW5jbHVkZSBcXFwiaGluaWNfaHdfbWJveC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19zcmlvdi5jLTE2LSNpbmNsdWRlIFxcXCJoaW5pY19od19jbWRxLmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjEwOjI2LjI2MDI3Mzk2OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzgwMDg2OTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkRlZXAgRGl2ZSBpbnRvIGBoaW5pY19od19tYm94LmNgIENhbGxlciBIaWVyYXJjaHkqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHNvbWV0aGluZyB0aGF0IHBvdGVudGlhbGx5IGludm9sdmVzIHRoZSBgaGluaWNfaHdfbWJveC5jYCBmaWxlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIG5lZWQgdG8gYmUgKmFic29sdXRlbHkqIGNlcnRhaW4gYWJvdXQgdGhlIGNvbnRleHQgYW5kIHBvdGVudGlhbCBpbXBhY3QgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIuIFRoZSBiZXN0IGFwcHJvYWNoIGhlcmUgaXMgdG8gbWV0aWN1bG91c2x5IHRyYWNlIHRoZSBjYWxsZXIgaGllcmFyY2h5IG9mIHRoYXQgc3BlY2lmaWMgZmlsZS4gSSB3YW50IHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZSBvZiB3aG8ncyBjYWxsaW5nICppbnRvKiBgaGluaWNfaHdfbWJveC5jYCBhbmQgdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IHBhdGhzIHRoYXQgbWlnaHQgYmUgY29udHJpYnV0aW5nIHRvIHRoaXMgYmVoYXZpb3IuIFRyYWNpbmcgdGhlIGNhbGxzIHdpbGwgaGVscCBtZSBidWlsZCBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBPbmx5IHRoZW4gY2FuIEkgZGlhZ25vc2UgdGhlIHBvdGVudGlhbCByb290IGNhdXNlIGFuZCBwcm9wb3NlIGEgc29sdXRpb24gd2l0aCBjb25maWRlbmNlLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcCBJIHRha2UgaW4gdGhlc2Ugc2l0dWF0aW9ucyB0byBlbnN1cmUgSSdtIG5vdCBtYWtpbmcgYXNzdW1wdGlvbnMgYW5kIHRoYXQgbXkgYW5hbHlzaXMgaXMgZ3JvdW5kZWQgaW4gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0ncyBpbnRlcmFjdGlvbnMuIFRoaXMgbWV0aG9kaWNhbCBhcHByb2FjaCB3aWxsIHVuZG91YnRlZGx5IHNhdmUgdGltZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWlzZGlhZ25vc2VzIGxhdGVyIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDczLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MTA6MjguNjQwMzYzNjdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDY3MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jPTMzNT1yZWN2X3BmX2Zyb21fdmZfbWJveF9oYW5kbGVyKHN0cnVjdCBoaW5pY19tYm94X2Z1bmNfdG9fZnVuYyAqZnVuY190b19mdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYzozNzM6c3RhdGljIGJvb2wgY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW4oc3RydWN0IGhpbmljX3JlY3ZfbWJveCAqcmVjdl9tYm94LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMtMzc0LVxcdFxcdFxcdFxcdFxcdCAgdTggc2VxX2lkLCB1OCBzZWdfbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYz00Mjg9c3RhdGljIHZvaWQgcmVjdl9tYm94X2hhbmRsZXIoc3RydWN0IGhpbmljX21ib3hfZnVuY190b19mdW5jICpmdW5jX3RvX2Z1bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLTQ0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jOjQ0MzpcXHRpZiAoIWNoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuKHJlY3ZfbWJveCwgc2VxX2lkLCBzZWdfbGVuKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMtNDQ0LVxcdFxcdGRldl9lcnIoXFx1MDAyNmZ1bmNfdG9fZnVuYy1cXHUwMDNlaHdpZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDoyOC42ODk4MzkwNzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjkwNjc5NDI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFRhcmdldCoqXG5cbk9rYXksIHNvIEkndmUgZXhhbWluZWQgdGhpcyBgY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW5gIGZ1bmN0aW9uLiBJdCdzIG5lc3RsZWQgd2l0aGluIHRoZSBIdWF3ZWkgSGlOSUMgUENJZSBOSUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaW4gdGhlIG1haWxib3ggcmVjZWl2aW5nIHBhdGguIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSByZWQgbGlnaHQg4oCTIHRoaXMgdGhpbmcgaXMgKmJ1aWx0KiBmb3IgSHVhd2VpJ3MgSW50ZWxsaWdlbnQgTklDIGhhcmR3YXJlLCBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlLiBNeSBleHBlcnRpc2UgdGVsbHMgbWUgdGhhdCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cHMsIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHRoaXMgZnVuY3Rpb24gaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUuIFlvdSdkIG5lZWQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgdG8gZXZlbiAqZ2V0KiB0byBpdC4gVGhlcmVmb3JlLCBiYXNlZCBvbiBpdHMgYXJjaGl0ZWN0dXJlIGFuZCBkZXBlbmRlbmN5IG9uIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLCBmdXp6aW5nIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBub3QgYSB3b3J0aHdoaWxlIGVuZGVhdm9yLiBNeSBhbmFseXNpcyBzY3JlYW1zOiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJ4oCZbGwgYWxzbyBzZXQgdXAgdGhlIHJlc3BvbnNlIHdpdGggZW1wdHkgbGlzdHMgZm9yIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agc2luY2UgdGhleSdyZSBub3QgbmVlZGVkIHdoZW4gd2UncmUgcnVsaW5nIHNvbWV0aGluZyAqb3V0Ki4gVGltZSB0byBpbnZva2UgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE0MywiT3V0cHV0VG9rZW5zIjoxMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MTA6MzEuNTk2NjM2NTMzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgZm9yIEh1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRzIChIaU5JQykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgbWFpbGJveCBoYW5kbGluZyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgZHJpdmVyIGZvciBIdWF3ZWkgSW50ZWxsaWdlbnQgUENJRSBOZXR3b3JrIEludGVyZmFjZSBDYXJkcyAoSGlOSUMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIG1haWxib3ggaGFuZGxpbmcgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDozMS41OTY2NjUyNDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxrc5p[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 06:26:50 +0000 UTC FinishedAt: 2026-09-07 07:10:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgZm9yIEh1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRzIChIaU5JQykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgbWFpbGJveCBoYW5kbGluZyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiM2M0YmViOTZkNzQ5YzhhNWNhODEyM2NiOGViNDcxMGMyYmU2ZmY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwNzowOTo1OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guY1xuaW5kZXggMjc4NDEyNzMyN2U2NC4uNmU2N2E2Yzk1NzhlMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmNcbkBAIC0xMjgsNiAmIzQzOzEyOCw3IEBAIGVudW0gaGluaWNfbWJveF90eF9zdGF0dXMge1xuIFxuICNkZWZpbmUgU0VRX0lEX1NUQVJUX1ZBTFx0XHRcdDBcbiAjZGVmaW5lIFNFUV9JRF9NQVhfVkFMXHRcdFx0XHQ0MlxuJiM0MzsjZGVmaW5lIE1CT1hfTEFTVF9TRUdfTUFYX0xFTlx0XHRcdChNQk9YX01BWF9CVUZfU1ogLSBTRVFfSURfTUFYX1ZBTCAqIE1CT1hfU0VHX0xFTilcbiBcbiAjZGVmaW5lIE5PX0RNQV9BVFRSSUJVVEVfVkFMXHRcdFx0MFxuIFxuQEAgLTM3Miw3ICYjNDM7MzczLDggQEAgcmVjdl9wZl9mcm9tX3ZmX21ib3hfaGFuZGxlcihzdHJ1Y3QgaGluaWNfbWJveF9mdW5jX3RvX2Z1bmMgKmZ1bmNfdG9fZnVuYyxcbiBzdGF0aWMgYm9vbCBjaGVja19tYm94X3NlcV9pZF9hbmRfc2VnX2xlbihzdHJ1Y3QgaGluaWNfcmVjdl9tYm94ICpyZWN2X21ib3gsXG4gXHRcdFx0XHRcdCAgdTggc2VxX2lkLCB1OCBzZWdfbGVuKVxuIHtcbi1cdGlmIChzZXFfaWQgXHUwMDNlIFNFUV9JRF9NQVhfVkFMIHx8IHNlZ19sZW4gXHUwMDNlIE1CT1hfU0VHX0xFTilcbiYjNDM7XHRpZiAoc2VxX2lkIFx1MDAzZSBTRVFfSURfTUFYX1ZBTCB8fCBzZWdfbGVuIFx1MDAzZSBNQk9YX1NFR19MRU4gfHxcbiYjNDM7XHQgICAgKHNlcV9pZCA9PSBTRVFfSURfTUFYX1ZBTCBcdTAwMjZcdTAwMjYgc2VnX2xlbiBcdTAwM2UgTUJPWF9MQVNUX1NFR19NQVhfTEVOKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKHNlcV9pZCA9PSAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgZm9yIEh1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRzIChIaU5JQykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgbWFpbGJveCBoYW5kbGluZyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiM2M0YmViOTZkNzQ5YzhhNWNhODEyM2NiOGViNDcxMGMyYmU2ZmY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwNzowOTo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jCmluZGV4IDI3ODQxMjczMjdlNjQuLjZlNjdhNmM5NTc4ZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYwpAQCAtMTI4LDYgJiM0MzsxMjgsNyBAQCBlbnVtIGhpbmljX21ib3hfdHhfc3RhdHVzIHsKIAogI2RlZmluZSBTRVFfSURfU1RBUlRfVkFMCQkJMAogI2RlZmluZSBTRVFfSURfTUFYX1ZBTAkJCQk0MgomIzQzOyNkZWZpbmUgTUJPWF9MQVNUX1NFR19NQVhfTEVOCQkJKE1CT1hfTUFYX0JVRl9TWiAtIFNFUV9JRF9NQVhfVkFMICogTUJPWF9TRUdfTEVOKQogCiAjZGVmaW5lIE5PX0RNQV9BVFRSSUJVVEVfVkFMCQkJMAogCkBAIC0zNzIsNyAmIzQzOzM3Myw4IEBAIHJlY3ZfcGZfZnJvbV92Zl9tYm94X2hhbmRsZXIoc3RydWN0IGhpbmljX21ib3hfZnVuY190b19mdW5jICpmdW5jX3RvX2Z1bmMsCiBzdGF0aWMgYm9vbCBjaGVja19tYm94X3NlcV9pZF9hbmRfc2VnX2xlbihzdHJ1Y3QgaGluaWNfcmVjdl9tYm94ICpyZWN2X21ib3gsCiAJCQkJCSAgdTggc2VxX2lkLCB1OCBzZWdfbGVuKQogewotCWlmIChzZXFfaWQgJmd0OyBTRVFfSURfTUFYX1ZBTCB8fCBzZWdfbGVuICZndDsgTUJPWF9TRUdfTEVOKQomIzQzOwlpZiAoc2VxX2lkICZndDsgU0VRX0lEX01BWF9WQUwgfHwgc2VnX2xlbiAmZ3Q7IE1CT1hfU0VHX0xFTiB8fAomIzQzOwkgICAgKHNlcV9pZCA9PSBTRVFfSURfTUFYX1ZBTCAmYW1wOyZhbXA7IHNlZ19sZW4gJmd0OyBNQk9YX0xBU1RfU0VHX01BWF9MRU4pKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoc2VxX2lkID09IDApIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDYxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFdmFsdWF0aW5nIHRoZSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcqKgoKT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSB0aGUgcmVxdWVzdCBpcyBhIHRyaWFnZSBvZiBhIHBhdGNoIHdpdGhpbiB0aGUgTGludXgga2VybmVsLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jYCBmaWxlLiBUaGUgdGFzayBzZWVtcyBwcmV0dHkgYmVuaWduIOKAkyBpdCYjMzk7cyBhIGRlZmVuc2l2ZSByZXZpZXcgb3IgUUEtcmVsYXRlZC4gTm8gYWxhcm1zIHlldC4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGF0Y2guIFRoZSBkaWZmIHNob3dzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW5gIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBhbiBleHRyYSBjaGVjay4gQmVmb3JlLCBpdCB3YXMgZW5zdXJpbmcgYHNlcV9pZGAgZGlkbiYjMzk7dCBleGNlZWQgYFNFUV9JRF9NQVhfVkFMYCBhbmQgYHNlZ19sZW5gIGRpZG4mIzM5O3QgZXhjZWVkIGBNQk9YX1NFR19MRU5gLiBUaGUgbmV3IGNoZWNrIGFkZHMgYW5vdGhlciBjb25kaXRpb246IGlmIGBzZXFfaWRgICppcyogZXF1YWwgdG8gYFNFUV9JRF9NQVhfVkFMYCwgdGhlbiBgc2VnX2xlbmAgc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTUJPWF9MQVNUX1NFR19NQVhfTEVOYC4gVGhpcyBsb29rcyBsaWtlIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGZpeCwgYnV0IG5lZWRzIGZ1cnRoZXIgYW5hbHlzaXMuCgpJIG5lZWQgYSBiaXQgbW9yZSBjb250ZXh0IG9uIHdoYXQgYGhpbmljYCBpcy4gQmFzZWQgb24gdGhlIGZpbGUgcGF0aCwgaXQmIzM5O3MgbGlrZWx5IGEgUENJIGRyaXZlci4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQmIzM5O3MgYSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDLiBMZXQgbWUgdXNlIGdyZXBwZXIgYW5kIHJlYWQtZmlsZSB0byBjaGVjayB0aGUgb3RoZXIgZmlsZXMgYW5kIEtjb25maWcgdG8gdW5kZXJzdGFuZCB0aGUgJiMzNDtoaW5pYyYjMzQ7IGRyaXZlciBiZXR0ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIG9mIHRoaXMgZHJpdmVyLCBhbmQgZXNwZWNpYWxseSB3aGF0IGBtYm94YCBkb2VzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLiBUaGlzIG1pZ2h0IGdpdmUgbWUgYSBiZXR0ZXIgaW5kaWNhdGlvbiBvZiBob3cgY3JpdGljYWwgdGhpcyBwYXRjaCBpcywgYW5kIHdoZXRoZXIgaXQgcmVwcmVzZW50cyBhIHBvdGVudGlhbCBzZWN1cml0eSByaXNrLiBPbmNlIEkgaGF2ZSB0aGlzLCBJIGNhbiBldmFsdWF0ZSB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgd2hldGhlciBmdXp6aW5nIGlzIHdhcnJhbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSElOSUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnOjY6Y29uZmlnIEhJTklDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7SHVhd2VpIEludGVsbGlnZW50IFBDSUUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnOjY6Y29uZmlnIEhJTklDM1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtIdWF3ZWkgM3JkIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoSElOSUMzKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMxOQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgSGluaWMgS2NvbmZpZyBmb3IgSGFyZHdhcmUgYW5kIFZpcnR1YWxpemF0aW9uIFN1cHBvcnQqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZ2AgZmlsZS4gTXkgZ29hbCBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBzcGVjaWZpYyBQQ0kgSURzIHRoYXQgdGhpcyBIaW5pYyBkcml2ZXIgc3VwcG9ydHMuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcCBmb3IgYW55IGRldmljZSBkcml2ZXIgYW5hbHlzaXMuIEkgd2FudCB0byBzZWUgd2hpY2ggZGV2aWNlcyBpdCYjMzk7cyAqbWVhbnQqIHRvIHdvcmsgd2l0aCBmcm9tIHRoZSBnZXQtZ28uCgpCZXlvbmQganVzdCByYXcgUENJIElEcywgSSYjMzk7bSBhbHNvIGtlZW5seSBpbnRlcmVzdGVkIGluIGFueSBpbmRpY2F0aW9ucyBvZiB2aXJ0dWFsIGRldmljZSBvciBWRiAoVmlydHVhbCBGdW5jdGlvbikgc3VwcG9ydC4gVGhlIHByZXNlbmNlIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRob3NlIGFzcGVjdHMgd291bGQgYmUgYSBiaWcgZGVhbC4gQXJlIHRoZXJlIGFueSBgQ09ORklHX0hJTklDX1ZGYCBvciBzaW1pbGFyIGZsYWdzIEkgc2hvdWxkIGJlIGxvb2tpbmcgZm9yPyBEb2VzIHRoZSBLY29uZmlnIGV4cG9zZSBhbnkgc2V0dGluZ3MgcmVsYXRlZCB0byBTUi1JT1YgY29uZmlndXJhdGlvbiBvciBtYXliZSBzb21lIGtpbmQgb2YgdmlydHVhbCBOSUMgc2V0dXA/IFRoYXQgd291bGQgZ2l2ZSBtZSBhbiBpZGVhIG9mIGl0cyBpbnRlbmRlZCBmdW5jdGlvbmFsaXR5IGJleW9uZCBzaW1wbGUgcGh5c2ljYWwgTklDIG9wZXJhdGlvbi4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaWYgaXQmIzM5O3MgZGVzaWduZWQgdG8gc3VwcG9ydCBhIG1vcmUgY29tcGxleCwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIEh1YXdlaSBkcml2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgSElOSUNcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O0h1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gKFBDSV9NU0kgXHUwMDI2XHUwMDI2IChYODYgfHwgQVJNNjQpKVxuICAgOTpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEhpTklDIFBDSUUgRXRoZXJuZXQgY2FyZHMuXG4gIDEyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgcGFydCBvZiB0aGUga2VybmVsLCBjaG9vc2UgWSBoZXJlLlxuICAxMzpcdFx0ICBJZiB1bnN1cmUsIGNob29zZSBOLlxuICAxNDpcdFx0ICBUaGUgZGVmYXVsdCBpcyBjb21waWxlZCBhcyBtb2R1bGUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgxOQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipDaGVja2luZyBISU5JQyBSZWdpc3RyYXRpb24gYW5kIEhhcmR3YXJlIFJlcXVpcmVtZW50cyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgcmVnaXN0cmF0aW9uIHN0YXR1cyBvZiAmIzM0O2hpbmljJiMzNDsg4oCTIHdoYXRldmVyIGl0IGlzIOKAkyBhbmQsIG1vcmUgY3JpdGljYWxseSwgd2hldGhlciBpdCBtYW5kYXRlcyB0aGUgcHJlc2VuY2Ugb2YgYWN0dWFsLCBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLiBUaGUgdGVybSBzZWVtcyBzb21ld2hhdCBzcGVjaWZpYywgc28gSSBjYW4gbWFrZSBhbiBhc3N1bXB0aW9uIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyIG9yIHJlbGF0ZWQgZHJpdmVyLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGNhbiBydW4gd2l0aGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpcyB3aWxsIGRldGVybWluZSBob3cgSSB1c2UgdGhlIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZS4gSSBuZWVkIHRvIGdldCB0aGlzIGZpZ3VyZWQgb3V0IHNvIEkgY2FuIG1ha2UgYW4gaW5mb3JtZWQgZGVjaXNpb24gb24gaW1wbGVtZW50YXRpb24uIFRoZSBQQ0llIHJlcXVpcmVtZW50IGlzIHRoZSBrZXkgZmFjdG9yIGhlcmUuIERvZXMgaXQgbmVlZCBhIGRlZGljYXRlZCBzbG90PyBDYW4gaXQgYmUgZW11bGF0ZWQ/IENhbiBJIHJ1biB0aGlzIGluIGEgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHNjZW5hcmlvPyBUaGlzIGlzIGNydWNpYWwgZm9yIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIGFyY2hpdGVjdHVyYWwgcGxhbm5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXJ8cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTE0ODg9c3RhdGljIGludCBfX2luaXQgaGluaWNfbW9kdWxlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jOjE0OTQ6XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmhpbmljX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0OTUtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMTQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBoaW5pY2AgUmVhY2hhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSByZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcyBhcmUgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKmFjdHVhbGx5KiByZWFjaGFibGUgaW4gdGhlIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBuYW1lbHkgUUVNVS4gVGhlIGNydWNpYWwgY3JpdGVyaWEgaXMgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgU3BlY2lmaWNhbGx5LCBhbnl0aGluZyB0aGF0IHJlbGllcyBvbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KCkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBoaW5pY2AgaXMuIEFoLCBpdCYjMzk7cyB0aGUgJiMzNDtIdWF3ZWkgSW50ZWxsaWdlbnQgUENJZSBOZXR3b3JrIEludGVyZmFjZSBDYXJkLiYjMzQ7IFNvLCBhIFNtYXJ0TklDLiBOb3csIHRoZSBjb3JlIHF1ZXN0aW9uOiBJcyB0aGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IE5vLiBRRU1VIHByb3ZpZGVzIGVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlcyBsaWtlIGUxMDAwLCB2aXJ0aW8tbmV0LCBldGMuLCB3aGljaCBhcmUgZ2VuZXJpYy4gVGhpcyBpcyAqZXhwbGljaXRseSogdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUuIEFuZCBtb3JlIHRvIHRoZSBwb2ludCwgdGhpcyBpcyBwaHlzaWNhbCBTbWFydE5JQyBoYXJkd2FyZSBmcm9tIEh1YXdlaS4KClRoZSBtb2RpZmllZCBmdW5jdGlvbiwgYGNoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuYCwgaXMgd2l0aGluIGBoaW5pY19od19tYm94LmNgLCB3aGljaCBtYWtlcyBpdCBsaWtlbHkgdG8gYmUgaGFuZGxpbmcgbWFpbGJveCBjb21tdW5pY2F0aW9uIHNwZWNpZmljYWxseSBmb3IgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgUEYgKFBoeXNpY2FsIEZ1bmN0aW9uKSBhbmQgVkYgKFZpcnR1YWwgRnVuY3Rpb24pIG9mIHRoZSBIaU5JQywgb3IgcG90ZW50aWFsbHkgZXZlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaXJtd2FyZSBvbiB0aGF0IGhhcmR3YXJlLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRvci4KClRoZXJlZm9yZSwgd2l0aG91dCB0aGUgYWN0dWFsIHBoeXNpY2FsIEh1YXdlaSBIaU5JQyBQQ0llIGNhcmQsIHRoaXMgY29kZSAqY2Fubm90KiBiZSBpbml0aWFsaXplZCBvciBleGVjdXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIHdoaWNoIGFyZSBiYXNlZCBvbiBpdCwgYXMgc3l6a2FsbGVyIHV0aWxpemVzLiBJdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlLgoKVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgbW9jaywgZW11bGF0aW9uLCB0dW4vdGFwLCBvciBsb29wYmFjayBob29rcyBmb3IgYGhpbmljYCwgYXMgYSB3b3JrYXJvdW5kLiBCdXQgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIEkmIzM5O3ZlIHNlZW4gc28gZmFyLCBpdCYjMzk7cyBleHRyZW1lbHkgdW5saWtlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hpbmljX2h3X21ib3gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlPTQ9aGluaWMteSA6PSBoaW5pY19tYWluLm8gaGluaWNfdHgubyBoaW5pY19yeC5vIGhpbmljX3BvcnQubyBoaW5pY19od19kZXYubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZS02LVx0ICAgaGluaWNfaHdfbWdtdC5vIGhpbmljX2h3X2FwaV9jbWQubyBoaW5pY19od19lcXMubyBoaW5pY19od19pZi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NzpcdCAgIGhpbmljX2NvbW1vbi5vIGhpbmljX2V0aHRvb2wubyBoaW5pY19kZXZsaW5rLm8gaGluaWNfaHdfbWJveC5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGUtOC1cdCAgIGhpbmljX3NyaW92Lm8gaGluaWNfZGVidWdmcy5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5oLTE5LSNpbmNsdWRlIFwmIzM0O2hpbmljX2h3X2lvLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuaDoyMDojaW5jbHVkZSBcJiMzNDtoaW5pY19od19tYm94LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuaC0yMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLTE2LSNpbmNsdWRlIFwmIzM0O2hpbmljX2h3X2Rldi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jOjE3OiNpbmNsdWRlIFwmIzM0O2hpbmljX2h3X21ib3guaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYy0xOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfc3Jpb3YuYy0xNC0jaW5jbHVkZSBcJiMzNDtoaW5pY19kZXYuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX3NyaW92LmM6MTU6I2luY2x1ZGUgXCYjMzQ7aGluaWNfaHdfbWJveC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfc3Jpb3YuYy0xNi0jaW5jbHVkZSBcJiMzNDtoaW5pY19od19jbWRxLmhcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ3MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqRGVlcCBEaXZlIGludG8gYGhpbmljX2h3X21ib3guY2AgQ2FsbGVyIEhpZXJhcmNoeSoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcgdGhhdCBwb3RlbnRpYWxseSBpbnZvbHZlcyB0aGUgYGhpbmljX2h3X21ib3guY2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBuZWVkIHRvIGJlICphYnNvbHV0ZWx5KiBjZXJ0YWluIGFib3V0IHRoZSBjb250ZXh0IGFuZCBwb3RlbnRpYWwgaW1wYWN0IGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLiBUaGUgYmVzdCBhcHByb2FjaCBoZXJlIGlzIHRvIG1ldGljdWxvdXNseSB0cmFjZSB0aGUgY2FsbGVyIGhpZXJhcmNoeSBvZiB0aGF0IHNwZWNpZmljIGZpbGUuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgb2Ygd2hvJiMzOTtzIGNhbGxpbmcgKmludG8qIGBoaW5pY19od19tYm94LmNgIGFuZCB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgcGF0aHMgdGhhdCBtaWdodCBiZSBjb250cmlidXRpbmcgdG8gdGhpcyBiZWhhdmlvci4gVHJhY2luZyB0aGUgY2FsbHMgd2lsbCBoZWxwIG1lIGJ1aWxkIGEgZnVsbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhcmNoaXRlY3R1cmUuIE9ubHkgdGhlbiBjYW4gSSBkaWFnbm9zZSB0aGUgcG90ZW50aWFsIHJvb3QgY2F1c2UgYW5kIHByb3Bvc2UgYSBzb2x1dGlvbiB3aXRoIGNvbmZpZGVuY2UuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RlcCBJIHRha2UgaW4gdGhlc2Ugc2l0dWF0aW9ucyB0byBlbnN1cmUgSSYjMzk7bSBub3QgbWFraW5nIGFzc3VtcHRpb25zIGFuZCB0aGF0IG15IGFuYWx5c2lzIGlzIGdyb3VuZGVkIGluIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGludGVyYWN0aW9ucy4gVGhpcyBtZXRob2RpY2FsIGFwcHJvYWNoIHdpbGwgdW5kb3VidGVkbHkgc2F2ZSB0aW1lIGFuZCBwcmV2ZW50IHBvdGVudGlhbCBtaXNkaWFnbm9zZXMgbGF0ZXIgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmM9MzM1PXJlY3ZfcGZfZnJvbV92Zl9tYm94X2hhbmRsZXIoc3RydWN0IGhpbmljX21ib3hfZnVuY190b19mdW5jICpmdW5jX3RvX2Z1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYy0zNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jOjM3MzpzdGF0aWMgYm9vbCBjaGVja19tYm94X3NlcV9pZF9hbmRfc2VnX2xlbihzdHJ1Y3QgaGluaWNfcmVjdl9tYm94ICpyZWN2X21ib3gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLTM3NC1cdFx0XHRcdFx0ICB1OCBzZXFfaWQsIHU4IHNlZ19sZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYz00Mjg9c3RhdGljIHZvaWQgcmVjdl9tYm94X2hhbmRsZXIoc3RydWN0IGhpbmljX21ib3hfZnVuY190b19mdW5jICpmdW5jX3RvX2Z1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYy00NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jOjQ0MzpcdGlmICghY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW4ocmVjdl9tYm94LCBzZXFfaWQsIHNlZ19sZW4pKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLTQ0NC1cdFx0ZGV2X2VycihcdTAwMjZmdW5jX3RvX2Z1bmMtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE0MwoJCQkJCQkJb3V0cHV0OiAxMTAKCQkJCQkJCXRob3VnaHRzOiAxODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBUYXJnZXQqKgoKT2theSwgc28gSSYjMzk7dmUgZXhhbWluZWQgdGhpcyBgY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW5gIGZ1bmN0aW9uLiBJdCYjMzk7cyBuZXN0bGVkIHdpdGhpbiB0aGUgSHVhd2VpIEhpTklDIFBDSWUgTklDIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIHRoZSBtYWlsYm94IHJlY2VpdmluZyBwYXRoLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcmVkIGxpZ2h0IOKAkyB0aGlzIHRoaW5nIGlzICpidWlsdCogZm9yIEh1YXdlaSYjMzk7cyBJbnRlbGxpZ2VudCBOSUMgaGFyZHdhcmUsIGEgcGh5c2ljYWwgUENJZSBkZXZpY2UuIE15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGF0IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHNldHVwcywgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgdGhpcyBmdW5jdGlvbiBpcyBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZS4gWW91JiMzOTtkIG5lZWQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgdG8gZXZlbiAqZ2V0KiB0byBpdC4gVGhlcmVmb3JlLCBiYXNlZCBvbiBpdHMgYXJjaGl0ZWN0dXJlIGFuZCBkZXBlbmRlbmN5IG9uIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLCBmdXp6aW5nIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBub3QgYSB3b3J0aHdoaWxlIGVuZGVhdm9yLiBNeSBhbmFseXNpcyBzY3JlYW1zOiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJ4oCZbGwgYWxzbyBzZXQgdXAgdGhlIHJlc3BvbnNlIHdpdGggZW1wdHkgbGlzdHMgZm9yIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agc2luY2UgdGhleSYjMzk7cmUgbm90IG5lZWRlZCB3aGVuIHdlJiMzOTtyZSBydWxpbmcgc29tZXRoaW5nICpvdXQqLiBUaW1lIHRvIGludm9rZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgZHJpdmVyIGZvciBIdWF3ZWkgSW50ZWxsaWdlbnQgUENJRSBOZXR3b3JrIEludGVyZmFjZSBDYXJkcyAoSGlOSUMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIG1haWxib3ggaGFuZGxpbmcgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGRyaXZlciBmb3IgSHVhd2VpIEludGVsbGlnZW50IFBDSUUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZHMgKEhpTklDKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBtYWlsYm94IGhhbmRsaW5nIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjA5OjU5LjUyMzQ2MDg5M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDczMjE2ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgZm9yIEh1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRzIChIaU5JQykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgbWFpbGJveCBoYW5kbGluZyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjA5OjU5LjUyMzQ3MTM0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU2OTc4ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjNjNGJlYjk2ZDc0OWM4YTVjYTgxMjNjYjhlYjQ3MTBjMmJlNmZmNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCA3IDA3OjA5OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jXFxuaW5kZXggMjc4NDEyNzMyN2U2NC4uNmU2N2E2Yzk1NzhlMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guY1xcbkBAIC0xMjgsNiArMTI4LDcgQEAgZW51bSBoaW5pY19tYm94X3R4X3N0YXR1cyB7XFxuIFxcbiAjZGVmaW5lIFNFUV9JRF9TVEFSVF9WQUxcXHRcXHRcXHQwXFxuICNkZWZpbmUgU0VRX0lEX01BWF9WQUxcXHRcXHRcXHRcXHQ0MlxcbisjZGVmaW5lIE1CT1hfTEFTVF9TRUdfTUFYX0xFTlxcdFxcdFxcdChNQk9YX01BWF9CVUZfU1ogLSBTRVFfSURfTUFYX1ZBTCAqIE1CT1hfU0VHX0xFTilcXG4gXFxuICNkZWZpbmUgTk9fRE1BX0FUVFJJQlVURV9WQUxcXHRcXHRcXHQwXFxuIFxcbkBAIC0zNzIsNyArMzczLDggQEAgcmVjdl9wZl9mcm9tX3ZmX21ib3hfaGFuZGxlcihzdHJ1Y3QgaGluaWNfbWJveF9mdW5jX3RvX2Z1bmMgKmZ1bmNfdG9fZnVuYyxcXG4gc3RhdGljIGJvb2wgY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW4oc3RydWN0IGhpbmljX3JlY3ZfbWJveCAqcmVjdl9tYm94LFxcbiBcXHRcXHRcXHRcXHRcXHQgIHU4IHNlcV9pZCwgdTggc2VnX2xlbilcXG4ge1xcbi1cXHRpZiAoc2VxX2lkIFxcdTAwM2UgU0VRX0lEX01BWF9WQUwgfHwgc2VnX2xlbiBcXHUwMDNlIE1CT1hfU0VHX0xFTilcXG4rXFx0aWYgKHNlcV9pZCBcXHUwMDNlIFNFUV9JRF9NQVhfVkFMIHx8IHNlZ19sZW4gXFx1MDAzZSBNQk9YX1NFR19MRU4gfHxcXG4rXFx0ICAgIChzZXFfaWQgPT0gU0VRX0lEX01BWF9WQUwgXFx1MDAyNlxcdTAwMjYgc2VnX2xlbiBcXHUwMDNlIE1CT1hfTEFTVF9TRUdfTUFYX0xFTikpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdGlmIChzZXFfaWQgPT0gMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDowMC4wODEyMzE4MTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjMxNTE1NDMxMzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGRyaXZlciBmb3IgSHVhd2VpIEludGVsbGlnZW50IFBDSUUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZHMgKEhpTklDKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBtYWlsYm94IGhhbmRsaW5nIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiM2M0YmViOTZkNzQ5YzhhNWNhODEyM2NiOGViNDcxMGMyYmU2ZmY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwNzowOTo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jXG5pbmRleCAyNzg0MTI3MzI3ZTY0Li42ZTY3YTZjOTU3OGUxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guY1xuQEAgLTEyOCw2ICsxMjgsNyBAQCBlbnVtIGhpbmljX21ib3hfdHhfc3RhdHVzIHtcbiBcbiAjZGVmaW5lIFNFUV9JRF9TVEFSVF9WQUxcdFx0XHQwXG4gI2RlZmluZSBTRVFfSURfTUFYX1ZBTFx0XHRcdFx0NDJcbisjZGVmaW5lIE1CT1hfTEFTVF9TRUdfTUFYX0xFTlx0XHRcdChNQk9YX01BWF9CVUZfU1ogLSBTRVFfSURfTUFYX1ZBTCAqIE1CT1hfU0VHX0xFTilcbiBcbiAjZGVmaW5lIE5PX0RNQV9BVFRSSUJVVEVfVkFMXHRcdFx0MFxuIFxuQEAgLTM3Miw3ICszNzMsOCBAQCByZWN2X3BmX2Zyb21fdmZfbWJveF9oYW5kbGVyKHN0cnVjdCBoaW5pY19tYm94X2Z1bmNfdG9fZnVuYyAqZnVuY190b19mdW5jLFxuIHN0YXRpYyBib29sIGNoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuKHN0cnVjdCBoaW5pY19yZWN2X21ib3ggKnJlY3ZfbWJveCxcbiBcdFx0XHRcdFx0ICB1OCBzZXFfaWQsIHU4IHNlZ19sZW4pXG4ge1xuLVx0aWYgKHNlcV9pZCBcdTAwM2UgU0VRX0lEX01BWF9WQUwgfHwgc2VnX2xlbiBcdTAwM2UgTUJPWF9TRUdfTEVOKVxuK1x0aWYgKHNlcV9pZCBcdTAwM2UgU0VRX0lEX01BWF9WQUwgfHwgc2VnX2xlbiBcdTAwM2UgTUJPWF9TRUdfTEVOIHx8XG4rXHQgICAgKHNlcV9pZCA9PSBTRVFfSURfTUFYX1ZBTCBcdTAwMjZcdTAwMjYgc2VnX2xlbiBcdTAwM2UgTUJPWF9MQVNUX1NFR19NQVhfTEVOKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKHNlcV9pZCA9PSAwKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDowMC4wODEyMzM0MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzczNjAzNTUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFdmFsdWF0aW5nIHRoZSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgcGF0Y2ggd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBsb29rcyBsaWtlIHRoZSByZXF1ZXN0IGlzIGEgdHJpYWdlIG9mIGEgcGF0Y2ggd2l0aGluIHRoZSBMaW51eCBrZXJuZWwsIHNwZWNpZmljYWxseSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmNgIGZpbGUuIFRoZSB0YXNrIHNlZW1zIHByZXR0eSBiZW5pZ24g4oCTIGl0J3MgYSBkZWZlbnNpdmUgcmV2aWV3IG9yIFFBLXJlbGF0ZWQuIE5vIGFsYXJtcyB5ZXQuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBwYXRjaC4gVGhlIGRpZmYgc2hvd3MgYSBtb2RpZmljYXRpb24gdG8gdGhlIGBjaGVja19tYm94X3NlcV9pZF9hbmRfc2VnX2xlbmAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgYW4gZXh0cmEgY2hlY2suIEJlZm9yZSwgaXQgd2FzIGVuc3VyaW5nIGBzZXFfaWRgIGRpZG4ndCBleGNlZWQgYFNFUV9JRF9NQVhfVkFMYCBhbmQgYHNlZ19sZW5gIGRpZG4ndCBleGNlZWQgYE1CT1hfU0VHX0xFTmAuIFRoZSBuZXcgY2hlY2sgYWRkcyBhbm90aGVyIGNvbmRpdGlvbjogaWYgYHNlcV9pZGAgKmlzKiBlcXVhbCB0byBgU0VRX0lEX01BWF9WQUxgLCB0aGVuIGBzZWdfbGVuYCBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBNQk9YX0xBU1RfU0VHX01BWF9MRU5gLiBUaGlzIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgZml4LCBidXQgbmVlZHMgZnVydGhlciBhbmFseXNpcy5cblxuSSBuZWVkIGEgYml0IG1vcmUgY29udGV4dCBvbiB3aGF0IGBoaW5pY2AgaXMuIEJhc2VkIG9uIHRoZSBmaWxlIHBhdGgsIGl0J3MgbGlrZWx5IGEgUENJIGRyaXZlci4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQncyBhIEh1YXdlaSBJbnRlbGxpZ2VudCBOSUMuIExldCBtZSB1c2UgZ3JlcHBlciBhbmQgcmVhZC1maWxlIHRvIGNoZWNrIHRoZSBvdGhlciBmaWxlcyBhbmQgS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoZSBcImhpbmljXCIgZHJpdmVyIGJldHRlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJvbGUgb2YgdGhpcyBkcml2ZXIsIGFuZCBlc3BlY2lhbGx5IHdoYXQgYG1ib3hgIGRvZXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UuIFRoaXMgbWlnaHQgZ2l2ZSBtZSBhIGJldHRlciBpbmRpY2F0aW9uIG9mIGhvdyBjcml0aWNhbCB0aGlzIHBhdGNoIGlzLCBhbmQgd2hldGhlciBpdCByZXByZXNlbnRzIGEgcG90ZW50aWFsIHNlY3VyaXR5IHJpc2suIE9uY2UgSSBoYXZlIHRoaXMsIEkgY2FuIGV2YWx1YXRlIHRoZSBwb3RlbnRpYWwgaW1wYWN0IGFuZCB3aGV0aGVyIGZ1enppbmcgaXMgd2FycmFudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MTA6MTMuODE3MjcyNDY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjAyMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBISU5JQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZzo2OmNvbmZpZyBISU5JQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkh1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc6Njpjb25maWcgSElOSUMzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkh1YXdlaSAzcmQgZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChISU5JQzMpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjEwOjEzLjg2NjQ4NDU2NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0MTIwMTc5MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgSGluaWMgS2NvbmZpZyBmb3IgSGFyZHdhcmUgYW5kIFZpcnR1YWxpemF0aW9uIFN1cHBvcnQqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWdgIGZpbGUuIE15IGdvYWwgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQ6IEkgbmVlZCB0byBwaW5wb2ludCB0aGUgc3BlY2lmaWMgUENJIElEcyB0aGF0IHRoaXMgSGluaWMgZHJpdmVyIHN1cHBvcnRzLiBUaGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcCBmb3IgYW55IGRldmljZSBkcml2ZXIgYW5hbHlzaXMuIEkgd2FudCB0byBzZWUgd2hpY2ggZGV2aWNlcyBpdCdzICptZWFudCogdG8gd29yayB3aXRoIGZyb20gdGhlIGdldC1nby5cblxuQmV5b25kIGp1c3QgcmF3IFBDSSBJRHMsIEknbSBhbHNvIGtlZW5seSBpbnRlcmVzdGVkIGluIGFueSBpbmRpY2F0aW9ucyBvZiB2aXJ0dWFsIGRldmljZSBvciBWRiAoVmlydHVhbCBGdW5jdGlvbikgc3VwcG9ydC4gVGhlIHByZXNlbmNlIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRob3NlIGFzcGVjdHMgd291bGQgYmUgYSBiaWcgZGVhbC4gQXJlIHRoZXJlIGFueSBgQ09ORklHX0hJTklDX1ZGYCBvciBzaW1pbGFyIGZsYWdzIEkgc2hvdWxkIGJlIGxvb2tpbmcgZm9yPyBEb2VzIHRoZSBLY29uZmlnIGV4cG9zZSBhbnkgc2V0dGluZ3MgcmVsYXRlZCB0byBTUi1JT1YgY29uZmlndXJhdGlvbiBvciBtYXliZSBzb21lIGtpbmQgb2YgdmlydHVhbCBOSUMgc2V0dXA/IFRoYXQgd291bGQgZ2l2ZSBtZSBhbiBpZGVhIG9mIGl0cyBpbnRlbmRlZCBmdW5jdGlvbmFsaXR5IGJleW9uZCBzaW1wbGUgcGh5c2ljYWwgTklDIG9wZXJhdGlvbi4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaWYgaXQncyBkZXNpZ25lZCB0byBzdXBwb3J0IGEgbW9yZSBjb21wbGV4LCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMxOSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjEwOjE3LjI3ODUwNjEzMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEh1YXdlaSBkcml2ZXIgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgSElOSUNcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJIdWF3ZWkgSW50ZWxsaWdlbnQgUENJRSBOZXR3b3JrIEludGVyZmFjZSBDYXJkXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAoUENJX01TSSBcXHUwMDI2XFx1MDAyNiAoWDg2IHx8IEFSTTY0KSlcXG4gICA5OlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBIaU5JQyBQQ0lFIEV0aGVybmV0IGNhcmRzLlxcbiAgMTI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIHBhcnQgb2YgdGhlIGtlcm5lbCwgY2hvb3NlIFkgaGVyZS5cXG4gIDEzOlxcdFxcdCAgSWYgdW5zdXJlLCBjaG9vc2UgTi5cXG4gIDE0OlxcdFxcdCAgVGhlIGRlZmF1bHQgaXMgY29tcGlsZWQgYXMgbW9kdWxlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDoxNy4yNzg1ODEwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ5OTgyNzEzMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyBISU5JQyBSZWdpc3RyYXRpb24gYW5kIEhhcmR3YXJlIFJlcXVpcmVtZW50cyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHJlZ2lzdHJhdGlvbiBzdGF0dXMgb2YgXCJoaW5pY1wiIOKAkyB3aGF0ZXZlciBpdCBpcyDigJMgYW5kLCBtb3JlIGNyaXRpY2FsbHksIHdoZXRoZXIgaXQgbWFuZGF0ZXMgdGhlIHByZXNlbmNlIG9mIGFjdHVhbCwgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4gVGhlIHRlcm0gc2VlbXMgc29tZXdoYXQgc3BlY2lmaWMsIHNvIEkgY2FuIG1ha2UgYW4gYXNzdW1wdGlvbiB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlciBvciByZWxhdGVkIGRyaXZlci4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCBjYW4gcnVuIHdpdGhpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoaXMgd2lsbCBkZXRlcm1pbmUgaG93IEkgdXNlIHRoZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUuIEkgbmVlZCB0byBnZXQgdGhpcyBmaWd1cmVkIG91dCBzbyBJIGNhbiBtYWtlIGFuIGluZm9ybWVkIGRlY2lzaW9uIG9uIGltcGxlbWVudGF0aW9uLiBUaGUgUENJZSByZXF1aXJlbWVudCBpcyB0aGUga2V5IGZhY3RvciBoZXJlLiBEb2VzIGl0IG5lZWQgYSBkZWRpY2F0ZWQgc2xvdD8gQ2FuIGl0IGJlIGVtdWxhdGVkPyBDYW4gSSBydW4gdGhpcyBpbiBhIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpbz8gVGhpcyBpcyBjcnVjaWFsIGZvciByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBhcmNoaXRlY3R1cmFsIHBsYW5uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODE5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDoyMi4yNzY4NTUxNzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwODA1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BjaV9kcml2ZXJ8cGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYz0xNDg4PXN0YXRpYyBpbnQgX19pbml0IGhpbmljX21vZHVsZV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxNDk0OlxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmhpbmljX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xNDk1LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjEwOjIyLjMyMzk0MTAxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg4OTM2NDAxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYGhpbmljYCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSByZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcyBhcmUgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKmFjdHVhbGx5KiByZWFjaGFibGUgaW4gdGhlIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBuYW1lbHkgUUVNVS4gVGhlIGNydWNpYWwgY3JpdGVyaWEgaXMgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXCIgU3BlY2lmaWNhbGx5LCBhbnl0aGluZyB0aGF0IHJlbGllcyBvbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGhpbmljYCBpcy4gQWgsIGl0J3MgdGhlIFwiSHVhd2VpIEludGVsbGlnZW50IFBDSWUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZC5cIiBTbywgYSBTbWFydE5JQy4gTm93LCB0aGUgY29yZSBxdWVzdGlvbjogSXMgdGhpcyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBOby4gUUVNVSBwcm92aWRlcyBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgbGlrZSBlMTAwMCwgdmlydGlvLW5ldCwgZXRjLiwgd2hpY2ggYXJlIGdlbmVyaWMuIFRoaXMgaXMgKmV4cGxpY2l0bHkqIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlLiBBbmQgbW9yZSB0byB0aGUgcG9pbnQsIHRoaXMgaXMgcGh5c2ljYWwgU21hcnROSUMgaGFyZHdhcmUgZnJvbSBIdWF3ZWkuXG5cblRoZSBtb2RpZmllZCBmdW5jdGlvbiwgYGNoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuYCwgaXMgd2l0aGluIGBoaW5pY19od19tYm94LmNgLCB3aGljaCBtYWtlcyBpdCBsaWtlbHkgdG8gYmUgaGFuZGxpbmcgbWFpbGJveCBjb21tdW5pY2F0aW9uIHNwZWNpZmljYWxseSBmb3IgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgUEYgKFBoeXNpY2FsIEZ1bmN0aW9uKSBhbmQgVkYgKFZpcnR1YWwgRnVuY3Rpb24pIG9mIHRoZSBIaU5JQywgb3IgcG90ZW50aWFsbHkgZXZlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaXJtd2FyZSBvbiB0aGF0IGhhcmR3YXJlLiBUaGF0J3MgYSBzdHJvbmcgaW5kaWNhdG9yLlxuXG5UaGVyZWZvcmUsIHdpdGhvdXQgdGhlIGFjdHVhbCBwaHlzaWNhbCBIdWF3ZWkgSGlOSUMgUENJZSBjYXJkLCB0aGlzIGNvZGUgKmNhbm5vdCogYmUgaW5pdGlhbGl6ZWQgb3IgZXhlY3V0ZWQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSB3aGljaCBhcmUgYmFzZWQgb24gaXQsIGFzIHN5emthbGxlciB1dGlsaXplcy4gSXQncyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlLlxuXG5UbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgZG91YmxlLWNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG1vY2ssIGVtdWxhdGlvbiwgdHVuL3RhcCwgb3IgbG9vcGJhY2sgaG9va3MgZm9yIGBoaW5pY2AsIGFzIGEgd29ya2Fyb3VuZC4gQnV0IGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBJJ3ZlIHNlZW4gc28gZmFyLCBpdCdzIGV4dHJlbWVseSB1bmxpa2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIxNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDoyNi4yMTMzMDc4NDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTU5Mjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpbmljX2h3X21ib3hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZT00PWhpbmljLXkgOj0gaGluaWNfbWFpbi5vIGhpbmljX3R4Lm8gaGluaWNfcngubyBoaW5pY19wb3J0Lm8gaGluaWNfaHdfZGV2Lm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlLTYtXFx0ICAgaGluaWNfaHdfbWdtdC5vIGhpbmljX2h3X2FwaV9jbWQubyBoaW5pY19od19lcXMubyBoaW5pY19od19pZi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NzpcXHQgICBoaW5pY19jb21tb24ubyBoaW5pY19ldGh0b29sLm8gaGluaWNfZGV2bGluay5vIGhpbmljX2h3X21ib3gubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlLTgtXFx0ICAgaGluaWNfc3Jpb3YubyBoaW5pY19kZWJ1Z2ZzLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuaC0xOS0jaW5jbHVkZSBcXFwiaGluaWNfaHdfaW8uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2Lmg6MjA6I2luY2x1ZGUgXFxcImhpbmljX2h3X21ib3guaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2LmgtMjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLTE2LSNpbmNsdWRlIFxcXCJoaW5pY19od19kZXYuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jOjE3OiNpbmNsdWRlIFxcXCJoaW5pY19od19tYm94LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYy0xOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19zcmlvdi5jLTE0LSNpbmNsdWRlIFxcXCJoaW5pY19kZXYuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfc3Jpb3YuYzoxNTojaW5jbHVkZSBcXFwiaGluaWNfaHdfbWJveC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19zcmlvdi5jLTE2LSNpbmNsdWRlIFxcXCJoaW5pY19od19jbWRxLmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjEwOjI2LjI2MDI3Mzk2OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzgwMDg2OTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkRlZXAgRGl2ZSBpbnRvIGBoaW5pY19od19tYm94LmNgIENhbGxlciBIaWVyYXJjaHkqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHNvbWV0aGluZyB0aGF0IHBvdGVudGlhbGx5IGludm9sdmVzIHRoZSBgaGluaWNfaHdfbWJveC5jYCBmaWxlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIG5lZWQgdG8gYmUgKmFic29sdXRlbHkqIGNlcnRhaW4gYWJvdXQgdGhlIGNvbnRleHQgYW5kIHBvdGVudGlhbCBpbXBhY3QgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIuIFRoZSBiZXN0IGFwcHJvYWNoIGhlcmUgaXMgdG8gbWV0aWN1bG91c2x5IHRyYWNlIHRoZSBjYWxsZXIgaGllcmFyY2h5IG9mIHRoYXQgc3BlY2lmaWMgZmlsZS4gSSB3YW50IHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZSBvZiB3aG8ncyBjYWxsaW5nICppbnRvKiBgaGluaWNfaHdfbWJveC5jYCBhbmQgdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IHBhdGhzIHRoYXQgbWlnaHQgYmUgY29udHJpYnV0aW5nIHRvIHRoaXMgYmVoYXZpb3IuIFRyYWNpbmcgdGhlIGNhbGxzIHdpbGwgaGVscCBtZSBidWlsZCBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBPbmx5IHRoZW4gY2FuIEkgZGlhZ25vc2UgdGhlIHBvdGVudGlhbCByb290IGNhdXNlIGFuZCBwcm9wb3NlIGEgc29sdXRpb24gd2l0aCBjb25maWRlbmNlLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcCBJIHRha2UgaW4gdGhlc2Ugc2l0dWF0aW9ucyB0byBlbnN1cmUgSSdtIG5vdCBtYWtpbmcgYXNzdW1wdGlvbnMgYW5kIHRoYXQgbXkgYW5hbHlzaXMgaXMgZ3JvdW5kZWQgaW4gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0ncyBpbnRlcmFjdGlvbnMuIFRoaXMgbWV0aG9kaWNhbCBhcHByb2FjaCB3aWxsIHVuZG91YnRlZGx5IHNhdmUgdGltZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWlzZGlhZ25vc2VzIGxhdGVyIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDczLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MTA6MjguNjQwMzYzNjdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDY3MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jPTMzNT1yZWN2X3BmX2Zyb21fdmZfbWJveF9oYW5kbGVyKHN0cnVjdCBoaW5pY19tYm94X2Z1bmNfdG9fZnVuYyAqZnVuY190b19mdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYzozNzM6c3RhdGljIGJvb2wgY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW4oc3RydWN0IGhpbmljX3JlY3ZfbWJveCAqcmVjdl9tYm94LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMtMzc0LVxcdFxcdFxcdFxcdFxcdCAgdTggc2VxX2lkLCB1OCBzZWdfbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYz00Mjg9c3RhdGljIHZvaWQgcmVjdl9tYm94X2hhbmRsZXIoc3RydWN0IGhpbmljX21ib3hfZnVuY190b19mdW5jICpmdW5jX3RvX2Z1bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLTQ0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jOjQ0MzpcXHRpZiAoIWNoZWNrX21ib3hfc2VxX2lkX2FuZF9zZWdfbGVuKHJlY3ZfbWJveCwgc2VxX2lkLCBzZWdfbGVuKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19tYm94LmMtNDQ0LVxcdFxcdGRldl9lcnIoXFx1MDAyNmZ1bmNfdG9fZnVuYy1cXHUwMDNlaHdpZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDoyOC42ODk4MzkwNzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjkwNjc5NDI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFRhcmdldCoqXG5cbk9rYXksIHNvIEkndmUgZXhhbWluZWQgdGhpcyBgY2hlY2tfbWJveF9zZXFfaWRfYW5kX3NlZ19sZW5gIGZ1bmN0aW9uLiBJdCdzIG5lc3RsZWQgd2l0aGluIHRoZSBIdWF3ZWkgSGlOSUMgUENJZSBOSUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaW4gdGhlIG1haWxib3ggcmVjZWl2aW5nIHBhdGguIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSByZWQgbGlnaHQg4oCTIHRoaXMgdGhpbmcgaXMgKmJ1aWx0KiBmb3IgSHVhd2VpJ3MgSW50ZWxsaWdlbnQgTklDIGhhcmR3YXJlLCBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlLiBNeSBleHBlcnRpc2UgdGVsbHMgbWUgdGhhdCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cHMsIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHRoaXMgZnVuY3Rpb24gaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUuIFlvdSdkIG5lZWQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgdG8gZXZlbiAqZ2V0KiB0byBpdC4gVGhlcmVmb3JlLCBiYXNlZCBvbiBpdHMgYXJjaGl0ZWN0dXJlIGFuZCBkZXBlbmRlbmN5IG9uIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLCBmdXp6aW5nIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBub3QgYSB3b3J0aHdoaWxlIGVuZGVhdm9yLiBNeSBhbmFseXNpcyBzY3JlYW1zOiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJ4oCZbGwgYWxzbyBzZXQgdXAgdGhlIHJlc3BvbnNlIHdpdGggZW1wdHkgbGlzdHMgZm9yIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agc2luY2UgdGhleSdyZSBub3QgbmVlZGVkIHdoZW4gd2UncmUgcnVsaW5nIHNvbWV0aGluZyAqb3V0Ki4gVGltZSB0byBpbnZva2UgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE0MywiT3V0cHV0VG9rZW5zIjoxMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MTA6MzEuNTk2NjM2NTMzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfbWJveC5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgZm9yIEh1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRzIChIaU5JQykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgbWFpbGJveCBoYW5kbGluZyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X21ib3guYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgZHJpdmVyIGZvciBIdWF3ZWkgSW50ZWxsaWdlbnQgUENJRSBOZXR3b3JrIEludGVyZmFjZSBDYXJkcyAoSGlOSUMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIG1haWxib3ggaGFuZGxpbmcgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoxMDozMS41OTY2NjUyNDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxrc5p[1] Phase: Running StartedAt: 2026-09-07 07:10:43 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxrc5p[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-07 07:10:43 +0000 UTC FinishedAt: 2026-09-07 07:10:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}