Name: series-workflowwg7t6 Phase: Failed StartedAt: 2026-09-09 12:35:06 +0000 UTC FinishedAt: 2026-09-09 13:00:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwg7t6[0] Phase: Succeeded StartedAt: 2026-09-09 12:35:06 +0000 UTC FinishedAt: 2026-09-09 13:00:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwg7t6[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 12:35:06 +0000 UTC FinishedAt: 2026-09-09 13:00:48 +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+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNDFkOWFiNGRhOTM2ZGRjOTFhYTU3NjgyMTRhMjNlMWM4MDg3MWZmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAxMzowMDowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiLi5jMWZmNGU4OTg1NzA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5AQCAtMzAzNyw2ICYjNDM7MzAzNywxNiBAQCBzdGF0aWMgdm9pZCBydGxfZGlzYWJsZV9leGl0X2wxKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiYjNDM7XHR1MTYgY3RsMjtcbiYjNDM7XG4mIzQzO1x0LyogVGhlIGNoaXAgbXVzdCBub3QgaXNzdWUgTFRSIG1lc3NhZ2VzIHVubGVzcyB0aGUgcGxhdGZvcm0gZW5hYmxlZFxuJiM0MztcdCAqIExUUiBvbiB0aGUgd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBUaGUgUENJIGNvcmUgZGlzY292ZXJzXG4mIzQzO1x0ICogdGhhdCBpbiBwY2lfY29uZmlndXJlX2x0cigpIGFuZCByZWZsZWN0cyBpdCBpbiBMVFIgTWVjaGFuaXNtIEVuYWJsZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRwY2llX2NhcGFiaWxpdHlfcmVhZF93b3JkKHRwLVx1MDAzZXBjaV9kZXYsIFBDSV9FWFBfREVWQ1RMMiwgXHUwMDI2Y3RsMik7XG4mIzQzO1x0aWYgKCEoY3RsMiBcdTAwMjYgUENJX0VYUF9ERVZDVEwyX0xUUl9FTikpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzgwOlxuIFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNDFkOWFiNGRhOTM2ZGRjOTFhYTU3NjgyMTRhMjNlMWM4MDg3MWZmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgOSAxMzowMDowMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKaW5kZXggZWM0ZmMyMWZhMjFmYi4uYzFmZjRlODk4NTcwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKQEAgLTMwMzcsNiAmIzQzOzMwMzcsMTYgQEAgc3RhdGljIHZvaWQgcnRsX2Rpc2FibGVfZXhpdF9sMShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAogc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7CiYjNDM7CXUxNiBjdGwyOwomIzQzOwomIzQzOwkvKiBUaGUgY2hpcCBtdXN0IG5vdCBpc3N1ZSBMVFIgbWVzc2FnZXMgdW5sZXNzIHRoZSBwbGF0Zm9ybSBlbmFibGVkCiYjNDM7CSAqIExUUiBvbiB0aGUgd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBUaGUgUENJIGNvcmUgZGlzY292ZXJzCiYjNDM7CSAqIHRoYXQgaW4gcGNpX2NvbmZpZ3VyZV9sdHIoKSBhbmQgcmVmbGVjdHMgaXQgaW4gTFRSIE1lY2hhbmlzbSBFbmFibGUuCiYjNDM7CSAqLwomIzQzOwlwY2llX2NhcGFiaWxpdHlfcmVhZF93b3JkKHRwLSZndDtwY2lfZGV2LCBQQ0lfRVhQX0RFVkNUTDIsICZhbXA7Y3RsMik7CiYjNDM7CWlmICghKGN0bDIgJmFtcDsgUENJX0VYUF9ERVZDVEwyX0xUUl9FTikpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJc3dpdGNoICh0cC0mZ3Q7bWFjX3ZlcnNpb24pIHsKIAljYXNlIFJUTF9HSUdBX01BQ19WRVJfODA6CiAJCXI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcyBhbWQ2NC4gVGhlIGZpbGUgcGF0aCBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLiBIbW0sIHRoaXMgc2VlbXMgdG8gYmUgYSBkcml2ZXIgcmVsYXRlZCB0byBSZWFsdGVrIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBTcGVjaWZpY2FsbHksIHRoZSBSVEw4MTY5IGZhbWlseSwgaWYgSSByZWNhbGwgY29ycmVjdGx5IOKAkyB0aG9zZSBhcmUgcHJldHR5IGNvbW1vbiBQQ0llIEdpZ2FiaXQgYW5kIDIuNUcgRXRoZXJuZXQgTklDcy4KCkkgc2VlIGNvZGUgaW50cm9kdWNpbmcgYSBjaGVjayByZWxhdGVkIHRvIExUUiAoTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nKS4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFRoZSBjb2RlIHNlZW1zIHRvIGJlIGVuYWJsaW5nIExUUiwgYnV0IG9ubHkgaWYgdGhlIHBsYXRmb3JtIGhhcyBlbmFibGVkIGl0IGFuZCB0aGUgUENJIGNvcmUgaGFzIGFsc28gaW5kaWNhdGVkIGl0JiMzOTtzIHN1cHBvcnRlZC4gVGhlIGNoZWNrIGludm9sdmVzIHJlYWRpbmcgYSBQQ0kgY29uZmlndXJhdGlvbiByZWdpc3RlciBgUENJX0VYUF9ERVZDVEwyYCBhbmQgdmVyaWZ5aW5nIHRoZSBgUENJX0VYUF9ERVZDVEwyX0xUUl9FTmAgYml0IGlzIHNldC4gVGhpcyBtYWtlcyBzZW5zZTsgeW91IGRvbiYjMzk7dCB3YW50IHRoZSBOSUMgdHJ5aW5nIHRvIHVzZSBMVFIgaWYgdGhlIGhhcmR3YXJlIG9yIGZpcm13YXJlIGRvZXNuJiMzOTt0IHN1cHBvcnQgaXQgZW5kLXRvLWVuZC4KCk5vdywgbXkgbWluZCBnb2VzIHRvIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHZpcnR1YWxpemF0aW9uLCBzaW5jZSBJJiMzOTttIGFsd2F5cyB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkcml2ZXIgYmVoYXZlcyBjb3JyZWN0bHkgd2hlbiBlbXVsYXRlZC4gSXMgYHI4MTY5YCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VPyBJIGtub3cgUUVNVSBzdXBwb3J0cyB0aGUgb2xkZXIgYHJ0bDgxMzlgLCB0eXBpY2FsbHkgaWRlbnRpZmllZCB3aXRoIFBDSSBJRCAxMGVjOjgxMzkuIERvZXMgaXQgYWxzbyBlbXVsYXRlIHRoZSBuZXdlciBgcjgxNjlgIGNvbnRyb2xsZXJzPyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gUXVpY2sgc2FuaXR5IGNoZWNrOiBRRU1VJiMzOTtzIGAtbmV0IG5pYyxtb2RlbD0/YCBvcHRpb24gbGlzdHMgYSBidW5jaCBvZiBkaWZmZXJlbnQgZW11bGF0ZWQgTklDcywgYnV0IGxldCBtZSB2ZXJpZnkgdGhhdCBpdCBzdXBwb3J0cyBgcjgxNjlgIHNwZWNpZmljYWxseS4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZW11bGF0aW9uIGhhbmRsZXMgTFRSLCBpZiBhdCBhbGwuCgpVbHRpbWF0ZWx5LCBJIHdpbGwgaGF2ZSB0byBjcm9zcy1yZWZlcmVuY2UgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCB3aXRoIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgYW5kIGRvdWJsZS1jaGVjayBRRU1VIGRldmljZSBzdXBwb3J0IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGluIHN5bmMgYW5kIHRoZSBpbXBsaWNhdGlvbnMgYXJlIHdlbGwtdW5kZXJzdG9vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSODE2OSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz03ND1jb25maWcgODEzOV9PTERfUlhfUkVTRVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6ODQ6Y29uZmlnIFI4MTY5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctODUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTAyOmNvbmZpZyBSODE2OV9MRURTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAzLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBjb250cm9sbGluZyB0aGUgTklDIExFRHNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDQ6XHRkZXBlbmRzIG9uIFI4MTY5IFx1MDAyNlx1MDAyNiBMRURTX1RSSUdHRVJfTkVUREVWXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTA1Olx0ZGVwZW5kcyBvbiAhKFI4MTY5PXkgXHUwMDI2XHUwMDI2IExFRFNfQ0xBU1M9bSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZT04PXI4MTY5LXkgJiM0Mzs9IHI4MTY5X21haW4ubyByODE2OV9maXJtd2FyZS5vIHI4MTY5X3BoeV9jb25maWcub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZTo5OnI4MTY5LSQoQ09ORklHX1I4MTY5X0xFRFMpICYjNDM7PSByODE2OV9sZWRzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1I4MTY5KSAmIzQzOz0gcjgxNjkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfUlRBU0UpICYjNDM7PSBydGFzZS9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjcyOiNkZWZpbmUgUjgxNjlfUkVHU19TSVpFXHRcdDI1NlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NzM6I2RlZmluZSBSODE2OV9SWF9CVUZfU0laRVx0KFNaXzE2SyAtIDEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03NC0jZGVmaW5lIE5VTV9UWF9ERVNDXHQyNTZcdC8qIE51bWJlciBvZiBUeCBkZXNjcmlwdG9yIHJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNzUtI2RlZmluZSBOVU1fUlhfREVTQ1x0MjU2XHQvKiBOdW1iZXIgb2YgUnggZGVzY3JpcHRvciByZWdpc3RlcnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjc2OiNkZWZpbmUgUjgxNjlfVFhfUklOR19CWVRFU1x0KE5VTV9UWF9ERVNDICogc2l6ZW9mKHN0cnVjdCBUeERlc2MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Nzc6I2RlZmluZSBSODE2OV9SWF9SSU5HX0JZVEVTXHQoTlVNX1JYX0RFU0MgKiBzaXplb2Yoc3RydWN0IFJ4RGVzYykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3ODojZGVmaW5lIFI4MTY5X1RYX1NUT1BfVEhSU1x0KE1BWF9TS0JfRlJBR1MgJiM0MzsgMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjc5OiNkZWZpbmUgUjgxNjlfVFhfU1RBUlRfVEhSU1x0KDIgKiBSODE2OV9UWF9TVE9QX1RIUlMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNzk5PXN0YXRpYyBpbnQgcnRsODE2OV9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4MDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTgwMTpcdHJldHVybiBSODE2OV9SRUdTX1NJWkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODAyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xODc4PXN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfcmVncyAqcmVncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg4NjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFI4MTY5X1JFR1NfU0laRTsgaSAmIzQzOz0gNClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4ODctXHRcdG1lbWNweV9mcm9taW8oZHcmIzQzOyYjNDM7LCBkYXRhJiM0MzsmIzQzOywgNCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9Mjc5OT1zdGF0aWMgdm9pZCBydGxfc2V0X3J4X21heF9zaXplKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI4MDEtXHQvKiBMb3cgaHVydHMuIExldCYjMzk7cyBkaXNhYmxlIHRoZSBmaWx0ZXJpbmcuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyODAyOlx0UlRMX1cxNih0cCwgUnhNYXhTaXplLCBSODE2OV9SWF9CVUZfU0laRSAmIzQzOyAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI4MDMtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQxNjE9c3RhdGljIHZvaWQgcnRsODE2OV9tYXJrX3RvX2FzaWMoc3RydWN0IFJ4RGVzYyAqZGVzYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTY3LVx0ZG1hX3dtYigpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDE2ODpcdFdSSVRFX09OQ0UoZGVzYy1cdTAwM2VvcHRzMSwgY3B1X3RvX2xlMzIoRGVzY093biB8IGVvciB8IFI4MTY5X1JYX0JVRl9TSVpFKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTY5LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00MTcxPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqcnRsODE2OV9hbGxvY19yeF9kYXRhKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQxNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MTc5Olx0ZGF0YSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZSwgR0ZQX0tFUk5FTCwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTgwLVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQxODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MTgzOlx0bWFwcGluZyA9IGRtYV9tYXBfcGFnZShkLCBkYXRhLCAwLCBSODE2OV9SWF9CVUZfU0laRSwgRE1BX0ZST01fREVWSUNFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQxODQtXHRpZiAodW5saWtlbHkoZG1hX21hcHBpbmdfZXJyb3IoZCwgbWFwcGluZykpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTg1LVx0XHRuZXRkZXZfZXJyKHRwLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIG1hcCBSWCBETUEhXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQxODY6XHRcdF9fZnJlZV9wYWdlcyhkYXRhLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQxODctXHRcdHJldHVybiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQxOTY9c3RhdGljIHZvaWQgcnRsODE2OV9yeF9jbGVhcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjAyLVx0XHRcdCAgICAgICBsZTY0X3RvX2NwdSh0cC1cdTAwM2VSeERlc2NBcnJheVtpXS5hZGRyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQyMDM6XHRcdFx0ICAgICAgIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDIwNDpcdFx0X19mcmVlX3BhZ2VzKHRwLVx1MDAzZVJ4X2RhdGFidWZmW2ldLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQyMDUtXHRcdHRwLVx1MDAzZVJ4X2RhdGFidWZmW2ldID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00NTY5PXN0YXRpYyBuZXRkZXZfdHhfdCBydGw4MTY5X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00NjI1LVx0c3RvcF9xdWV1ZSA9ICFuZXRpZl9zdWJxdWV1ZV9tYXliZV9zdG9wKGRldiwgMCwgcnRsX3R4X3Nsb3RzX2F2YWlsKHRwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQ2MjY6XHRcdFx0XHRcdFx0UjgxNjlfVFhfU1RPUF9USFJTLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDYyNzpcdFx0XHRcdFx0XHRSODE2OV9UWF9TVEFSVF9USFJTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQ2MjgtXHRpZiAoZG9vcl9iZWxsIHx8IHN0b3BfcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NDcxOT1zdGF0aWMgdm9pZCBydGxfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDc1MS1cdFx0XHRcdFx0ICAgICAgcnRsX3R4X3Nsb3RzX2F2YWlsKHRwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQ3NTI6XHRcdFx0XHRcdCAgICAgIFI4MTY5X1RYX1NUQVJUX1RIUlMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDc1My1cdFx0Lypcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDU1PXN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUwNjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MDcwOlx0ZG1hX2ZyZWVfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsIHRwLVx1MDAzZVJ4RGVzY0FycmF5LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTA3MS1cdFx0XHQgIHRwLVx1MDAzZVJ4UGh5QWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MDcyOlx0ZG1hX2ZyZWVfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFI4MTY5X1RYX1JJTkdfQllURVMsIHRwLVx1MDAzZVR4RGVzY0FycmF5LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTA3My1cdFx0XHQgIHRwLVx1MDAzZVR4UGh5QWRkcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTA5MT1zdGF0aWMgaW50IHJ0bF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTEwMy1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTEwNDpcdHRwLVx1MDAzZVR4RGVzY0FycmF5ID0gZG1hX2FsbG9jX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBSODE2OV9UWF9SSU5HX0JZVEVTLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTEwNS1cdFx0XHRcdFx0ICAgICBcdTAwMjZ0cC1cdTAwM2VUeFBoeUFkZHIsIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MTA5Olx0dHAtXHUwMDNlUnhEZXNjQXJyYXkgPSBkbWFfYWxsb2NfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MTEwLVx0XHRcdFx0XHQgICAgIFx1MDAyNnRwLVx1MDAzZVJ4UGh5QWRkciwgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTE0Mi1lcnJfZnJlZV9yeF8xOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTE0MzpcdGRtYV9mcmVlX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLCB0cC1cdTAwM2VSeERlc2NBcnJheSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxNDQtXHRcdFx0ICB0cC1cdTAwM2VSeFBoeUFkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxNDYtZXJyX2ZyZWVfdHhfMDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjUxNDc6XHRkbWFfZnJlZV9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgUjgxNjlfVFhfUklOR19CWVRFUywgdHAtXHUwMDNlVHhEZXNjQXJyYXksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MTQ4LVx0XHRcdCAgdHAtXHUwMDNlVHhQaHlBZGRyKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01Mjg4PXN0YXRpYyB2b2lkIHJ0bF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUyOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1Mjk3Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTI5OC1cdFx0cjgxNjlfcmVtb3ZlX2xlZHModHAtXHUwMDNlbGVkcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTYxMj1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01ODA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTgwOTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19SODE2OV9MRURTKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTgxMC1cdFx0aWYgKHJ0bF9pc184MTI1KHRwKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODEzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4KCioqSW52ZXN0aWdhdGluZyByODE2OSBQQ0kgSUQgQmluZGluZyoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBQQ0kgSURzIHRoZSBgcjgxNjlgIGRyaXZlciBpcyBhY3R1YWxseSBiaW5kaW5nIHRvLiBNeSB1c3VhbCBhcHByb2FjaCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBTcGVjaWZpY2FsbHksIEkga25vdyB0aGF0IHRoZSBkZXZpY2UgdGFibGUgZm9yIHRoZXNlIGRyaXZlcnMgaXMgdHlwaWNhbGx5IGRlY2xhcmVkIGluIHRoZSBtYWluIGZpbGUuIFNvLCBJJiMzOTtsbCBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgIGFuZCBodW50IGFyb3VuZCB0aGUgYHJ0bDgxNjlfcGNpX3RibGAgdGFibGUuIFRoYXQmIzM5O3MgdGhlIGdvLXRvIGxvY2F0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHdoaWNoIGhhcmR3YXJlIHJldmlzaW9ucyB0aGlzIHBhcnRpY3VsYXIgUmVhbHRlayBFdGhlcm5ldCBkcml2ZXIgc3VwcG9ydHMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4uLiB0aGF0JiMzOTtzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCByaWdodD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGw4MTY5X3BjaV90YmwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHJ0bF9jaGlwX2luZm9zX2V4dGVuZGVkW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydGw4MTY5X3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIyOS1cdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MjUwMikgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNTQ6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJ0bDgxNjlfcGNpX3RibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTgzNj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnRsODE2OV9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTgzNy1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1ODM4Olx0LmlkX3RhYmxlXHQ9IHJ0bDgxNjlfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU4MzktXHQucHJvYmVcdFx0PSBydGxfaW5pdF9vbmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUwOQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBydGxfZW5hYmxlX2x0cmAgQ2FsbCBTaXRlcyBpbiB0aGUgUjgxNjkgRHJpdmVyKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgYHJ0bF9lbmFibGVfbHRyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgd2l0aGluIHRoZSBSZWFsdGVrIFI4MTY5IEV0aGVybmV0IGRyaXZlciwgc28gZmlyc3QgdGhpbmdzIGZpcnN0LCBJJiMzOTttIGhlYWRpbmcgZGlyZWN0bHkgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLiBObyBwb2ludCBpbiBndWVzc2luZzsgSSB3YW50IHRoZSBkZWZpbml0aXZlIHNvdXJjZS4gSSYjMzk7bGwgbmVlZCB0byByZWFkIHRoZSBjb2RlIHN1cnJvdW5kaW5nIHRob3NlIGNhbGxzIHRvIHNlZSB3aGVyZSBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcG93ZXIgbWFuYWdlbWVudCBvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gbG9naWMgb2YgdGhlIGRyaXZlci4gSXMgdGhpcyByZWxhdGVkIHRvIGxpbmstc3RhdGUgY2hhbmdlcywgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhpcyBtaWdodCByZXZlYWwgc29tZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgaGFyZHdhcmUmIzM5O3MgTFRSIGNhcGFiaWxpdGllcywgb3IgcG9zc2libHkgc29tZSBwb3RlbnRpYWwgZ290Y2hhcyBhcm91bmQgZW5hYmxpbmcgaXQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSBoYXMgdG8gdGVsbCBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMDMwOlx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNDAgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbjMwMzE6XHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4YzBhYywgMHgxZjgwLCAwKTtcbjMwMzI6XHRcdFx0YnJlYWs7XG4zMDMzOlx0XHRkZWZhdWx0OlxuMzAzNDpcdFx0XHRicmVhaztcbjMwMzU6XHRcdH1cbjMwMzY6XHR9XG4zMDM3Olx0XG4zMDM4Olx0c3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4zMDM5Olx0e1xuMzA0MDpcdFx0dTE2IGN0bDI7XG4zMDQxOlx0XG4zMDQyOlx0XHQvKiBUaGUgY2hpcCBtdXN0IG5vdCBpc3N1ZSBMVFIgbWVzc2FnZXMgdW5sZXNzIHRoZSBwbGF0Zm9ybSBlbmFibGVkXG4zMDQzOlx0XHQgKiBMVFIgb24gdGhlIHdob2xlIHBhdGggdXAgdG8gdGhlIHJvb3QgcG9ydC4gVGhlIFBDSSBjb3JlIGRpc2NvdmVyc1xuMzA0NDpcdFx0ICogdGhhdCBpbiBwY2lfY29uZmlndXJlX2x0cigpIGFuZCByZWZsZWN0cyBpdCBpbiBMVFIgTWVjaGFuaXNtIEVuYWJsZS5cbjMwNDU6XHRcdCAqL1xuMzA0NjpcdFx0cGNpZV9jYXBhYmlsaXR5X3JlYWRfd29yZCh0cC1cdTAwM2VwY2lfZGV2LCBQQ0lfRVhQX0RFVkNUTDIsIFx1MDAyNmN0bDIpO1xuMzA0NzpcdFx0aWYgKCEoY3RsMiBcdTAwMjYgUENJX0VYUF9ERVZDVEwyX0xUUl9FTikpXG4zMDQ4Olx0XHRcdHJldHVybjtcbjMwNDk6XHRcbjMwNTA6XHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbjMwNTE6XHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcbjMwNTI6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xuMzA1MzpcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX1NOT09QLCAweDAwMDAsIExUUl9TTk9PUF9FTik7XG4zMDU0Olx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBBTERQU19MVFIsIDB4MDAwMCwgQUxEUFNfTFRSX0VOKTtcbjMwNTU6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDhjMDkpO1xuMzA1NjpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7XG4zMDU3Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNCwgMHg5MDAzKTtcbjMwNTg6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRhLCAweDkwMDMpO1xuMzA1OTpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDYsIDB4OTAwMyk7XG4zMDYwOlx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYywgMHg5MDAzKTtcbjMwNjE6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGU4LCAweDg4N2EpO1xuMzA2MjpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZWEsIDB4OTAwMyk7XG4zMDYzOlx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlYywgMHg4YzA5KTtcbjMwNjQ6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVlLCAweDkwMDMpO1xuMzA2NTpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZjAsIDB4OGE2Mik7XG4zMDY2Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMiwgMHg5MDAzKTtcbjMwNjc6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGY0LCAweDg4M2UpO1xuMzA2ODpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZjYsIDB4OTAwMyk7XG4zMDY5Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmOCwgMHg4ODQ5KTtcbjMwNzA6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGZhLCAweDkwMDMpO1xuMzA3MTpcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAwLCBMSU5LX1NQRUVEX0NIQU5HRV9FTik7XG4zMDcyOlx0XHRcdGJyZWFrO1xuMzA3MzpcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzcwOlxuMzA3NDpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7XG4zMDc1Olx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfU05PT1AsIDB4MDAwMCwgTFRSX1NOT09QX0VOKTtcbjMwNzY6XHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xuMzA3NzpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4OGMwOSk7XG4zMDc4Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkOCwgMHg5MDAzKTtcbjMwNzk6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDkwMDMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTg5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIGBydGxfZW5hYmxlX2x0cmAgQ2FsbHMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBvZiB0aGUgYHJ0bF9lbmFibGVfbHRyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB0cmlnZ2VyZWQuIEtub3dpbmcgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIHdpbGwgaW1tZWRpYXRlbHkgc2hlZCBsaWdodCBvbiBpdHMgaW50ZW5kZWQgcHVycG9zZSBhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBJJiMzOTtsbCBsaWtlbHkgc3RhcnQgd2l0aCBhIHF1aWNrIGdyZXAgb3IgY29kZSBzZWFyY2gsIG1heWJlIGxldmVyYWdpbmcgbXkgSURFJiMzOTtzICYjMzQ7ZmluZCB1c2FnZXMmIzM0OyBvciAmIzM0O2NhbGwgaGllcmFyY2h5JiMzNDsgZmVhdHVyZXMgdG8gZ2V0IGEgcHJlbGltaW5hcnkgb3ZlcnZpZXcgb2YgdGhlIGNvZGViYXNlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBkaXJlY3QgY2FsbHMsIG9mIGNvdXJzZSwgYnV0IGFsc28gaW5kaXJlY3QgaW52b2NhdGlvbnMgdGhyb3VnaCBmdW5jdGlvbiBwb2ludGVycyBvciBtYWNybyBleHBhbnNpb25zLiBEZXBlbmRpbmcgb24gdGhlIGNvbXBsZXhpdHksIEkgbWlnaHQgc3RhcnQgdXNpbmcgYSBkZWJ1Z2dlciBhbmQgd2FsayB0aHJvdWdoIHRoZSBjb2RlLCBmb2N1c2luZyBvbiB0aGUgc3BlY2lmaWMgbW9kdWxlcyBvciBjb21wb25lbnRzIHRoYXQgc2VlbSBtb3N0IHJlbGV2YW50IGJhc2VkIG9uIHRoZSBmdW5jdGlvbiBuYW1lLiBJJiMzOTttIGFpbWluZyBmb3IgYSBtZW50YWwgbWFwIG9mIGl0cyB1c2FnZSwgZXNzZW50aWFsbHkgZG9jdW1lbnRpbmcgdGhlIGNhbGwgZ3JhcGggZnJvbSB0aGUgZW50cnkgcG9pbnRzIGFsbCB0aGUgd2F5IGRvd24gdG8gd2hlcmUgYHJ0bF9lbmFibGVfbHRyYCBiZWNvbWVzIGEgbGVhZiBub2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGxfZW5hYmxlX2x0ciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTMwMjQ9c3RhdGljIHZvaWQgcnRsX2Rpc2FibGVfZXhpdF9sMShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zMDM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MzAzODpzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTMwMzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTMxMzQ9c3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzE2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjMxNjI6XHRcdHJ0bF9lbmFibGVfbHRyKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTMxNjMtXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3ODAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBRRU1VIFN1cHBvcnQgZm9yIFJlYWx0ZWsgRXRoZXJuZXQgQ29udHJvbGxlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlIGByODE2OWAgZHJpdmVyLCB3aGljaCBoYW5kbGVzIHRob3NlIFJlYWx0ZWsgUENJL1BDSWUgZXRoZXJuZXQgY29udHJvbGxlcnMg4oCTIHRoZSBSVEw4MTY5LCA4MTY4LCA4MTAxLCBhbmQgODEyNSBtb2RlbHMuIE15IHF1ZXN0aW9uIGlzLCBhcmUgdGhvc2Ugc3BlY2lmaWNhbGx5IHN1cHBvcnRlZCBvciBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIG9yIHBlcmhhcHMgZXZlbiBpbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFRpbWUgdG8gZGlnIGluLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBRRU1VJiMzOTtzIFJlYWx0ZWsgTklDIGVtdWxhdGlvbiB0byBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKSG1tLCBRRU1VIGVtdWxhdGVzIHRoZSBvbGRlciBSVEw4MTM5LCB3aGljaCBoYXMgYSBQQ0kgZGV2aWNlIElEIG9mIDEwZWM6ODEzOS4gVGhhdCYjMzk7cyB1c3VhbGx5IGhhbmRsZWQgYnkgdGhlIGA4MTM5Y3BgIG9yIGA4MTM5dG9vYCBkcml2ZXJzLCBidXQuLi4gaG9sZCBvbi4gRGlkbiYjMzk7dCB0aGUgYHI4MTY5YCBkcml2ZXIgc29tZXRpbWVzIGhhbmRsZSBzaW1pbGFyIGRldmljZXM/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIFJpZ2h0LCBJIHJlbWVtYmVyIG5vdyAtIGxldCYjMzk7cyBjaGVjayB0aGUgYHJ0bDgxNjlfcGNpX3RibGAgdGFibGUgd2l0aGluIHRoZSBgcjgxNjlfbWFpbi5jYCBmaWxlISBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB3aGljaCBkZXZpY2VzIGl0ICphY3R1YWxseSogY292ZXJzLiBJJiMzOTtsbCBnZXQgdGhlIGFuc3dlciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjI1Olx0XHR7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIFJUTF9HSUdBX01BQ19OT05FIH1cbiAyMjY6XHR9O1xuIDIyNzpcdFxuIDIyODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydGw4MTY5X3BjaV90YmxbXSA9IHtcbiAyMjk6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MjUwMikgfSxcbiAyMzA6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MjYwMCkgfSxcbiAyMzE6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEyOSkgfSxcbiAyMzI6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEzNiksIC5kcml2ZXJfZGF0YSA9IFJUTF9DRkdfTk9fR0JJVCB9LFxuIDIzMzpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTYxKSB9LFxuIDIzNDpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTYyKSB9LFxuIDIzNTpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTY3KSB9LFxuIDIzNjpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTY4KSB9LFxuIDIzNzpcdFx0eyBQQ0lfVkRFVklDRShOQ1VCRSxcdDB4ODE2OCkgfSxcbiAyMzg6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODE2OSkgfSxcbiAyMzk6XHRcdHsgUENJX1ZERVZJQ0UoRExJTkssXHQweDQzMDApIH0sXG4gMjQwOlx0XHR7IFBDSV9WREVWSUNFKERMSU5LLFx0MHg0MzAyKSB9LFxuIDI0MTpcdFx0eyBQQ0lfVkRFVklDRShBVCxcdDB4YzEwNykgfSxcbiAyNDI6XHRcdHsgUENJX1ZERVZJQ0UoVVNSLFx0MHgwMTE2KSB9LFxuIDI0MzpcdFx0eyBQQ0lfVkRFVklDRV9TVUIoTElOS1NZUywgMHgxMDMyLCBQQ0lfQU5ZX0lELCAweDAwMjQpIH0sXG4gMjQ0Olx0XHR7IFBDSV9ERVZJQ0VfU1VCKDB4MDAwMSwgMHg4MTY4LCBQQ0lfQU5ZX0lELCAweDI0MTApIH0sXG4gMjQ1Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxMjUpIH0sXG4gMjQ2Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxMjYpIH0sXG4gMjQ3Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxMjcpIH0sXG4gMjQ4Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDMwMDApIH0sXG4gMjQ5Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDUwMDApIH0sXG4gMjUwOlx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDBlMTApIH0sXG4gMjUxOlx0XHR7IH1cbiAyNTI6XHR9O1xuIDI1MzpcdFxuIDI1NDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydGw4MTY5X3BjaV90YmwpO1xuIDI1NTpcdFxuIDI1NjpcdGVudW0gcnRsX3JlZ2lzdGVycyB7XG4gMjU3Olx0XHRNQUMwXHRcdD0gMCxcdC8qIEV0aGVybmV0IGhhcmR3YXJlIGFkZHJlc3MuICovXG4gMjU4Olx0XHRNQUM0XHRcdD0gNCxcbiAyNTk6XHRcdE1BUjBcdFx0PSA4LFx0LyogTXVsdGljYXN0IGZpbHRlci4gKi9cbiAyNjA6XHRcdENvdW50ZXJBZGRyTG93XHRcdD0gMHgxMCxcbiAyNjE6XHRcdENvdW50ZXJBZGRySGlnaFx0XHQ9IDB4MTQsXG4gMjYyOlx0XHRUeERlc2NTdGFydEFkZHJMb3dcdD0gMHgyMCxcbiAyNjM6XHRcdFR4RGVzY1N0YXJ0QWRkckhpZ2hcdD0gMHgyNCxcbiAyNjQ6XHRcdFR4SERlc2NTdGFydEFkZHJMb3dcdD0gMHgyOCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyNDMKCQkJCQkJCW91dHB1dDogMTI3CgkJCQkJCQl0aG91Z2h0czogODEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgQW5hbHlzaXM6IHI4MTY5IERyaXZlciBNb2RpZmljYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBjb25zaWRlciB0aGUgYHJ0bDgxNjlfcGNpX3RibGAgd2hpY2ggaGFuZGxlcyBhIHJhbmdlIG9mIFJlYWx0ZWsgY2hpcHMgbGlrZSAweDgxNjksIDB4ODE2OCwgYW5kIDB4ODEyNS4gVGhlbiBJIHRob3VnaHQgYWJvdXQgdGhlIGZ1bmN0aW9uIGBydGxfZW5hYmxlX2x0cmAuIEkgcmVtZW1iZXJlZCBMVFIgc3RhbmRzIGZvciBMYXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcsIGEgUENJZSBmZWF0dXJlIChQQ0llIDIuMSYjNDM7IC8gUENJZSAzLjApLCBhbmQgdGhlIGNvZGUgd2l0aGluIGBydGxfZW5hYmxlX2x0cmAgc3BlY2lmaWNhbGx5IGNoZWNrcyB0aGUgYHRwLSZndDttYWNfdmVyc2lvbmAgZm9yIGNlcnRhaW4gUmVhbHRlayBoYXJkd2FyZSByZXZpc2lvbnMg4oCTIHRob3NlIDgxNjggYW5kIDgxMjUgdmVyc2lvbnMgSSBtZW50aW9uZWQgZWFybGllci4KCkhvd2V2ZXIsIEkgbmVlZGVkIHRvIGNvbmZpcm0gdGhhdCBRRU1VIGV2ZW4gKmVtdWxhdGVzKiB0aGVzZSBkZXZpY2VzLiBFdmVuIGlmIFFFTVUgZW11bGF0ZWQgc29tZXRoaW5nLCBsaWtlIHRoZSBvbGRlciBSVEw4MTM5IChkZXZpY2UgODEzOSksIHRoYXQmIzM5O3MgaGFuZGxlZCBieSBlbnRpcmVseSBkaWZmZXJlbnQgZHJpdmVycywgYDgxMzljcGAgb3IgYDgxMzl0b29gLiBUaGUgUmVhbHRlayBSVEw4MTY5L1JUTDgxNjgvUlRMODEyNSBmYW1pbHkgYXJlIHBoeXNpY2FsIFBDSWUgRXRoZXJuZXQgTklDcy4KClNvLCB0aGUgbmV4dCBxdWVzdGlvbiBpczogRG9lcyBRRU1VIGVtdWxhdGUgdGhlIFJUTDgxNjk/IEkgY2hlY2tlZCBgaHcvbmV0L2Agd2l0aGluIFFFTVUgYW5kLCBubywgaXQmIzM5O3MganVzdCBgcnRsODEzOS5jYCB3aXRoIFBDSSBJRCAweDgxMzkuIE9rLCB3aGF0IGFib3V0IHBoeXNpY2FsbHkgcHJlc2VudCBQQ0llIE5JQ3M/CgpOb3cgSSYjMzk7bSByZWZlcmVuY2luZyB0aGUgZ3VpZGVsaW5lcywgYW5kIHRoZSBrZXkgcGhyYXNlIGp1bXBzIG91dCBhdCBtZTogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgVGhpcyBkaXJlY3RseSByZWxhdGVzIHRvIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMsIHdoaWNoIGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIGh1Z2UgY2x1ZS4gVGhlbiB0aGUgJiMzNDtSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURSYjMzQ7IHNlY3Rpb24gZnVydGhlciBoYW1tZXJzIGhvbWUgdGhlIHBvaW50IHRoYXQgZnV6emluZyBpcyBvbmx5IGVmZmVjdGl2ZSBpZiB0aGUgY29kZSBjYW4gKmFjdHVhbGx5KiBiZSBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgaG93IHRvIHJlYWNoIGl0LiBDYW4gYHI4MTY5YCBiZSByZWFjaGVkIHZpYSBVU0I/IE5vLCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIEl0IHJlZ2lzdGVycyB3aXRoIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpbiBgcjgxNjlfbWFpbi5jYCAoVVNCIFJlYWx0ZWsgaXMgYHI4MTUyYCkuIENhbiBpdCBiZSByZWFjaGVkIHZpYSBuZXRkZXYvdHVuL3RhcC9sb29wYmFjaz8gQWdhaW4sIG5vLiBJdCYjMzk7cyBhIFBDSSBkZXZpY2UgZHJpdmVyLiBDYW4gaXQgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBmdXp6aW5nIGluc3RhbmNlcz8gTm8sIG5laXRoZXIgb2YgdGhvc2UgaGF2ZSB0aGUgUmVhbHRlayA4MTY4LzgxNjkvODEyNSBQQ0llIGhhcmR3YXJlLgoKVGhlcmVmb3JlLCB0aGlzIG1lYW5zIHRoZSBtb2RpZmllZCBjb2RlIGlzIHdpdGhpbiBhIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGV0aGVybmV0IGRyaXZlciB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiB0aGUgdXN1YWwgUUVNVS9HQ0Ugc3l6a2FsbGVyIGVudmlyb25tZW50cy4gSXQmIzM5O3Mgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBhbGwgZGV0YWlsczoKCiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKiDigJMgVGhhdCYjMzk7cyB0aGUgY29ycmVjdCBpbml0aWFsIGFzc2Vzc21lbnQuCiogICAqKlJlYXNvbmluZzoqKiBDb25jaXNlLgoqICAgKipFbmFibGVDb25maWdzOiBbXSoqCiogICAqKkZvY3VzU3ltYm9sczogW10qKgoKVGhlIHJlYXNvbmluZyBpcyBjb3JyZWN0LiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgUENJL1BDSWUgZGV2aWNlIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4MTY5L1JUTDgxNjgvUlRMODEyNSBFdGhlcm5ldCBjb250cm9sbGVycy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLgoKTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcnRsX2VuYWJsZV9sdHIoKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODE2OS9SVEw4MTY4L1JUTDgxMjUgUENJZSBuZXR3b3JrIGludGVyZmFjZSBjYXJkcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowMDowMi43Nzc1NTE4NDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjgxMjgwMzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBydGxfZW5hYmxlX2x0cigpYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4MTY5L1JUTDgxNjgvUlRMODEyNSBQQ0llIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmRzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowMDowMi43Nzc1NjA3NzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyOTI3NjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM0MWQ5YWI0ZGE5MzZkZGM5MWFhNTc2ODIxNGEyM2UxYzgwODcxZmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBTZXAgOSAxMzowMDowMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuaW5kZXggZWM0ZmMyMWZhMjFmYi4uYzFmZjRlODk4NTcwNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuQEAgLTMwMzcsNiArMzAzNywxNiBAQCBzdGF0aWMgdm9pZCBydGxfZGlzYWJsZV9leGl0X2wxKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHtcXG4rXFx0dTE2IGN0bDI7XFxuK1xcbitcXHQvKiBUaGUgY2hpcCBtdXN0IG5vdCBpc3N1ZSBMVFIgbWVzc2FnZXMgdW5sZXNzIHRoZSBwbGF0Zm9ybSBlbmFibGVkXFxuK1xcdCAqIExUUiBvbiB0aGUgd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBUaGUgUENJIGNvcmUgZGlzY292ZXJzXFxuK1xcdCAqIHRoYXQgaW4gcGNpX2NvbmZpZ3VyZV9sdHIoKSBhbmQgcmVmbGVjdHMgaXQgaW4gTFRSIE1lY2hhbmlzbSBFbmFibGUuXFxuK1xcdCAqL1xcbitcXHRwY2llX2NhcGFiaWxpdHlfcmVhZF93b3JkKHRwLVxcdTAwM2VwY2lfZGV2LCBQQ0lfRVhQX0RFVkNUTDIsIFxcdTAwMjZjdGwyKTtcXG4rXFx0aWYgKCEoY3RsMiBcXHUwMDI2IFBDSV9FWFBfREVWQ1RMMl9MVFJfRU4pKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcbiBcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfODA6XFxuIFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDA6MDMuNDA3OTkxODk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMjE4MjM1MDcxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzQxZDlhYjRkYTkzNmRkYzkxYWE1NzY4MjE0YTIzZTFjODA4NzFmZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTM6MDA6MDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiLi5jMWZmNGU4OTg1NzA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5AQCAtMzAzNyw2ICszMDM3LDE2IEBAIHN0YXRpYyB2b2lkIHJ0bF9kaXNhYmxlX2V4aXRfbDEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuK1x0dTE2IGN0bDI7XG4rXG4rXHQvKiBUaGUgY2hpcCBtdXN0IG5vdCBpc3N1ZSBMVFIgbWVzc2FnZXMgdW5sZXNzIHRoZSBwbGF0Zm9ybSBlbmFibGVkXG4rXHQgKiBMVFIgb24gdGhlIHdob2xlIHBhdGggdXAgdG8gdGhlIHJvb3QgcG9ydC4gVGhlIFBDSSBjb3JlIGRpc2NvdmVyc1xuK1x0ICogdGhhdCBpbiBwY2lfY29uZmlndXJlX2x0cigpIGFuZCByZWZsZWN0cyBpdCBpbiBMVFIgTWVjaGFuaXNtIEVuYWJsZS5cbitcdCAqL1xuK1x0cGNpZV9jYXBhYmlsaXR5X3JlYWRfd29yZCh0cC1cdTAwM2VwY2lfZGV2LCBQQ0lfRVhQX0RFVkNUTDIsIFx1MDAyNmN0bDIpO1xuK1x0aWYgKCEoY3RsMiBcdTAwMjYgUENJX0VYUF9ERVZDVEwyX0xUUl9FTikpXG4rXHRcdHJldHVybjtcbitcbiBcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcbiBcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDA6MDMuNDA3OTkzNjk4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTk5NDA5ODEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgd2hpY2ggaXMgYW1kNjQuIFRoZSBmaWxlIHBhdGggaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYC4gSG1tLCB0aGlzIHNlZW1zIHRvIGJlIGEgZHJpdmVyIHJlbGF0ZWQgdG8gUmVhbHRlayBFdGhlcm5ldCBjb250cm9sbGVycy4gU3BlY2lmaWNhbGx5LCB0aGUgUlRMODE2OSBmYW1pbHksIGlmIEkgcmVjYWxsIGNvcnJlY3RseSDigJMgdGhvc2UgYXJlIHByZXR0eSBjb21tb24gUENJZSBHaWdhYml0IGFuZCAyLjVHIEV0aGVybmV0IE5JQ3MuXG5cbkkgc2VlIGNvZGUgaW50cm9kdWNpbmcgYSBjaGVjayByZWxhdGVkIHRvIExUUiAoTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nKS4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFRoZSBjb2RlIHNlZW1zIHRvIGJlIGVuYWJsaW5nIExUUiwgYnV0IG9ubHkgaWYgdGhlIHBsYXRmb3JtIGhhcyBlbmFibGVkIGl0IGFuZCB0aGUgUENJIGNvcmUgaGFzIGFsc28gaW5kaWNhdGVkIGl0J3Mgc3VwcG9ydGVkLiBUaGUgY2hlY2sgaW52b2x2ZXMgcmVhZGluZyBhIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIGBQQ0lfRVhQX0RFVkNUTDJgIGFuZCB2ZXJpZnlpbmcgdGhlIGBQQ0lfRVhQX0RFVkNUTDJfTFRSX0VOYCBiaXQgaXMgc2V0LiBUaGlzIG1ha2VzIHNlbnNlOyB5b3UgZG9uJ3Qgd2FudCB0aGUgTklDIHRyeWluZyB0byB1c2UgTFRSIGlmIHRoZSBoYXJkd2FyZSBvciBmaXJtd2FyZSBkb2Vzbid0IHN1cHBvcnQgaXQgZW5kLXRvLWVuZC5cblxuTm93LCBteSBtaW5kIGdvZXMgdG8gaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdmlydHVhbGl6YXRpb24sIHNpbmNlIEknbSBhbHdheXMgdGhpbmtpbmcgYWJvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZHJpdmVyIGJlaGF2ZXMgY29ycmVjdGx5IHdoZW4gZW11bGF0ZWQuIElzIGByODE2OWAgZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVT8gSSBrbm93IFFFTVUgc3VwcG9ydHMgdGhlIG9sZGVyIGBydGw4MTM5YCwgdHlwaWNhbGx5IGlkZW50aWZpZWQgd2l0aCBQQ0kgSUQgMTBlYzo4MTM5LiBEb2VzIGl0IGFsc28gZW11bGF0ZSB0aGUgbmV3ZXIgYHI4MTY5YCBjb250cm9sbGVycz8gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gUXVpY2sgc2FuaXR5IGNoZWNrOiBRRU1VJ3MgYC1uZXQgbmljLG1vZGVsPT9gIG9wdGlvbiBsaXN0cyBhIGJ1bmNoIG9mIGRpZmZlcmVudCBlbXVsYXRlZCBOSUNzLCBidXQgbGV0IG1lIHZlcmlmeSB0aGF0IGl0IHN1cHBvcnRzIGByODE2OWAgc3BlY2lmaWNhbGx5LiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGVtdWxhdGlvbiBoYW5kbGVzIExUUiwgaWYgYXQgYWxsLlxuXG5VbHRpbWF0ZWx5LCBJIHdpbGwgaGF2ZSB0byBjcm9zcy1yZWZlcmVuY2UgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCB3aXRoIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgYW5kIGRvdWJsZS1jaGVjayBRRU1VIGRldmljZSBzdXBwb3J0IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGluIHN5bmMgYW5kIHRoZSBpbXBsaWNhdGlvbnMgYXJlIHdlbGwtdW5kZXJzdG9vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjA5LjQwMjA5Mzg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDEzNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlI4MTY5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz03ND1jb25maWcgODEzOV9PTERfUlhfUkVTRVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6ODQ6Y29uZmlnIFI4MTY5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMjpjb25maWcgUjgxNjlfTEVEU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDMtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDQ6XFx0ZGVwZW5kcyBvbiBSODE2OSBcXHUwMDI2XFx1MDAyNiBMRURTX1RSSUdHRVJfTkVUREVWXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwNTpcXHRkZXBlbmRzIG9uICEoUjgxNjk9eSBcXHUwMDI2XFx1MDAyNiBMRURTX0NMQVNTPW0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlPTg9cjgxNjkteSArPSByODE2OV9tYWluLm8gcjgxNjlfZmlybXdhcmUubyByODE2OV9waHlfY29uZmlnLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlOjk6cjgxNjktJChDT05GSUdfUjgxNjlfTEVEUykgKz0gcjgxNjlfbGVkcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUjgxNjkpICs9IHI4MTY5Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19SVEFTRSkgKz0gcnRhc2UvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3MjojZGVmaW5lIFI4MTY5X1JFR1NfU0laRVxcdFxcdDI1NlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjczOiNkZWZpbmUgUjgxNjlfUlhfQlVGX1NJWkVcXHQoU1pfMTZLIC0gMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03NC0jZGVmaW5lIE5VTV9UWF9ERVNDXFx0MjU2XFx0LyogTnVtYmVyIG9mIFR4IGRlc2NyaXB0b3IgcmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNzUtI2RlZmluZSBOVU1fUlhfREVTQ1xcdDI1NlxcdC8qIE51bWJlciBvZiBSeCBkZXNjcmlwdG9yIHJlZ2lzdGVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjc2OiNkZWZpbmUgUjgxNjlfVFhfUklOR19CWVRFU1xcdChOVU1fVFhfREVTQyAqIHNpemVvZihzdHJ1Y3QgVHhEZXNjKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3NzojZGVmaW5lIFI4MTY5X1JYX1JJTkdfQllURVNcXHQoTlVNX1JYX0RFU0MgKiBzaXplb2Yoc3RydWN0IFJ4RGVzYykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Nzg6I2RlZmluZSBSODE2OV9UWF9TVE9QX1RIUlNcXHQoTUFYX1NLQl9GUkFHUyArIDEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Nzk6I2RlZmluZSBSODE2OV9UWF9TVEFSVF9USFJTXFx0KDIgKiBSODE2OV9UWF9TVE9QX1RIUlMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNzk5PXN0YXRpYyBpbnQgcnRsODE2OV9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODAwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODAxOlxcdHJldHVybiBSODE2OV9SRUdTX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTgwMi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xODc4PXN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfcmVncyAqcmVncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4ODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg4NjpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUjgxNjlfUkVHU19TSVpFOyBpICs9IDQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg4Ny1cXHRcXHRtZW1jcHlfZnJvbWlvKGR3KyssIGRhdGErKywgNCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yNzk5PXN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfbWF4X3NpemUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yODAxLVxcdC8qIExvdyBodXJ0cy4gTGV0J3MgZGlzYWJsZSB0aGUgZmlsdGVyaW5nLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI4MDI6XFx0UlRMX1cxNih0cCwgUnhNYXhTaXplLCBSODE2OV9SWF9CVUZfU0laRSArIDEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI4MDMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NDE2MT1zdGF0aWMgdm9pZCBydGw4MTY5X21hcmtfdG9fYXNpYyhzdHJ1Y3QgUnhEZXNjICpkZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDE2Ny1cXHRkbWFfd21iKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDE2ODpcXHRXUklURV9PTkNFKGRlc2MtXFx1MDAzZW9wdHMxLCBjcHVfdG9fbGUzMihEZXNjT3duIHwgZW9yIHwgUjgxNjlfUlhfQlVGX1NJWkUpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTY5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQxNzE9c3RhdGljIHN0cnVjdCBwYWdlICpydGw4MTY5X2FsbG9jX3J4X2RhdGEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQxNzk6XFx0ZGF0YSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZSwgR0ZQX0tFUk5FTCwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDE4MC1cXHRpZiAoIWRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQxODM6XFx0bWFwcGluZyA9IGRtYV9tYXBfcGFnZShkLCBkYXRhLCAwLCBSODE2OV9SWF9CVUZfU0laRSwgRE1BX0ZST01fREVWSUNFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTg0LVxcdGlmICh1bmxpa2VseShkbWFfbWFwcGluZ19lcnJvcihkLCBtYXBwaW5nKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTg1LVxcdFxcdG5ldGRldl9lcnIodHAtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBtYXAgUlggRE1BIVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDE4NjpcXHRcXHRfX2ZyZWVfcGFnZXMoZGF0YSwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDE4Ny1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQxOTY9c3RhdGljIHZvaWQgcnRsODE2OV9yeF9jbGVhcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQyMDItXFx0XFx0XFx0ICAgICAgIGxlNjRfdG9fY3B1KHRwLVxcdTAwM2VSeERlc2NBcnJheVtpXS5hZGRyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MjAzOlxcdFxcdFxcdCAgICAgICBSODE2OV9SWF9CVUZfU0laRSwgRE1BX0ZST01fREVWSUNFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MjA0OlxcdFxcdF9fZnJlZV9wYWdlcyh0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbaV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQyMDUtXFx0XFx0dHAtXFx1MDAzZVJ4X2RhdGFidWZmW2ldID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQ1Njk9c3RhdGljIG5ldGRldl90eF90IHJ0bDgxNjlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDYyNS1cXHRzdG9wX3F1ZXVlID0gIW5ldGlmX3N1YnF1ZXVlX21heWJlX3N0b3AoZGV2LCAwLCBydGxfdHhfc2xvdHNfYXZhaWwodHApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQ2MjY6XFx0XFx0XFx0XFx0XFx0XFx0UjgxNjlfVFhfU1RPUF9USFJTLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQ2Mjc6XFx0XFx0XFx0XFx0XFx0XFx0UjgxNjlfVFhfU1RBUlRfVEhSUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDYyOC1cXHRpZiAoZG9vcl9iZWxsIHx8IHN0b3BfcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00NzE5PXN0YXRpYyB2b2lkIHJ0bF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQ3NTEtXFx0XFx0XFx0XFx0XFx0ICAgICAgcnRsX3R4X3Nsb3RzX2F2YWlsKHRwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0NzUyOlxcdFxcdFxcdFxcdFxcdCAgICAgIFI4MTY5X1RYX1NUQVJUX1RIUlMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQ3NTMtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTUwNTU9c3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MDY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjUwNzA6XFx0ZG1hX2ZyZWVfY29oZXJlbnQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgUjgxNjlfUlhfUklOR19CWVRFUywgdHAtXFx1MDAzZVJ4RGVzY0FycmF5LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUwNzEtXFx0XFx0XFx0ICB0cC1cXHUwMDNlUnhQaHlBZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MDcyOlxcdGRtYV9mcmVlX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFI4MTY5X1RYX1JJTkdfQllURVMsIHRwLVxcdTAwM2VUeERlc2NBcnJheSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MDczLVxcdFxcdFxcdCAgdHAtXFx1MDAzZVR4UGh5QWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDkxPXN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxMDMtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTEwNDpcXHR0cC1cXHUwMDNlVHhEZXNjQXJyYXkgPSBkbWFfYWxsb2NfY29oZXJlbnQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgUjgxNjlfVFhfUklOR19CWVRFUyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MTA1LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnRwLVxcdTAwM2VUeFBoeUFkZHIsIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MTA5OlxcdHRwLVxcdTAwM2VSeERlc2NBcnJheSA9IGRtYV9hbGxvY19jb2hlcmVudChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxMTAtXFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2dHAtXFx1MDAzZVJ4UGh5QWRkciwgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MTQyLWVycl9mcmVlX3J4XzE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTE0MzpcXHRkbWFfZnJlZV9jb2hlcmVudChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLCB0cC1cXHUwMDNlUnhEZXNjQXJyYXksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTE0NC1cXHRcXHRcXHQgIHRwLVxcdTAwM2VSeFBoeUFkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTE0Ni1lcnJfZnJlZV90eF8wOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjUxNDc6XFx0ZG1hX2ZyZWVfY29oZXJlbnQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgUjgxNjlfVFhfUklOR19CWVRFUywgdHAtXFx1MDAzZVR4RGVzY0FycmF5LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxNDgtXFx0XFx0XFx0ICB0cC1cXHUwMDNlVHhQaHlBZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTUyODg9c3RhdGljIHZvaWQgcnRsX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01Mjk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjUyOTc6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUyOTgtXFx0XFx0cjgxNjlfcmVtb3ZlX2xlZHModHAtXFx1MDAzZWxlZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTYxMj1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU4MDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTgwOTpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUjgxNjlfTEVEUykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01ODEwLVxcdFxcdGlmIChydGxfaXNfODEyNSh0cCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjA5LjQ0NjUxMjU1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc2MzcwMjY0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuXG5cbioqSW52ZXN0aWdhdGluZyByODE2OSBQQ0kgSUQgQmluZGluZyoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIFBDSSBJRHMgdGhlIGByODE2OWAgZHJpdmVyIGlzIGFjdHVhbGx5IGJpbmRpbmcgdG8uIE15IHVzdWFsIGFwcHJvYWNoIGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBrbm93IHRoYXQgdGhlIGRldmljZSB0YWJsZSBmb3IgdGhlc2UgZHJpdmVycyBpcyB0eXBpY2FsbHkgZGVjbGFyZWQgaW4gdGhlIG1haW4gZmlsZS4gU28sIEknbGwgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCBhbmQgaHVudCBhcm91bmQgdGhlIGBydGw4MTY5X3BjaV90YmxgIHRhYmxlLiBUaGF0J3MgdGhlIGdvLXRvIGxvY2F0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHdoaWNoIGhhcmR3YXJlIHJldmlzaW9ucyB0aGlzIHBhcnRpY3VsYXIgUmVhbHRlayBFdGhlcm5ldCBkcml2ZXIgc3VwcG9ydHMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuLi4gdGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCByaWdodD9cblxuXG4iLCJJbnB1dFRva2VucyI6NzgxMywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjEyLjIxMDIxNzcwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTM1OTEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGw4MTY5X3BjaV90YmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyBydGxfY2hpcF9pbmZvc19leHRlbmRlZFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIyODpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODE2OV9wY2lfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI5LVxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDI1MDIpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjU0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydGw4MTY5X3BjaV90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU4MzY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0bDgxNjlfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01ODM3LVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1ODM4OlxcdC5pZF90YWJsZVxcdD0gcnRsODE2OV9wY2lfdGJsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU4MzktXFx0LnByb2JlXFx0XFx0PSBydGxfaW5pdF9vbmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjEyLjI1NTU4MTQyNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNDIxNDczMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYHJ0bF9lbmFibGVfbHRyYCBDYWxsIFNpdGVzIGluIHRoZSBSODE2OSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGBydGxfZW5hYmxlX2x0cmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgUmVhbHRlayBSODE2OSBFdGhlcm5ldCBkcml2ZXIsIHNvIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSdtIGhlYWRpbmcgZGlyZWN0bHkgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLiBObyBwb2ludCBpbiBndWVzc2luZzsgSSB3YW50IHRoZSBkZWZpbml0aXZlIHNvdXJjZS4gSSdsbCBuZWVkIHRvIHJlYWQgdGhlIGNvZGUgc3Vycm91bmRpbmcgdGhvc2UgY2FsbHMgdG8gc2VlIHdoZXJlIGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwb3dlciBtYW5hZ2VtZW50IG9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBsb2dpYyBvZiB0aGUgZHJpdmVyLiBJcyB0aGlzIHJlbGF0ZWQgdG8gbGluay1zdGF0ZSBjaGFuZ2VzLCBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJJ20gYW50aWNpcGF0aW5nIHRoaXMgbWlnaHQgcmV2ZWFsIHNvbWUgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGhhcmR3YXJlJ3MgTFRSIGNhcGFiaWxpdGllcywgb3IgcG9zc2libHkgc29tZSBwb3RlbnRpYWwgZ290Y2hhcyBhcm91bmQgZW5hYmxpbmcgaXQuIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIGhhcyB0byB0ZWxsIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTA5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDA6MTQuMzk3NzMwNTk5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE5MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwMzAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMwMzA6XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQwIC4uLiBSVExfR0lHQV9NQUNfVkVSX0xBU1Q6XFxuMzAzMTpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhjMGFjLCAweDFmODAsIDApO1xcbjMwMzI6XFx0XFx0XFx0YnJlYWs7XFxuMzAzMzpcXHRcXHRkZWZhdWx0OlxcbjMwMzQ6XFx0XFx0XFx0YnJlYWs7XFxuMzAzNTpcXHRcXHR9XFxuMzAzNjpcXHR9XFxuMzAzNzpcXHRcXG4zMDM4OlxcdHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbjMwMzk6XFx0e1xcbjMwNDA6XFx0XFx0dTE2IGN0bDI7XFxuMzA0MTpcXHRcXG4zMDQyOlxcdFxcdC8qIFRoZSBjaGlwIG11c3Qgbm90IGlzc3VlIExUUiBtZXNzYWdlcyB1bmxlc3MgdGhlIHBsYXRmb3JtIGVuYWJsZWRcXG4zMDQzOlxcdFxcdCAqIExUUiBvbiB0aGUgd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBUaGUgUENJIGNvcmUgZGlzY292ZXJzXFxuMzA0NDpcXHRcXHQgKiB0aGF0IGluIHBjaV9jb25maWd1cmVfbHRyKCkgYW5kIHJlZmxlY3RzIGl0IGluIExUUiBNZWNoYW5pc20gRW5hYmxlLlxcbjMwNDU6XFx0XFx0ICovXFxuMzA0NjpcXHRcXHRwY2llX2NhcGFiaWxpdHlfcmVhZF93b3JkKHRwLVxcdTAwM2VwY2lfZGV2LCBQQ0lfRVhQX0RFVkNUTDIsIFxcdTAwMjZjdGwyKTtcXG4zMDQ3OlxcdFxcdGlmICghKGN0bDIgXFx1MDAyNiBQQ0lfRVhQX0RFVkNUTDJfTFRSX0VOKSlcXG4zMDQ4OlxcdFxcdFxcdHJldHVybjtcXG4zMDQ5OlxcdFxcbjMwNTA6XFx0XFx0c3dpdGNoICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24pIHtcXG4zMDUxOlxcdFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcXG4zMDUyOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcXG4zMDUzOlxcdFxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfU05PT1AsIDB4MDAwMCwgTFRSX1NOT09QX0VOKTtcXG4zMDU0OlxcdFxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBBTERQU19MVFIsIDB4MDAwMCwgQUxEUFNfTFRSX0VOKTtcXG4zMDU1OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMiwgMHg4YzA5KTtcXG4zMDU2OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkOCwgMHg5MDAzKTtcXG4zMDU3OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNCwgMHg5MDAzKTtcXG4zMDU4OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYSwgMHg5MDAzKTtcXG4zMDU5OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNiwgMHg5MDAzKTtcXG4zMDYwOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYywgMHg5MDAzKTtcXG4zMDYxOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlOCwgMHg4ODdhKTtcXG4zMDYyOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlYSwgMHg5MDAzKTtcXG4zMDYzOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlYywgMHg4YzA5KTtcXG4zMDY0OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlZSwgMHg5MDAzKTtcXG4zMDY1OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMCwgMHg4YTYyKTtcXG4zMDY2OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMiwgMHg5MDAzKTtcXG4zMDY3OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmNCwgMHg4ODNlKTtcXG4zMDY4OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmNiwgMHg5MDAzKTtcXG4zMDY5OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmOCwgMHg4ODQ5KTtcXG4zMDcwOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmYSwgMHg5MDAzKTtcXG4zMDcxOlxcdFxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDAsIExJTktfU1BFRURfQ0hBTkdFX0VOKTtcXG4zMDcyOlxcdFxcdFxcdGJyZWFrO1xcbjMwNzM6XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzcwOlxcbjMwNzQ6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xcbjMwNzU6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xcbjMwNzY6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbjMwNzc6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDhjMDkpO1xcbjMwNzg6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xcbjMwNzk6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDkwMDMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowMDoxNC4zOTgwNTExNDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTgyMDcyNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgYHJ0bF9lbmFibGVfbHRyYCBDYWxscyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBvZiB0aGUgYHJ0bF9lbmFibGVfbHRyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgYW5kIGhvdyBpdCdzIGJlaW5nIHRyaWdnZXJlZC4gS25vd2luZyB3aGVyZSBpdCdzIGNhbGxlZCB3aWxsIGltbWVkaWF0ZWx5IHNoZWQgbGlnaHQgb24gaXRzIGludGVuZGVkIHB1cnBvc2UgYW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYy4gSSdsbCBsaWtlbHkgc3RhcnQgd2l0aCBhIHF1aWNrIGdyZXAgb3IgY29kZSBzZWFyY2gsIG1heWJlIGxldmVyYWdpbmcgbXkgSURFJ3MgXCJmaW5kIHVzYWdlc1wiIG9yIFwiY2FsbCBoaWVyYXJjaHlcIiBmZWF0dXJlcyB0byBnZXQgYSBwcmVsaW1pbmFyeSBvdmVydmlldyBvZiB0aGUgY29kZWJhc2UuIEknbGwgYmUgbG9va2luZyBmb3IgZGlyZWN0IGNhbGxzLCBvZiBjb3Vyc2UsIGJ1dCBhbHNvIGluZGlyZWN0IGludm9jYXRpb25zIHRocm91Z2ggZnVuY3Rpb24gcG9pbnRlcnMgb3IgbWFjcm8gZXhwYW5zaW9ucy4gRGVwZW5kaW5nIG9uIHRoZSBjb21wbGV4aXR5LCBJIG1pZ2h0IHN0YXJ0IHVzaW5nIGEgZGVidWdnZXIgYW5kIHdhbGsgdGhyb3VnaCB0aGUgY29kZSwgZm9jdXNpbmcgb24gdGhlIHNwZWNpZmljIG1vZHVsZXMgb3IgY29tcG9uZW50cyB0aGF0IHNlZW0gbW9zdCByZWxldmFudCBiYXNlZCBvbiB0aGUgZnVuY3Rpb24gbmFtZS4gSSdtIGFpbWluZyBmb3IgYSBtZW50YWwgbWFwIG9mIGl0cyB1c2FnZSwgZXNzZW50aWFsbHkgZG9jdW1lbnRpbmcgdGhlIGNhbGwgZ3JhcGggZnJvbSB0aGUgZW50cnkgcG9pbnRzIGFsbCB0aGUgd2F5IGRvd24gdG8gd2hlcmUgYHJ0bF9lbmFibGVfbHRyYCBiZWNvbWVzIGEgbGVhZiBub2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE4OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDA6MTYuMzgwMTI2ODc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTExNDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGxfZW5hYmxlX2x0clwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0zMDI0PXN0YXRpYyB2b2lkIHJ0bF9kaXNhYmxlX2V4aXRfbDEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zMDM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjMwMzg6c3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzAzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0zMTM0PXN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzE2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzozMTYyOlxcdFxcdHJ0bF9lbmFibGVfbHRyKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zMTYzLVxcdFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjE2LjQyNTI0ODkwN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTQ5ODM5NzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUUVNVSBTdXBwb3J0IGZvciBSZWFsdGVrIEV0aGVybmV0IENvbnRyb2xsZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgYHI4MTY5YCBkcml2ZXIsIHdoaWNoIGhhbmRsZXMgdGhvc2UgUmVhbHRlayBQQ0kvUENJZSBldGhlcm5ldCBjb250cm9sbGVycyDigJMgdGhlIFJUTDgxNjksIDgxNjgsIDgxMDEsIGFuZCA4MTI1IG1vZGVscy4gTXkgcXVlc3Rpb24gaXMsIGFyZSB0aG9zZSBzcGVjaWZpY2FsbHkgc3VwcG9ydGVkIG9yIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgb3IgcGVyaGFwcyBldmVuIGluIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gVGltZSB0byBkaWcgaW4uIExldCdzIHN0YXJ0IHdpdGggUUVNVSdzIFJlYWx0ZWsgTklDIGVtdWxhdGlvbiB0byBzZWUgd2hhdCdzIHdoYXQuXG5cbkhtbSwgUUVNVSBlbXVsYXRlcyB0aGUgb2xkZXIgUlRMODEzOSwgd2hpY2ggaGFzIGEgUENJIGRldmljZSBJRCBvZiAxMGVjOjgxMzkuIFRoYXQncyB1c3VhbGx5IGhhbmRsZWQgYnkgdGhlIGA4MTM5Y3BgIG9yIGA4MTM5dG9vYCBkcml2ZXJzLCBidXQuLi4gaG9sZCBvbi4gRGlkbid0IHRoZSBgcjgxNjlgIGRyaXZlciBzb21ldGltZXMgaGFuZGxlIHNpbWlsYXIgZGV2aWNlcz8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gUmlnaHQsIEkgcmVtZW1iZXIgbm93IC0gbGV0J3MgY2hlY2sgdGhlIGBydGw4MTY5X3BjaV90YmxgIHRhYmxlIHdpdGhpbiB0aGUgYHI4MTY5X21haW4uY2AgZmlsZSEgVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB3aGljaCBkZXZpY2VzIGl0ICphY3R1YWxseSogY292ZXJzLiBJJ2xsIGdldCB0aGUgYW5zd2VyIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc4MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowMDoxOC45NzUwOTE2NjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyNSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyNTpcXHRcXHR7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIFJUTF9HSUdBX01BQ19OT05FIH1cXG4gMjI2OlxcdH07XFxuIDIyNzpcXHRcXG4gMjI4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydGw4MTY5X3BjaV90YmxbXSA9IHtcXG4gMjI5OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDI1MDIpIH0sXFxuIDIzMDpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHgyNjAwKSB9LFxcbiAyMzE6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4ODEyOSkgfSxcXG4gMjMyOlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxMzYpLCAuZHJpdmVyX2RhdGEgPSBSVExfQ0ZHX05PX0dCSVQgfSxcXG4gMjMzOlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxNjEpIH0sXFxuIDIzNDpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTYyKSB9LFxcbiAyMzU6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4ODE2NykgfSxcXG4gMjM2OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxNjgpIH0sXFxuIDIzNzpcXHRcXHR7IFBDSV9WREVWSUNFKE5DVUJFLFxcdDB4ODE2OCkgfSxcXG4gMjM4OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxNjkpIH0sXFxuIDIzOTpcXHRcXHR7IFBDSV9WREVWSUNFKERMSU5LLFxcdDB4NDMwMCkgfSxcXG4gMjQwOlxcdFxcdHsgUENJX1ZERVZJQ0UoRExJTkssXFx0MHg0MzAyKSB9LFxcbiAyNDE6XFx0XFx0eyBQQ0lfVkRFVklDRShBVCxcXHQweGMxMDcpIH0sXFxuIDI0MjpcXHRcXHR7IFBDSV9WREVWSUNFKFVTUixcXHQweDAxMTYpIH0sXFxuIDI0MzpcXHRcXHR7IFBDSV9WREVWSUNFX1NVQihMSU5LU1lTLCAweDEwMzIsIFBDSV9BTllfSUQsIDB4MDAyNCkgfSxcXG4gMjQ0OlxcdFxcdHsgUENJX0RFVklDRV9TVUIoMHgwMDAxLCAweDgxNjgsIFBDSV9BTllfSUQsIDB4MjQxMCkgfSxcXG4gMjQ1OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxMjUpIH0sXFxuIDI0NjpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTI2KSB9LFxcbiAyNDc6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4ODEyNykgfSxcXG4gMjQ4OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDMwMDApIH0sXFxuIDI0OTpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg1MDAwKSB9LFxcbiAyNTA6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4MGUxMCkgfSxcXG4gMjUxOlxcdFxcdHsgfVxcbiAyNTI6XFx0fTtcXG4gMjUzOlxcdFxcbiAyNTQ6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJ0bDgxNjlfcGNpX3RibCk7XFxuIDI1NTpcXHRcXG4gMjU2OlxcdGVudW0gcnRsX3JlZ2lzdGVycyB7XFxuIDI1NzpcXHRcXHRNQUMwXFx0XFx0PSAwLFxcdC8qIEV0aGVybmV0IGhhcmR3YXJlIGFkZHJlc3MuICovXFxuIDI1ODpcXHRcXHRNQUM0XFx0XFx0PSA0LFxcbiAyNTk6XFx0XFx0TUFSMFxcdFxcdD0gOCxcXHQvKiBNdWx0aWNhc3QgZmlsdGVyLiAqL1xcbiAyNjA6XFx0XFx0Q291bnRlckFkZHJMb3dcXHRcXHQ9IDB4MTAsXFxuIDI2MTpcXHRcXHRDb3VudGVyQWRkckhpZ2hcXHRcXHQ9IDB4MTQsXFxuIDI2MjpcXHRcXHRUeERlc2NTdGFydEFkZHJMb3dcXHQ9IDB4MjAsXFxuIDI2MzpcXHRcXHRUeERlc2NTdGFydEFkZHJIaWdoXFx0PSAweDI0LFxcbiAyNjQ6XFx0XFx0VHhIRGVzY1N0YXJ0QWRkckxvd1xcdD0gMHgyOCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDA6MTguOTc1Mjk5ODM1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY2MTUwMTQxMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBBbmFseXNpczogcjgxNjkgRHJpdmVyIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBjb25zaWRlciB0aGUgYHJ0bDgxNjlfcGNpX3RibGAgd2hpY2ggaGFuZGxlcyBhIHJhbmdlIG9mIFJlYWx0ZWsgY2hpcHMgbGlrZSAweDgxNjksIDB4ODE2OCwgYW5kIDB4ODEyNS4gVGhlbiBJIHRob3VnaHQgYWJvdXQgdGhlIGZ1bmN0aW9uIGBydGxfZW5hYmxlX2x0cmAuIEkgcmVtZW1iZXJlZCBMVFIgc3RhbmRzIGZvciBMYXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcsIGEgUENJZSBmZWF0dXJlIChQQ0llIDIuMSsgLyBQQ0llIDMuMCksIGFuZCB0aGUgY29kZSB3aXRoaW4gYHJ0bF9lbmFibGVfbHRyYCBzcGVjaWZpY2FsbHkgY2hlY2tzIHRoZSBgdHAtXHUwMDNlbWFjX3ZlcnNpb25gIGZvciBjZXJ0YWluIFJlYWx0ZWsgaGFyZHdhcmUgcmV2aXNpb25zIOKAkyB0aG9zZSA4MTY4IGFuZCA4MTI1IHZlcnNpb25zIEkgbWVudGlvbmVkIGVhcmxpZXIuXG5cbkhvd2V2ZXIsIEkgbmVlZGVkIHRvIGNvbmZpcm0gdGhhdCBRRU1VIGV2ZW4gKmVtdWxhdGVzKiB0aGVzZSBkZXZpY2VzLiBFdmVuIGlmIFFFTVUgZW11bGF0ZWQgc29tZXRoaW5nLCBsaWtlIHRoZSBvbGRlciBSVEw4MTM5IChkZXZpY2UgODEzOSksIHRoYXQncyBoYW5kbGVkIGJ5IGVudGlyZWx5IGRpZmZlcmVudCBkcml2ZXJzLCBgODEzOWNwYCBvciBgODEzOXRvb2AuIFRoZSBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IGZhbWlseSBhcmUgcGh5c2ljYWwgUENJZSBFdGhlcm5ldCBOSUNzLlxuXG5TbywgdGhlIG5leHQgcXVlc3Rpb24gaXM6IERvZXMgUUVNVSBlbXVsYXRlIHRoZSBSVEw4MTY5PyBJIGNoZWNrZWQgYGh3L25ldC9gIHdpdGhpbiBRRU1VIGFuZCwgbm8sIGl0J3MganVzdCBgcnRsODEzOS5jYCB3aXRoIFBDSSBJRCAweDgxMzkuIE9rLCB3aGF0IGFib3V0IHBoeXNpY2FsbHkgcHJlc2VudCBQQ0llIE5JQ3M/XG5cbk5vdyBJJ20gcmVmZXJlbmNpbmcgdGhlIGd1aWRlbGluZXMsIGFuZCB0aGUga2V5IHBocmFzZSBqdW1wcyBvdXQgYXQgbWU6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlwiIFRoaXMgZGlyZWN0bHkgcmVsYXRlcyB0byB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCB3aGljaCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCdzIGEgaHVnZSBjbHVlLiBUaGVuIHRoZSBcIlJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFXCIgc2VjdGlvbiBmdXJ0aGVyIGhhbW1lcnMgaG9tZSB0aGUgcG9pbnQgdGhhdCBmdXp6aW5nIGlzIG9ubHkgZWZmZWN0aXZlIGlmIHRoZSBjb2RlIGNhbiAqYWN0dWFsbHkqIGJlIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0byByZWFjaCBpdC4gQ2FuIGByODE2OWAgYmUgcmVhY2hlZCB2aWEgVVNCPyBObywgaXQncyBhIFBDSSBkcml2ZXIuIEl0IHJlZ2lzdGVycyB3aXRoIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpbiBgcjgxNjlfbWFpbi5jYCAoVVNCIFJlYWx0ZWsgaXMgYHI4MTUyYCkuIENhbiBpdCBiZSByZWFjaGVkIHZpYSBuZXRkZXYvdHVuL3RhcC9sb29wYmFjaz8gQWdhaW4sIG5vLiBJdCdzIGEgUENJIGRldmljZSBkcml2ZXIuIENhbiBpdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGZ1enppbmcgaW5zdGFuY2VzPyBObywgbmVpdGhlciBvZiB0aG9zZSBoYXZlIHRoZSBSZWFsdGVrIDgxNjgvODE2OS84MTI1IFBDSWUgaGFyZHdhcmUuXG5cblRoZXJlZm9yZSwgdGhpcyBtZWFucyB0aGUgbW9kaWZpZWQgY29kZSBpcyB3aXRoaW4gYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBldGhlcm5ldCBkcml2ZXIgdGhhdCByZWxpZXMgb24gcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdGhlIHVzdWFsIFFFTVUvR0NFIHN5emthbGxlciBlbnZpcm9ubWVudHMuIEl0J3Mgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgYWxsIGRldGFpbHM6XG5cbiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKiDigJMgVGhhdCdzIHRoZSBjb3JyZWN0IGluaXRpYWwgYXNzZXNzbWVudC5cbiogICAqKlJlYXNvbmluZzoqKiBDb25jaXNlLlxuKiAgICoqRW5hYmxlQ29uZmlnczogW10qKlxuKiAgICoqRm9jdXNTeW1ib2xzOiBbXSoqXG5cblRoZSByZWFzb25pbmcgaXMgY29ycmVjdC4gVGhlIHBhdGNoIG1vZGlmaWVzIGBydGxfZW5hYmxlX2x0cigpYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLCB3aGljaCBpcyBhIFBDSS9QQ0llIGRldmljZSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODE2OS9SVEw4MTY4L1JUTDgxMjUgRXRoZXJuZXQgY29udHJvbGxlcnMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci5cblxuTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI0MywiT3V0cHV0VG9rZW5zIjoxMjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowMDoyNS41OTAzMTYwOThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcnRsX2VuYWJsZV9sdHIoKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODE2OS9SVEw4MTY4L1JUTDgxMjUgUENJZSBuZXR3b3JrIGludGVyZmFjZSBjYXJkcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjI1LjU5MDM0NDY5OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwg7t6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 12:35:06 +0000 UTC FinishedAt: 2026-09-09 13:00:26 +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+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNDFkOWFiNGRhOTM2ZGRjOTFhYTU3NjgyMTRhMjNlMWM4MDg3MWZmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAxMzowMDowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiLi5jMWZmNGU4OTg1NzA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5AQCAtMzAzNyw2ICYjNDM7MzAzNywxNiBAQCBzdGF0aWMgdm9pZCBydGxfZGlzYWJsZV9leGl0X2wxKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiYjNDM7XHR1MTYgY3RsMjtcbiYjNDM7XG4mIzQzO1x0LyogVGhlIGNoaXAgbXVzdCBub3QgaXNzdWUgTFRSIG1lc3NhZ2VzIHVubGVzcyB0aGUgcGxhdGZvcm0gZW5hYmxlZFxuJiM0MztcdCAqIExUUiBvbiB0aGUgd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBUaGUgUENJIGNvcmUgZGlzY292ZXJzXG4mIzQzO1x0ICogdGhhdCBpbiBwY2lfY29uZmlndXJlX2x0cigpIGFuZCByZWZsZWN0cyBpdCBpbiBMVFIgTWVjaGFuaXNtIEVuYWJsZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRwY2llX2NhcGFiaWxpdHlfcmVhZF93b3JkKHRwLVx1MDAzZXBjaV9kZXYsIFBDSV9FWFBfREVWQ1RMMiwgXHUwMDI2Y3RsMik7XG4mIzQzO1x0aWYgKCEoY3RsMiBcdTAwMjYgUENJX0VYUF9ERVZDVEwyX0xUUl9FTikpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzgwOlxuIFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNDFkOWFiNGRhOTM2ZGRjOTFhYTU3NjgyMTRhMjNlMWM4MDg3MWZmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgOSAxMzowMDowMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKaW5kZXggZWM0ZmMyMWZhMjFmYi4uYzFmZjRlODk4NTcwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKQEAgLTMwMzcsNiAmIzQzOzMwMzcsMTYgQEAgc3RhdGljIHZvaWQgcnRsX2Rpc2FibGVfZXhpdF9sMShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAogc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7CiYjNDM7CXUxNiBjdGwyOwomIzQzOwomIzQzOwkvKiBUaGUgY2hpcCBtdXN0IG5vdCBpc3N1ZSBMVFIgbWVzc2FnZXMgdW5sZXNzIHRoZSBwbGF0Zm9ybSBlbmFibGVkCiYjNDM7CSAqIExUUiBvbiB0aGUgd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBUaGUgUENJIGNvcmUgZGlzY292ZXJzCiYjNDM7CSAqIHRoYXQgaW4gcGNpX2NvbmZpZ3VyZV9sdHIoKSBhbmQgcmVmbGVjdHMgaXQgaW4gTFRSIE1lY2hhbmlzbSBFbmFibGUuCiYjNDM7CSAqLwomIzQzOwlwY2llX2NhcGFiaWxpdHlfcmVhZF93b3JkKHRwLSZndDtwY2lfZGV2LCBQQ0lfRVhQX0RFVkNUTDIsICZhbXA7Y3RsMik7CiYjNDM7CWlmICghKGN0bDIgJmFtcDsgUENJX0VYUF9ERVZDVEwyX0xUUl9FTikpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJc3dpdGNoICh0cC0mZ3Q7bWFjX3ZlcnNpb24pIHsKIAljYXNlIFJUTF9HSUdBX01BQ19WRVJfODA6CiAJCXI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcyBhbWQ2NC4gVGhlIGZpbGUgcGF0aCBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLiBIbW0sIHRoaXMgc2VlbXMgdG8gYmUgYSBkcml2ZXIgcmVsYXRlZCB0byBSZWFsdGVrIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBTcGVjaWZpY2FsbHksIHRoZSBSVEw4MTY5IGZhbWlseSwgaWYgSSByZWNhbGwgY29ycmVjdGx5IOKAkyB0aG9zZSBhcmUgcHJldHR5IGNvbW1vbiBQQ0llIEdpZ2FiaXQgYW5kIDIuNUcgRXRoZXJuZXQgTklDcy4KCkkgc2VlIGNvZGUgaW50cm9kdWNpbmcgYSBjaGVjayByZWxhdGVkIHRvIExUUiAoTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nKS4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFRoZSBjb2RlIHNlZW1zIHRvIGJlIGVuYWJsaW5nIExUUiwgYnV0IG9ubHkgaWYgdGhlIHBsYXRmb3JtIGhhcyBlbmFibGVkIGl0IGFuZCB0aGUgUENJIGNvcmUgaGFzIGFsc28gaW5kaWNhdGVkIGl0JiMzOTtzIHN1cHBvcnRlZC4gVGhlIGNoZWNrIGludm9sdmVzIHJlYWRpbmcgYSBQQ0kgY29uZmlndXJhdGlvbiByZWdpc3RlciBgUENJX0VYUF9ERVZDVEwyYCBhbmQgdmVyaWZ5aW5nIHRoZSBgUENJX0VYUF9ERVZDVEwyX0xUUl9FTmAgYml0IGlzIHNldC4gVGhpcyBtYWtlcyBzZW5zZTsgeW91IGRvbiYjMzk7dCB3YW50IHRoZSBOSUMgdHJ5aW5nIHRvIHVzZSBMVFIgaWYgdGhlIGhhcmR3YXJlIG9yIGZpcm13YXJlIGRvZXNuJiMzOTt0IHN1cHBvcnQgaXQgZW5kLXRvLWVuZC4KCk5vdywgbXkgbWluZCBnb2VzIHRvIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHZpcnR1YWxpemF0aW9uLCBzaW5jZSBJJiMzOTttIGFsd2F5cyB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkcml2ZXIgYmVoYXZlcyBjb3JyZWN0bHkgd2hlbiBlbXVsYXRlZC4gSXMgYHI4MTY5YCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VPyBJIGtub3cgUUVNVSBzdXBwb3J0cyB0aGUgb2xkZXIgYHJ0bDgxMzlgLCB0eXBpY2FsbHkgaWRlbnRpZmllZCB3aXRoIFBDSSBJRCAxMGVjOjgxMzkuIERvZXMgaXQgYWxzbyBlbXVsYXRlIHRoZSBuZXdlciBgcjgxNjlgIGNvbnRyb2xsZXJzPyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gUXVpY2sgc2FuaXR5IGNoZWNrOiBRRU1VJiMzOTtzIGAtbmV0IG5pYyxtb2RlbD0/YCBvcHRpb24gbGlzdHMgYSBidW5jaCBvZiBkaWZmZXJlbnQgZW11bGF0ZWQgTklDcywgYnV0IGxldCBtZSB2ZXJpZnkgdGhhdCBpdCBzdXBwb3J0cyBgcjgxNjlgIHNwZWNpZmljYWxseS4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZW11bGF0aW9uIGhhbmRsZXMgTFRSLCBpZiBhdCBhbGwuCgpVbHRpbWF0ZWx5LCBJIHdpbGwgaGF2ZSB0byBjcm9zcy1yZWZlcmVuY2UgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCB3aXRoIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgYW5kIGRvdWJsZS1jaGVjayBRRU1VIGRldmljZSBzdXBwb3J0IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGluIHN5bmMgYW5kIHRoZSBpbXBsaWNhdGlvbnMgYXJlIHdlbGwtdW5kZXJzdG9vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSODE2OSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz03ND1jb25maWcgODEzOV9PTERfUlhfUkVTRVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6ODQ6Y29uZmlnIFI4MTY5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctODUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTAyOmNvbmZpZyBSODE2OV9MRURTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAzLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBjb250cm9sbGluZyB0aGUgTklDIExFRHNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDQ6XHRkZXBlbmRzIG9uIFI4MTY5IFx1MDAyNlx1MDAyNiBMRURTX1RSSUdHRVJfTkVUREVWXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTA1Olx0ZGVwZW5kcyBvbiAhKFI4MTY5PXkgXHUwMDI2XHUwMDI2IExFRFNfQ0xBU1M9bSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZT04PXI4MTY5LXkgJiM0Mzs9IHI4MTY5X21haW4ubyByODE2OV9maXJtd2FyZS5vIHI4MTY5X3BoeV9jb25maWcub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZTo5OnI4MTY5LSQoQ09ORklHX1I4MTY5X0xFRFMpICYjNDM7PSByODE2OV9sZWRzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1I4MTY5KSAmIzQzOz0gcjgxNjkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfUlRBU0UpICYjNDM7PSBydGFzZS9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjcyOiNkZWZpbmUgUjgxNjlfUkVHU19TSVpFXHRcdDI1NlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NzM6I2RlZmluZSBSODE2OV9SWF9CVUZfU0laRVx0KFNaXzE2SyAtIDEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03NC0jZGVmaW5lIE5VTV9UWF9ERVNDXHQyNTZcdC8qIE51bWJlciBvZiBUeCBkZXNjcmlwdG9yIHJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNzUtI2RlZmluZSBOVU1fUlhfREVTQ1x0MjU2XHQvKiBOdW1iZXIgb2YgUnggZGVzY3JpcHRvciByZWdpc3RlcnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjc2OiNkZWZpbmUgUjgxNjlfVFhfUklOR19CWVRFU1x0KE5VTV9UWF9ERVNDICogc2l6ZW9mKHN0cnVjdCBUeERlc2MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Nzc6I2RlZmluZSBSODE2OV9SWF9SSU5HX0JZVEVTXHQoTlVNX1JYX0RFU0MgKiBzaXplb2Yoc3RydWN0IFJ4RGVzYykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3ODojZGVmaW5lIFI4MTY5X1RYX1NUT1BfVEhSU1x0KE1BWF9TS0JfRlJBR1MgJiM0MzsgMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjc5OiNkZWZpbmUgUjgxNjlfVFhfU1RBUlRfVEhSU1x0KDIgKiBSODE2OV9UWF9TVE9QX1RIUlMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNzk5PXN0YXRpYyBpbnQgcnRsODE2OV9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4MDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTgwMTpcdHJldHVybiBSODE2OV9SRUdTX1NJWkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODAyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xODc4PXN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfcmVncyAqcmVncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg4NjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFI4MTY5X1JFR1NfU0laRTsgaSAmIzQzOz0gNClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4ODctXHRcdG1lbWNweV9mcm9taW8oZHcmIzQzOyYjNDM7LCBkYXRhJiM0MzsmIzQzOywgNCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9Mjc5OT1zdGF0aWMgdm9pZCBydGxfc2V0X3J4X21heF9zaXplKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI4MDEtXHQvKiBMb3cgaHVydHMuIExldCYjMzk7cyBkaXNhYmxlIHRoZSBmaWx0ZXJpbmcuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyODAyOlx0UlRMX1cxNih0cCwgUnhNYXhTaXplLCBSODE2OV9SWF9CVUZfU0laRSAmIzQzOyAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI4MDMtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQxNjE9c3RhdGljIHZvaWQgcnRsODE2OV9tYXJrX3RvX2FzaWMoc3RydWN0IFJ4RGVzYyAqZGVzYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTY3LVx0ZG1hX3dtYigpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDE2ODpcdFdSSVRFX09OQ0UoZGVzYy1cdTAwM2VvcHRzMSwgY3B1X3RvX2xlMzIoRGVzY093biB8IGVvciB8IFI4MTY5X1JYX0JVRl9TSVpFKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTY5LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00MTcxPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqcnRsODE2OV9hbGxvY19yeF9kYXRhKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQxNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MTc5Olx0ZGF0YSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZSwgR0ZQX0tFUk5FTCwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTgwLVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQxODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MTgzOlx0bWFwcGluZyA9IGRtYV9tYXBfcGFnZShkLCBkYXRhLCAwLCBSODE2OV9SWF9CVUZfU0laRSwgRE1BX0ZST01fREVWSUNFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQxODQtXHRpZiAodW5saWtlbHkoZG1hX21hcHBpbmdfZXJyb3IoZCwgbWFwcGluZykpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTg1LVx0XHRuZXRkZXZfZXJyKHRwLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIG1hcCBSWCBETUEhXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQxODY6XHRcdF9fZnJlZV9wYWdlcyhkYXRhLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQxODctXHRcdHJldHVybiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQxOTY9c3RhdGljIHZvaWQgcnRsODE2OV9yeF9jbGVhcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjAyLVx0XHRcdCAgICAgICBsZTY0X3RvX2NwdSh0cC1cdTAwM2VSeERlc2NBcnJheVtpXS5hZGRyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQyMDM6XHRcdFx0ICAgICAgIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDIwNDpcdFx0X19mcmVlX3BhZ2VzKHRwLVx1MDAzZVJ4X2RhdGFidWZmW2ldLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQyMDUtXHRcdHRwLVx1MDAzZVJ4X2RhdGFidWZmW2ldID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00NTY5PXN0YXRpYyBuZXRkZXZfdHhfdCBydGw4MTY5X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00NjI1LVx0c3RvcF9xdWV1ZSA9ICFuZXRpZl9zdWJxdWV1ZV9tYXliZV9zdG9wKGRldiwgMCwgcnRsX3R4X3Nsb3RzX2F2YWlsKHRwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQ2MjY6XHRcdFx0XHRcdFx0UjgxNjlfVFhfU1RPUF9USFJTLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDYyNzpcdFx0XHRcdFx0XHRSODE2OV9UWF9TVEFSVF9USFJTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQ2MjgtXHRpZiAoZG9vcl9iZWxsIHx8IHN0b3BfcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NDcxOT1zdGF0aWMgdm9pZCBydGxfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDc1MS1cdFx0XHRcdFx0ICAgICAgcnRsX3R4X3Nsb3RzX2F2YWlsKHRwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQ3NTI6XHRcdFx0XHRcdCAgICAgIFI4MTY5X1RYX1NUQVJUX1RIUlMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDc1My1cdFx0Lypcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDU1PXN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUwNjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MDcwOlx0ZG1hX2ZyZWVfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsIHRwLVx1MDAzZVJ4RGVzY0FycmF5LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTA3MS1cdFx0XHQgIHRwLVx1MDAzZVJ4UGh5QWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MDcyOlx0ZG1hX2ZyZWVfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFI4MTY5X1RYX1JJTkdfQllURVMsIHRwLVx1MDAzZVR4RGVzY0FycmF5LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTA3My1cdFx0XHQgIHRwLVx1MDAzZVR4UGh5QWRkcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTA5MT1zdGF0aWMgaW50IHJ0bF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTEwMy1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTEwNDpcdHRwLVx1MDAzZVR4RGVzY0FycmF5ID0gZG1hX2FsbG9jX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBSODE2OV9UWF9SSU5HX0JZVEVTLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTEwNS1cdFx0XHRcdFx0ICAgICBcdTAwMjZ0cC1cdTAwM2VUeFBoeUFkZHIsIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MTA5Olx0dHAtXHUwMDNlUnhEZXNjQXJyYXkgPSBkbWFfYWxsb2NfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MTEwLVx0XHRcdFx0XHQgICAgIFx1MDAyNnRwLVx1MDAzZVJ4UGh5QWRkciwgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTE0Mi1lcnJfZnJlZV9yeF8xOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTE0MzpcdGRtYV9mcmVlX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLCB0cC1cdTAwM2VSeERlc2NBcnJheSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxNDQtXHRcdFx0ICB0cC1cdTAwM2VSeFBoeUFkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxNDYtZXJyX2ZyZWVfdHhfMDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjUxNDc6XHRkbWFfZnJlZV9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgUjgxNjlfVFhfUklOR19CWVRFUywgdHAtXHUwMDNlVHhEZXNjQXJyYXksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MTQ4LVx0XHRcdCAgdHAtXHUwMDNlVHhQaHlBZGRyKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01Mjg4PXN0YXRpYyB2b2lkIHJ0bF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUyOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1Mjk3Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTI5OC1cdFx0cjgxNjlfcmVtb3ZlX2xlZHModHAtXHUwMDNlbGVkcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTYxMj1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01ODA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTgwOTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19SODE2OV9MRURTKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTgxMC1cdFx0aWYgKHJ0bF9pc184MTI1KHRwKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODEzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4KCioqSW52ZXN0aWdhdGluZyByODE2OSBQQ0kgSUQgQmluZGluZyoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBQQ0kgSURzIHRoZSBgcjgxNjlgIGRyaXZlciBpcyBhY3R1YWxseSBiaW5kaW5nIHRvLiBNeSB1c3VhbCBhcHByb2FjaCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBTcGVjaWZpY2FsbHksIEkga25vdyB0aGF0IHRoZSBkZXZpY2UgdGFibGUgZm9yIHRoZXNlIGRyaXZlcnMgaXMgdHlwaWNhbGx5IGRlY2xhcmVkIGluIHRoZSBtYWluIGZpbGUuIFNvLCBJJiMzOTtsbCBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgIGFuZCBodW50IGFyb3VuZCB0aGUgYHJ0bDgxNjlfcGNpX3RibGAgdGFibGUuIFRoYXQmIzM5O3MgdGhlIGdvLXRvIGxvY2F0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHdoaWNoIGhhcmR3YXJlIHJldmlzaW9ucyB0aGlzIHBhcnRpY3VsYXIgUmVhbHRlayBFdGhlcm5ldCBkcml2ZXIgc3VwcG9ydHMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4uLiB0aGF0JiMzOTtzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCByaWdodD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGw4MTY5X3BjaV90YmwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHJ0bF9jaGlwX2luZm9zX2V4dGVuZGVkW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydGw4MTY5X3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIyOS1cdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MjUwMikgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNTQ6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJ0bDgxNjlfcGNpX3RibCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTgzNj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnRsODE2OV9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTgzNy1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1ODM4Olx0LmlkX3RhYmxlXHQ9IHJ0bDgxNjlfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU4MzktXHQucHJvYmVcdFx0PSBydGxfaW5pdF9vbmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUwOQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBydGxfZW5hYmxlX2x0cmAgQ2FsbCBTaXRlcyBpbiB0aGUgUjgxNjkgRHJpdmVyKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgYHJ0bF9lbmFibGVfbHRyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgd2l0aGluIHRoZSBSZWFsdGVrIFI4MTY5IEV0aGVybmV0IGRyaXZlciwgc28gZmlyc3QgdGhpbmdzIGZpcnN0LCBJJiMzOTttIGhlYWRpbmcgZGlyZWN0bHkgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLiBObyBwb2ludCBpbiBndWVzc2luZzsgSSB3YW50IHRoZSBkZWZpbml0aXZlIHNvdXJjZS4gSSYjMzk7bGwgbmVlZCB0byByZWFkIHRoZSBjb2RlIHN1cnJvdW5kaW5nIHRob3NlIGNhbGxzIHRvIHNlZSB3aGVyZSBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcG93ZXIgbWFuYWdlbWVudCBvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gbG9naWMgb2YgdGhlIGRyaXZlci4gSXMgdGhpcyByZWxhdGVkIHRvIGxpbmstc3RhdGUgY2hhbmdlcywgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhpcyBtaWdodCByZXZlYWwgc29tZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgaGFyZHdhcmUmIzM5O3MgTFRSIGNhcGFiaWxpdGllcywgb3IgcG9zc2libHkgc29tZSBwb3RlbnRpYWwgZ290Y2hhcyBhcm91bmQgZW5hYmxpbmcgaXQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSBoYXMgdG8gdGVsbCBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMDMwOlx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNDAgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbjMwMzE6XHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4YzBhYywgMHgxZjgwLCAwKTtcbjMwMzI6XHRcdFx0YnJlYWs7XG4zMDMzOlx0XHRkZWZhdWx0OlxuMzAzNDpcdFx0XHRicmVhaztcbjMwMzU6XHRcdH1cbjMwMzY6XHR9XG4zMDM3Olx0XG4zMDM4Olx0c3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4zMDM5Olx0e1xuMzA0MDpcdFx0dTE2IGN0bDI7XG4zMDQxOlx0XG4zMDQyOlx0XHQvKiBUaGUgY2hpcCBtdXN0IG5vdCBpc3N1ZSBMVFIgbWVzc2FnZXMgdW5sZXNzIHRoZSBwbGF0Zm9ybSBlbmFibGVkXG4zMDQzOlx0XHQgKiBMVFIgb24gdGhlIHdob2xlIHBhdGggdXAgdG8gdGhlIHJvb3QgcG9ydC4gVGhlIFBDSSBjb3JlIGRpc2NvdmVyc1xuMzA0NDpcdFx0ICogdGhhdCBpbiBwY2lfY29uZmlndXJlX2x0cigpIGFuZCByZWZsZWN0cyBpdCBpbiBMVFIgTWVjaGFuaXNtIEVuYWJsZS5cbjMwNDU6XHRcdCAqL1xuMzA0NjpcdFx0cGNpZV9jYXBhYmlsaXR5X3JlYWRfd29yZCh0cC1cdTAwM2VwY2lfZGV2LCBQQ0lfRVhQX0RFVkNUTDIsIFx1MDAyNmN0bDIpO1xuMzA0NzpcdFx0aWYgKCEoY3RsMiBcdTAwMjYgUENJX0VYUF9ERVZDVEwyX0xUUl9FTikpXG4zMDQ4Olx0XHRcdHJldHVybjtcbjMwNDk6XHRcbjMwNTA6XHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbjMwNTE6XHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcbjMwNTI6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xuMzA1MzpcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX1NOT09QLCAweDAwMDAsIExUUl9TTk9PUF9FTik7XG4zMDU0Olx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBBTERQU19MVFIsIDB4MDAwMCwgQUxEUFNfTFRSX0VOKTtcbjMwNTU6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDhjMDkpO1xuMzA1NjpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7XG4zMDU3Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNCwgMHg5MDAzKTtcbjMwNTg6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRhLCAweDkwMDMpO1xuMzA1OTpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDYsIDB4OTAwMyk7XG4zMDYwOlx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYywgMHg5MDAzKTtcbjMwNjE6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGU4LCAweDg4N2EpO1xuMzA2MjpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZWEsIDB4OTAwMyk7XG4zMDYzOlx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlYywgMHg4YzA5KTtcbjMwNjQ6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGVlLCAweDkwMDMpO1xuMzA2NTpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZjAsIDB4OGE2Mik7XG4zMDY2Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMiwgMHg5MDAzKTtcbjMwNjc6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGY0LCAweDg4M2UpO1xuMzA2ODpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZjYsIDB4OTAwMyk7XG4zMDY5Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmOCwgMHg4ODQ5KTtcbjMwNzA6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGZhLCAweDkwMDMpO1xuMzA3MTpcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAwLCBMSU5LX1NQRUVEX0NIQU5HRV9FTik7XG4zMDcyOlx0XHRcdGJyZWFrO1xuMzA3MzpcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzcwOlxuMzA3NDpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7XG4zMDc1Olx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfU05PT1AsIDB4MDAwMCwgTFRSX1NOT09QX0VOKTtcbjMwNzY6XHRcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xuMzA3NzpcdFx0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4OGMwOSk7XG4zMDc4Olx0XHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkOCwgMHg5MDAzKTtcbjMwNzk6XHRcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDkwMDMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTg5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIGBydGxfZW5hYmxlX2x0cmAgQ2FsbHMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBvZiB0aGUgYHJ0bF9lbmFibGVfbHRyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB0cmlnZ2VyZWQuIEtub3dpbmcgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIHdpbGwgaW1tZWRpYXRlbHkgc2hlZCBsaWdodCBvbiBpdHMgaW50ZW5kZWQgcHVycG9zZSBhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBJJiMzOTtsbCBsaWtlbHkgc3RhcnQgd2l0aCBhIHF1aWNrIGdyZXAgb3IgY29kZSBzZWFyY2gsIG1heWJlIGxldmVyYWdpbmcgbXkgSURFJiMzOTtzICYjMzQ7ZmluZCB1c2FnZXMmIzM0OyBvciAmIzM0O2NhbGwgaGllcmFyY2h5JiMzNDsgZmVhdHVyZXMgdG8gZ2V0IGEgcHJlbGltaW5hcnkgb3ZlcnZpZXcgb2YgdGhlIGNvZGViYXNlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBkaXJlY3QgY2FsbHMsIG9mIGNvdXJzZSwgYnV0IGFsc28gaW5kaXJlY3QgaW52b2NhdGlvbnMgdGhyb3VnaCBmdW5jdGlvbiBwb2ludGVycyBvciBtYWNybyBleHBhbnNpb25zLiBEZXBlbmRpbmcgb24gdGhlIGNvbXBsZXhpdHksIEkgbWlnaHQgc3RhcnQgdXNpbmcgYSBkZWJ1Z2dlciBhbmQgd2FsayB0aHJvdWdoIHRoZSBjb2RlLCBmb2N1c2luZyBvbiB0aGUgc3BlY2lmaWMgbW9kdWxlcyBvciBjb21wb25lbnRzIHRoYXQgc2VlbSBtb3N0IHJlbGV2YW50IGJhc2VkIG9uIHRoZSBmdW5jdGlvbiBuYW1lLiBJJiMzOTttIGFpbWluZyBmb3IgYSBtZW50YWwgbWFwIG9mIGl0cyB1c2FnZSwgZXNzZW50aWFsbHkgZG9jdW1lbnRpbmcgdGhlIGNhbGwgZ3JhcGggZnJvbSB0aGUgZW50cnkgcG9pbnRzIGFsbCB0aGUgd2F5IGRvd24gdG8gd2hlcmUgYHJ0bF9lbmFibGVfbHRyYCBiZWNvbWVzIGEgbGVhZiBub2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGxfZW5hYmxlX2x0ciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTMwMjQ9c3RhdGljIHZvaWQgcnRsX2Rpc2FibGVfZXhpdF9sMShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zMDM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MzAzODpzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTMwMzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTMxMzQ9c3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzE2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjMxNjI6XHRcdHJ0bF9lbmFibGVfbHRyKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTMxNjMtXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3ODAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBRRU1VIFN1cHBvcnQgZm9yIFJlYWx0ZWsgRXRoZXJuZXQgQ29udHJvbGxlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlIGByODE2OWAgZHJpdmVyLCB3aGljaCBoYW5kbGVzIHRob3NlIFJlYWx0ZWsgUENJL1BDSWUgZXRoZXJuZXQgY29udHJvbGxlcnMg4oCTIHRoZSBSVEw4MTY5LCA4MTY4LCA4MTAxLCBhbmQgODEyNSBtb2RlbHMuIE15IHF1ZXN0aW9uIGlzLCBhcmUgdGhvc2Ugc3BlY2lmaWNhbGx5IHN1cHBvcnRlZCBvciBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIG9yIHBlcmhhcHMgZXZlbiBpbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFRpbWUgdG8gZGlnIGluLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBRRU1VJiMzOTtzIFJlYWx0ZWsgTklDIGVtdWxhdGlvbiB0byBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKSG1tLCBRRU1VIGVtdWxhdGVzIHRoZSBvbGRlciBSVEw4MTM5LCB3aGljaCBoYXMgYSBQQ0kgZGV2aWNlIElEIG9mIDEwZWM6ODEzOS4gVGhhdCYjMzk7cyB1c3VhbGx5IGhhbmRsZWQgYnkgdGhlIGA4MTM5Y3BgIG9yIGA4MTM5dG9vYCBkcml2ZXJzLCBidXQuLi4gaG9sZCBvbi4gRGlkbiYjMzk7dCB0aGUgYHI4MTY5YCBkcml2ZXIgc29tZXRpbWVzIGhhbmRsZSBzaW1pbGFyIGRldmljZXM/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIFJpZ2h0LCBJIHJlbWVtYmVyIG5vdyAtIGxldCYjMzk7cyBjaGVjayB0aGUgYHJ0bDgxNjlfcGNpX3RibGAgdGFibGUgd2l0aGluIHRoZSBgcjgxNjlfbWFpbi5jYCBmaWxlISBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB3aGljaCBkZXZpY2VzIGl0ICphY3R1YWxseSogY292ZXJzLiBJJiMzOTtsbCBnZXQgdGhlIGFuc3dlciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjI1Olx0XHR7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIFJUTF9HSUdBX01BQ19OT05FIH1cbiAyMjY6XHR9O1xuIDIyNzpcdFxuIDIyODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydGw4MTY5X3BjaV90YmxbXSA9IHtcbiAyMjk6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MjUwMikgfSxcbiAyMzA6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4MjYwMCkgfSxcbiAyMzE6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEyOSkgfSxcbiAyMzI6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODEzNiksIC5kcml2ZXJfZGF0YSA9IFJUTF9DRkdfTk9fR0JJVCB9LFxuIDIzMzpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTYxKSB9LFxuIDIzNDpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTYyKSB9LFxuIDIzNTpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTY3KSB9LFxuIDIzNjpcdFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFx0MHg4MTY4KSB9LFxuIDIzNzpcdFx0eyBQQ0lfVkRFVklDRShOQ1VCRSxcdDB4ODE2OCkgfSxcbiAyMzg6XHRcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcdDB4ODE2OSkgfSxcbiAyMzk6XHRcdHsgUENJX1ZERVZJQ0UoRExJTkssXHQweDQzMDApIH0sXG4gMjQwOlx0XHR7IFBDSV9WREVWSUNFKERMSU5LLFx0MHg0MzAyKSB9LFxuIDI0MTpcdFx0eyBQQ0lfVkRFVklDRShBVCxcdDB4YzEwNykgfSxcbiAyNDI6XHRcdHsgUENJX1ZERVZJQ0UoVVNSLFx0MHgwMTE2KSB9LFxuIDI0MzpcdFx0eyBQQ0lfVkRFVklDRV9TVUIoTElOS1NZUywgMHgxMDMyLCBQQ0lfQU5ZX0lELCAweDAwMjQpIH0sXG4gMjQ0Olx0XHR7IFBDSV9ERVZJQ0VfU1VCKDB4MDAwMSwgMHg4MTY4LCBQQ0lfQU5ZX0lELCAweDI0MTApIH0sXG4gMjQ1Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxMjUpIH0sXG4gMjQ2Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxMjYpIH0sXG4gMjQ3Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDgxMjcpIH0sXG4gMjQ4Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDMwMDApIH0sXG4gMjQ5Olx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDUwMDApIH0sXG4gMjUwOlx0XHR7IFBDSV9WREVWSUNFKFJFQUxURUssXHQweDBlMTApIH0sXG4gMjUxOlx0XHR7IH1cbiAyNTI6XHR9O1xuIDI1MzpcdFxuIDI1NDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydGw4MTY5X3BjaV90YmwpO1xuIDI1NTpcdFxuIDI1NjpcdGVudW0gcnRsX3JlZ2lzdGVycyB7XG4gMjU3Olx0XHRNQUMwXHRcdD0gMCxcdC8qIEV0aGVybmV0IGhhcmR3YXJlIGFkZHJlc3MuICovXG4gMjU4Olx0XHRNQUM0XHRcdD0gNCxcbiAyNTk6XHRcdE1BUjBcdFx0PSA4LFx0LyogTXVsdGljYXN0IGZpbHRlci4gKi9cbiAyNjA6XHRcdENvdW50ZXJBZGRyTG93XHRcdD0gMHgxMCxcbiAyNjE6XHRcdENvdW50ZXJBZGRySGlnaFx0XHQ9IDB4MTQsXG4gMjYyOlx0XHRUeERlc2NTdGFydEFkZHJMb3dcdD0gMHgyMCxcbiAyNjM6XHRcdFR4RGVzY1N0YXJ0QWRkckhpZ2hcdD0gMHgyNCxcbiAyNjQ6XHRcdFR4SERlc2NTdGFydEFkZHJMb3dcdD0gMHgyOCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyNDMKCQkJCQkJCW91dHB1dDogMTI3CgkJCQkJCQl0aG91Z2h0czogODEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgQW5hbHlzaXM6IHI4MTY5IERyaXZlciBNb2RpZmljYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBjb25zaWRlciB0aGUgYHJ0bDgxNjlfcGNpX3RibGAgd2hpY2ggaGFuZGxlcyBhIHJhbmdlIG9mIFJlYWx0ZWsgY2hpcHMgbGlrZSAweDgxNjksIDB4ODE2OCwgYW5kIDB4ODEyNS4gVGhlbiBJIHRob3VnaHQgYWJvdXQgdGhlIGZ1bmN0aW9uIGBydGxfZW5hYmxlX2x0cmAuIEkgcmVtZW1iZXJlZCBMVFIgc3RhbmRzIGZvciBMYXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcsIGEgUENJZSBmZWF0dXJlIChQQ0llIDIuMSYjNDM7IC8gUENJZSAzLjApLCBhbmQgdGhlIGNvZGUgd2l0aGluIGBydGxfZW5hYmxlX2x0cmAgc3BlY2lmaWNhbGx5IGNoZWNrcyB0aGUgYHRwLSZndDttYWNfdmVyc2lvbmAgZm9yIGNlcnRhaW4gUmVhbHRlayBoYXJkd2FyZSByZXZpc2lvbnMg4oCTIHRob3NlIDgxNjggYW5kIDgxMjUgdmVyc2lvbnMgSSBtZW50aW9uZWQgZWFybGllci4KCkhvd2V2ZXIsIEkgbmVlZGVkIHRvIGNvbmZpcm0gdGhhdCBRRU1VIGV2ZW4gKmVtdWxhdGVzKiB0aGVzZSBkZXZpY2VzLiBFdmVuIGlmIFFFTVUgZW11bGF0ZWQgc29tZXRoaW5nLCBsaWtlIHRoZSBvbGRlciBSVEw4MTM5IChkZXZpY2UgODEzOSksIHRoYXQmIzM5O3MgaGFuZGxlZCBieSBlbnRpcmVseSBkaWZmZXJlbnQgZHJpdmVycywgYDgxMzljcGAgb3IgYDgxMzl0b29gLiBUaGUgUmVhbHRlayBSVEw4MTY5L1JUTDgxNjgvUlRMODEyNSBmYW1pbHkgYXJlIHBoeXNpY2FsIFBDSWUgRXRoZXJuZXQgTklDcy4KClNvLCB0aGUgbmV4dCBxdWVzdGlvbiBpczogRG9lcyBRRU1VIGVtdWxhdGUgdGhlIFJUTDgxNjk/IEkgY2hlY2tlZCBgaHcvbmV0L2Agd2l0aGluIFFFTVUgYW5kLCBubywgaXQmIzM5O3MganVzdCBgcnRsODEzOS5jYCB3aXRoIFBDSSBJRCAweDgxMzkuIE9rLCB3aGF0IGFib3V0IHBoeXNpY2FsbHkgcHJlc2VudCBQQ0llIE5JQ3M/CgpOb3cgSSYjMzk7bSByZWZlcmVuY2luZyB0aGUgZ3VpZGVsaW5lcywgYW5kIHRoZSBrZXkgcGhyYXNlIGp1bXBzIG91dCBhdCBtZTogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgVGhpcyBkaXJlY3RseSByZWxhdGVzIHRvIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMsIHdoaWNoIGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIGh1Z2UgY2x1ZS4gVGhlbiB0aGUgJiMzNDtSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURSYjMzQ7IHNlY3Rpb24gZnVydGhlciBoYW1tZXJzIGhvbWUgdGhlIHBvaW50IHRoYXQgZnV6emluZyBpcyBvbmx5IGVmZmVjdGl2ZSBpZiB0aGUgY29kZSBjYW4gKmFjdHVhbGx5KiBiZSBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgaG93IHRvIHJlYWNoIGl0LiBDYW4gYHI4MTY5YCBiZSByZWFjaGVkIHZpYSBVU0I/IE5vLCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIEl0IHJlZ2lzdGVycyB3aXRoIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpbiBgcjgxNjlfbWFpbi5jYCAoVVNCIFJlYWx0ZWsgaXMgYHI4MTUyYCkuIENhbiBpdCBiZSByZWFjaGVkIHZpYSBuZXRkZXYvdHVuL3RhcC9sb29wYmFjaz8gQWdhaW4sIG5vLiBJdCYjMzk7cyBhIFBDSSBkZXZpY2UgZHJpdmVyLiBDYW4gaXQgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBmdXp6aW5nIGluc3RhbmNlcz8gTm8sIG5laXRoZXIgb2YgdGhvc2UgaGF2ZSB0aGUgUmVhbHRlayA4MTY4LzgxNjkvODEyNSBQQ0llIGhhcmR3YXJlLgoKVGhlcmVmb3JlLCB0aGlzIG1lYW5zIHRoZSBtb2RpZmllZCBjb2RlIGlzIHdpdGhpbiBhIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGV0aGVybmV0IGRyaXZlciB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiB0aGUgdXN1YWwgUUVNVS9HQ0Ugc3l6a2FsbGVyIGVudmlyb25tZW50cy4gSXQmIzM5O3Mgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBhbGwgZGV0YWlsczoKCiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKiDigJMgVGhhdCYjMzk7cyB0aGUgY29ycmVjdCBpbml0aWFsIGFzc2Vzc21lbnQuCiogICAqKlJlYXNvbmluZzoqKiBDb25jaXNlLgoqICAgKipFbmFibGVDb25maWdzOiBbXSoqCiogICAqKkZvY3VzU3ltYm9sczogW10qKgoKVGhlIHJlYXNvbmluZyBpcyBjb3JyZWN0LiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgUENJL1BDSWUgZGV2aWNlIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4MTY5L1JUTDgxNjgvUlRMODEyNSBFdGhlcm5ldCBjb250cm9sbGVycy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLgoKTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcnRsX2VuYWJsZV9sdHIoKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODE2OS9SVEw4MTY4L1JUTDgxMjUgUENJZSBuZXR3b3JrIGludGVyZmFjZSBjYXJkcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowMDowMi43Nzc1NTE4NDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjgxMjgwMzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBydGxfZW5hYmxlX2x0cigpYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4MTY5L1JUTDgxNjgvUlRMODEyNSBQQ0llIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmRzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowMDowMi43Nzc1NjA3NzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyOTI3NjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM0MWQ5YWI0ZGE5MzZkZGM5MWFhNTc2ODIxNGEyM2UxYzgwODcxZmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBTZXAgOSAxMzowMDowMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuaW5kZXggZWM0ZmMyMWZhMjFmYi4uYzFmZjRlODk4NTcwNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuQEAgLTMwMzcsNiArMzAzNywxNiBAQCBzdGF0aWMgdm9pZCBydGxfZGlzYWJsZV9leGl0X2wxKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHtcXG4rXFx0dTE2IGN0bDI7XFxuK1xcbitcXHQvKiBUaGUgY2hpcCBtdXN0IG5vdCBpc3N1ZSBMVFIgbWVzc2FnZXMgdW5sZXNzIHRoZSBwbGF0Zm9ybSBlbmFibGVkXFxuK1xcdCAqIExUUiBvbiB0aGUgd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBUaGUgUENJIGNvcmUgZGlzY292ZXJzXFxuK1xcdCAqIHRoYXQgaW4gcGNpX2NvbmZpZ3VyZV9sdHIoKSBhbmQgcmVmbGVjdHMgaXQgaW4gTFRSIE1lY2hhbmlzbSBFbmFibGUuXFxuK1xcdCAqL1xcbitcXHRwY2llX2NhcGFiaWxpdHlfcmVhZF93b3JkKHRwLVxcdTAwM2VwY2lfZGV2LCBQQ0lfRVhQX0RFVkNUTDIsIFxcdTAwMjZjdGwyKTtcXG4rXFx0aWYgKCEoY3RsMiBcXHUwMDI2IFBDSV9FWFBfREVWQ1RMMl9MVFJfRU4pKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRzd2l0Y2ggKHRwLVxcdTAwM2VtYWNfdmVyc2lvbikge1xcbiBcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfODA6XFxuIFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDA6MDMuNDA3OTkxODk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMjE4MjM1MDcxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzQxZDlhYjRkYTkzNmRkYzkxYWE1NzY4MjE0YTIzZTFjODA4NzFmZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTM6MDA6MDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiLi5jMWZmNGU4OTg1NzA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5AQCAtMzAzNyw2ICszMDM3LDE2IEBAIHN0YXRpYyB2b2lkIHJ0bF9kaXNhYmxlX2V4aXRfbDEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuK1x0dTE2IGN0bDI7XG4rXG4rXHQvKiBUaGUgY2hpcCBtdXN0IG5vdCBpc3N1ZSBMVFIgbWVzc2FnZXMgdW5sZXNzIHRoZSBwbGF0Zm9ybSBlbmFibGVkXG4rXHQgKiBMVFIgb24gdGhlIHdob2xlIHBhdGggdXAgdG8gdGhlIHJvb3QgcG9ydC4gVGhlIFBDSSBjb3JlIGRpc2NvdmVyc1xuK1x0ICogdGhhdCBpbiBwY2lfY29uZmlndXJlX2x0cigpIGFuZCByZWZsZWN0cyBpdCBpbiBMVFIgTWVjaGFuaXNtIEVuYWJsZS5cbitcdCAqL1xuK1x0cGNpZV9jYXBhYmlsaXR5X3JlYWRfd29yZCh0cC1cdTAwM2VwY2lfZGV2LCBQQ0lfRVhQX0RFVkNUTDIsIFx1MDAyNmN0bDIpO1xuK1x0aWYgKCEoY3RsMiBcdTAwMjYgUENJX0VYUF9ERVZDVEwyX0xUUl9FTikpXG4rXHRcdHJldHVybjtcbitcbiBcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcbiBcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDA6MDMuNDA3OTkzNjk4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTk5NDA5ODEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgd2hpY2ggaXMgYW1kNjQuIFRoZSBmaWxlIHBhdGggaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYC4gSG1tLCB0aGlzIHNlZW1zIHRvIGJlIGEgZHJpdmVyIHJlbGF0ZWQgdG8gUmVhbHRlayBFdGhlcm5ldCBjb250cm9sbGVycy4gU3BlY2lmaWNhbGx5LCB0aGUgUlRMODE2OSBmYW1pbHksIGlmIEkgcmVjYWxsIGNvcnJlY3RseSDigJMgdGhvc2UgYXJlIHByZXR0eSBjb21tb24gUENJZSBHaWdhYml0IGFuZCAyLjVHIEV0aGVybmV0IE5JQ3MuXG5cbkkgc2VlIGNvZGUgaW50cm9kdWNpbmcgYSBjaGVjayByZWxhdGVkIHRvIExUUiAoTGF0ZW5jeSBUb2xlcmFuY2UgUmVwb3J0aW5nKS4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFRoZSBjb2RlIHNlZW1zIHRvIGJlIGVuYWJsaW5nIExUUiwgYnV0IG9ubHkgaWYgdGhlIHBsYXRmb3JtIGhhcyBlbmFibGVkIGl0IGFuZCB0aGUgUENJIGNvcmUgaGFzIGFsc28gaW5kaWNhdGVkIGl0J3Mgc3VwcG9ydGVkLiBUaGUgY2hlY2sgaW52b2x2ZXMgcmVhZGluZyBhIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIGBQQ0lfRVhQX0RFVkNUTDJgIGFuZCB2ZXJpZnlpbmcgdGhlIGBQQ0lfRVhQX0RFVkNUTDJfTFRSX0VOYCBiaXQgaXMgc2V0LiBUaGlzIG1ha2VzIHNlbnNlOyB5b3UgZG9uJ3Qgd2FudCB0aGUgTklDIHRyeWluZyB0byB1c2UgTFRSIGlmIHRoZSBoYXJkd2FyZSBvciBmaXJtd2FyZSBkb2Vzbid0IHN1cHBvcnQgaXQgZW5kLXRvLWVuZC5cblxuTm93LCBteSBtaW5kIGdvZXMgdG8gaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdmlydHVhbGl6YXRpb24sIHNpbmNlIEknbSBhbHdheXMgdGhpbmtpbmcgYWJvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZHJpdmVyIGJlaGF2ZXMgY29ycmVjdGx5IHdoZW4gZW11bGF0ZWQuIElzIGByODE2OWAgZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVT8gSSBrbm93IFFFTVUgc3VwcG9ydHMgdGhlIG9sZGVyIGBydGw4MTM5YCwgdHlwaWNhbGx5IGlkZW50aWZpZWQgd2l0aCBQQ0kgSUQgMTBlYzo4MTM5LiBEb2VzIGl0IGFsc28gZW11bGF0ZSB0aGUgbmV3ZXIgYHI4MTY5YCBjb250cm9sbGVycz8gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gUXVpY2sgc2FuaXR5IGNoZWNrOiBRRU1VJ3MgYC1uZXQgbmljLG1vZGVsPT9gIG9wdGlvbiBsaXN0cyBhIGJ1bmNoIG9mIGRpZmZlcmVudCBlbXVsYXRlZCBOSUNzLCBidXQgbGV0IG1lIHZlcmlmeSB0aGF0IGl0IHN1cHBvcnRzIGByODE2OWAgc3BlY2lmaWNhbGx5LiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGVtdWxhdGlvbiBoYW5kbGVzIExUUiwgaWYgYXQgYWxsLlxuXG5VbHRpbWF0ZWx5LCBJIHdpbGwgaGF2ZSB0byBjcm9zcy1yZWZlcmVuY2UgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCB3aXRoIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgYW5kIGRvdWJsZS1jaGVjayBRRU1VIGRldmljZSBzdXBwb3J0IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGluIHN5bmMgYW5kIHRoZSBpbXBsaWNhdGlvbnMgYXJlIHdlbGwtdW5kZXJzdG9vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjA5LjQwMjA5Mzg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDEzNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlI4MTY5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz03ND1jb25maWcgODEzOV9PTERfUlhfUkVTRVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6ODQ6Y29uZmlnIFI4MTY5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMjpjb25maWcgUjgxNjlfTEVEU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDMtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDQ6XFx0ZGVwZW5kcyBvbiBSODE2OSBcXHUwMDI2XFx1MDAyNiBMRURTX1RSSUdHRVJfTkVUREVWXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwNTpcXHRkZXBlbmRzIG9uICEoUjgxNjk9eSBcXHUwMDI2XFx1MDAyNiBMRURTX0NMQVNTPW0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlPTg9cjgxNjkteSArPSByODE2OV9tYWluLm8gcjgxNjlfZmlybXdhcmUubyByODE2OV9waHlfY29uZmlnLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlOjk6cjgxNjktJChDT05GSUdfUjgxNjlfTEVEUykgKz0gcjgxNjlfbGVkcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUjgxNjkpICs9IHI4MTY5Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19SVEFTRSkgKz0gcnRhc2UvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3MjojZGVmaW5lIFI4MTY5X1JFR1NfU0laRVxcdFxcdDI1NlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjczOiNkZWZpbmUgUjgxNjlfUlhfQlVGX1NJWkVcXHQoU1pfMTZLIC0gMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy03NC0jZGVmaW5lIE5VTV9UWF9ERVNDXFx0MjU2XFx0LyogTnVtYmVyIG9mIFR4IGRlc2NyaXB0b3IgcmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNzUtI2RlZmluZSBOVU1fUlhfREVTQ1xcdDI1NlxcdC8qIE51bWJlciBvZiBSeCBkZXNjcmlwdG9yIHJlZ2lzdGVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjc2OiNkZWZpbmUgUjgxNjlfVFhfUklOR19CWVRFU1xcdChOVU1fVFhfREVTQyAqIHNpemVvZihzdHJ1Y3QgVHhEZXNjKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo3NzojZGVmaW5lIFI4MTY5X1JYX1JJTkdfQllURVNcXHQoTlVNX1JYX0RFU0MgKiBzaXplb2Yoc3RydWN0IFJ4RGVzYykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Nzg6I2RlZmluZSBSODE2OV9UWF9TVE9QX1RIUlNcXHQoTUFYX1NLQl9GUkFHUyArIDEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Nzk6I2RlZmluZSBSODE2OV9UWF9TVEFSVF9USFJTXFx0KDIgKiBSODE2OV9UWF9TVE9QX1RIUlMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNzk5PXN0YXRpYyBpbnQgcnRsODE2OV9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODAwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODAxOlxcdHJldHVybiBSODE2OV9SRUdTX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTgwMi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xODc4PXN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfcmVncyAqcmVncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4ODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg4NjpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUjgxNjlfUkVHU19TSVpFOyBpICs9IDQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg4Ny1cXHRcXHRtZW1jcHlfZnJvbWlvKGR3KyssIGRhdGErKywgNCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yNzk5PXN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfbWF4X3NpemUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yODAxLVxcdC8qIExvdyBodXJ0cy4gTGV0J3MgZGlzYWJsZSB0aGUgZmlsdGVyaW5nLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI4MDI6XFx0UlRMX1cxNih0cCwgUnhNYXhTaXplLCBSODE2OV9SWF9CVUZfU0laRSArIDEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI4MDMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NDE2MT1zdGF0aWMgdm9pZCBydGw4MTY5X21hcmtfdG9fYXNpYyhzdHJ1Y3QgUnhEZXNjICpkZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDE2Ny1cXHRkbWFfd21iKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDE2ODpcXHRXUklURV9PTkNFKGRlc2MtXFx1MDAzZW9wdHMxLCBjcHVfdG9fbGUzMihEZXNjT3duIHwgZW9yIHwgUjgxNjlfUlhfQlVGX1NJWkUpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTY5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQxNzE9c3RhdGljIHN0cnVjdCBwYWdlICpydGw4MTY5X2FsbG9jX3J4X2RhdGEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQxNzk6XFx0ZGF0YSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZSwgR0ZQX0tFUk5FTCwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDE4MC1cXHRpZiAoIWRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQxODM6XFx0bWFwcGluZyA9IGRtYV9tYXBfcGFnZShkLCBkYXRhLCAwLCBSODE2OV9SWF9CVUZfU0laRSwgRE1BX0ZST01fREVWSUNFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTg0LVxcdGlmICh1bmxpa2VseShkbWFfbWFwcGluZ19lcnJvcihkLCBtYXBwaW5nKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MTg1LVxcdFxcdG5ldGRldl9lcnIodHAtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBtYXAgUlggRE1BIVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDE4NjpcXHRcXHRfX2ZyZWVfcGFnZXMoZGF0YSwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDE4Ny1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQxOTY9c3RhdGljIHZvaWQgcnRsODE2OV9yeF9jbGVhcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQyMDItXFx0XFx0XFx0ICAgICAgIGxlNjRfdG9fY3B1KHRwLVxcdTAwM2VSeERlc2NBcnJheVtpXS5hZGRyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MjAzOlxcdFxcdFxcdCAgICAgICBSODE2OV9SWF9CVUZfU0laRSwgRE1BX0ZST01fREVWSUNFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MjA0OlxcdFxcdF9fZnJlZV9wYWdlcyh0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbaV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQyMDUtXFx0XFx0dHAtXFx1MDAzZVJ4X2RhdGFidWZmW2ldID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQ1Njk9c3RhdGljIG5ldGRldl90eF90IHJ0bDgxNjlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDYyNS1cXHRzdG9wX3F1ZXVlID0gIW5ldGlmX3N1YnF1ZXVlX21heWJlX3N0b3AoZGV2LCAwLCBydGxfdHhfc2xvdHNfYXZhaWwodHApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQ2MjY6XFx0XFx0XFx0XFx0XFx0XFx0UjgxNjlfVFhfU1RPUF9USFJTLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQ2Mjc6XFx0XFx0XFx0XFx0XFx0XFx0UjgxNjlfVFhfU1RBUlRfVEhSUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDYyOC1cXHRpZiAoZG9vcl9iZWxsIHx8IHN0b3BfcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00NzE5PXN0YXRpYyB2b2lkIHJ0bF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQ3NTEtXFx0XFx0XFx0XFx0XFx0ICAgICAgcnRsX3R4X3Nsb3RzX2F2YWlsKHRwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0NzUyOlxcdFxcdFxcdFxcdFxcdCAgICAgIFI4MTY5X1RYX1NUQVJUX1RIUlMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQ3NTMtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTUwNTU9c3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MDY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjUwNzA6XFx0ZG1hX2ZyZWVfY29oZXJlbnQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgUjgxNjlfUlhfUklOR19CWVRFUywgdHAtXFx1MDAzZVJ4RGVzY0FycmF5LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUwNzEtXFx0XFx0XFx0ICB0cC1cXHUwMDNlUnhQaHlBZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MDcyOlxcdGRtYV9mcmVlX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFI4MTY5X1RYX1JJTkdfQllURVMsIHRwLVxcdTAwM2VUeERlc2NBcnJheSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MDczLVxcdFxcdFxcdCAgdHAtXFx1MDAzZVR4UGh5QWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDkxPXN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxMDMtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTEwNDpcXHR0cC1cXHUwMDNlVHhEZXNjQXJyYXkgPSBkbWFfYWxsb2NfY29oZXJlbnQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgUjgxNjlfVFhfUklOR19CWVRFUyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MTA1LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnRwLVxcdTAwM2VUeFBoeUFkZHIsIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MTA5OlxcdHRwLVxcdTAwM2VSeERlc2NBcnJheSA9IGRtYV9hbGxvY19jb2hlcmVudChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxMTAtXFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2dHAtXFx1MDAzZVJ4UGh5QWRkciwgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MTQyLWVycl9mcmVlX3J4XzE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTE0MzpcXHRkbWFfZnJlZV9jb2hlcmVudChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLCB0cC1cXHUwMDNlUnhEZXNjQXJyYXksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTE0NC1cXHRcXHRcXHQgIHRwLVxcdTAwM2VSeFBoeUFkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTE0Ni1lcnJfZnJlZV90eF8wOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjUxNDc6XFx0ZG1hX2ZyZWVfY29oZXJlbnQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgUjgxNjlfVFhfUklOR19CWVRFUywgdHAtXFx1MDAzZVR4RGVzY0FycmF5LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxNDgtXFx0XFx0XFx0ICB0cC1cXHUwMDNlVHhQaHlBZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTUyODg9c3RhdGljIHZvaWQgcnRsX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01Mjk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjUyOTc6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUyOTgtXFx0XFx0cjgxNjlfcmVtb3ZlX2xlZHModHAtXFx1MDAzZWxlZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTYxMj1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU4MDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTgwOTpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUjgxNjlfTEVEUykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01ODEwLVxcdFxcdGlmIChydGxfaXNfODEyNSh0cCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjA5LjQ0NjUxMjU1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc2MzcwMjY0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuXG5cbioqSW52ZXN0aWdhdGluZyByODE2OSBQQ0kgSUQgQmluZGluZyoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIFBDSSBJRHMgdGhlIGByODE2OWAgZHJpdmVyIGlzIGFjdHVhbGx5IGJpbmRpbmcgdG8uIE15IHVzdWFsIGFwcHJvYWNoIGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBrbm93IHRoYXQgdGhlIGRldmljZSB0YWJsZSBmb3IgdGhlc2UgZHJpdmVycyBpcyB0eXBpY2FsbHkgZGVjbGFyZWQgaW4gdGhlIG1haW4gZmlsZS4gU28sIEknbGwgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCBhbmQgaHVudCBhcm91bmQgdGhlIGBydGw4MTY5X3BjaV90YmxgIHRhYmxlLiBUaGF0J3MgdGhlIGdvLXRvIGxvY2F0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHdoaWNoIGhhcmR3YXJlIHJldmlzaW9ucyB0aGlzIHBhcnRpY3VsYXIgUmVhbHRlayBFdGhlcm5ldCBkcml2ZXIgc3VwcG9ydHMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuLi4gdGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCByaWdodD9cblxuXG4iLCJJbnB1dFRva2VucyI6NzgxMywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjEyLjIxMDIxNzcwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTM1OTEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGw4MTY5X3BjaV90YmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsX2NoaXBfaW5mbyBydGxfY2hpcF9pbmZvc19leHRlbmRlZFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIyODpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODE2OV9wY2lfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjI5LVxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDI1MDIpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjU0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydGw4MTY5X3BjaV90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU4MzY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0bDgxNjlfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01ODM3LVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1ODM4OlxcdC5pZF90YWJsZVxcdD0gcnRsODE2OV9wY2lfdGJsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU4MzktXFx0LnByb2JlXFx0XFx0PSBydGxfaW5pdF9vbmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjEyLjI1NTU4MTQyNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNDIxNDczMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYHJ0bF9lbmFibGVfbHRyYCBDYWxsIFNpdGVzIGluIHRoZSBSODE2OSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGBydGxfZW5hYmxlX2x0cmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgUmVhbHRlayBSODE2OSBFdGhlcm5ldCBkcml2ZXIsIHNvIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSdtIGhlYWRpbmcgZGlyZWN0bHkgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLiBObyBwb2ludCBpbiBndWVzc2luZzsgSSB3YW50IHRoZSBkZWZpbml0aXZlIHNvdXJjZS4gSSdsbCBuZWVkIHRvIHJlYWQgdGhlIGNvZGUgc3Vycm91bmRpbmcgdGhvc2UgY2FsbHMgdG8gc2VlIHdoZXJlIGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwb3dlciBtYW5hZ2VtZW50IG9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBsb2dpYyBvZiB0aGUgZHJpdmVyLiBJcyB0aGlzIHJlbGF0ZWQgdG8gbGluay1zdGF0ZSBjaGFuZ2VzLCBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJJ20gYW50aWNpcGF0aW5nIHRoaXMgbWlnaHQgcmV2ZWFsIHNvbWUgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGhhcmR3YXJlJ3MgTFRSIGNhcGFiaWxpdGllcywgb3IgcG9zc2libHkgc29tZSBwb3RlbnRpYWwgZ290Y2hhcyBhcm91bmQgZW5hYmxpbmcgaXQuIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIGhhcyB0byB0ZWxsIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTA5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDA6MTQuMzk3NzMwNTk5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE5MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwMzAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMwMzA6XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQwIC4uLiBSVExfR0lHQV9NQUNfVkVSX0xBU1Q6XFxuMzAzMTpcXHRcXHRcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhjMGFjLCAweDFmODAsIDApO1xcbjMwMzI6XFx0XFx0XFx0YnJlYWs7XFxuMzAzMzpcXHRcXHRkZWZhdWx0OlxcbjMwMzQ6XFx0XFx0XFx0YnJlYWs7XFxuMzAzNTpcXHRcXHR9XFxuMzAzNjpcXHR9XFxuMzAzNzpcXHRcXG4zMDM4OlxcdHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbjMwMzk6XFx0e1xcbjMwNDA6XFx0XFx0dTE2IGN0bDI7XFxuMzA0MTpcXHRcXG4zMDQyOlxcdFxcdC8qIFRoZSBjaGlwIG11c3Qgbm90IGlzc3VlIExUUiBtZXNzYWdlcyB1bmxlc3MgdGhlIHBsYXRmb3JtIGVuYWJsZWRcXG4zMDQzOlxcdFxcdCAqIExUUiBvbiB0aGUgd2hvbGUgcGF0aCB1cCB0byB0aGUgcm9vdCBwb3J0LiBUaGUgUENJIGNvcmUgZGlzY292ZXJzXFxuMzA0NDpcXHRcXHQgKiB0aGF0IGluIHBjaV9jb25maWd1cmVfbHRyKCkgYW5kIHJlZmxlY3RzIGl0IGluIExUUiBNZWNoYW5pc20gRW5hYmxlLlxcbjMwNDU6XFx0XFx0ICovXFxuMzA0NjpcXHRcXHRwY2llX2NhcGFiaWxpdHlfcmVhZF93b3JkKHRwLVxcdTAwM2VwY2lfZGV2LCBQQ0lfRVhQX0RFVkNUTDIsIFxcdTAwMjZjdGwyKTtcXG4zMDQ3OlxcdFxcdGlmICghKGN0bDIgXFx1MDAyNiBQQ0lfRVhQX0RFVkNUTDJfTFRSX0VOKSlcXG4zMDQ4OlxcdFxcdFxcdHJldHVybjtcXG4zMDQ5OlxcdFxcbjMwNTA6XFx0XFx0c3dpdGNoICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24pIHtcXG4zMDUxOlxcdFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcXG4zMDUyOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcXG4zMDUzOlxcdFxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfU05PT1AsIDB4MDAwMCwgTFRSX1NOT09QX0VOKTtcXG4zMDU0OlxcdFxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBBTERQU19MVFIsIDB4MDAwMCwgQUxEUFNfTFRSX0VOKTtcXG4zMDU1OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMiwgMHg4YzA5KTtcXG4zMDU2OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkOCwgMHg5MDAzKTtcXG4zMDU3OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNCwgMHg5MDAzKTtcXG4zMDU4OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYSwgMHg5MDAzKTtcXG4zMDU5OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNiwgMHg5MDAzKTtcXG4zMDYwOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYywgMHg5MDAzKTtcXG4zMDYxOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlOCwgMHg4ODdhKTtcXG4zMDYyOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlYSwgMHg5MDAzKTtcXG4zMDYzOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlYywgMHg4YzA5KTtcXG4zMDY0OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RlZSwgMHg5MDAzKTtcXG4zMDY1OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMCwgMHg4YTYyKTtcXG4zMDY2OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMiwgMHg5MDAzKTtcXG4zMDY3OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmNCwgMHg4ODNlKTtcXG4zMDY4OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmNiwgMHg5MDAzKTtcXG4zMDY5OlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmOCwgMHg4ODQ5KTtcXG4zMDcwOlxcdFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmYSwgMHg5MDAzKTtcXG4zMDcxOlxcdFxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDAsIExJTktfU1BFRURfQ0hBTkdFX0VOKTtcXG4zMDcyOlxcdFxcdFxcdGJyZWFrO1xcbjMwNzM6XFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzcwOlxcbjMwNzQ6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xcbjMwNzU6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xcbjMwNzY6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbjMwNzc6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDhjMDkpO1xcbjMwNzg6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xcbjMwNzk6XFx0XFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDkwMDMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowMDoxNC4zOTgwNTExNDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTgyMDcyNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgYHJ0bF9lbmFibGVfbHRyYCBDYWxscyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBvZiB0aGUgYHJ0bF9lbmFibGVfbHRyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgYW5kIGhvdyBpdCdzIGJlaW5nIHRyaWdnZXJlZC4gS25vd2luZyB3aGVyZSBpdCdzIGNhbGxlZCB3aWxsIGltbWVkaWF0ZWx5IHNoZWQgbGlnaHQgb24gaXRzIGludGVuZGVkIHB1cnBvc2UgYW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYy4gSSdsbCBsaWtlbHkgc3RhcnQgd2l0aCBhIHF1aWNrIGdyZXAgb3IgY29kZSBzZWFyY2gsIG1heWJlIGxldmVyYWdpbmcgbXkgSURFJ3MgXCJmaW5kIHVzYWdlc1wiIG9yIFwiY2FsbCBoaWVyYXJjaHlcIiBmZWF0dXJlcyB0byBnZXQgYSBwcmVsaW1pbmFyeSBvdmVydmlldyBvZiB0aGUgY29kZWJhc2UuIEknbGwgYmUgbG9va2luZyBmb3IgZGlyZWN0IGNhbGxzLCBvZiBjb3Vyc2UsIGJ1dCBhbHNvIGluZGlyZWN0IGludm9jYXRpb25zIHRocm91Z2ggZnVuY3Rpb24gcG9pbnRlcnMgb3IgbWFjcm8gZXhwYW5zaW9ucy4gRGVwZW5kaW5nIG9uIHRoZSBjb21wbGV4aXR5LCBJIG1pZ2h0IHN0YXJ0IHVzaW5nIGEgZGVidWdnZXIgYW5kIHdhbGsgdGhyb3VnaCB0aGUgY29kZSwgZm9jdXNpbmcgb24gdGhlIHNwZWNpZmljIG1vZHVsZXMgb3IgY29tcG9uZW50cyB0aGF0IHNlZW0gbW9zdCByZWxldmFudCBiYXNlZCBvbiB0aGUgZnVuY3Rpb24gbmFtZS4gSSdtIGFpbWluZyBmb3IgYSBtZW50YWwgbWFwIG9mIGl0cyB1c2FnZSwgZXNzZW50aWFsbHkgZG9jdW1lbnRpbmcgdGhlIGNhbGwgZ3JhcGggZnJvbSB0aGUgZW50cnkgcG9pbnRzIGFsbCB0aGUgd2F5IGRvd24gdG8gd2hlcmUgYHJ0bF9lbmFibGVfbHRyYCBiZWNvbWVzIGEgbGVhZiBub2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE4OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDA6MTYuMzgwMTI2ODc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTExNDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGxfZW5hYmxlX2x0clwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0zMDI0PXN0YXRpYyB2b2lkIHJ0bF9kaXNhYmxlX2V4aXRfbDEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zMDM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjMwMzg6c3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzAzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0zMTM0PXN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzE2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzozMTYyOlxcdFxcdHJ0bF9lbmFibGVfbHRyKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zMTYzLVxcdFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjE2LjQyNTI0ODkwN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTQ5ODM5NzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUUVNVSBTdXBwb3J0IGZvciBSZWFsdGVrIEV0aGVybmV0IENvbnRyb2xsZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgYHI4MTY5YCBkcml2ZXIsIHdoaWNoIGhhbmRsZXMgdGhvc2UgUmVhbHRlayBQQ0kvUENJZSBldGhlcm5ldCBjb250cm9sbGVycyDigJMgdGhlIFJUTDgxNjksIDgxNjgsIDgxMDEsIGFuZCA4MTI1IG1vZGVscy4gTXkgcXVlc3Rpb24gaXMsIGFyZSB0aG9zZSBzcGVjaWZpY2FsbHkgc3VwcG9ydGVkIG9yIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgb3IgcGVyaGFwcyBldmVuIGluIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gVGltZSB0byBkaWcgaW4uIExldCdzIHN0YXJ0IHdpdGggUUVNVSdzIFJlYWx0ZWsgTklDIGVtdWxhdGlvbiB0byBzZWUgd2hhdCdzIHdoYXQuXG5cbkhtbSwgUUVNVSBlbXVsYXRlcyB0aGUgb2xkZXIgUlRMODEzOSwgd2hpY2ggaGFzIGEgUENJIGRldmljZSBJRCBvZiAxMGVjOjgxMzkuIFRoYXQncyB1c3VhbGx5IGhhbmRsZWQgYnkgdGhlIGA4MTM5Y3BgIG9yIGA4MTM5dG9vYCBkcml2ZXJzLCBidXQuLi4gaG9sZCBvbi4gRGlkbid0IHRoZSBgcjgxNjlgIGRyaXZlciBzb21ldGltZXMgaGFuZGxlIHNpbWlsYXIgZGV2aWNlcz8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gUmlnaHQsIEkgcmVtZW1iZXIgbm93IC0gbGV0J3MgY2hlY2sgdGhlIGBydGw4MTY5X3BjaV90YmxgIHRhYmxlIHdpdGhpbiB0aGUgYHI4MTY5X21haW4uY2AgZmlsZSEgVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB3aGljaCBkZXZpY2VzIGl0ICphY3R1YWxseSogY292ZXJzLiBJJ2xsIGdldCB0aGUgYW5zd2VyIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc4MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowMDoxOC45NzUwOTE2NjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyNSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyNTpcXHRcXHR7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIFJUTF9HSUdBX01BQ19OT05FIH1cXG4gMjI2OlxcdH07XFxuIDIyNzpcXHRcXG4gMjI4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydGw4MTY5X3BjaV90YmxbXSA9IHtcXG4gMjI5OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDI1MDIpIH0sXFxuIDIzMDpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHgyNjAwKSB9LFxcbiAyMzE6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4ODEyOSkgfSxcXG4gMjMyOlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxMzYpLCAuZHJpdmVyX2RhdGEgPSBSVExfQ0ZHX05PX0dCSVQgfSxcXG4gMjMzOlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxNjEpIH0sXFxuIDIzNDpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTYyKSB9LFxcbiAyMzU6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4ODE2NykgfSxcXG4gMjM2OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxNjgpIH0sXFxuIDIzNzpcXHRcXHR7IFBDSV9WREVWSUNFKE5DVUJFLFxcdDB4ODE2OCkgfSxcXG4gMjM4OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxNjkpIH0sXFxuIDIzOTpcXHRcXHR7IFBDSV9WREVWSUNFKERMSU5LLFxcdDB4NDMwMCkgfSxcXG4gMjQwOlxcdFxcdHsgUENJX1ZERVZJQ0UoRExJTkssXFx0MHg0MzAyKSB9LFxcbiAyNDE6XFx0XFx0eyBQQ0lfVkRFVklDRShBVCxcXHQweGMxMDcpIH0sXFxuIDI0MjpcXHRcXHR7IFBDSV9WREVWSUNFKFVTUixcXHQweDAxMTYpIH0sXFxuIDI0MzpcXHRcXHR7IFBDSV9WREVWSUNFX1NVQihMSU5LU1lTLCAweDEwMzIsIFBDSV9BTllfSUQsIDB4MDAyNCkgfSxcXG4gMjQ0OlxcdFxcdHsgUENJX0RFVklDRV9TVUIoMHgwMDAxLCAweDgxNjgsIFBDSV9BTllfSUQsIDB4MjQxMCkgfSxcXG4gMjQ1OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDgxMjUpIH0sXFxuIDI0NjpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg4MTI2KSB9LFxcbiAyNDc6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4ODEyNykgfSxcXG4gMjQ4OlxcdFxcdHsgUENJX1ZERVZJQ0UoUkVBTFRFSyxcXHQweDMwMDApIH0sXFxuIDI0OTpcXHRcXHR7IFBDSV9WREVWSUNFKFJFQUxURUssXFx0MHg1MDAwKSB9LFxcbiAyNTA6XFx0XFx0eyBQQ0lfVkRFVklDRShSRUFMVEVLLFxcdDB4MGUxMCkgfSxcXG4gMjUxOlxcdFxcdHsgfVxcbiAyNTI6XFx0fTtcXG4gMjUzOlxcdFxcbiAyNTQ6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJ0bDgxNjlfcGNpX3RibCk7XFxuIDI1NTpcXHRcXG4gMjU2OlxcdGVudW0gcnRsX3JlZ2lzdGVycyB7XFxuIDI1NzpcXHRcXHRNQUMwXFx0XFx0PSAwLFxcdC8qIEV0aGVybmV0IGhhcmR3YXJlIGFkZHJlc3MuICovXFxuIDI1ODpcXHRcXHRNQUM0XFx0XFx0PSA0LFxcbiAyNTk6XFx0XFx0TUFSMFxcdFxcdD0gOCxcXHQvKiBNdWx0aWNhc3QgZmlsdGVyLiAqL1xcbiAyNjA6XFx0XFx0Q291bnRlckFkZHJMb3dcXHRcXHQ9IDB4MTAsXFxuIDI2MTpcXHRcXHRDb3VudGVyQWRkckhpZ2hcXHRcXHQ9IDB4MTQsXFxuIDI2MjpcXHRcXHRUeERlc2NTdGFydEFkZHJMb3dcXHQ9IDB4MjAsXFxuIDI2MzpcXHRcXHRUeERlc2NTdGFydEFkZHJIaWdoXFx0PSAweDI0LFxcbiAyNjQ6XFx0XFx0VHhIRGVzY1N0YXJ0QWRkckxvd1xcdD0gMHgyOCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDA6MTguOTc1Mjk5ODM1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY2MTUwMTQxMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBBbmFseXNpczogcjgxNjkgRHJpdmVyIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBjb25zaWRlciB0aGUgYHJ0bDgxNjlfcGNpX3RibGAgd2hpY2ggaGFuZGxlcyBhIHJhbmdlIG9mIFJlYWx0ZWsgY2hpcHMgbGlrZSAweDgxNjksIDB4ODE2OCwgYW5kIDB4ODEyNS4gVGhlbiBJIHRob3VnaHQgYWJvdXQgdGhlIGZ1bmN0aW9uIGBydGxfZW5hYmxlX2x0cmAuIEkgcmVtZW1iZXJlZCBMVFIgc3RhbmRzIGZvciBMYXRlbmN5IFRvbGVyYW5jZSBSZXBvcnRpbmcsIGEgUENJZSBmZWF0dXJlIChQQ0llIDIuMSsgLyBQQ0llIDMuMCksIGFuZCB0aGUgY29kZSB3aXRoaW4gYHJ0bF9lbmFibGVfbHRyYCBzcGVjaWZpY2FsbHkgY2hlY2tzIHRoZSBgdHAtXHUwMDNlbWFjX3ZlcnNpb25gIGZvciBjZXJ0YWluIFJlYWx0ZWsgaGFyZHdhcmUgcmV2aXNpb25zIOKAkyB0aG9zZSA4MTY4IGFuZCA4MTI1IHZlcnNpb25zIEkgbWVudGlvbmVkIGVhcmxpZXIuXG5cbkhvd2V2ZXIsIEkgbmVlZGVkIHRvIGNvbmZpcm0gdGhhdCBRRU1VIGV2ZW4gKmVtdWxhdGVzKiB0aGVzZSBkZXZpY2VzLiBFdmVuIGlmIFFFTVUgZW11bGF0ZWQgc29tZXRoaW5nLCBsaWtlIHRoZSBvbGRlciBSVEw4MTM5IChkZXZpY2UgODEzOSksIHRoYXQncyBoYW5kbGVkIGJ5IGVudGlyZWx5IGRpZmZlcmVudCBkcml2ZXJzLCBgODEzOWNwYCBvciBgODEzOXRvb2AuIFRoZSBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IGZhbWlseSBhcmUgcGh5c2ljYWwgUENJZSBFdGhlcm5ldCBOSUNzLlxuXG5TbywgdGhlIG5leHQgcXVlc3Rpb24gaXM6IERvZXMgUUVNVSBlbXVsYXRlIHRoZSBSVEw4MTY5PyBJIGNoZWNrZWQgYGh3L25ldC9gIHdpdGhpbiBRRU1VIGFuZCwgbm8sIGl0J3MganVzdCBgcnRsODEzOS5jYCB3aXRoIFBDSSBJRCAweDgxMzkuIE9rLCB3aGF0IGFib3V0IHBoeXNpY2FsbHkgcHJlc2VudCBQQ0llIE5JQ3M/XG5cbk5vdyBJJ20gcmVmZXJlbmNpbmcgdGhlIGd1aWRlbGluZXMsIGFuZCB0aGUga2V5IHBocmFzZSBqdW1wcyBvdXQgYXQgbWU6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlwiIFRoaXMgZGlyZWN0bHkgcmVsYXRlcyB0byB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCB3aGljaCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCdzIGEgaHVnZSBjbHVlLiBUaGVuIHRoZSBcIlJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFXCIgc2VjdGlvbiBmdXJ0aGVyIGhhbW1lcnMgaG9tZSB0aGUgcG9pbnQgdGhhdCBmdXp6aW5nIGlzIG9ubHkgZWZmZWN0aXZlIGlmIHRoZSBjb2RlIGNhbiAqYWN0dWFsbHkqIGJlIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0byByZWFjaCBpdC4gQ2FuIGByODE2OWAgYmUgcmVhY2hlZCB2aWEgVVNCPyBObywgaXQncyBhIFBDSSBkcml2ZXIuIEl0IHJlZ2lzdGVycyB3aXRoIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpbiBgcjgxNjlfbWFpbi5jYCAoVVNCIFJlYWx0ZWsgaXMgYHI4MTUyYCkuIENhbiBpdCBiZSByZWFjaGVkIHZpYSBuZXRkZXYvdHVuL3RhcC9sb29wYmFjaz8gQWdhaW4sIG5vLiBJdCdzIGEgUENJIGRldmljZSBkcml2ZXIuIENhbiBpdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGZ1enppbmcgaW5zdGFuY2VzPyBObywgbmVpdGhlciBvZiB0aG9zZSBoYXZlIHRoZSBSZWFsdGVrIDgxNjgvODE2OS84MTI1IFBDSWUgaGFyZHdhcmUuXG5cblRoZXJlZm9yZSwgdGhpcyBtZWFucyB0aGUgbW9kaWZpZWQgY29kZSBpcyB3aXRoaW4gYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBldGhlcm5ldCBkcml2ZXIgdGhhdCByZWxpZXMgb24gcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdGhlIHVzdWFsIFFFTVUvR0NFIHN5emthbGxlciBlbnZpcm9ubWVudHMuIEl0J3Mgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgYWxsIGRldGFpbHM6XG5cbiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKiDigJMgVGhhdCdzIHRoZSBjb3JyZWN0IGluaXRpYWwgYXNzZXNzbWVudC5cbiogICAqKlJlYXNvbmluZzoqKiBDb25jaXNlLlxuKiAgICoqRW5hYmxlQ29uZmlnczogW10qKlxuKiAgICoqRm9jdXNTeW1ib2xzOiBbXSoqXG5cblRoZSByZWFzb25pbmcgaXMgY29ycmVjdC4gVGhlIHBhdGNoIG1vZGlmaWVzIGBydGxfZW5hYmxlX2x0cigpYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLCB3aGljaCBpcyBhIFBDSS9QQ0llIGRldmljZSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODE2OS9SVEw4MTY4L1JUTDgxMjUgRXRoZXJuZXQgY29udHJvbGxlcnMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci5cblxuTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI0MywiT3V0cHV0VG9rZW5zIjoxMjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowMDoyNS41OTAzMTYwOThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcnRsX2VuYWJsZV9sdHIoKWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODE2OS9SVEw4MTY4L1JUTDgxMjUgUENJZSBuZXR3b3JrIGludGVyZmFjZSBjYXJkcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHJ0bF9lbmFibGVfbHRyKClgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBSZWFsdGVrIFJUTDgxNjkvUlRMODE2OC9SVEw4MTI1IFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjAwOjI1LjU5MDM0NDY5OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwg7t6[1] Phase: Running StartedAt: 2026-09-09 13:00:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwg7t6[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-09 13:00:48 +0000 UTC FinishedAt: 2026-09-09 13:00:52 +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,}