Name: series-workflowxpz8j Phase: Failed StartedAt: 2026-08-08 08:36:56 +0000 UTC FinishedAt: 2026-08-08 08:52:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxpz8j[0] Phase: Succeeded StartedAt: 2026-08-08 08:36:56 +0000 UTC FinishedAt: 2026-08-08 08:52:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxpz8j[0].run-triage Phase: Succeeded StartedAt: 2026-08-08 08:36:56 +0000 UTC FinishedAt: 2026-08-08 08:52:46 +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+CgkJCTx0ZD4yMDI2LzA4LzA4IDA4OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFjb21fYmFtX2RtdXggZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gQkFNIERhdGEgTXVsdGlwbGV4ZXIgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgb2xkZXIgUXVhbGNvbW0gU29DcyAoZS5nLiwgTVNNODkxNiwgTVNNODk3NCkuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzbyB0aGUgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzYzI5MWYwYWQ5ZjZmYTdhMTM1NDYxZjk2NGJhNzhlYjRhZTAzNmY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwODo1MjowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5pbmRleCBjYzZhY2U4ZDY0MzcxLi45MWIxM2I5ZDNmODFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5AQCAtMTIsNiAmIzQzOzEyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pZl9hcnAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcdTAwM2VcbkBAIC03Myw2ICYjNDM7NzQsOCBAQCBzdHJ1Y3QgYmFtX2RtdXgge1xuIFx0dTMyIHBjX21hc2ssIHBjX2Fja19tYXNrO1xuIFx0d2FpdF9xdWV1ZV9oZWFkX3QgcGNfd2FpdDtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIHBjX2Fja19jb21wbGV0aW9uO1xuJiM0MztcdHN0cnVjdCBtdXRleCBwb3dlcl9sb2NrOyAvKiBQcm90ZWN0IHBvd2VyLWNvbnRyb2wgc3RhdGUgKi9cbiYjNDM7XHRib29sIHBjX3ZvdGU7XG4gXG4gXHRzdHJ1Y3QgZG1hX2NoYW4gKnJ4LCAqdHg7XG4gXHRzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSByeF9za2JzW0JBTV9ETVVYX05VTV9TS0JdO1xuQEAgLTk5LDYgJiM0MzsxMDIsMjEgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIGJvb2wgZW5hYmxlKVxuIFx0XHRcdFx0ICAgIGVuYWJsZSA/IGRtdXgtXHUwMDNlcGNfbWFzayA6IDApO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcbiYjNDM7e1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0ZG11eC1cdTAwM2VwY192b3RlID0gZW5hYmxlO1xuJiM0MztcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZW5hYmxlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZV9wcm90ZWN0ZWQoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcbiYjNDM7e1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiYjNDM7XHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBlbmFibGUpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX2FjayhzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXG4ge1xuIFx0cWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGRtdXgtXHUwMDNlcGNfYWNrLCBkbXV4LVx1MDAzZXBjX2Fja19tYXNrLFxuQEAgLTY1NSw2ICYjNDM7NjczLDggQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfZnJlZV9za2JzKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hIHNrYnNbXSxcbiBcbiBzdGF0aWMgdm9pZCBiYW1fZG11eF9wb3dlcl9vZmYoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxuIHtcbiYjNDM7XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4mIzQzO1xuIFx0aWYgKGRtdXgtXHUwMDNldHgpIHtcbiBcdFx0ZG1hZW5naW5lX3Rlcm1pbmF0ZV9zeW5jKGRtdXgtXHUwMDNldHgpO1xuIFx0XHRkbWFfcmVsZWFzZV9jaGFubmVsKGRtdXgtXHUwMDNldHgpO1xuQEAgLTY3MywyMSAmIzQzOzY5MywyOCBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9wb3dlcl9vZmYoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxuIHN0YXRpYyBpcnFyZXR1cm5fdCBiYW1fZG11eF9wY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcbiB7XG4gXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkYXRhO1xuLVx0Ym9vbCBuZXdfc3RhdGUgPSAhZG11eC1cdTAwM2VwY19zdGF0ZTtcbiYjNDM7XHRib29sIG5ld19zdGF0ZTtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuJiM0MztcdG5ld19zdGF0ZSA9ICFkbXV4LVx1MDAzZXBjX3N0YXRlO1xuIFxuIFx0ZGV2X2RiZyhkbXV4LVx1MDAzZWRldiwgXCYjMzQ7cGM6ICV1XFxuXCYjMzQ7LCBuZXdfc3RhdGUpO1xuIFxuIFx0aWYgKG5ld19zdGF0ZSkge1xuLVx0XHRpZiAoYmFtX2RtdXhfcG93ZXJfb24oZG11eCkpXG4mIzQzO1x0XHRpZiAoZG11eC1cdTAwM2VyeCB8fCBiYW1fZG11eF9wb3dlcl9vbihkbXV4KSlcbiBcdFx0XHRiYW1fZG11eF9wY19hY2soZG11eCk7XG4gXHRcdGVsc2VcbiBcdFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG4mIzQzO1x0fSBlbHNlIGlmIChkbXV4LVx1MDAzZXBjX3ZvdGUpIHtcbiYjNDM7XHRcdGRldl9kYmcoZG11eC1cdTAwM2VkZXYsIFwmIzM0O3BjIGRvd24gd2hpbGUgaG9zdCB2b3RlIGlzIGFjdGl2ZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRiYW1fZG11eF9wY19hY2soZG11eCk7XG4gXHR9IGVsc2Uge1xuIFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG4gXHRcdGJhbV9kbXV4X3BjX2FjayhkbXV4KTtcbiBcdH1cbiBcbi1cdGRtdXgtXHUwMDNlcGNfc3RhdGUgPSBuZXdfc3RhdGU7XG4mIzQzO1x0V1JJVEVfT05DRShkbXV4LVx1MDAzZXBjX3N0YXRlLCBuZXdfc3RhdGUpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFx0d2FrZV91cF9hbGwoXHUwMDI2ZG11eC1cdTAwM2VwY193YWl0KTtcbiBcbiBcdHJldHVybiBJUlFfSEFORExFRDtcbkBAIC03MDgsNyAmIzQzOzczNSwxMiBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbiBcbiBcdGRldl9kYmcoZGV2LCBcJiMzNDtydW50aW1lIHN1c3BlbmRcXG5cJiMzNDspO1xuLVx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiYjNDM7XHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBmYWxzZSk7XG4mIzQzO1x0aWYgKCFkbXV4LVx1MDAzZXBjX3N0YXRlKVxuJiM0MztcdFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTcyNCw0MCAmIzQzOzc1Niw1NSBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGJhbV9kbXV4X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0XHRcdFx0IEJBTV9ETVVYX1JFTU9URV9USU1FT1VUKSlcbiBcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4gXG4mIzQzO1x0c3luY2hyb25pemVfaXJxKGRtdXgtXHUwMDNlcGNfaXJxKTtcbiYjNDM7XG4gXHQvKiBWb3RlIGZvciBwb3dlciBzdGF0ZSAqL1xuLVx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCB0cnVlKTtcbiYjNDM7XHRiYW1fZG11eF9wY192b3RlX3Byb3RlY3RlZChkbXV4LCB0cnVlKTtcbiBcbiBcdC8qIFdhaXQgZm9yIGFjayAqL1xuIFx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2ZG11eC1cdTAwM2VwY19hY2tfY29tcGxldGlvbixcbiBcdFx0XHRcdFx0IEJBTV9ETVVYX1JFTU9URV9USU1FT1VUKSkge1xuLVx0XHRiYW1fZG11eF9wY192b3RlKGRtdXgsIGZhbHNlKTtcbiYjNDM7XHRcdGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZChkZXYpO1xuIFx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiBcdH1cbiBcbiYjNDM7XHRzeW5jaHJvbml6ZV9pcnEoZG11eC1cdTAwM2VwY19pcnEpO1xuJiM0MztcbiBcdC8qIFdhaXQgdW50aWwgd2UmIzM5O3JlIHVwICovXG4tXHRpZiAoIXdhaXRfZXZlbnRfdGltZW91dChkbXV4LVx1MDAzZXBjX3dhaXQsIGRtdXgtXHUwMDNlcGNfc3RhdGUsXG4mIzQzO1x0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCBSRUFEX09OQ0UoZG11eC1cdTAwM2VwY19zdGF0ZSksXG4gXHRcdFx0XHRCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpIHtcbi1cdFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG4mIzQzO1x0XHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcbiBcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4gXHR9XG4gXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuJiM0MztcbiBcdC8qIEVuc3VyZSB0aGF0IHdlIGFjdHVhbGx5IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseSAqL1xuIFx0aWYgKCFkbXV4LVx1MDAzZXJ4KSB7XG4tXHRcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xuJiM0MztcdFx0YmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoZG11eCwgZmFsc2UpO1xuJiM0MztcdFx0aWYgKCFkbXV4LVx1MDAzZXBjX3N0YXRlKVxuJiM0MztcdFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdFx0cmV0dXJuIC1FTlhJTztcbiBcdH1cbiBcbiBcdC8qIFJlcXVlc3QgVFggY2hhbm5lbCBpZiBuZWNlc3NhcnkgKi9cbi1cdGlmIChkbXV4LVx1MDAzZXR4KVxuJiM0MztcdGlmIChkbXV4LVx1MDAzZXR4KSB7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuIFxuIFx0ZG11eC1cdTAwM2V0eCA9IGRtYV9yZXF1ZXN0X2NoYW4oZGV2LCBcJiMzNDt0eFwmIzM0Oyk7XG4gXHRpZiAoSVNfRVJSKGRtdXgtXHUwMDNldHgpKSB7XG4gXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVxdWVzdCBUWCBETUEgY2hhbm5lbDogJXBlXFxuXCYjMzQ7LCBkbXV4LVx1MDAzZXR4KTtcbiBcdFx0ZG11eC1cdTAwM2V0eCA9IE5VTEw7XG4tXHRcdGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZChkZXYpO1xuJiM0MztcdFx0YmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoZG11eCwgZmFsc2UpO1xuJiM0MztcdFx0aWYgKCFkbXV4LVx1MDAzZXBjX3N0YXRlKVxuJiM0MztcdFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdFx0cmV0dXJuIC1FTlhJTztcbiBcdH1cbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC03OTksNiAmIzQzOzg0Niw3IEBAIHN0YXRpYyBpbnQgYmFtX2RtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2ZG11eC1cdTAwM2VwY193YWl0KTtcbiBcdGluaXRfY29tcGxldGlvbihcdTAwMjZkbXV4LVx1MDAzZXBjX2Fja19jb21wbGV0aW9uKTtcbiBcdGNvbXBsZXRlX2FsbChcdTAwMjZkbXV4LVx1MDAzZXBjX2Fja19jb21wbGV0aW9uKTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZkbXV4LVx1MDAzZXR4X2xvY2spO1xuIFx0SU5JVF9XT1JLKFx1MDAyNmRtdXgtXHUwMDNldHhfd2FrZXVwX3dvcmssIGJhbV9kbXV4X3R4X3dha2V1cF93b3JrKTtcbkBAIC04MjcsMTAgJiM0Mzs4NzUsMTEgQEAgc3RhdGljIGludCBiYW1fZG11eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0aWYgKHJldClcbiBcdFx0Z290byBlcnJfZGlzYWJsZV9wbTtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gXHRyZXQgPSBpcnFfZ2V0X2lycWNoaXBfc3RhdGUoZG11eC1cdTAwM2VwY19pcnEsIElSUUNISVBfU1RBVEVfTElORV9MRVZFTCxcbiBcdFx0XHRcdCAgICBcdTAwMjZkbXV4LVx1MDAzZXBjX3N0YXRlKTtcbiBcdGlmIChyZXQpXG4tXHRcdGdvdG8gZXJyX2Rpc2FibGVfcG07XG4mIzQzO1x0XHRnb3RvIGVycl91bmxvY2tfcG93ZXI7XG4gXG4gXHQvKiBDaGVjayBpZiByZW1vdGUgZmluaXNoZWQgaW5pdGlhbGl6YXRpb24gYmVmb3JlIHVzICovXG4gXHRpZiAoZG11eC1cdTAwM2VwY19zdGF0ZSkge1xuQEAgLTgzOSw5ICYjNDM7ODg4LDEyIEBAIHN0YXRpYyBpbnQgYmFtX2RtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0ZWxzZVxuIFx0XHRcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbiBcdH1cbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcbiBcdHJldHVybiAwO1xuIFxuJiM0MztlcnJfdW5sb2NrX3Bvd2VyOlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIGVycl9kaXNhYmxlX3BtOlxuIFx0cG1fcnVudGltZV9kaXNhYmxlKGRldik7XG4gXHRwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5kKGRldik7XG5AQCAtODcyLDEyICYjNDM7OTI0LDE1IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7XG4gXG4gXHQvKiBUcnkgdG8gd2FpdCBmb3IgcmVtb3RlIHNpZGUgdG8gZHJvcCBwb3dlciB2b3RlICovXG4tXHRpZiAoIXdhaXRfZXZlbnRfdGltZW91dChkbXV4LVx1MDAzZXBjX3dhaXQsICFkbXV4LVx1MDAzZXJ4LCBCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpXG4mIzQzO1x0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCAhUkVBRF9PTkNFKGRtdXgtXHUwMDNlcngpLFxuJiM0MztcdFx0XHRcdEJBTV9ETVVYX1JFTU9URV9USU1FT1VUKSlcbiBcdFx0ZGV2X2VycihkZXYsIFwmIzM0O1RpbWVkIG91dCB3YWl0aW5nIGZvciByZW1vdGUgc2lkZSB0byBzdXNwZW5kXFxuXCYjMzQ7KTtcbiBcbiBcdC8qIE1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGNsZWFuZWQgdXAgYmVmb3JlIHdlIHJldHVybiAqL1xuIFx0ZGlzYWJsZV9pcnEoZG11eC1cdTAwM2VwY19pcnEpO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdGJhbV9kbXV4X2ZyZWVfc2ticyhkbXV4LVx1MDAzZXR4X3NrYnMsIERNQV9UT19ERVZJQ0UpO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwODo1MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFjb21fYmFtX2RtdXggZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gQkFNIERhdGEgTXVsdGlwbGV4ZXIgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgb2xkZXIgUXVhbGNvbW0gU29DcyAoZS5nLiwgTVNNODkxNiwgTVNNODk3NCkuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzbyB0aGUgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzYzI5MWYwYWQ5ZjZmYTdhMTM1NDYxZjk2NGJhNzhlYjRhZTAzNmY2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAwODo1MjowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jIGIvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMKaW5kZXggY2M2YWNlOGQ2NDM3MS4uOTFiMTNiOWQzZjgxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaWZfYXJwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L211dGV4LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGxhdGZvcm1fZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcG1fcnVudGltZS5oJmd0OwpAQCAtNzMsNiAmIzQzOzc0LDggQEAgc3RydWN0IGJhbV9kbXV4IHsKIAl1MzIgcGNfbWFzaywgcGNfYWNrX21hc2s7CiAJd2FpdF9xdWV1ZV9oZWFkX3QgcGNfd2FpdDsKIAlzdHJ1Y3QgY29tcGxldGlvbiBwY19hY2tfY29tcGxldGlvbjsKJiM0MzsJc3RydWN0IG11dGV4IHBvd2VyX2xvY2s7IC8qIFByb3RlY3QgcG93ZXItY29udHJvbCBzdGF0ZSAqLwomIzQzOwlib29sIHBjX3ZvdGU7CiAKIAlzdHJ1Y3QgZG1hX2NoYW4gKnJ4LCAqdHg7CiAJc3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgcnhfc2tic1tCQU1fRE1VWF9OVU1fU0tCXTsKQEAgLTk5LDYgJiM0MzsxMDIsMjEgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIGJvb2wgZW5hYmxlKQogCQkJCSAgICBlbmFibGUgPyBkbXV4LSZndDtwY19tYXNrIDogMCk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBiYW1fZG11eF9wY192b3RlX2xvY2tlZChzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIGJvb2wgZW5hYmxlKQomIzQzO3sKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2RtdXgtJmd0O3Bvd2VyX2xvY2spOwomIzQzOwomIzQzOwlkbXV4LSZndDtwY192b3RlID0gZW5hYmxlOwomIzQzOwliYW1fZG11eF9wY192b3RlKGRtdXgsIGVuYWJsZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX3ZvdGVfcHJvdGVjdGVkKHN0cnVjdCBiYW1fZG11eCAqZG11eCwgYm9vbCBlbmFibGUpCiYjNDM7ewomIzQzOwltdXRleF9sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiYjNDM7CWJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGVuYWJsZSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2RtdXgtJmd0O3Bvd2VyX2xvY2spOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX2FjayhzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpCiB7CiAJcWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGRtdXgtJmd0O3BjX2FjaywgZG11eC0mZ3Q7cGNfYWNrX21hc2ssCkBAIC02NTUsNiAmIzQzOzY3Myw4IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X2ZyZWVfc2ticyhzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSBza2JzW10sCiAKIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3Bvd2VyX29mZihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpCiB7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKJiM0MzsKIAlpZiAoZG11eC0mZ3Q7dHgpIHsKIAkJZG1hZW5naW5lX3Rlcm1pbmF0ZV9zeW5jKGRtdXgtJmd0O3R4KTsKIAkJZG1hX3JlbGVhc2VfY2hhbm5lbChkbXV4LSZndDt0eCk7CkBAIC02NzMsMjEgJiM0Mzs2OTMsMjggQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfcG93ZXJfb2ZmKHN0cnVjdCBiYW1fZG11eCAqZG11eCkKIHN0YXRpYyBpcnFyZXR1cm5fdCBiYW1fZG11eF9wY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkYXRhOwotCWJvb2wgbmV3X3N0YXRlID0gIWRtdXgtJmd0O3BjX3N0YXRlOwomIzQzOwlib29sIG5ld19zdGF0ZTsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2RtdXgtJmd0O3Bvd2VyX2xvY2spOwomIzQzOwluZXdfc3RhdGUgPSAhZG11eC0mZ3Q7cGNfc3RhdGU7CiAKIAlkZXZfZGJnKGRtdXgtJmd0O2RldiwgJiMzNDtwYzogJXVcbiYjMzQ7LCBuZXdfc3RhdGUpOwogCiAJaWYgKG5ld19zdGF0ZSkgewotCQlpZiAoYmFtX2RtdXhfcG93ZXJfb24oZG11eCkpCiYjNDM7CQlpZiAoZG11eC0mZ3Q7cnggfHwgYmFtX2RtdXhfcG93ZXJfb24oZG11eCkpCiAJCQliYW1fZG11eF9wY19hY2soZG11eCk7CiAJCWVsc2UKIAkJCWJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTsKJiM0MzsJfSBlbHNlIGlmIChkbXV4LSZndDtwY192b3RlKSB7CiYjNDM7CQlkZXZfZGJnKGRtdXgtJmd0O2RldiwgJiMzNDtwYyBkb3duIHdoaWxlIGhvc3Qgdm90ZSBpcyBhY3RpdmVcbiYjMzQ7KTsKJiM0MzsJCWJhbV9kbXV4X3BjX2FjayhkbXV4KTsKIAl9IGVsc2UgewogCQliYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7CiAJCWJhbV9kbXV4X3BjX2FjayhkbXV4KTsKIAl9CiAKLQlkbXV4LSZndDtwY19zdGF0ZSA9IG5ld19zdGF0ZTsKJiM0MzsJV1JJVEVfT05DRShkbXV4LSZndDtwY19zdGF0ZSwgbmV3X3N0YXRlKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAJd2FrZV91cF9hbGwoJmFtcDtkbXV4LSZndDtwY193YWl0KTsKIAogCXJldHVybiBJUlFfSEFORExFRDsKQEAgLTcwOCw3ICYjNDM7NzM1LDEyIEBAIHN0YXRpYyBpbnQgYmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAlzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAogCWRldl9kYmcoZGV2LCAmIzM0O3J1bnRpbWUgc3VzcGVuZFxuJiMzNDspOwotCWJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiYjNDM7CWJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGZhbHNlKTsKJiM0MzsJaWYgKCFkbXV4LSZndDtwY19zdGF0ZSkKJiM0MzsJCWJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTcyNCw0MCAmIzQzOzc1Niw1NSBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGJhbV9kbXV4X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJCQkJIEJBTV9ETVVYX1JFTU9URV9USU1FT1VUKSkKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAKJiM0MzsJc3luY2hyb25pemVfaXJxKGRtdXgtJmd0O3BjX2lycSk7CiYjNDM7CiAJLyogVm90ZSBmb3IgcG93ZXIgc3RhdGUgKi8KLQliYW1fZG11eF9wY192b3RlKGRtdXgsIHRydWUpOwomIzQzOwliYW1fZG11eF9wY192b3RlX3Byb3RlY3RlZChkbXV4LCB0cnVlKTsKIAogCS8qIFdhaXQgZm9yIGFjayAqLwogCWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZhbXA7ZG11eC0mZ3Q7cGNfYWNrX2NvbXBsZXRpb24sCiAJCQkJCSBCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpIHsKLQkJYmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7CiYjNDM7CQliYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTsKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCiYjNDM7CXN5bmNocm9uaXplX2lycShkbXV4LSZndDtwY19pcnEpOwomIzQzOwogCS8qIFdhaXQgdW50aWwgd2UmIzM5O3JlIHVwICovCi0JaWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC0mZ3Q7cGNfd2FpdCwgZG11eC0mZ3Q7cGNfc3RhdGUsCiYjNDM7CWlmICghd2FpdF9ldmVudF90aW1lb3V0KGRtdXgtJmd0O3BjX3dhaXQsIFJFQURfT05DRShkbXV4LSZndDtwY19zdGF0ZSksCiAJCQkJQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7Ci0JCWJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpOwomIzQzOwkJYmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKGRldik7CiAJCXJldHVybiAtRVRJTUVET1VUOwogCX0KIAomIzQzOwltdXRleF9sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiYjNDM7CiAJLyogRW5zdXJlIHRoYXQgd2UgYWN0dWFsbHkgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5ICovCiAJaWYgKCFkbXV4LSZndDtyeCkgewotCQliYW1fZG11eF9wY192b3RlKGRtdXgsIGZhbHNlKTsKJiM0MzsJCWJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGZhbHNlKTsKJiM0MzsJCWlmICghZG11eC0mZ3Q7cGNfc3RhdGUpCiYjNDM7CQkJYmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAJCXJldHVybiAtRU5YSU87CiAJfQogCiAJLyogUmVxdWVzdCBUWCBjaGFubmVsIGlmIG5lY2Vzc2FyeSAqLwotCWlmIChkbXV4LSZndDt0eCkKJiM0MzsJaWYgKGRtdXgtJmd0O3R4KSB7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKIAkJcmV0dXJuIDA7CiYjNDM7CX0KIAogCWRtdXgtJmd0O3R4ID0gZG1hX3JlcXVlc3RfY2hhbihkZXYsICYjMzQ7dHgmIzM0Oyk7CiAJaWYgKElTX0VSUihkbXV4LSZndDt0eCkpIHsKIAkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHJlcXVlc3QgVFggRE1BIGNoYW5uZWw6ICVwZVxuJiMzNDssIGRtdXgtJmd0O3R4KTsKIAkJZG11eC0mZ3Q7dHggPSBOVUxMOwotCQliYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTsKJiM0MzsJCWJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGZhbHNlKTsKJiM0MzsJCWlmICghZG11eC0mZ3Q7cGNfc3RhdGUpCiYjNDM7CQkJYmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAJCXJldHVybiAtRU5YSU87CiAJfQomIzQzOwltdXRleF91bmxvY2soJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKIAogCXJldHVybiAwOwogfQpAQCAtNzk5LDYgJiM0Mzs4NDYsNyBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaW5pdF93YWl0cXVldWVfaGVhZCgmYW1wO2RtdXgtJmd0O3BjX3dhaXQpOwogCWluaXRfY29tcGxldGlvbigmYW1wO2RtdXgtJmd0O3BjX2Fja19jb21wbGV0aW9uKTsKIAljb21wbGV0ZV9hbGwoJmFtcDtkbXV4LSZndDtwY19hY2tfY29tcGxldGlvbik7CiYjNDM7CW11dGV4X2luaXQoJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKIAogCXNwaW5fbG9ja19pbml0KCZhbXA7ZG11eC0mZ3Q7dHhfbG9jayk7CiAJSU5JVF9XT1JLKCZhbXA7ZG11eC0mZ3Q7dHhfd2FrZXVwX3dvcmssIGJhbV9kbXV4X3R4X3dha2V1cF93b3JrKTsKQEAgLTgyNywxMCAmIzQzOzg3NSwxMSBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKHJldCkKIAkJZ290byBlcnJfZGlzYWJsZV9wbTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAJcmV0ID0gaXJxX2dldF9pcnFjaGlwX3N0YXRlKGRtdXgtJmd0O3BjX2lycSwgSVJRQ0hJUF9TVEFURV9MSU5FX0xFVkVMLAogCQkJCSAgICAmYW1wO2RtdXgtJmd0O3BjX3N0YXRlKTsKIAlpZiAocmV0KQotCQlnb3RvIGVycl9kaXNhYmxlX3BtOwomIzQzOwkJZ290byBlcnJfdW5sb2NrX3Bvd2VyOwogCiAJLyogQ2hlY2sgaWYgcmVtb3RlIGZpbmlzaGVkIGluaXRpYWxpemF0aW9uIGJlZm9yZSB1cyAqLwogCWlmIChkbXV4LSZndDtwY19zdGF0ZSkgewpAQCAtODM5LDkgJiM0Mzs4ODgsMTIgQEAgc3RhdGljIGludCBiYW1fZG11eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQllbHNlCiAJCQliYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7CiAJfQomIzQzOwltdXRleF91bmxvY2soJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKIAogCXJldHVybiAwOwogCiYjNDM7ZXJyX3VubG9ja19wb3dlcjoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiBlcnJfZGlzYWJsZV9wbToKIAlwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTsKIAlwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5kKGRldik7CkBAIC04NzIsMTIgJiM0Mzs5MjQsMTUgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7CiAKIAkvKiBUcnkgdG8gd2FpdCBmb3IgcmVtb3RlIHNpZGUgdG8gZHJvcCBwb3dlciB2b3RlICovCi0JaWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC0mZ3Q7cGNfd2FpdCwgIWRtdXgtJmd0O3J4LCBCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpCiYjNDM7CWlmICghd2FpdF9ldmVudF90aW1lb3V0KGRtdXgtJmd0O3BjX3dhaXQsICFSRUFEX09OQ0UoZG11eC0mZ3Q7cngpLAomIzQzOwkJCQlCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpCiAJCWRldl9lcnIoZGV2LCAmIzM0O1RpbWVkIG91dCB3YWl0aW5nIGZvciByZW1vdGUgc2lkZSB0byBzdXNwZW5kXG4mIzM0Oyk7CiAKIAkvKiBNYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBjbGVhbmVkIHVwIGJlZm9yZSB3ZSByZXR1cm4gKi8KIAlkaXNhYmxlX2lycShkbXV4LSZndDtwY19pcnEpOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAJYmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKIAliYW1fZG11eF9mcmVlX3NrYnMoZG11eC0mZ3Q7dHhfc2ticywgRE1BX1RPX0RFVklDRSk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU1NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXV0FOIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoZWQgYGRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGBwb3dlcl9sb2NrYCBtdXRleCB0byBwcm90ZWN0IHBvd2VyLWNvbnRyb2wgc3RhdGUgd2l0aGluIHRoZSBgYmFtX2RtdXhgIGRyaXZlci4gVGhlIHBhdGNoIHNlZW1zIHRvIGFmZmVjdCBzZXZlcmFsIGtleSBmdW5jdGlvbnM6IGBiYW1fZG11eF9wY192b3RlYCwgYGJhbV9kbXV4X3Bvd2VyX29mZmAsIGBiYW1fZG11eF9wY19pcnFgLCBgYmFtX2RtdXhfcnVudGltZV9zdXNwZW5kYCwgYGJhbV9kbXV4X3J1bnRpbWVfcmVzdW1lYCwgYGJhbV9kbXV4X3Byb2JlYCwgYW5kIGBiYW1fZG11eF9yZW1vdmVgLiBGcm9tIHRoZSBmaWxlIG5hbWUsIGl0JiMzOTtzIGNsZWFyIHRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEJBTSBEYXRhIE11bHRpcGxleGVyLCB3aGljaCBpcyBXV0FOIHJlbGF0ZWQsIHNvIEkmIzM5O20gdGhpbmtpbmcgY2VsbHVsYXIgZGF0YS4KCk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHJlYWNoYWJpbGl0eS4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgV1dBTiBkcml2ZXIsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIFFFTVUgb3IgR0NFIGVudmlyb25tZW50LiBUaGVzZSBXV0FOIGRyaXZlcnMgb2Z0ZW4gaGF2ZSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgc28gSSBzaG91bGQgc2VlIGlmIHRoZSBwbGF0Zm9ybSBJJiMzOTttIHdvcmtpbmcgd2l0aCBldmVuIGhhcyBhIGNoYW5jZSBvZiBydW5uaW5nIHRoaXMuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIHRvIHNlZSBpZiBJIGNhbiBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIHNlbGVjdGFibGUsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFNlYXJjaGluZyBmb3IgYHFjb21fYmFtX2RtdXhgIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA4OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Fjb21fYmFtX2RtdXgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7TUFJTlRBSU5FUlM9MjIwOTc9RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxiYW0tZG11eC55YW1sXG5NQUlOVEFJTkVSUzoyMjA5ODpGOlx0ZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbk1BSU5UQUlORVJTLTIyMDk5LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz02NT1jb25maWcgUUNPTV9CQU1fRE1VWFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03NS1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NzY6XHQgIGNhbGxlZCBxY29tX2JhbV9kbXV4LlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTc3LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU9MTI9b2JqLSQoQ09ORklHX01ISV9XV0FOX01CSU0pICYjNDM7PSBtaGlfd3dhbl9tYmltLm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX1FDT01fQkFNX0RNVVgpICYjNDM7PSBxY29tX2JhbV9kbXV4Lm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMTQtb2JqLSQoQ09ORklHX1JQTVNHX1dXQU5fQ1RSTCkgJiM0Mzs9IHJwbXNnX3d3YW5fY3RybC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM2MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBRQ09NX0JBTV9ETVVYIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBgUUNPTV9CQU1fRE1VWGAuIExldCYjMzk7cyBkaWcgaW50byB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgZmlsZXMgdG8gc2VlIHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC93d2FuL0tjb25maWdgLiBUaGlzIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gV1dBTiAoV2lyZWxlc3MgV2lkZSBBcmVhIE5ldHdvcmspIGFuZCBRdWFsY29tbSAoUUNPTSkgaGFyZHdhcmUsIGFuZCBCQU0gKHByb2JhYmx5IEJ1cyBBY2Nlc3MgTWFuYWdlcikgc291bmRzIGxpa2UgYSBsaWtlbHkgY29tcG9uZW50IHRvIGJlIGZvdW5kIHdpdGhpbiB0aGUgY29udGV4dCBvZiBhIFdXQU4gZHJpdmVyLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGNvbmRpdGlvbmFsIGxvZ2ljIG9yIGFuIGluY2x1c2lvbiB0aGF0JiMzOTtzIHRpZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSByZWFkaW5nIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgaW5mb3JtYXRpb24gSSBjYW4gZ2xlYW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFFDT01fQkFNX0RNVVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTUzPWNvbmZpZyBNSElfV1dBTl9NQklNXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTY0LVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjY1OmNvbmZpZyBRQ09NX0JBTV9ETVVYXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcxOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS2VybmVsJiMzOTtzIFdXQU4gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgV1dBTiAoV2lyZWxlc3MgV2lkZSBBcmVhIE5ldHdvcmspIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuIEl0JiMzOTtzIHVzdWFsbHkgdGhlIEtjb25maWcgZmlsZSB0aGF0IGRpY3RhdGVzIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gSSByZWNhbGwgdGhhdCBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQsIGJhc2VkIG9uIHByaW9yIGV4cGVyaWVuY2UuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGFyb3VuZCBsaW5lIDY1OyBJIGtub3cgdGhhdCBLY29uZmlnIGZpbGVzIGFyZSBzdHJ1Y3R1cmVkLCBzbyB1c3VhbGx5LCBJIGNhbiBmaW5kIGtleSBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvciBpbml0aWFsIGRyaXZlciBzZWxlY3Rpb24gaW4gdGhhdCBhcmVhLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byBhc3Nlc3MgdGhlIGRpZmZlcmVudCBkcml2ZXJzIGluIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGluY2x1ZGVkLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHQgICAgICAgICAgSUQgMC4gQWRkaXRpb25hbCBsaW5rcyBjYW4gYmUgY3JlYXRlZCB2aWEgd3dhbiBydG5ldGxpbmsgdHlwZS5cbiAgNjE6XHRcbiAgNjI6XHQgICAgICAgICAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gIDYzOlx0ICAgICAgICAgIGNhbGxlZCBtaGlfd3dhbl9tYmltLlxuICA2NDpcdFxuICA2NTpcdGNvbmZpZyBRQ09NX0JBTV9ETVVYXG4gIDY2Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXCYjMzQ7XG4gIDY3Olx0XHRkZXBlbmRzIG9uIChETUFfRU5HSU5FIFx1MDAyNlx1MDAyNiBQTSBcdTAwMjZcdTAwMjYgUUNPTV9TTUVNX1NUQVRFKSB8fCBDT01QSUxFX1RFU1RcbiAgNjg6XHRcdGhlbHBcbiAgNjk6XHRcdCAgVGhlIEJBTSBEYXRhIE11bHRpcGxleGVyIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbmV0d29yayBkYXRhIGNoYW5uZWxzXG4gIDcwOlx0XHQgIG9mIG1vZGVtcyBpbnRlZ3JhdGVkIGludG8gbWFueSBvbGRlciBRdWFsY29tbSBTb0NzLCBlLmcuIFF1YWxjb21tXG4gIDcxOlx0XHQgIE1TTTg5MTYgb3IgTVNNODk3NC4gVGhlIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIHZpYSBRTUkvQVQgZnJvbVxuICA3MjpcdFx0ICB1c2Vyc3BhY2Ugd2l0aCBjb250cm9sIHBvcnRzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBXV0FOIHN1YnN5c3RlbVxuICA3MzpcdFx0ICAoQ09ORklHX1JQTVNHX1dXQU5fQ1RSTCkgb3IgUVJUUiBuZXR3b3JrIHNvY2tldHMgKENPTkZJR19RUlRSKS5cbiAgNzQ6XHRcbiAgNzU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gIDc2Olx0XHQgIGNhbGxlZCBxY29tX2JhbV9kbXV4LlxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBSUE1TR19XV0FOX0NUUkxcbiAgNzk6XHRcdHRyaXN0YXRlIFwmIzM0O1JQTVNHIFdXQU4gY29udHJvbCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwODo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzI3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBRdWFsY29tbSBNb2RlbSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBUaGUgZGVzY3JpcHRpb24gc2F5cyBpdCYjMzk7cyBtZWFudCBmb3IgdGhvc2Ugb2xkZXIgUXVhbGNvbW0gU29DcyB3aXRoIGludGVncmF0ZWQgbW9kZW1zLCB5b3Uga25vdywgdGhlIG9uZXMgbGlrZSB0aGUgTVNNODkxNiBvciBNU004OTc0LiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhpcyBhcyBhIHBsYXRmb3JtIGRyaXZlciwgYSB2ZXJ5IHNwZWNpZmljIHR5cGUgdGFpbG9yZWQgZm9yIGhhcmR3YXJlIGludGVncmF0ZWQgb24gdGhhdCBsZXZlbC4KClRvIGdldCBhIGJldHRlciBncmFzcCBvZiBpdHMgc3RydWN0dXJlLCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIGp1bXAgaW50byBgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNgLiBUaGUgYHBsYXRmb3JtX2RyaXZlcmAgd2lsbCBiZSBhIGNydWNpYWwgcG9pbnQgb2YgcmVmZXJlbmNlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYW5kIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkgYW50aWNpcGF0ZSB0aGlzIGZpbGUgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IGluc2lnaHQgaW50byBpdHMgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz05NDc9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYmFtX2RtdXhfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTQ4LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTQ5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJhbV9kbXV4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk1MC1cdC5wcm9iZSA9IGJhbV9kbXV4X3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk1Ny19O1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTU4Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYmFtX2RtdXhfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgyMQoJCQkJCQkJb3V0cHV0OiAxMTAKCQkJCQkJCXRob3VnaHRzOiAyMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHFjb21fYmFtX2RtdXhgIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIGBxY29tX2JhbV9kbXV4YC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHJpZ2h0PyBEZXZpY2VzIGFyZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIENhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIHRoaW5nIGluIFFFTVU/IE5vcGUsIHRoYXQmIzM5O3MgYSBuby1nby4gUUVNVSBkb2VzbiYjMzk7dCwgYnkgZGVmYXVsdCwgZW11bGF0ZSB0aGF0IFF1YWxjb21tIEJBTS1ETVVYIGhhcmR3YXJlLiBFdmVuIGlmIGl0ICpkaWQqLCBpdCYjMzk7cyBzdWNoIGEgc3BlY2lmaWMgU29DIHBlcmlwaGVyYWwsIGl0JiMzOTtzIHVubGlrZWx5IHRvIGJlIGJyb2FkbHkgYWNjZXNzaWJsZS4KCkhtbSwgY291bGQgSSBwb3NzaWJseSBpbnN0YW50aWF0ZSBpdCB0aHJvdWdoIGBzeXNmc2Agb3Igc29tZSBvdGhlciB1c2VyLXNwYWNlIGludGVyZmFjZT8gTm8sIGl0JiMzOTtzIGRlZmluZWQgYXMgYW4gT0YgZGV2aWNlLCBzbyB0aGF0JiMzOTtzIG5vdCBnb2luZyB0byB3b3JrIGVpdGhlci4gVGhlIHBhdGNoIGl0c2VsZiBpcyBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiB3aXRoaW4gdGhlIHBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eSBvZiBgcWNvbV9iYW1fZG11eGAsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBIb3dldmVyLCBnaXZlbiB0aGF0IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIGFuZCBpdCYjMzk7cyBidWlsdCBmb3IgUXVhbGNvbW0gU29DcywgaXQmIzM5O3MgY2xlYXIgaXQgd29uJiMzOTt0IGJlIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEdDRSBhbmQgUUVNVSBhcmUgb3V0LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJcyB0aGVyZSBhbnkgY29uY2VpdmFibGUgd2F5IHRvIHRyaWdnZXIgdGhpcyBmdW5jdGlvbmFsaXR5IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gVGhlIHByb2JlIGZ1bmN0aW9uIGl0c2VsZiByZXF1aXJlcyBhIGAmIzM0O3Fjb20sYmFtLWRtdXgmIzM0O2AgY29tcGF0aWJsZSBzdHJpbmcsIHdoaWNoIGlzIHRoZSBmaXJzdCBoYXJkd2FyZSBzcGVjaWZpYyBmbGFnLiBPbiB0b3Agb2YgdGhhdCwgaXQgbmVlZHMgdGhlIGBwY19hY2tgIHNtZW0gc3RhdGUsIGBwY19pcnFgLCBgdHhgLCBhbmQgYHJ4YCBETUEgY2hhbm5lbHMuIENsZWFybHksIHRoaXMgaXMgZGVlcGx5IHRpZWQgdG8gdGhlIGhhcmR3YXJlLgoKKipWZXJkaWN0OiBXb3J0aEZ1enppbmc9ZmFsc2UuIFRoaXMgZHJpdmVyIGlzbiYjMzk7dCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLioqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA4OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFjb21fYmFtX2RtdXggZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gQkFNIERhdGEgTXVsdGlwbGV4ZXIgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgb2xkZXIgUXVhbGNvbW0gU29DcyAoZS5nLiwgTVNNODkxNiwgTVNNODk3NCkuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzbyB0aGUgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxY29tX2JhbV9kbXV4IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIEJBTSBEYXRhIE11bHRpcGxleGVyIGhhcmR3YXJlIGZvdW5kIGluIHNwZWNpZmljIG9sZGVyIFF1YWxjb21tIFNvQ3MgKGUuZy4sIE1TTTg5MTYsIE1TTTg5NzQpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgc28gdGhlIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwODo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MTAuNTA0NzQzNTIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ3ODU4NDkxODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWNvbV9iYW1fZG11eCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBCQU0gRGF0YSBNdWx0aXBsZXhlciBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBvbGRlciBRdWFsY29tbSBTb0NzIChlLmcuLCBNU004OTE2LCBNU004OTc0KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MTAuNTA0NzQ5MTExWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjczMDIxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYzI5MWYwYWQ5ZjZmYTdhMTM1NDYxZjk2NGJhNzhlYjRhZTAzNmY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDggMDg6NTI6MDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgYi9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1xcbmluZGV4IGNjNmFjZThkNjQzNzEuLjkxYjEzYjlkM2Y4MWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1xcbkBAIC0xMiw2ICsxMiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pZl9hcnAuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFxcdTAwM2VcXG5AQCAtNzMsNiArNzQsOCBAQCBzdHJ1Y3QgYmFtX2RtdXgge1xcbiBcXHR1MzIgcGNfbWFzaywgcGNfYWNrX21hc2s7XFxuIFxcdHdhaXRfcXVldWVfaGVhZF90IHBjX3dhaXQ7XFxuIFxcdHN0cnVjdCBjb21wbGV0aW9uIHBjX2Fja19jb21wbGV0aW9uO1xcbitcXHRzdHJ1Y3QgbXV0ZXggcG93ZXJfbG9jazsgLyogUHJvdGVjdCBwb3dlci1jb250cm9sIHN0YXRlICovXFxuK1xcdGJvb2wgcGNfdm90ZTtcXG4gXFxuIFxcdHN0cnVjdCBkbWFfY2hhbiAqcngsICp0eDtcXG4gXFx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgcnhfc2tic1tCQU1fRE1VWF9OVU1fU0tCXTtcXG5AQCAtOTksNiArMTAyLDIxIEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX3ZvdGUoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcXG4gXFx0XFx0XFx0XFx0ICAgIGVuYWJsZSA/IGRtdXgtXFx1MDAzZXBjX21hc2sgOiAwKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcXG4re1xcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4rXFxuK1xcdGRtdXgtXFx1MDAzZXBjX3ZvdGUgPSBlbmFibGU7XFxuK1xcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZW5hYmxlKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZV9wcm90ZWN0ZWQoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4rXFx0YmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoZG11eCwgZW5hYmxlKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfYWNrKHN0cnVjdCBiYW1fZG11eCAqZG11eClcXG4ge1xcbiBcXHRxY29tX3NtZW1fc3RhdGVfdXBkYXRlX2JpdHMoZG11eC1cXHUwMDNlcGNfYWNrLCBkbXV4LVxcdTAwM2VwY19hY2tfbWFzayxcXG5AQCAtNjU1LDYgKzY3Myw4IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X2ZyZWVfc2ticyhzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSBza2JzW10sXFxuIFxcbiBzdGF0aWMgdm9pZCBiYW1fZG11eF9wb3dlcl9vZmYoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxcbiB7XFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbitcXG4gXFx0aWYgKGRtdXgtXFx1MDAzZXR4KSB7XFxuIFxcdFxcdGRtYWVuZ2luZV90ZXJtaW5hdGVfc3luYyhkbXV4LVxcdTAwM2V0eCk7XFxuIFxcdFxcdGRtYV9yZWxlYXNlX2NoYW5uZWwoZG11eC1cXHUwMDNldHgpO1xcbkBAIC02NzMsMjEgKzY5MywyOCBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9wb3dlcl9vZmYoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxcbiBzdGF0aWMgaXJxcmV0dXJuX3QgYmFtX2RtdXhfcGNfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuIHtcXG4gXFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gZGF0YTtcXG4tXFx0Ym9vbCBuZXdfc3RhdGUgPSAhZG11eC1cXHUwMDNlcGNfc3RhdGU7XFxuK1xcdGJvb2wgbmV3X3N0YXRlO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuK1xcdG5ld19zdGF0ZSA9ICFkbXV4LVxcdTAwM2VwY19zdGF0ZTtcXG4gXFxuIFxcdGRldl9kYmcoZG11eC1cXHUwMDNlZGV2LCBcXFwicGM6ICV1XFxcXG5cXFwiLCBuZXdfc3RhdGUpO1xcbiBcXG4gXFx0aWYgKG5ld19zdGF0ZSkge1xcbi1cXHRcXHRpZiAoYmFtX2RtdXhfcG93ZXJfb24oZG11eCkpXFxuK1xcdFxcdGlmIChkbXV4LVxcdTAwM2VyeCB8fCBiYW1fZG11eF9wb3dlcl9vbihkbXV4KSlcXG4gXFx0XFx0XFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcXG4rXFx0fSBlbHNlIGlmIChkbXV4LVxcdTAwM2VwY192b3RlKSB7XFxuK1xcdFxcdGRldl9kYmcoZG11eC1cXHUwMDNlZGV2LCBcXFwicGMgZG93biB3aGlsZSBob3N0IHZvdGUgaXMgYWN0aXZlXFxcXG5cXFwiKTtcXG4rXFx0XFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XFxuIFxcdFxcdGJhbV9kbXV4X3BjX2FjayhkbXV4KTtcXG4gXFx0fVxcbiBcXG4tXFx0ZG11eC1cXHUwMDNlcGNfc3RhdGUgPSBuZXdfc3RhdGU7XFxuK1xcdFdSSVRFX09OQ0UoZG11eC1cXHUwMDNlcGNfc3RhdGUsIG5ld19zdGF0ZSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuIFxcdHdha2VfdXBfYWxsKFxcdTAwMjZkbXV4LVxcdTAwM2VwY193YWl0KTtcXG4gXFxuIFxcdHJldHVybiBJUlFfSEFORExFRDtcXG5AQCAtNzA4LDcgKzczNSwxMiBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbiBcXG4gXFx0ZGV2X2RiZyhkZXYsIFxcXCJydW50aW1lIHN1c3BlbmRcXFxcblxcXCIpO1xcbi1cXHRiYW1fZG11eF9wY192b3RlKGRtdXgsIGZhbHNlKTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbitcXHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBmYWxzZSk7XFxuK1xcdGlmICghZG11eC1cXHUwMDNlcGNfc3RhdGUpXFxuK1xcdFxcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTcyNCw0MCArNzU2LDU1IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYmFtX2RtdXhfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRcXHRcXHRcXHRcXHQgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxcbiBcXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4gXFxuK1xcdHN5bmNocm9uaXplX2lycShkbXV4LVxcdTAwM2VwY19pcnEpO1xcbitcXG4gXFx0LyogVm90ZSBmb3IgcG93ZXIgc3RhdGUgKi9cXG4tXFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCB0cnVlKTtcXG4rXFx0YmFtX2RtdXhfcGNfdm90ZV9wcm90ZWN0ZWQoZG11eCwgdHJ1ZSk7XFxuIFxcbiBcXHQvKiBXYWl0IGZvciBhY2sgKi9cXG4gXFx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNmRtdXgtXFx1MDAzZXBjX2Fja19jb21wbGV0aW9uLFxcbiBcXHRcXHRcXHRcXHRcXHQgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7XFxuLVxcdFxcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xcbitcXHRcXHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcXG4gXFx0XFx0cmV0dXJuIC1FVElNRURPVVQ7XFxuIFxcdH1cXG4gXFxuK1xcdHN5bmNocm9uaXplX2lycShkbXV4LVxcdTAwM2VwY19pcnEpO1xcbitcXG4gXFx0LyogV2FpdCB1bnRpbCB3ZSdyZSB1cCAqL1xcbi1cXHRpZiAoIXdhaXRfZXZlbnRfdGltZW91dChkbXV4LVxcdTAwM2VwY193YWl0LCBkbXV4LVxcdTAwM2VwY19zdGF0ZSxcXG4rXFx0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cXHUwMDNlcGNfd2FpdCwgUkVBRF9PTkNFKGRtdXgtXFx1MDAzZXBjX3N0YXRlKSxcXG4gXFx0XFx0XFx0XFx0QkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7XFxuLVxcdFxcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xcbitcXHRcXHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcXG4gXFx0XFx0cmV0dXJuIC1FVElNRURPVVQ7XFxuIFxcdH1cXG4gXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbitcXG4gXFx0LyogRW5zdXJlIHRoYXQgd2UgYWN0dWFsbHkgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5ICovXFxuIFxcdGlmICghZG11eC1cXHUwMDNlcngpIHtcXG4tXFx0XFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XFxuK1xcdFxcdGJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGZhbHNlKTtcXG4rXFx0XFx0aWYgKCFkbXV4LVxcdTAwM2VwY19zdGF0ZSlcXG4rXFx0XFx0XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbiBcXHRcXHRyZXR1cm4gLUVOWElPO1xcbiBcXHR9XFxuIFxcbiBcXHQvKiBSZXF1ZXN0IFRYIGNoYW5uZWwgaWYgbmVjZXNzYXJ5ICovXFxuLVxcdGlmIChkbXV4LVxcdTAwM2V0eClcXG4rXFx0aWYgKGRtdXgtXFx1MDAzZXR4KSB7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuIFxcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuIFxcbiBcXHRkbXV4LVxcdTAwM2V0eCA9IGRtYV9yZXF1ZXN0X2NoYW4oZGV2LCBcXFwidHhcXFwiKTtcXG4gXFx0aWYgKElTX0VSUihkbXV4LVxcdTAwM2V0eCkpIHtcXG4gXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gcmVxdWVzdCBUWCBETUEgY2hhbm5lbDogJXBlXFxcXG5cXFwiLCBkbXV4LVxcdTAwM2V0eCk7XFxuIFxcdFxcdGRtdXgtXFx1MDAzZXR4ID0gTlVMTDtcXG4tXFx0XFx0YmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKGRldik7XFxuK1xcdFxcdGJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGZhbHNlKTtcXG4rXFx0XFx0aWYgKCFkbXV4LVxcdTAwM2VwY19zdGF0ZSlcXG4rXFx0XFx0XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbiBcXHRcXHRyZXR1cm4gLUVOWElPO1xcbiBcXHR9XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC03OTksNiArODQ2LDcgQEAgc3RhdGljIGludCBiYW1fZG11eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFxcdTAwMjZkbXV4LVxcdTAwM2VwY193YWl0KTtcXG4gXFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZkbXV4LVxcdTAwM2VwY19hY2tfY29tcGxldGlvbik7XFxuIFxcdGNvbXBsZXRlX2FsbChcXHUwMDI2ZG11eC1cXHUwMDNlcGNfYWNrX2NvbXBsZXRpb24pO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4gXFxuIFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkbXV4LVxcdTAwM2V0eF9sb2NrKTtcXG4gXFx0SU5JVF9XT1JLKFxcdTAwMjZkbXV4LVxcdTAwM2V0eF93YWtldXBfd29yaywgYmFtX2RtdXhfdHhfd2FrZXVwX3dvcmspO1xcbkBAIC04MjcsMTAgKzg3NSwxMSBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGdvdG8gZXJyX2Rpc2FibGVfcG07XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4gXFx0cmV0ID0gaXJxX2dldF9pcnFjaGlwX3N0YXRlKGRtdXgtXFx1MDAzZXBjX2lycSwgSVJRQ0hJUF9TVEFURV9MSU5FX0xFVkVMLFxcbiBcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmRtdXgtXFx1MDAzZXBjX3N0YXRlKTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0Z290byBlcnJfZGlzYWJsZV9wbTtcXG4rXFx0XFx0Z290byBlcnJfdW5sb2NrX3Bvd2VyO1xcbiBcXG4gXFx0LyogQ2hlY2sgaWYgcmVtb3RlIGZpbmlzaGVkIGluaXRpYWxpemF0aW9uIGJlZm9yZSB1cyAqL1xcbiBcXHRpZiAoZG11eC1cXHUwMDNlcGNfc3RhdGUpIHtcXG5AQCAtODM5LDkgKzg4OCwxMiBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbiBcXHR9XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuK2Vycl91bmxvY2tfcG93ZXI6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuIGVycl9kaXNhYmxlX3BtOlxcbiBcXHRwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTtcXG4gXFx0cG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChkZXYpO1xcbkBAIC04NzIsMTIgKzkyNCwxNSBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7XFxuIFxcbiBcXHQvKiBUcnkgdG8gd2FpdCBmb3IgcmVtb3RlIHNpZGUgdG8gZHJvcCBwb3dlciB2b3RlICovXFxuLVxcdGlmICghd2FpdF9ldmVudF90aW1lb3V0KGRtdXgtXFx1MDAzZXBjX3dhaXQsICFkbXV4LVxcdTAwM2VyeCwgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxcbitcXHRpZiAoIXdhaXRfZXZlbnRfdGltZW91dChkbXV4LVxcdTAwM2VwY193YWl0LCAhUkVBRF9PTkNFKGRtdXgtXFx1MDAzZXJ4KSxcXG4rXFx0XFx0XFx0XFx0QkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxcbiBcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlRpbWVkIG91dCB3YWl0aW5nIGZvciByZW1vdGUgc2lkZSB0byBzdXNwZW5kXFxcXG5cXFwiKTtcXG4gXFxuIFxcdC8qIE1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGNsZWFuZWQgdXAgYmVmb3JlIHdlIHJldHVybiAqL1xcbiBcXHRkaXNhYmxlX2lycShkbXV4LVxcdTAwM2VwY19pcnEpO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4gXFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbiBcXHRiYW1fZG11eF9mcmVlX3NrYnMoZG11eC1cXHUwMDNldHhfc2ticywgRE1BX1RPX0RFVklDRSk7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA4OjUyOjEwLjkzMjY3NTI5M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI0MzU3OTAzNjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWNvbV9iYW1fZG11eCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBCQU0gRGF0YSBNdWx0aXBsZXhlciBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBvbGRlciBRdWFsY29tbSBTb0NzIChlLmcuLCBNU004OTE2LCBNU004OTc0KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2MyOTFmMGFkOWY2ZmE3YTEzNTQ2MWY5NjRiYTc4ZWI0YWUwMzZmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMDg6NTI6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5pbmRleCBjYzZhY2U4ZDY0MzcxLi45MWIxM2I5ZDNmODFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5AQCAtMTIsNiArMTIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX2FycC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG5AQCAtNzMsNiArNzQsOCBAQCBzdHJ1Y3QgYmFtX2RtdXgge1xuIFx0dTMyIHBjX21hc2ssIHBjX2Fja19tYXNrO1xuIFx0d2FpdF9xdWV1ZV9oZWFkX3QgcGNfd2FpdDtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIHBjX2Fja19jb21wbGV0aW9uO1xuK1x0c3RydWN0IG11dGV4IHBvd2VyX2xvY2s7IC8qIFByb3RlY3QgcG93ZXItY29udHJvbCBzdGF0ZSAqL1xuK1x0Ym9vbCBwY192b3RlO1xuIFxuIFx0c3RydWN0IGRtYV9jaGFuICpyeCwgKnR4O1xuIFx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgcnhfc2tic1tCQU1fRE1VWF9OVU1fU0tCXTtcbkBAIC05OSw2ICsxMDIsMjEgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIGJvb2wgZW5hYmxlKVxuIFx0XHRcdFx0ICAgIGVuYWJsZSA/IGRtdXgtXHUwMDNlcGNfbWFzayA6IDApO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBiYW1fZG11eF9wY192b3RlX2xvY2tlZChzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIGJvb2wgZW5hYmxlKVxuK3tcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbitcbitcdGRtdXgtXHUwMDNlcGNfdm90ZSA9IGVuYWJsZTtcbitcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZW5hYmxlKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZV9wcm90ZWN0ZWQoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcbit7XG4rXHRtdXRleF9sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4rXHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBlbmFibGUpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX2FjayhzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXG4ge1xuIFx0cWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGRtdXgtXHUwMDNlcGNfYWNrLCBkbXV4LVx1MDAzZXBjX2Fja19tYXNrLFxuQEAgLTY1NSw2ICs2NzMsOCBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9mcmVlX3NrYnMoc3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgc2tic1tdLFxuIFxuIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3Bvd2VyX29mZihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXG4ge1xuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuK1xuIFx0aWYgKGRtdXgtXHUwMDNldHgpIHtcbiBcdFx0ZG1hZW5naW5lX3Rlcm1pbmF0ZV9zeW5jKGRtdXgtXHUwMDNldHgpO1xuIFx0XHRkbWFfcmVsZWFzZV9jaGFubmVsKGRtdXgtXHUwMDNldHgpO1xuQEAgLTY3MywyMSArNjkzLDI4IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3Bvd2VyX29mZihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXG4gc3RhdGljIGlycXJldHVybl90IGJhbV9kbXV4X3BjX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuIHtcbiBcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRhdGE7XG4tXHRib29sIG5ld19zdGF0ZSA9ICFkbXV4LVx1MDAzZXBjX3N0YXRlO1xuK1x0Ym9vbCBuZXdfc3RhdGU7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4rXHRuZXdfc3RhdGUgPSAhZG11eC1cdTAwM2VwY19zdGF0ZTtcbiBcbiBcdGRldl9kYmcoZG11eC1cdTAwM2VkZXYsIFwicGM6ICV1XFxuXCIsIG5ld19zdGF0ZSk7XG4gXG4gXHRpZiAobmV3X3N0YXRlKSB7XG4tXHRcdGlmIChiYW1fZG11eF9wb3dlcl9vbihkbXV4KSlcbitcdFx0aWYgKGRtdXgtXHUwMDNlcnggfHwgYmFtX2RtdXhfcG93ZXJfb24oZG11eCkpXG4gXHRcdFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xuIFx0XHRlbHNlXG4gXHRcdFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xuK1x0fSBlbHNlIGlmIChkbXV4LVx1MDAzZXBjX3ZvdGUpIHtcbitcdFx0ZGV2X2RiZyhkbXV4LVx1MDAzZWRldiwgXCJwYyBkb3duIHdoaWxlIGhvc3Qgdm90ZSBpcyBhY3RpdmVcXG5cIik7XG4rXHRcdGJhbV9kbXV4X3BjX2FjayhkbXV4KTtcbiBcdH0gZWxzZSB7XG4gXHRcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbiBcdFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xuIFx0fVxuIFxuLVx0ZG11eC1cdTAwM2VwY19zdGF0ZSA9IG5ld19zdGF0ZTtcbitcdFdSSVRFX09OQ0UoZG11eC1cdTAwM2VwY19zdGF0ZSwgbmV3X3N0YXRlKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFx0d2FrZV91cF9hbGwoXHUwMDI2ZG11eC1cdTAwM2VwY193YWl0KTtcbiBcbiBcdHJldHVybiBJUlFfSEFORExFRDtcbkBAIC03MDgsNyArNzM1LDEyIEBAIHN0YXRpYyBpbnQgYmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuIFxuIFx0ZGV2X2RiZyhkZXYsIFwicnVudGltZSBzdXNwZW5kXFxuXCIpO1xuLVx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4rXHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBmYWxzZSk7XG4rXHRpZiAoIWRtdXgtXHUwMDNlcGNfc3RhdGUpXG4rXHRcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTcyNCw0MCArNzU2LDU1IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYmFtX2RtdXhfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdFx0XHQgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxuIFx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiBcbitcdHN5bmNocm9uaXplX2lycShkbXV4LVx1MDAzZXBjX2lycSk7XG4rXG4gXHQvKiBWb3RlIGZvciBwb3dlciBzdGF0ZSAqL1xuLVx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCB0cnVlKTtcbitcdGJhbV9kbXV4X3BjX3ZvdGVfcHJvdGVjdGVkKGRtdXgsIHRydWUpO1xuIFxuIFx0LyogV2FpdCBmb3IgYWNrICovXG4gXHRpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcdTAwMjZkbXV4LVx1MDAzZXBjX2Fja19jb21wbGV0aW9uLFxuIFx0XHRcdFx0XHQgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7XG4tXHRcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xuK1x0XHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcbiBcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4gXHR9XG4gXG4rXHRzeW5jaHJvbml6ZV9pcnEoZG11eC1cdTAwM2VwY19pcnEpO1xuK1xuIFx0LyogV2FpdCB1bnRpbCB3ZSdyZSB1cCAqL1xuLVx0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCBkbXV4LVx1MDAzZXBjX3N0YXRlLFxuK1x0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCBSRUFEX09OQ0UoZG11eC1cdTAwM2VwY19zdGF0ZSksXG4gXHRcdFx0XHRCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpIHtcbi1cdFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG4rXHRcdGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZChkZXYpO1xuIFx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiBcdH1cbiBcbitcdG11dGV4X2xvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbitcbiBcdC8qIEVuc3VyZSB0aGF0IHdlIGFjdHVhbGx5IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseSAqL1xuIFx0aWYgKCFkbXV4LVx1MDAzZXJ4KSB7XG4tXHRcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xuK1x0XHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBmYWxzZSk7XG4rXHRcdGlmICghZG11eC1cdTAwM2VwY19zdGF0ZSlcbitcdFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFx0XHRyZXR1cm4gLUVOWElPO1xuIFx0fVxuIFxuIFx0LyogUmVxdWVzdCBUWCBjaGFubmVsIGlmIG5lY2Vzc2FyeSAqL1xuLVx0aWYgKGRtdXgtXHUwMDNldHgpXG4rXHRpZiAoZG11eC1cdTAwM2V0eCkge1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdFx0cmV0dXJuIDA7XG4rXHR9XG4gXG4gXHRkbXV4LVx1MDAzZXR4ID0gZG1hX3JlcXVlc3RfY2hhbihkZXYsIFwidHhcIik7XG4gXHRpZiAoSVNfRVJSKGRtdXgtXHUwMDNldHgpKSB7XG4gXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byByZXF1ZXN0IFRYIERNQSBjaGFubmVsOiAlcGVcXG5cIiwgZG11eC1cdTAwM2V0eCk7XG4gXHRcdGRtdXgtXHUwMDNldHggPSBOVUxMO1xuLVx0XHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcbitcdFx0YmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoZG11eCwgZmFsc2UpO1xuK1x0XHRpZiAoIWRtdXgtXHUwMDNlcGNfc3RhdGUpXG4rXHRcdFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdFx0cmV0dXJuIC1FTlhJTztcbiBcdH1cbitcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTc5OSw2ICs4NDYsNyBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNmRtdXgtXHUwMDNlcGNfd2FpdCk7XG4gXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2ZG11eC1cdTAwM2VwY19hY2tfY29tcGxldGlvbik7XG4gXHRjb21wbGV0ZV9hbGwoXHUwMDI2ZG11eC1cdTAwM2VwY19hY2tfY29tcGxldGlvbik7XG4rXHRtdXRleF9pbml0KFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZkbXV4LVx1MDAzZXR4X2xvY2spO1xuIFx0SU5JVF9XT1JLKFx1MDAyNmRtdXgtXHUwMDNldHhfd2FrZXVwX3dvcmssIGJhbV9kbXV4X3R4X3dha2V1cF93b3JrKTtcbkBAIC04MjcsMTAgKzg3NSwxMSBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGVycl9kaXNhYmxlX3BtO1xuIFxuK1x0bXV0ZXhfbG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFx0cmV0ID0gaXJxX2dldF9pcnFjaGlwX3N0YXRlKGRtdXgtXHUwMDNlcGNfaXJxLCBJUlFDSElQX1NUQVRFX0xJTkVfTEVWRUwsXG4gXHRcdFx0XHQgICAgXHUwMDI2ZG11eC1cdTAwM2VwY19zdGF0ZSk7XG4gXHRpZiAocmV0KVxuLVx0XHRnb3RvIGVycl9kaXNhYmxlX3BtO1xuK1x0XHRnb3RvIGVycl91bmxvY2tfcG93ZXI7XG4gXG4gXHQvKiBDaGVjayBpZiByZW1vdGUgZmluaXNoZWQgaW5pdGlhbGl6YXRpb24gYmVmb3JlIHVzICovXG4gXHRpZiAoZG11eC1cdTAwM2VwY19zdGF0ZSkge1xuQEAgLTgzOSw5ICs4ODgsMTIgQEAgc3RhdGljIGludCBiYW1fZG11eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRlbHNlXG4gXHRcdFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xuIFx0fVxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbitlcnJfdW5sb2NrX3Bvd2VyOlxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gZXJyX2Rpc2FibGVfcG06XG4gXHRwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTtcbiBcdHBtX3J1bnRpbWVfZG9udF91c2VfYXV0b3N1c3BlbmQoZGV2KTtcbkBAIC04NzIsMTIgKzkyNCwxNSBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpO1xuIFxuIFx0LyogVHJ5IHRvIHdhaXQgZm9yIHJlbW90ZSBzaWRlIHRvIGRyb3AgcG93ZXIgdm90ZSAqL1xuLVx0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCAhZG11eC1cdTAwM2VyeCwgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxuK1x0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCAhUkVBRF9PTkNFKGRtdXgtXHUwMDNlcngpLFxuK1x0XHRcdFx0QkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxuIFx0XHRkZXZfZXJyKGRldiwgXCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcmVtb3RlIHNpZGUgdG8gc3VzcGVuZFxcblwiKTtcbiBcbiBcdC8qIE1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGNsZWFuZWQgdXAgYmVmb3JlIHdlIHJldHVybiAqL1xuIFx0ZGlzYWJsZV9pcnEoZG11eC1cdTAwM2VwY19pcnEpO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gXHRiYW1fZG11eF9mcmVlX3NrYnMoZG11eC1cdTAwM2V0eF9za2JzLCBETUFfVE9fREVWSUNFKTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwODo1MjoxMC45MzI2NzY0NjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjM4MTU4Mjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdXQU4gRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdG91Y2hlZCBgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBpdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSBgcG93ZXJfbG9ja2AgbXV0ZXggdG8gcHJvdGVjdCBwb3dlci1jb250cm9sIHN0YXRlIHdpdGhpbiB0aGUgYGJhbV9kbXV4YCBkcml2ZXIuIFRoZSBwYXRjaCBzZWVtcyB0byBhZmZlY3Qgc2V2ZXJhbCBrZXkgZnVuY3Rpb25zOiBgYmFtX2RtdXhfcGNfdm90ZWAsIGBiYW1fZG11eF9wb3dlcl9vZmZgLCBgYmFtX2RtdXhfcGNfaXJxYCwgYGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZGAsIGBiYW1fZG11eF9ydW50aW1lX3Jlc3VtZWAsIGBiYW1fZG11eF9wcm9iZWAsIGFuZCBgYmFtX2RtdXhfcmVtb3ZlYC4gRnJvbSB0aGUgZmlsZSBuYW1lLCBpdCdzIGNsZWFyIHRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEJBTSBEYXRhIE11bHRpcGxleGVyLCB3aGljaCBpcyBXV0FOIHJlbGF0ZWQsIHNvIEknbSB0aGlua2luZyBjZWxsdWxhciBkYXRhLlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyByZWFjaGFiaWxpdHkuIEdpdmVuIHRoYXQgdGhpcyBpcyBhIFdXQU4gZHJpdmVyLCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gVGhlc2UgV1dBTiBkcml2ZXJzIG9mdGVuIGhhdmUgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIHNvIEkgc2hvdWxkIHNlZSBpZiB0aGUgcGxhdGZvcm0gSSdtIHdvcmtpbmcgd2l0aCBldmVuIGhhcyBhIGNoYW5jZSBvZiBydW5uaW5nIHRoaXMuXG5cbkxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyB0byBzZWUgaWYgSSBjYW4gZmlndXJlIG91dCBpZiBpdCdzIHNlbGVjdGFibGUsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFNlYXJjaGluZyBmb3IgYHFjb21fYmFtX2RtdXhgIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTU1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MTUuNTcwODM4NzUyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTU4NDUwNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicWNvbV9iYW1fZG11eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJNQUlOVEFJTkVSUz0yMjA5Nz1GOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxiYW0tZG11eC55YW1sXFxuTUFJTlRBSU5FUlM6MjIwOTg6RjpcXHRkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1xcbk1BSU5UQUlORVJTLTIyMDk5LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTY1PWNvbmZpZyBRQ09NX0JBTV9ETVVYXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNzUtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NzY6XFx0ICBjYWxsZWQgcWNvbV9iYW1fZG11eC5cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNzctXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19NSElfV1dBTl9NQklNKSArPSBtaGlfd3dhbl9tYmltLm9cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19RQ09NX0JBTV9ETVVYKSArPSBxY29tX2JhbV9kbXV4Lm9cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTE0LW9iai0kKENPTkZJR19SUE1TR19XV0FOX0NUUkwpICs9IHJwbXNnX3d3YW5fY3RybC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA4OjUyOjE3LjMyNjY5MjAyOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTMxMjk4MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBRQ09NX0JBTV9ETVVYIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBRQ09NX0JBTV9ETVVYYC4gTGV0J3MgZGlnIGludG8gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMgdG8gc2VlIHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYC4gVGhpcyBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGZvciBhbnl0aGluZyByZWxhdGVkIHRvIFdXQU4gKFdpcmVsZXNzIFdpZGUgQXJlYSBOZXR3b3JrKSBhbmQgUXVhbGNvbW0gKFFDT00pIGhhcmR3YXJlLCBhbmQgQkFNIChwcm9iYWJseSBCdXMgQWNjZXNzIE1hbmFnZXIpIHNvdW5kcyBsaWtlIGEgbGlrZWx5IGNvbXBvbmVudCB0byBiZSBmb3VuZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYSBXV0FOIGRyaXZlci4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGNvbmRpdGlvbmFsIGxvZ2ljIG9yIGFuIGluY2x1c2lvbiB0aGF0J3MgdGllZCB0byB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgcmVhZGluZyB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0IGluZm9ybWF0aW9uIEkgY2FuIGdsZWFuLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzYyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MjEuMjM5ODI0NTIzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzc5MTU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUUNPTV9CQU1fRE1VWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93d2FuL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTUzPWNvbmZpZyBNSElfV1dBTl9NQklNXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNjQtXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjY1OmNvbmZpZyBRQ09NX0JBTV9ETVVYXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTY2LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwODo1MjoyMS4zNDM2MjAxNTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTU2NTgyNTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIFdXQU4gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBXV0FOIChXaXJlbGVzcyBXaWRlIEFyZWEgTmV0d29yaykgZHJpdmVycyBhcmUgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4gSXQncyB1c3VhbGx5IHRoZSBLY29uZmlnIGZpbGUgdGhhdCBkaWN0YXRlcyBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkgcmVjYWxsIHRoYXQgYGRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ2AgaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LCBiYXNlZCBvbiBwcmlvciBleHBlcmllbmNlLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGFyb3VuZCBsaW5lIDY1OyBJIGtub3cgdGhhdCBLY29uZmlnIGZpbGVzIGFyZSBzdHJ1Y3R1cmVkLCBzbyB1c3VhbGx5LCBJIGNhbiBmaW5kIGtleSBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvciBpbml0aWFsIGRyaXZlciBzZWxlY3Rpb24gaW4gdGhhdCBhcmVhLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byBhc3Nlc3MgdGhlIGRpZmZlcmVudCBkcml2ZXJzIGluIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmRpdGlvbmFsbHkgaW5jbHVkZWQuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcxOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA4OjUyOjI0LjkwMDIwNTE5MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHQgICAgICAgICAgSUQgMC4gQWRkaXRpb25hbCBsaW5rcyBjYW4gYmUgY3JlYXRlZCB2aWEgd3dhbiBydG5ldGxpbmsgdHlwZS5cXG4gIDYxOlxcdFxcbiAgNjI6XFx0ICAgICAgICAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgNjM6XFx0ICAgICAgICAgIGNhbGxlZCBtaGlfd3dhbl9tYmltLlxcbiAgNjQ6XFx0XFxuICA2NTpcXHRjb25maWcgUUNPTV9CQU1fRE1VWFxcbiAgNjY6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEJBTS1ETVVYIFdXQU4gbmV0d29yayBkcml2ZXJcXFwiXFxuICA2NzpcXHRcXHRkZXBlbmRzIG9uIChETUFfRU5HSU5FIFxcdTAwMjZcXHUwMDI2IFBNIFxcdTAwMjZcXHUwMDI2IFFDT01fU01FTV9TVEFURSkgfHwgQ09NUElMRV9URVNUXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIFRoZSBCQU0gRGF0YSBNdWx0aXBsZXhlciBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIG5ldHdvcmsgZGF0YSBjaGFubmVsc1xcbiAgNzA6XFx0XFx0ICBvZiBtb2RlbXMgaW50ZWdyYXRlZCBpbnRvIG1hbnkgb2xkZXIgUXVhbGNvbW0gU29DcywgZS5nLiBRdWFsY29tbVxcbiAgNzE6XFx0XFx0ICBNU004OTE2IG9yIE1TTTg5NzQuIFRoZSBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCB2aWEgUU1JL0FUIGZyb21cXG4gIDcyOlxcdFxcdCAgdXNlcnNwYWNlIHdpdGggY29udHJvbCBwb3J0cyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgV1dBTiBzdWJzeXN0ZW1cXG4gIDczOlxcdFxcdCAgKENPTkZJR19SUE1TR19XV0FOX0NUUkwpIG9yIFFSVFIgbmV0d29yayBzb2NrZXRzIChDT05GSUdfUVJUUikuXFxuICA3NDpcXHRcXG4gIDc1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICA3NjpcXHRcXHQgIGNhbGxlZCBxY29tX2JhbV9kbXV4LlxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgUlBNU0dfV1dBTl9DVFJMXFxuICA3OTpcXHRcXHR0cmlzdGF0ZSBcXFwiUlBNU0cgV1dBTiBjb250cm9sIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MjQuOTAwMjY3NTQyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzODA2Mzk1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFF1YWxjb21tIE1vZGVtIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBUaGUgZGVzY3JpcHRpb24gc2F5cyBpdCdzIG1lYW50IGZvciB0aG9zZSBvbGRlciBRdWFsY29tbSBTb0NzIHdpdGggaW50ZWdyYXRlZCBtb2RlbXMsIHlvdSBrbm93LCB0aGUgb25lcyBsaWtlIHRoZSBNU004OTE2IG9yIE1TTTg5NzQuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgcGxhdGZvcm0gZHJpdmVyLCBhIHZlcnkgc3BlY2lmaWMgdHlwZSB0YWlsb3JlZCBmb3IgaGFyZHdhcmUgaW50ZWdyYXRlZCBvbiB0aGF0IGxldmVsLlxuXG5UbyBnZXQgYSBiZXR0ZXIgZ3Jhc3Agb2YgaXRzIHN0cnVjdHVyZSwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIGp1bXAgaW50byBgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNgLiBUaGUgYHBsYXRmb3JtX2RyaXZlcmAgd2lsbCBiZSBhIGNydWNpYWwgcG9pbnQgb2YgcmVmZXJlbmNlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYW5kIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkgYW50aWNpcGF0ZSB0aGlzIGZpbGUgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IGluc2lnaHQgaW50byBpdHMgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzI3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwODo1MjoyOC41MzgzMzQ2ODFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzM0NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz05NDc9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYmFtX2RtdXhfb2ZfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk0OC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5NDk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmFtX2RtdXhfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk1MC1cXHQucHJvYmUgPSBiYW1fZG11eF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk1Ny19O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjk1ODptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGJhbV9kbXV4X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwODo1MjoyOC41OTgwNzQ3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2OTI0Nzc3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHFjb21fYmFtX2RtdXhgIERyaXZlcidzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIGBxY29tX2JhbV9kbXV4YC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBhIHBsYXRmb3JtIGRyaXZlciwgcmlnaHQ/IERldmljZXMgYXJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZSwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gQ2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgdGhpbmcgaW4gUUVNVT8gTm9wZSwgdGhhdCdzIGEgbm8tZ28uIFFFTVUgZG9lc24ndCwgYnkgZGVmYXVsdCwgZW11bGF0ZSB0aGF0IFF1YWxjb21tIEJBTS1ETVVYIGhhcmR3YXJlLiBFdmVuIGlmIGl0ICpkaWQqLCBpdCdzIHN1Y2ggYSBzcGVjaWZpYyBTb0MgcGVyaXBoZXJhbCwgaXQncyB1bmxpa2VseSB0byBiZSBicm9hZGx5IGFjY2Vzc2libGUuXG5cbkhtbSwgY291bGQgSSBwb3NzaWJseSBpbnN0YW50aWF0ZSBpdCB0aHJvdWdoIGBzeXNmc2Agb3Igc29tZSBvdGhlciB1c2VyLXNwYWNlIGludGVyZmFjZT8gTm8sIGl0J3MgZGVmaW5lZCBhcyBhbiBPRiBkZXZpY2UsIHNvIHRoYXQncyBub3QgZ29pbmcgdG8gd29yayBlaXRoZXIuIFRoZSBwYXRjaCBpdHNlbGYgaXMgZml4aW5nIGEgcmFjZSBjb25kaXRpb24gd2l0aGluIHRoZSBwb3dlciBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdHkgb2YgYHFjb21fYmFtX2RtdXhgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSG93ZXZlciwgZ2l2ZW4gdGhhdCB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBhbmQgaXQncyBidWlsdCBmb3IgUXVhbGNvbW0gU29DcywgaXQncyBjbGVhciBpdCB3b24ndCBiZSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHQ0UgYW5kIFFFTVUgYXJlIG91dC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIGRpZyBhIGxpdHRsZSBkZWVwZXIuIElzIHRoZXJlIGFueSBjb25jZWl2YWJsZSB3YXkgdG8gdHJpZ2dlciB0aGlzIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlPyBUaGUgcHJvYmUgZnVuY3Rpb24gaXRzZWxmIHJlcXVpcmVzIGEgYFwicWNvbSxiYW0tZG11eFwiYCBjb21wYXRpYmxlIHN0cmluZywgd2hpY2ggaXMgdGhlIGZpcnN0IGhhcmR3YXJlIHNwZWNpZmljIGZsYWcuIE9uIHRvcCBvZiB0aGF0LCBpdCBuZWVkcyB0aGUgYHBjX2Fja2Agc21lbSBzdGF0ZSwgYHBjX2lycWAsIGB0eGAsIGFuZCBgcnhgIERNQSBjaGFubmVscy4gQ2xlYXJseSwgdGhpcyBpcyBkZWVwbHkgdGllZCB0byB0aGUgaGFyZHdhcmUuXG5cbioqVmVyZGljdDogV29ydGhGdXp6aW5nPWZhbHNlLiBUaGlzIGRyaXZlciBpc24ndCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLioqXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MjEsIk91dHB1dFRva2VucyI6MTEwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA4OjUyOjM1LjI5MDU1NDY1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxY29tX2JhbV9kbXV4IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIEJBTSBEYXRhIE11bHRpcGxleGVyIGhhcmR3YXJlIGZvdW5kIGluIHNwZWNpZmljIG9sZGVyIFF1YWxjb21tIFNvQ3MgKGUuZy4sIE1TTTg5MTYsIE1TTTg5NzQpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgc28gdGhlIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWNvbV9iYW1fZG11eCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBCQU0gRGF0YSBNdWx0aXBsZXhlciBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBvbGRlciBRdWFsY29tbSBTb0NzIChlLmcuLCBNU004OTE2LCBNU004OTc0KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MzUuMjkwNTgwNzkyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxpz8j[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-08 08:36:56 +0000 UTC FinishedAt: 2026-08-08 08:52:36 +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+CgkJCTx0ZD4yMDI2LzA4LzA4IDA4OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFjb21fYmFtX2RtdXggZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gQkFNIERhdGEgTXVsdGlwbGV4ZXIgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgb2xkZXIgUXVhbGNvbW0gU29DcyAoZS5nLiwgTVNNODkxNiwgTVNNODk3NCkuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzbyB0aGUgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzYzI5MWYwYWQ5ZjZmYTdhMTM1NDYxZjk2NGJhNzhlYjRhZTAzNmY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwODo1MjowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5pbmRleCBjYzZhY2U4ZDY0MzcxLi45MWIxM2I5ZDNmODFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5AQCAtMTIsNiAmIzQzOzEyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pZl9hcnAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcdTAwM2VcbkBAIC03Myw2ICYjNDM7NzQsOCBAQCBzdHJ1Y3QgYmFtX2RtdXgge1xuIFx0dTMyIHBjX21hc2ssIHBjX2Fja19tYXNrO1xuIFx0d2FpdF9xdWV1ZV9oZWFkX3QgcGNfd2FpdDtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIHBjX2Fja19jb21wbGV0aW9uO1xuJiM0MztcdHN0cnVjdCBtdXRleCBwb3dlcl9sb2NrOyAvKiBQcm90ZWN0IHBvd2VyLWNvbnRyb2wgc3RhdGUgKi9cbiYjNDM7XHRib29sIHBjX3ZvdGU7XG4gXG4gXHRzdHJ1Y3QgZG1hX2NoYW4gKnJ4LCAqdHg7XG4gXHRzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSByeF9za2JzW0JBTV9ETVVYX05VTV9TS0JdO1xuQEAgLTk5LDYgJiM0MzsxMDIsMjEgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIGJvb2wgZW5hYmxlKVxuIFx0XHRcdFx0ICAgIGVuYWJsZSA/IGRtdXgtXHUwMDNlcGNfbWFzayA6IDApO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcbiYjNDM7e1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0ZG11eC1cdTAwM2VwY192b3RlID0gZW5hYmxlO1xuJiM0MztcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZW5hYmxlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZV9wcm90ZWN0ZWQoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcbiYjNDM7e1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiYjNDM7XHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBlbmFibGUpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX2FjayhzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXG4ge1xuIFx0cWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGRtdXgtXHUwMDNlcGNfYWNrLCBkbXV4LVx1MDAzZXBjX2Fja19tYXNrLFxuQEAgLTY1NSw2ICYjNDM7NjczLDggQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfZnJlZV9za2JzKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hIHNrYnNbXSxcbiBcbiBzdGF0aWMgdm9pZCBiYW1fZG11eF9wb3dlcl9vZmYoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxuIHtcbiYjNDM7XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4mIzQzO1xuIFx0aWYgKGRtdXgtXHUwMDNldHgpIHtcbiBcdFx0ZG1hZW5naW5lX3Rlcm1pbmF0ZV9zeW5jKGRtdXgtXHUwMDNldHgpO1xuIFx0XHRkbWFfcmVsZWFzZV9jaGFubmVsKGRtdXgtXHUwMDNldHgpO1xuQEAgLTY3MywyMSAmIzQzOzY5MywyOCBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9wb3dlcl9vZmYoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxuIHN0YXRpYyBpcnFyZXR1cm5fdCBiYW1fZG11eF9wY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcbiB7XG4gXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkYXRhO1xuLVx0Ym9vbCBuZXdfc3RhdGUgPSAhZG11eC1cdTAwM2VwY19zdGF0ZTtcbiYjNDM7XHRib29sIG5ld19zdGF0ZTtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuJiM0MztcdG5ld19zdGF0ZSA9ICFkbXV4LVx1MDAzZXBjX3N0YXRlO1xuIFxuIFx0ZGV2X2RiZyhkbXV4LVx1MDAzZWRldiwgXCYjMzQ7cGM6ICV1XFxuXCYjMzQ7LCBuZXdfc3RhdGUpO1xuIFxuIFx0aWYgKG5ld19zdGF0ZSkge1xuLVx0XHRpZiAoYmFtX2RtdXhfcG93ZXJfb24oZG11eCkpXG4mIzQzO1x0XHRpZiAoZG11eC1cdTAwM2VyeCB8fCBiYW1fZG11eF9wb3dlcl9vbihkbXV4KSlcbiBcdFx0XHRiYW1fZG11eF9wY19hY2soZG11eCk7XG4gXHRcdGVsc2VcbiBcdFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG4mIzQzO1x0fSBlbHNlIGlmIChkbXV4LVx1MDAzZXBjX3ZvdGUpIHtcbiYjNDM7XHRcdGRldl9kYmcoZG11eC1cdTAwM2VkZXYsIFwmIzM0O3BjIGRvd24gd2hpbGUgaG9zdCB2b3RlIGlzIGFjdGl2ZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRiYW1fZG11eF9wY19hY2soZG11eCk7XG4gXHR9IGVsc2Uge1xuIFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG4gXHRcdGJhbV9kbXV4X3BjX2FjayhkbXV4KTtcbiBcdH1cbiBcbi1cdGRtdXgtXHUwMDNlcGNfc3RhdGUgPSBuZXdfc3RhdGU7XG4mIzQzO1x0V1JJVEVfT05DRShkbXV4LVx1MDAzZXBjX3N0YXRlLCBuZXdfc3RhdGUpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFx0d2FrZV91cF9hbGwoXHUwMDI2ZG11eC1cdTAwM2VwY193YWl0KTtcbiBcbiBcdHJldHVybiBJUlFfSEFORExFRDtcbkBAIC03MDgsNyAmIzQzOzczNSwxMiBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbiBcbiBcdGRldl9kYmcoZGV2LCBcJiMzNDtydW50aW1lIHN1c3BlbmRcXG5cJiMzNDspO1xuLVx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiYjNDM7XHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBmYWxzZSk7XG4mIzQzO1x0aWYgKCFkbXV4LVx1MDAzZXBjX3N0YXRlKVxuJiM0MztcdFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTcyNCw0MCAmIzQzOzc1Niw1NSBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGJhbV9kbXV4X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0XHRcdFx0IEJBTV9ETVVYX1JFTU9URV9USU1FT1VUKSlcbiBcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4gXG4mIzQzO1x0c3luY2hyb25pemVfaXJxKGRtdXgtXHUwMDNlcGNfaXJxKTtcbiYjNDM7XG4gXHQvKiBWb3RlIGZvciBwb3dlciBzdGF0ZSAqL1xuLVx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCB0cnVlKTtcbiYjNDM7XHRiYW1fZG11eF9wY192b3RlX3Byb3RlY3RlZChkbXV4LCB0cnVlKTtcbiBcbiBcdC8qIFdhaXQgZm9yIGFjayAqL1xuIFx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2ZG11eC1cdTAwM2VwY19hY2tfY29tcGxldGlvbixcbiBcdFx0XHRcdFx0IEJBTV9ETVVYX1JFTU9URV9USU1FT1VUKSkge1xuLVx0XHRiYW1fZG11eF9wY192b3RlKGRtdXgsIGZhbHNlKTtcbiYjNDM7XHRcdGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZChkZXYpO1xuIFx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiBcdH1cbiBcbiYjNDM7XHRzeW5jaHJvbml6ZV9pcnEoZG11eC1cdTAwM2VwY19pcnEpO1xuJiM0MztcbiBcdC8qIFdhaXQgdW50aWwgd2UmIzM5O3JlIHVwICovXG4tXHRpZiAoIXdhaXRfZXZlbnRfdGltZW91dChkbXV4LVx1MDAzZXBjX3dhaXQsIGRtdXgtXHUwMDNlcGNfc3RhdGUsXG4mIzQzO1x0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCBSRUFEX09OQ0UoZG11eC1cdTAwM2VwY19zdGF0ZSksXG4gXHRcdFx0XHRCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpIHtcbi1cdFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG4mIzQzO1x0XHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcbiBcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4gXHR9XG4gXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuJiM0MztcbiBcdC8qIEVuc3VyZSB0aGF0IHdlIGFjdHVhbGx5IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseSAqL1xuIFx0aWYgKCFkbXV4LVx1MDAzZXJ4KSB7XG4tXHRcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xuJiM0MztcdFx0YmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoZG11eCwgZmFsc2UpO1xuJiM0MztcdFx0aWYgKCFkbXV4LVx1MDAzZXBjX3N0YXRlKVxuJiM0MztcdFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdFx0cmV0dXJuIC1FTlhJTztcbiBcdH1cbiBcbiBcdC8qIFJlcXVlc3QgVFggY2hhbm5lbCBpZiBuZWNlc3NhcnkgKi9cbi1cdGlmIChkbXV4LVx1MDAzZXR4KVxuJiM0MztcdGlmIChkbXV4LVx1MDAzZXR4KSB7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuIFxuIFx0ZG11eC1cdTAwM2V0eCA9IGRtYV9yZXF1ZXN0X2NoYW4oZGV2LCBcJiMzNDt0eFwmIzM0Oyk7XG4gXHRpZiAoSVNfRVJSKGRtdXgtXHUwMDNldHgpKSB7XG4gXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVxdWVzdCBUWCBETUEgY2hhbm5lbDogJXBlXFxuXCYjMzQ7LCBkbXV4LVx1MDAzZXR4KTtcbiBcdFx0ZG11eC1cdTAwM2V0eCA9IE5VTEw7XG4tXHRcdGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZChkZXYpO1xuJiM0MztcdFx0YmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoZG11eCwgZmFsc2UpO1xuJiM0MztcdFx0aWYgKCFkbXV4LVx1MDAzZXBjX3N0YXRlKVxuJiM0MztcdFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdFx0cmV0dXJuIC1FTlhJTztcbiBcdH1cbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC03OTksNiAmIzQzOzg0Niw3IEBAIHN0YXRpYyBpbnQgYmFtX2RtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2ZG11eC1cdTAwM2VwY193YWl0KTtcbiBcdGluaXRfY29tcGxldGlvbihcdTAwMjZkbXV4LVx1MDAzZXBjX2Fja19jb21wbGV0aW9uKTtcbiBcdGNvbXBsZXRlX2FsbChcdTAwMjZkbXV4LVx1MDAzZXBjX2Fja19jb21wbGV0aW9uKTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZkbXV4LVx1MDAzZXR4X2xvY2spO1xuIFx0SU5JVF9XT1JLKFx1MDAyNmRtdXgtXHUwMDNldHhfd2FrZXVwX3dvcmssIGJhbV9kbXV4X3R4X3dha2V1cF93b3JrKTtcbkBAIC04MjcsMTAgJiM0Mzs4NzUsMTEgQEAgc3RhdGljIGludCBiYW1fZG11eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0aWYgKHJldClcbiBcdFx0Z290byBlcnJfZGlzYWJsZV9wbTtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gXHRyZXQgPSBpcnFfZ2V0X2lycWNoaXBfc3RhdGUoZG11eC1cdTAwM2VwY19pcnEsIElSUUNISVBfU1RBVEVfTElORV9MRVZFTCxcbiBcdFx0XHRcdCAgICBcdTAwMjZkbXV4LVx1MDAzZXBjX3N0YXRlKTtcbiBcdGlmIChyZXQpXG4tXHRcdGdvdG8gZXJyX2Rpc2FibGVfcG07XG4mIzQzO1x0XHRnb3RvIGVycl91bmxvY2tfcG93ZXI7XG4gXG4gXHQvKiBDaGVjayBpZiByZW1vdGUgZmluaXNoZWQgaW5pdGlhbGl6YXRpb24gYmVmb3JlIHVzICovXG4gXHRpZiAoZG11eC1cdTAwM2VwY19zdGF0ZSkge1xuQEAgLTgzOSw5ICYjNDM7ODg4LDEyIEBAIHN0YXRpYyBpbnQgYmFtX2RtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0ZWxzZVxuIFx0XHRcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbiBcdH1cbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcbiBcdHJldHVybiAwO1xuIFxuJiM0MztlcnJfdW5sb2NrX3Bvd2VyOlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIGVycl9kaXNhYmxlX3BtOlxuIFx0cG1fcnVudGltZV9kaXNhYmxlKGRldik7XG4gXHRwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5kKGRldik7XG5AQCAtODcyLDEyICYjNDM7OTI0LDE1IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7XG4gXG4gXHQvKiBUcnkgdG8gd2FpdCBmb3IgcmVtb3RlIHNpZGUgdG8gZHJvcCBwb3dlciB2b3RlICovXG4tXHRpZiAoIXdhaXRfZXZlbnRfdGltZW91dChkbXV4LVx1MDAzZXBjX3dhaXQsICFkbXV4LVx1MDAzZXJ4LCBCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpXG4mIzQzO1x0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCAhUkVBRF9PTkNFKGRtdXgtXHUwMDNlcngpLFxuJiM0MztcdFx0XHRcdEJBTV9ETVVYX1JFTU9URV9USU1FT1VUKSlcbiBcdFx0ZGV2X2VycihkZXYsIFwmIzM0O1RpbWVkIG91dCB3YWl0aW5nIGZvciByZW1vdGUgc2lkZSB0byBzdXNwZW5kXFxuXCYjMzQ7KTtcbiBcbiBcdC8qIE1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGNsZWFuZWQgdXAgYmVmb3JlIHdlIHJldHVybiAqL1xuIFx0ZGlzYWJsZV9pcnEoZG11eC1cdTAwM2VwY19pcnEpO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdGJhbV9kbXV4X2ZyZWVfc2ticyhkbXV4LVx1MDAzZXR4X3NrYnMsIERNQV9UT19ERVZJQ0UpO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwODo1MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFjb21fYmFtX2RtdXggZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gQkFNIERhdGEgTXVsdGlwbGV4ZXIgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgb2xkZXIgUXVhbGNvbW0gU29DcyAoZS5nLiwgTVNNODkxNiwgTVNNODk3NCkuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzbyB0aGUgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzYzI5MWYwYWQ5ZjZmYTdhMTM1NDYxZjk2NGJhNzhlYjRhZTAzNmY2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAwODo1MjowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jIGIvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMKaW5kZXggY2M2YWNlOGQ2NDM3MS4uOTFiMTNiOWQzZjgxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaWZfYXJwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L211dGV4LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGxhdGZvcm1fZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcG1fcnVudGltZS5oJmd0OwpAQCAtNzMsNiAmIzQzOzc0LDggQEAgc3RydWN0IGJhbV9kbXV4IHsKIAl1MzIgcGNfbWFzaywgcGNfYWNrX21hc2s7CiAJd2FpdF9xdWV1ZV9oZWFkX3QgcGNfd2FpdDsKIAlzdHJ1Y3QgY29tcGxldGlvbiBwY19hY2tfY29tcGxldGlvbjsKJiM0MzsJc3RydWN0IG11dGV4IHBvd2VyX2xvY2s7IC8qIFByb3RlY3QgcG93ZXItY29udHJvbCBzdGF0ZSAqLwomIzQzOwlib29sIHBjX3ZvdGU7CiAKIAlzdHJ1Y3QgZG1hX2NoYW4gKnJ4LCAqdHg7CiAJc3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgcnhfc2tic1tCQU1fRE1VWF9OVU1fU0tCXTsKQEAgLTk5LDYgJiM0MzsxMDIsMjEgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIGJvb2wgZW5hYmxlKQogCQkJCSAgICBlbmFibGUgPyBkbXV4LSZndDtwY19tYXNrIDogMCk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBiYW1fZG11eF9wY192b3RlX2xvY2tlZChzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIGJvb2wgZW5hYmxlKQomIzQzO3sKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2RtdXgtJmd0O3Bvd2VyX2xvY2spOwomIzQzOwomIzQzOwlkbXV4LSZndDtwY192b3RlID0gZW5hYmxlOwomIzQzOwliYW1fZG11eF9wY192b3RlKGRtdXgsIGVuYWJsZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX3ZvdGVfcHJvdGVjdGVkKHN0cnVjdCBiYW1fZG11eCAqZG11eCwgYm9vbCBlbmFibGUpCiYjNDM7ewomIzQzOwltdXRleF9sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiYjNDM7CWJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGVuYWJsZSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2RtdXgtJmd0O3Bvd2VyX2xvY2spOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX2FjayhzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpCiB7CiAJcWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGRtdXgtJmd0O3BjX2FjaywgZG11eC0mZ3Q7cGNfYWNrX21hc2ssCkBAIC02NTUsNiAmIzQzOzY3Myw4IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X2ZyZWVfc2ticyhzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSBza2JzW10sCiAKIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3Bvd2VyX29mZihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpCiB7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKJiM0MzsKIAlpZiAoZG11eC0mZ3Q7dHgpIHsKIAkJZG1hZW5naW5lX3Rlcm1pbmF0ZV9zeW5jKGRtdXgtJmd0O3R4KTsKIAkJZG1hX3JlbGVhc2VfY2hhbm5lbChkbXV4LSZndDt0eCk7CkBAIC02NzMsMjEgJiM0Mzs2OTMsMjggQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfcG93ZXJfb2ZmKHN0cnVjdCBiYW1fZG11eCAqZG11eCkKIHN0YXRpYyBpcnFyZXR1cm5fdCBiYW1fZG11eF9wY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkYXRhOwotCWJvb2wgbmV3X3N0YXRlID0gIWRtdXgtJmd0O3BjX3N0YXRlOwomIzQzOwlib29sIG5ld19zdGF0ZTsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2RtdXgtJmd0O3Bvd2VyX2xvY2spOwomIzQzOwluZXdfc3RhdGUgPSAhZG11eC0mZ3Q7cGNfc3RhdGU7CiAKIAlkZXZfZGJnKGRtdXgtJmd0O2RldiwgJiMzNDtwYzogJXVcbiYjMzQ7LCBuZXdfc3RhdGUpOwogCiAJaWYgKG5ld19zdGF0ZSkgewotCQlpZiAoYmFtX2RtdXhfcG93ZXJfb24oZG11eCkpCiYjNDM7CQlpZiAoZG11eC0mZ3Q7cnggfHwgYmFtX2RtdXhfcG93ZXJfb24oZG11eCkpCiAJCQliYW1fZG11eF9wY19hY2soZG11eCk7CiAJCWVsc2UKIAkJCWJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTsKJiM0MzsJfSBlbHNlIGlmIChkbXV4LSZndDtwY192b3RlKSB7CiYjNDM7CQlkZXZfZGJnKGRtdXgtJmd0O2RldiwgJiMzNDtwYyBkb3duIHdoaWxlIGhvc3Qgdm90ZSBpcyBhY3RpdmVcbiYjMzQ7KTsKJiM0MzsJCWJhbV9kbXV4X3BjX2FjayhkbXV4KTsKIAl9IGVsc2UgewogCQliYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7CiAJCWJhbV9kbXV4X3BjX2FjayhkbXV4KTsKIAl9CiAKLQlkbXV4LSZndDtwY19zdGF0ZSA9IG5ld19zdGF0ZTsKJiM0MzsJV1JJVEVfT05DRShkbXV4LSZndDtwY19zdGF0ZSwgbmV3X3N0YXRlKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAJd2FrZV91cF9hbGwoJmFtcDtkbXV4LSZndDtwY193YWl0KTsKIAogCXJldHVybiBJUlFfSEFORExFRDsKQEAgLTcwOCw3ICYjNDM7NzM1LDEyIEBAIHN0YXRpYyBpbnQgYmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAlzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAogCWRldl9kYmcoZGV2LCAmIzM0O3J1bnRpbWUgc3VzcGVuZFxuJiMzNDspOwotCWJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiYjNDM7CWJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGZhbHNlKTsKJiM0MzsJaWYgKCFkbXV4LSZndDtwY19zdGF0ZSkKJiM0MzsJCWJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTcyNCw0MCAmIzQzOzc1Niw1NSBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGJhbV9kbXV4X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJCQkJIEJBTV9ETVVYX1JFTU9URV9USU1FT1VUKSkKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAKJiM0MzsJc3luY2hyb25pemVfaXJxKGRtdXgtJmd0O3BjX2lycSk7CiYjNDM7CiAJLyogVm90ZSBmb3IgcG93ZXIgc3RhdGUgKi8KLQliYW1fZG11eF9wY192b3RlKGRtdXgsIHRydWUpOwomIzQzOwliYW1fZG11eF9wY192b3RlX3Byb3RlY3RlZChkbXV4LCB0cnVlKTsKIAogCS8qIFdhaXQgZm9yIGFjayAqLwogCWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZhbXA7ZG11eC0mZ3Q7cGNfYWNrX2NvbXBsZXRpb24sCiAJCQkJCSBCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpIHsKLQkJYmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7CiYjNDM7CQliYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTsKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCiYjNDM7CXN5bmNocm9uaXplX2lycShkbXV4LSZndDtwY19pcnEpOwomIzQzOwogCS8qIFdhaXQgdW50aWwgd2UmIzM5O3JlIHVwICovCi0JaWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC0mZ3Q7cGNfd2FpdCwgZG11eC0mZ3Q7cGNfc3RhdGUsCiYjNDM7CWlmICghd2FpdF9ldmVudF90aW1lb3V0KGRtdXgtJmd0O3BjX3dhaXQsIFJFQURfT05DRShkbXV4LSZndDtwY19zdGF0ZSksCiAJCQkJQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7Ci0JCWJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpOwomIzQzOwkJYmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKGRldik7CiAJCXJldHVybiAtRVRJTUVET1VUOwogCX0KIAomIzQzOwltdXRleF9sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiYjNDM7CiAJLyogRW5zdXJlIHRoYXQgd2UgYWN0dWFsbHkgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5ICovCiAJaWYgKCFkbXV4LSZndDtyeCkgewotCQliYW1fZG11eF9wY192b3RlKGRtdXgsIGZhbHNlKTsKJiM0MzsJCWJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGZhbHNlKTsKJiM0MzsJCWlmICghZG11eC0mZ3Q7cGNfc3RhdGUpCiYjNDM7CQkJYmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAJCXJldHVybiAtRU5YSU87CiAJfQogCiAJLyogUmVxdWVzdCBUWCBjaGFubmVsIGlmIG5lY2Vzc2FyeSAqLwotCWlmIChkbXV4LSZndDt0eCkKJiM0MzsJaWYgKGRtdXgtJmd0O3R4KSB7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKIAkJcmV0dXJuIDA7CiYjNDM7CX0KIAogCWRtdXgtJmd0O3R4ID0gZG1hX3JlcXVlc3RfY2hhbihkZXYsICYjMzQ7dHgmIzM0Oyk7CiAJaWYgKElTX0VSUihkbXV4LSZndDt0eCkpIHsKIAkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHJlcXVlc3QgVFggRE1BIGNoYW5uZWw6ICVwZVxuJiMzNDssIGRtdXgtJmd0O3R4KTsKIAkJZG11eC0mZ3Q7dHggPSBOVUxMOwotCQliYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTsKJiM0MzsJCWJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGZhbHNlKTsKJiM0MzsJCWlmICghZG11eC0mZ3Q7cGNfc3RhdGUpCiYjNDM7CQkJYmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAJCXJldHVybiAtRU5YSU87CiAJfQomIzQzOwltdXRleF91bmxvY2soJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKIAogCXJldHVybiAwOwogfQpAQCAtNzk5LDYgJiM0Mzs4NDYsNyBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaW5pdF93YWl0cXVldWVfaGVhZCgmYW1wO2RtdXgtJmd0O3BjX3dhaXQpOwogCWluaXRfY29tcGxldGlvbigmYW1wO2RtdXgtJmd0O3BjX2Fja19jb21wbGV0aW9uKTsKIAljb21wbGV0ZV9hbGwoJmFtcDtkbXV4LSZndDtwY19hY2tfY29tcGxldGlvbik7CiYjNDM7CW11dGV4X2luaXQoJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKIAogCXNwaW5fbG9ja19pbml0KCZhbXA7ZG11eC0mZ3Q7dHhfbG9jayk7CiAJSU5JVF9XT1JLKCZhbXA7ZG11eC0mZ3Q7dHhfd2FrZXVwX3dvcmssIGJhbV9kbXV4X3R4X3dha2V1cF93b3JrKTsKQEAgLTgyNywxMCAmIzQzOzg3NSwxMSBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKHJldCkKIAkJZ290byBlcnJfZGlzYWJsZV9wbTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAJcmV0ID0gaXJxX2dldF9pcnFjaGlwX3N0YXRlKGRtdXgtJmd0O3BjX2lycSwgSVJRQ0hJUF9TVEFURV9MSU5FX0xFVkVMLAogCQkJCSAgICAmYW1wO2RtdXgtJmd0O3BjX3N0YXRlKTsKIAlpZiAocmV0KQotCQlnb3RvIGVycl9kaXNhYmxlX3BtOwomIzQzOwkJZ290byBlcnJfdW5sb2NrX3Bvd2VyOwogCiAJLyogQ2hlY2sgaWYgcmVtb3RlIGZpbmlzaGVkIGluaXRpYWxpemF0aW9uIGJlZm9yZSB1cyAqLwogCWlmIChkbXV4LSZndDtwY19zdGF0ZSkgewpAQCAtODM5LDkgJiM0Mzs4ODgsMTIgQEAgc3RhdGljIGludCBiYW1fZG11eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQllbHNlCiAJCQliYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7CiAJfQomIzQzOwltdXRleF91bmxvY2soJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKIAogCXJldHVybiAwOwogCiYjNDM7ZXJyX3VubG9ja19wb3dlcjoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiBlcnJfZGlzYWJsZV9wbToKIAlwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTsKIAlwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5kKGRldik7CkBAIC04NzIsMTIgJiM0Mzs5MjQsMTUgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7CiAKIAkvKiBUcnkgdG8gd2FpdCBmb3IgcmVtb3RlIHNpZGUgdG8gZHJvcCBwb3dlciB2b3RlICovCi0JaWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC0mZ3Q7cGNfd2FpdCwgIWRtdXgtJmd0O3J4LCBCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpCiYjNDM7CWlmICghd2FpdF9ldmVudF90aW1lb3V0KGRtdXgtJmd0O3BjX3dhaXQsICFSRUFEX09OQ0UoZG11eC0mZ3Q7cngpLAomIzQzOwkJCQlCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpCiAJCWRldl9lcnIoZGV2LCAmIzM0O1RpbWVkIG91dCB3YWl0aW5nIGZvciByZW1vdGUgc2lkZSB0byBzdXNwZW5kXG4mIzM0Oyk7CiAKIAkvKiBNYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBjbGVhbmVkIHVwIGJlZm9yZSB3ZSByZXR1cm4gKi8KIAlkaXNhYmxlX2lycShkbXV4LSZndDtwY19pcnEpOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZG11eC0mZ3Q7cG93ZXJfbG9jayk7CiAJYmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtkbXV4LSZndDtwb3dlcl9sb2NrKTsKIAliYW1fZG11eF9mcmVlX3NrYnMoZG11eC0mZ3Q7dHhfc2ticywgRE1BX1RPX0RFVklDRSk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU1NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXV0FOIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoZWQgYGRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGBwb3dlcl9sb2NrYCBtdXRleCB0byBwcm90ZWN0IHBvd2VyLWNvbnRyb2wgc3RhdGUgd2l0aGluIHRoZSBgYmFtX2RtdXhgIGRyaXZlci4gVGhlIHBhdGNoIHNlZW1zIHRvIGFmZmVjdCBzZXZlcmFsIGtleSBmdW5jdGlvbnM6IGBiYW1fZG11eF9wY192b3RlYCwgYGJhbV9kbXV4X3Bvd2VyX29mZmAsIGBiYW1fZG11eF9wY19pcnFgLCBgYmFtX2RtdXhfcnVudGltZV9zdXNwZW5kYCwgYGJhbV9kbXV4X3J1bnRpbWVfcmVzdW1lYCwgYGJhbV9kbXV4X3Byb2JlYCwgYW5kIGBiYW1fZG11eF9yZW1vdmVgLiBGcm9tIHRoZSBmaWxlIG5hbWUsIGl0JiMzOTtzIGNsZWFyIHRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEJBTSBEYXRhIE11bHRpcGxleGVyLCB3aGljaCBpcyBXV0FOIHJlbGF0ZWQsIHNvIEkmIzM5O20gdGhpbmtpbmcgY2VsbHVsYXIgZGF0YS4KCk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHJlYWNoYWJpbGl0eS4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgV1dBTiBkcml2ZXIsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIFFFTVUgb3IgR0NFIGVudmlyb25tZW50LiBUaGVzZSBXV0FOIGRyaXZlcnMgb2Z0ZW4gaGF2ZSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgc28gSSBzaG91bGQgc2VlIGlmIHRoZSBwbGF0Zm9ybSBJJiMzOTttIHdvcmtpbmcgd2l0aCBldmVuIGhhcyBhIGNoYW5jZSBvZiBydW5uaW5nIHRoaXMuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIHRvIHNlZSBpZiBJIGNhbiBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIHNlbGVjdGFibGUsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFNlYXJjaGluZyBmb3IgYHFjb21fYmFtX2RtdXhgIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA4OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Fjb21fYmFtX2RtdXgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7TUFJTlRBSU5FUlM9MjIwOTc9RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxiYW0tZG11eC55YW1sXG5NQUlOVEFJTkVSUzoyMjA5ODpGOlx0ZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbk1BSU5UQUlORVJTLTIyMDk5LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz02NT1jb25maWcgUUNPTV9CQU1fRE1VWFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03NS1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NzY6XHQgIGNhbGxlZCBxY29tX2JhbV9kbXV4LlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTc3LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU9MTI9b2JqLSQoQ09ORklHX01ISV9XV0FOX01CSU0pICYjNDM7PSBtaGlfd3dhbl9tYmltLm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX1FDT01fQkFNX0RNVVgpICYjNDM7PSBxY29tX2JhbV9kbXV4Lm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMTQtb2JqLSQoQ09ORklHX1JQTVNHX1dXQU5fQ1RSTCkgJiM0Mzs9IHJwbXNnX3d3YW5fY3RybC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM2MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBRQ09NX0JBTV9ETVVYIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBgUUNPTV9CQU1fRE1VWGAuIExldCYjMzk7cyBkaWcgaW50byB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgZmlsZXMgdG8gc2VlIHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC93d2FuL0tjb25maWdgLiBUaGlzIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gV1dBTiAoV2lyZWxlc3MgV2lkZSBBcmVhIE5ldHdvcmspIGFuZCBRdWFsY29tbSAoUUNPTSkgaGFyZHdhcmUsIGFuZCBCQU0gKHByb2JhYmx5IEJ1cyBBY2Nlc3MgTWFuYWdlcikgc291bmRzIGxpa2UgYSBsaWtlbHkgY29tcG9uZW50IHRvIGJlIGZvdW5kIHdpdGhpbiB0aGUgY29udGV4dCBvZiBhIFdXQU4gZHJpdmVyLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGNvbmRpdGlvbmFsIGxvZ2ljIG9yIGFuIGluY2x1c2lvbiB0aGF0JiMzOTtzIHRpZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSByZWFkaW5nIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgaW5mb3JtYXRpb24gSSBjYW4gZ2xlYW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFFDT01fQkFNX0RNVVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTUzPWNvbmZpZyBNSElfV1dBTl9NQklNXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTY0LVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjY1OmNvbmZpZyBRQ09NX0JBTV9ETVVYXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcxOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS2VybmVsJiMzOTtzIFdXQU4gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgV1dBTiAoV2lyZWxlc3MgV2lkZSBBcmVhIE5ldHdvcmspIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuIEl0JiMzOTtzIHVzdWFsbHkgdGhlIEtjb25maWcgZmlsZSB0aGF0IGRpY3RhdGVzIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gSSByZWNhbGwgdGhhdCBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQsIGJhc2VkIG9uIHByaW9yIGV4cGVyaWVuY2UuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGFyb3VuZCBsaW5lIDY1OyBJIGtub3cgdGhhdCBLY29uZmlnIGZpbGVzIGFyZSBzdHJ1Y3R1cmVkLCBzbyB1c3VhbGx5LCBJIGNhbiBmaW5kIGtleSBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvciBpbml0aWFsIGRyaXZlciBzZWxlY3Rpb24gaW4gdGhhdCBhcmVhLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byBhc3Nlc3MgdGhlIGRpZmZlcmVudCBkcml2ZXJzIGluIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGluY2x1ZGVkLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHQgICAgICAgICAgSUQgMC4gQWRkaXRpb25hbCBsaW5rcyBjYW4gYmUgY3JlYXRlZCB2aWEgd3dhbiBydG5ldGxpbmsgdHlwZS5cbiAgNjE6XHRcbiAgNjI6XHQgICAgICAgICAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gIDYzOlx0ICAgICAgICAgIGNhbGxlZCBtaGlfd3dhbl9tYmltLlxuICA2NDpcdFxuICA2NTpcdGNvbmZpZyBRQ09NX0JBTV9ETVVYXG4gIDY2Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXCYjMzQ7XG4gIDY3Olx0XHRkZXBlbmRzIG9uIChETUFfRU5HSU5FIFx1MDAyNlx1MDAyNiBQTSBcdTAwMjZcdTAwMjYgUUNPTV9TTUVNX1NUQVRFKSB8fCBDT01QSUxFX1RFU1RcbiAgNjg6XHRcdGhlbHBcbiAgNjk6XHRcdCAgVGhlIEJBTSBEYXRhIE11bHRpcGxleGVyIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbmV0d29yayBkYXRhIGNoYW5uZWxzXG4gIDcwOlx0XHQgIG9mIG1vZGVtcyBpbnRlZ3JhdGVkIGludG8gbWFueSBvbGRlciBRdWFsY29tbSBTb0NzLCBlLmcuIFF1YWxjb21tXG4gIDcxOlx0XHQgIE1TTTg5MTYgb3IgTVNNODk3NC4gVGhlIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIHZpYSBRTUkvQVQgZnJvbVxuICA3MjpcdFx0ICB1c2Vyc3BhY2Ugd2l0aCBjb250cm9sIHBvcnRzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBXV0FOIHN1YnN5c3RlbVxuICA3MzpcdFx0ICAoQ09ORklHX1JQTVNHX1dXQU5fQ1RSTCkgb3IgUVJUUiBuZXR3b3JrIHNvY2tldHMgKENPTkZJR19RUlRSKS5cbiAgNzQ6XHRcbiAgNzU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gIDc2Olx0XHQgIGNhbGxlZCBxY29tX2JhbV9kbXV4LlxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBSUE1TR19XV0FOX0NUUkxcbiAgNzk6XHRcdHRyaXN0YXRlIFwmIzM0O1JQTVNHIFdXQU4gY29udHJvbCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwODo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzI3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBRdWFsY29tbSBNb2RlbSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBUaGUgZGVzY3JpcHRpb24gc2F5cyBpdCYjMzk7cyBtZWFudCBmb3IgdGhvc2Ugb2xkZXIgUXVhbGNvbW0gU29DcyB3aXRoIGludGVncmF0ZWQgbW9kZW1zLCB5b3Uga25vdywgdGhlIG9uZXMgbGlrZSB0aGUgTVNNODkxNiBvciBNU004OTc0LiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhpcyBhcyBhIHBsYXRmb3JtIGRyaXZlciwgYSB2ZXJ5IHNwZWNpZmljIHR5cGUgdGFpbG9yZWQgZm9yIGhhcmR3YXJlIGludGVncmF0ZWQgb24gdGhhdCBsZXZlbC4KClRvIGdldCBhIGJldHRlciBncmFzcCBvZiBpdHMgc3RydWN0dXJlLCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIGp1bXAgaW50byBgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNgLiBUaGUgYHBsYXRmb3JtX2RyaXZlcmAgd2lsbCBiZSBhIGNydWNpYWwgcG9pbnQgb2YgcmVmZXJlbmNlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYW5kIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkgYW50aWNpcGF0ZSB0aGlzIGZpbGUgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IGluc2lnaHQgaW50byBpdHMgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz05NDc9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYmFtX2RtdXhfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTQ4LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTQ5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJhbV9kbXV4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk1MC1cdC5wcm9iZSA9IGJhbV9kbXV4X3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk1Ny19O1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTU4Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYmFtX2RtdXhfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgyMQoJCQkJCQkJb3V0cHV0OiAxMTAKCQkJCQkJCXRob3VnaHRzOiAyMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHFjb21fYmFtX2RtdXhgIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIGBxY29tX2JhbV9kbXV4YC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHJpZ2h0PyBEZXZpY2VzIGFyZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIENhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIHRoaW5nIGluIFFFTVU/IE5vcGUsIHRoYXQmIzM5O3MgYSBuby1nby4gUUVNVSBkb2VzbiYjMzk7dCwgYnkgZGVmYXVsdCwgZW11bGF0ZSB0aGF0IFF1YWxjb21tIEJBTS1ETVVYIGhhcmR3YXJlLiBFdmVuIGlmIGl0ICpkaWQqLCBpdCYjMzk7cyBzdWNoIGEgc3BlY2lmaWMgU29DIHBlcmlwaGVyYWwsIGl0JiMzOTtzIHVubGlrZWx5IHRvIGJlIGJyb2FkbHkgYWNjZXNzaWJsZS4KCkhtbSwgY291bGQgSSBwb3NzaWJseSBpbnN0YW50aWF0ZSBpdCB0aHJvdWdoIGBzeXNmc2Agb3Igc29tZSBvdGhlciB1c2VyLXNwYWNlIGludGVyZmFjZT8gTm8sIGl0JiMzOTtzIGRlZmluZWQgYXMgYW4gT0YgZGV2aWNlLCBzbyB0aGF0JiMzOTtzIG5vdCBnb2luZyB0byB3b3JrIGVpdGhlci4gVGhlIHBhdGNoIGl0c2VsZiBpcyBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiB3aXRoaW4gdGhlIHBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eSBvZiBgcWNvbV9iYW1fZG11eGAsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBIb3dldmVyLCBnaXZlbiB0aGF0IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIGFuZCBpdCYjMzk7cyBidWlsdCBmb3IgUXVhbGNvbW0gU29DcywgaXQmIzM5O3MgY2xlYXIgaXQgd29uJiMzOTt0IGJlIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEdDRSBhbmQgUUVNVSBhcmUgb3V0LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJcyB0aGVyZSBhbnkgY29uY2VpdmFibGUgd2F5IHRvIHRyaWdnZXIgdGhpcyBmdW5jdGlvbmFsaXR5IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gVGhlIHByb2JlIGZ1bmN0aW9uIGl0c2VsZiByZXF1aXJlcyBhIGAmIzM0O3Fjb20sYmFtLWRtdXgmIzM0O2AgY29tcGF0aWJsZSBzdHJpbmcsIHdoaWNoIGlzIHRoZSBmaXJzdCBoYXJkd2FyZSBzcGVjaWZpYyBmbGFnLiBPbiB0b3Agb2YgdGhhdCwgaXQgbmVlZHMgdGhlIGBwY19hY2tgIHNtZW0gc3RhdGUsIGBwY19pcnFgLCBgdHhgLCBhbmQgYHJ4YCBETUEgY2hhbm5lbHMuIENsZWFybHksIHRoaXMgaXMgZGVlcGx5IHRpZWQgdG8gdGhlIGhhcmR3YXJlLgoKKipWZXJkaWN0OiBXb3J0aEZ1enppbmc9ZmFsc2UuIFRoaXMgZHJpdmVyIGlzbiYjMzk7dCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLioqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA4OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFjb21fYmFtX2RtdXggZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gQkFNIERhdGEgTXVsdGlwbGV4ZXIgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgb2xkZXIgUXVhbGNvbW0gU29DcyAoZS5nLiwgTVNNODkxNiwgTVNNODk3NCkuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzbyB0aGUgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxY29tX2JhbV9kbXV4IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIEJBTSBEYXRhIE11bHRpcGxleGVyIGhhcmR3YXJlIGZvdW5kIGluIHNwZWNpZmljIG9sZGVyIFF1YWxjb21tIFNvQ3MgKGUuZy4sIE1TTTg5MTYsIE1TTTg5NzQpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgc28gdGhlIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwODo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MTAuNTA0NzQzNTIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ3ODU4NDkxODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWNvbV9iYW1fZG11eCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBCQU0gRGF0YSBNdWx0aXBsZXhlciBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBvbGRlciBRdWFsY29tbSBTb0NzIChlLmcuLCBNU004OTE2LCBNU004OTc0KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MTAuNTA0NzQ5MTExWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjczMDIxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYzI5MWYwYWQ5ZjZmYTdhMTM1NDYxZjk2NGJhNzhlYjRhZTAzNmY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDggMDg6NTI6MDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgYi9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1xcbmluZGV4IGNjNmFjZThkNjQzNzEuLjkxYjEzYjlkM2Y4MWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1xcbkBAIC0xMiw2ICsxMiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pZl9hcnAuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFxcdTAwM2VcXG5AQCAtNzMsNiArNzQsOCBAQCBzdHJ1Y3QgYmFtX2RtdXgge1xcbiBcXHR1MzIgcGNfbWFzaywgcGNfYWNrX21hc2s7XFxuIFxcdHdhaXRfcXVldWVfaGVhZF90IHBjX3dhaXQ7XFxuIFxcdHN0cnVjdCBjb21wbGV0aW9uIHBjX2Fja19jb21wbGV0aW9uO1xcbitcXHRzdHJ1Y3QgbXV0ZXggcG93ZXJfbG9jazsgLyogUHJvdGVjdCBwb3dlci1jb250cm9sIHN0YXRlICovXFxuK1xcdGJvb2wgcGNfdm90ZTtcXG4gXFxuIFxcdHN0cnVjdCBkbWFfY2hhbiAqcngsICp0eDtcXG4gXFx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgcnhfc2tic1tCQU1fRE1VWF9OVU1fU0tCXTtcXG5AQCAtOTksNiArMTAyLDIxIEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX3ZvdGUoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcXG4gXFx0XFx0XFx0XFx0ICAgIGVuYWJsZSA/IGRtdXgtXFx1MDAzZXBjX21hc2sgOiAwKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcXG4re1xcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4rXFxuK1xcdGRtdXgtXFx1MDAzZXBjX3ZvdGUgPSBlbmFibGU7XFxuK1xcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZW5hYmxlKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZV9wcm90ZWN0ZWQoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4rXFx0YmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoZG11eCwgZW5hYmxlKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfYWNrKHN0cnVjdCBiYW1fZG11eCAqZG11eClcXG4ge1xcbiBcXHRxY29tX3NtZW1fc3RhdGVfdXBkYXRlX2JpdHMoZG11eC1cXHUwMDNlcGNfYWNrLCBkbXV4LVxcdTAwM2VwY19hY2tfbWFzayxcXG5AQCAtNjU1LDYgKzY3Myw4IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X2ZyZWVfc2ticyhzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSBza2JzW10sXFxuIFxcbiBzdGF0aWMgdm9pZCBiYW1fZG11eF9wb3dlcl9vZmYoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxcbiB7XFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbitcXG4gXFx0aWYgKGRtdXgtXFx1MDAzZXR4KSB7XFxuIFxcdFxcdGRtYWVuZ2luZV90ZXJtaW5hdGVfc3luYyhkbXV4LVxcdTAwM2V0eCk7XFxuIFxcdFxcdGRtYV9yZWxlYXNlX2NoYW5uZWwoZG11eC1cXHUwMDNldHgpO1xcbkBAIC02NzMsMjEgKzY5MywyOCBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9wb3dlcl9vZmYoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxcbiBzdGF0aWMgaXJxcmV0dXJuX3QgYmFtX2RtdXhfcGNfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuIHtcXG4gXFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gZGF0YTtcXG4tXFx0Ym9vbCBuZXdfc3RhdGUgPSAhZG11eC1cXHUwMDNlcGNfc3RhdGU7XFxuK1xcdGJvb2wgbmV3X3N0YXRlO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuK1xcdG5ld19zdGF0ZSA9ICFkbXV4LVxcdTAwM2VwY19zdGF0ZTtcXG4gXFxuIFxcdGRldl9kYmcoZG11eC1cXHUwMDNlZGV2LCBcXFwicGM6ICV1XFxcXG5cXFwiLCBuZXdfc3RhdGUpO1xcbiBcXG4gXFx0aWYgKG5ld19zdGF0ZSkge1xcbi1cXHRcXHRpZiAoYmFtX2RtdXhfcG93ZXJfb24oZG11eCkpXFxuK1xcdFxcdGlmIChkbXV4LVxcdTAwM2VyeCB8fCBiYW1fZG11eF9wb3dlcl9vbihkbXV4KSlcXG4gXFx0XFx0XFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcXG4rXFx0fSBlbHNlIGlmIChkbXV4LVxcdTAwM2VwY192b3RlKSB7XFxuK1xcdFxcdGRldl9kYmcoZG11eC1cXHUwMDNlZGV2LCBcXFwicGMgZG93biB3aGlsZSBob3N0IHZvdGUgaXMgYWN0aXZlXFxcXG5cXFwiKTtcXG4rXFx0XFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XFxuIFxcdFxcdGJhbV9kbXV4X3BjX2FjayhkbXV4KTtcXG4gXFx0fVxcbiBcXG4tXFx0ZG11eC1cXHUwMDNlcGNfc3RhdGUgPSBuZXdfc3RhdGU7XFxuK1xcdFdSSVRFX09OQ0UoZG11eC1cXHUwMDNlcGNfc3RhdGUsIG5ld19zdGF0ZSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuIFxcdHdha2VfdXBfYWxsKFxcdTAwMjZkbXV4LVxcdTAwM2VwY193YWl0KTtcXG4gXFxuIFxcdHJldHVybiBJUlFfSEFORExFRDtcXG5AQCAtNzA4LDcgKzczNSwxMiBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbiBcXG4gXFx0ZGV2X2RiZyhkZXYsIFxcXCJydW50aW1lIHN1c3BlbmRcXFxcblxcXCIpO1xcbi1cXHRiYW1fZG11eF9wY192b3RlKGRtdXgsIGZhbHNlKTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbitcXHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBmYWxzZSk7XFxuK1xcdGlmICghZG11eC1cXHUwMDNlcGNfc3RhdGUpXFxuK1xcdFxcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTcyNCw0MCArNzU2LDU1IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYmFtX2RtdXhfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRcXHRcXHRcXHRcXHQgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxcbiBcXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4gXFxuK1xcdHN5bmNocm9uaXplX2lycShkbXV4LVxcdTAwM2VwY19pcnEpO1xcbitcXG4gXFx0LyogVm90ZSBmb3IgcG93ZXIgc3RhdGUgKi9cXG4tXFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCB0cnVlKTtcXG4rXFx0YmFtX2RtdXhfcGNfdm90ZV9wcm90ZWN0ZWQoZG11eCwgdHJ1ZSk7XFxuIFxcbiBcXHQvKiBXYWl0IGZvciBhY2sgKi9cXG4gXFx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNmRtdXgtXFx1MDAzZXBjX2Fja19jb21wbGV0aW9uLFxcbiBcXHRcXHRcXHRcXHRcXHQgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7XFxuLVxcdFxcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xcbitcXHRcXHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcXG4gXFx0XFx0cmV0dXJuIC1FVElNRURPVVQ7XFxuIFxcdH1cXG4gXFxuK1xcdHN5bmNocm9uaXplX2lycShkbXV4LVxcdTAwM2VwY19pcnEpO1xcbitcXG4gXFx0LyogV2FpdCB1bnRpbCB3ZSdyZSB1cCAqL1xcbi1cXHRpZiAoIXdhaXRfZXZlbnRfdGltZW91dChkbXV4LVxcdTAwM2VwY193YWl0LCBkbXV4LVxcdTAwM2VwY19zdGF0ZSxcXG4rXFx0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cXHUwMDNlcGNfd2FpdCwgUkVBRF9PTkNFKGRtdXgtXFx1MDAzZXBjX3N0YXRlKSxcXG4gXFx0XFx0XFx0XFx0QkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7XFxuLVxcdFxcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xcbitcXHRcXHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcXG4gXFx0XFx0cmV0dXJuIC1FVElNRURPVVQ7XFxuIFxcdH1cXG4gXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbitcXG4gXFx0LyogRW5zdXJlIHRoYXQgd2UgYWN0dWFsbHkgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5ICovXFxuIFxcdGlmICghZG11eC1cXHUwMDNlcngpIHtcXG4tXFx0XFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XFxuK1xcdFxcdGJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGZhbHNlKTtcXG4rXFx0XFx0aWYgKCFkbXV4LVxcdTAwM2VwY19zdGF0ZSlcXG4rXFx0XFx0XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbiBcXHRcXHRyZXR1cm4gLUVOWElPO1xcbiBcXHR9XFxuIFxcbiBcXHQvKiBSZXF1ZXN0IFRYIGNoYW5uZWwgaWYgbmVjZXNzYXJ5ICovXFxuLVxcdGlmIChkbXV4LVxcdTAwM2V0eClcXG4rXFx0aWYgKGRtdXgtXFx1MDAzZXR4KSB7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuIFxcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuIFxcbiBcXHRkbXV4LVxcdTAwM2V0eCA9IGRtYV9yZXF1ZXN0X2NoYW4oZGV2LCBcXFwidHhcXFwiKTtcXG4gXFx0aWYgKElTX0VSUihkbXV4LVxcdTAwM2V0eCkpIHtcXG4gXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gcmVxdWVzdCBUWCBETUEgY2hhbm5lbDogJXBlXFxcXG5cXFwiLCBkbXV4LVxcdTAwM2V0eCk7XFxuIFxcdFxcdGRtdXgtXFx1MDAzZXR4ID0gTlVMTDtcXG4tXFx0XFx0YmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKGRldik7XFxuK1xcdFxcdGJhbV9kbXV4X3BjX3ZvdGVfbG9ja2VkKGRtdXgsIGZhbHNlKTtcXG4rXFx0XFx0aWYgKCFkbXV4LVxcdTAwM2VwY19zdGF0ZSlcXG4rXFx0XFx0XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbiBcXHRcXHRyZXR1cm4gLUVOWElPO1xcbiBcXHR9XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC03OTksNiArODQ2LDcgQEAgc3RhdGljIGludCBiYW1fZG11eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFxcdTAwMjZkbXV4LVxcdTAwM2VwY193YWl0KTtcXG4gXFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZkbXV4LVxcdTAwM2VwY19hY2tfY29tcGxldGlvbik7XFxuIFxcdGNvbXBsZXRlX2FsbChcXHUwMDI2ZG11eC1cXHUwMDNlcGNfYWNrX2NvbXBsZXRpb24pO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4gXFxuIFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkbXV4LVxcdTAwM2V0eF9sb2NrKTtcXG4gXFx0SU5JVF9XT1JLKFxcdTAwMjZkbXV4LVxcdTAwM2V0eF93YWtldXBfd29yaywgYmFtX2RtdXhfdHhfd2FrZXVwX3dvcmspO1xcbkBAIC04MjcsMTAgKzg3NSwxMSBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGdvdG8gZXJyX2Rpc2FibGVfcG07XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4gXFx0cmV0ID0gaXJxX2dldF9pcnFjaGlwX3N0YXRlKGRtdXgtXFx1MDAzZXBjX2lycSwgSVJRQ0hJUF9TVEFURV9MSU5FX0xFVkVMLFxcbiBcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmRtdXgtXFx1MDAzZXBjX3N0YXRlKTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0Z290byBlcnJfZGlzYWJsZV9wbTtcXG4rXFx0XFx0Z290byBlcnJfdW5sb2NrX3Bvd2VyO1xcbiBcXG4gXFx0LyogQ2hlY2sgaWYgcmVtb3RlIGZpbmlzaGVkIGluaXRpYWxpemF0aW9uIGJlZm9yZSB1cyAqL1xcbiBcXHRpZiAoZG11eC1cXHUwMDNlcGNfc3RhdGUpIHtcXG5AQCAtODM5LDkgKzg4OCwxMiBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbiBcXHR9XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuK2Vycl91bmxvY2tfcG93ZXI6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZG11eC1cXHUwMDNlcG93ZXJfbG9jayk7XFxuIGVycl9kaXNhYmxlX3BtOlxcbiBcXHRwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTtcXG4gXFx0cG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChkZXYpO1xcbkBAIC04NzIsMTIgKzkyNCwxNSBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7XFxuIFxcbiBcXHQvKiBUcnkgdG8gd2FpdCBmb3IgcmVtb3RlIHNpZGUgdG8gZHJvcCBwb3dlciB2b3RlICovXFxuLVxcdGlmICghd2FpdF9ldmVudF90aW1lb3V0KGRtdXgtXFx1MDAzZXBjX3dhaXQsICFkbXV4LVxcdTAwM2VyeCwgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxcbitcXHRpZiAoIXdhaXRfZXZlbnRfdGltZW91dChkbXV4LVxcdTAwM2VwY193YWl0LCAhUkVBRF9PTkNFKGRtdXgtXFx1MDAzZXJ4KSxcXG4rXFx0XFx0XFx0XFx0QkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxcbiBcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlRpbWVkIG91dCB3YWl0aW5nIGZvciByZW1vdGUgc2lkZSB0byBzdXNwZW5kXFxcXG5cXFwiKTtcXG4gXFxuIFxcdC8qIE1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGNsZWFuZWQgdXAgYmVmb3JlIHdlIHJldHVybiAqL1xcbiBcXHRkaXNhYmxlX2lycShkbXV4LVxcdTAwM2VwY19pcnEpO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZkbXV4LVxcdTAwM2Vwb3dlcl9sb2NrKTtcXG4gXFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmRtdXgtXFx1MDAzZXBvd2VyX2xvY2spO1xcbiBcXHRiYW1fZG11eF9mcmVlX3NrYnMoZG11eC1cXHUwMDNldHhfc2ticywgRE1BX1RPX0RFVklDRSk7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA4OjUyOjEwLjkzMjY3NTI5M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI0MzU3OTAzNjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWNvbV9iYW1fZG11eCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBCQU0gRGF0YSBNdWx0aXBsZXhlciBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBvbGRlciBRdWFsY29tbSBTb0NzIChlLmcuLCBNU004OTE2LCBNU004OTc0KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2MyOTFmMGFkOWY2ZmE3YTEzNTQ2MWY5NjRiYTc4ZWI0YWUwMzZmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMDg6NTI6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5pbmRleCBjYzZhY2U4ZDY0MzcxLi45MWIxM2I5ZDNmODFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5AQCAtMTIsNiArMTIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX2FycC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG5AQCAtNzMsNiArNzQsOCBAQCBzdHJ1Y3QgYmFtX2RtdXgge1xuIFx0dTMyIHBjX21hc2ssIHBjX2Fja19tYXNrO1xuIFx0d2FpdF9xdWV1ZV9oZWFkX3QgcGNfd2FpdDtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIHBjX2Fja19jb21wbGV0aW9uO1xuK1x0c3RydWN0IG11dGV4IHBvd2VyX2xvY2s7IC8qIFByb3RlY3QgcG93ZXItY29udHJvbCBzdGF0ZSAqL1xuK1x0Ym9vbCBwY192b3RlO1xuIFxuIFx0c3RydWN0IGRtYV9jaGFuICpyeCwgKnR4O1xuIFx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgcnhfc2tic1tCQU1fRE1VWF9OVU1fU0tCXTtcbkBAIC05OSw2ICsxMDIsMjEgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIGJvb2wgZW5hYmxlKVxuIFx0XHRcdFx0ICAgIGVuYWJsZSA/IGRtdXgtXHUwMDNlcGNfbWFzayA6IDApO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBiYW1fZG11eF9wY192b3RlX2xvY2tlZChzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIGJvb2wgZW5hYmxlKVxuK3tcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbitcbitcdGRtdXgtXHUwMDNlcGNfdm90ZSA9IGVuYWJsZTtcbitcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZW5hYmxlKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfdm90ZV9wcm90ZWN0ZWQoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcbit7XG4rXHRtdXRleF9sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4rXHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBlbmFibGUpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX2FjayhzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXG4ge1xuIFx0cWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGRtdXgtXHUwMDNlcGNfYWNrLCBkbXV4LVx1MDAzZXBjX2Fja19tYXNrLFxuQEAgLTY1NSw2ICs2NzMsOCBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9mcmVlX3NrYnMoc3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgc2tic1tdLFxuIFxuIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3Bvd2VyX29mZihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXG4ge1xuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuK1xuIFx0aWYgKGRtdXgtXHUwMDNldHgpIHtcbiBcdFx0ZG1hZW5naW5lX3Rlcm1pbmF0ZV9zeW5jKGRtdXgtXHUwMDNldHgpO1xuIFx0XHRkbWFfcmVsZWFzZV9jaGFubmVsKGRtdXgtXHUwMDNldHgpO1xuQEAgLTY3MywyMSArNjkzLDI4IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X3Bvd2VyX29mZihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXG4gc3RhdGljIGlycXJldHVybl90IGJhbV9kbXV4X3BjX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuIHtcbiBcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRhdGE7XG4tXHRib29sIG5ld19zdGF0ZSA9ICFkbXV4LVx1MDAzZXBjX3N0YXRlO1xuK1x0Ym9vbCBuZXdfc3RhdGU7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4rXHRuZXdfc3RhdGUgPSAhZG11eC1cdTAwM2VwY19zdGF0ZTtcbiBcbiBcdGRldl9kYmcoZG11eC1cdTAwM2VkZXYsIFwicGM6ICV1XFxuXCIsIG5ld19zdGF0ZSk7XG4gXG4gXHRpZiAobmV3X3N0YXRlKSB7XG4tXHRcdGlmIChiYW1fZG11eF9wb3dlcl9vbihkbXV4KSlcbitcdFx0aWYgKGRtdXgtXHUwMDNlcnggfHwgYmFtX2RtdXhfcG93ZXJfb24oZG11eCkpXG4gXHRcdFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xuIFx0XHRlbHNlXG4gXHRcdFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xuK1x0fSBlbHNlIGlmIChkbXV4LVx1MDAzZXBjX3ZvdGUpIHtcbitcdFx0ZGV2X2RiZyhkbXV4LVx1MDAzZWRldiwgXCJwYyBkb3duIHdoaWxlIGhvc3Qgdm90ZSBpcyBhY3RpdmVcXG5cIik7XG4rXHRcdGJhbV9kbXV4X3BjX2FjayhkbXV4KTtcbiBcdH0gZWxzZSB7XG4gXHRcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbiBcdFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xuIFx0fVxuIFxuLVx0ZG11eC1cdTAwM2VwY19zdGF0ZSA9IG5ld19zdGF0ZTtcbitcdFdSSVRFX09OQ0UoZG11eC1cdTAwM2VwY19zdGF0ZSwgbmV3X3N0YXRlKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFx0d2FrZV91cF9hbGwoXHUwMDI2ZG11eC1cdTAwM2VwY193YWl0KTtcbiBcbiBcdHJldHVybiBJUlFfSEFORExFRDtcbkBAIC03MDgsNyArNzM1LDEyIEBAIHN0YXRpYyBpbnQgYmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuIFxuIFx0ZGV2X2RiZyhkZXYsIFwicnVudGltZSBzdXNwZW5kXFxuXCIpO1xuLVx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4rXHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBmYWxzZSk7XG4rXHRpZiAoIWRtdXgtXHUwMDNlcGNfc3RhdGUpXG4rXHRcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTcyNCw0MCArNzU2LDU1IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYmFtX2RtdXhfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdFx0XHQgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxuIFx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiBcbitcdHN5bmNocm9uaXplX2lycShkbXV4LVx1MDAzZXBjX2lycSk7XG4rXG4gXHQvKiBWb3RlIGZvciBwb3dlciBzdGF0ZSAqL1xuLVx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCB0cnVlKTtcbitcdGJhbV9kbXV4X3BjX3ZvdGVfcHJvdGVjdGVkKGRtdXgsIHRydWUpO1xuIFxuIFx0LyogV2FpdCBmb3IgYWNrICovXG4gXHRpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcdTAwMjZkbXV4LVx1MDAzZXBjX2Fja19jb21wbGV0aW9uLFxuIFx0XHRcdFx0XHQgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7XG4tXHRcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xuK1x0XHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcbiBcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4gXHR9XG4gXG4rXHRzeW5jaHJvbml6ZV9pcnEoZG11eC1cdTAwM2VwY19pcnEpO1xuK1xuIFx0LyogV2FpdCB1bnRpbCB3ZSdyZSB1cCAqL1xuLVx0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCBkbXV4LVx1MDAzZXBjX3N0YXRlLFxuK1x0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCBSRUFEX09OQ0UoZG11eC1cdTAwM2VwY19zdGF0ZSksXG4gXHRcdFx0XHRCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpIHtcbi1cdFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG4rXHRcdGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZChkZXYpO1xuIFx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiBcdH1cbiBcbitcdG11dGV4X2xvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbitcbiBcdC8qIEVuc3VyZSB0aGF0IHdlIGFjdHVhbGx5IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseSAqL1xuIFx0aWYgKCFkbXV4LVx1MDAzZXJ4KSB7XG4tXHRcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xuK1x0XHRiYW1fZG11eF9wY192b3RlX2xvY2tlZChkbXV4LCBmYWxzZSk7XG4rXHRcdGlmICghZG11eC1cdTAwM2VwY19zdGF0ZSlcbitcdFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFx0XHRyZXR1cm4gLUVOWElPO1xuIFx0fVxuIFxuIFx0LyogUmVxdWVzdCBUWCBjaGFubmVsIGlmIG5lY2Vzc2FyeSAqL1xuLVx0aWYgKGRtdXgtXHUwMDNldHgpXG4rXHRpZiAoZG11eC1cdTAwM2V0eCkge1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdFx0cmV0dXJuIDA7XG4rXHR9XG4gXG4gXHRkbXV4LVx1MDAzZXR4ID0gZG1hX3JlcXVlc3RfY2hhbihkZXYsIFwidHhcIik7XG4gXHRpZiAoSVNfRVJSKGRtdXgtXHUwMDNldHgpKSB7XG4gXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byByZXF1ZXN0IFRYIERNQSBjaGFubmVsOiAlcGVcXG5cIiwgZG11eC1cdTAwM2V0eCk7XG4gXHRcdGRtdXgtXHUwMDNldHggPSBOVUxMO1xuLVx0XHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcbitcdFx0YmFtX2RtdXhfcGNfdm90ZV9sb2NrZWQoZG11eCwgZmFsc2UpO1xuK1x0XHRpZiAoIWRtdXgtXHUwMDNlcGNfc3RhdGUpXG4rXHRcdFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2ZG11eC1cdTAwM2Vwb3dlcl9sb2NrKTtcbiBcdFx0cmV0dXJuIC1FTlhJTztcbiBcdH1cbitcdG11dGV4X3VubG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTc5OSw2ICs4NDYsNyBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNmRtdXgtXHUwMDNlcGNfd2FpdCk7XG4gXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2ZG11eC1cdTAwM2VwY19hY2tfY29tcGxldGlvbik7XG4gXHRjb21wbGV0ZV9hbGwoXHUwMDI2ZG11eC1cdTAwM2VwY19hY2tfY29tcGxldGlvbik7XG4rXHRtdXRleF9pbml0KFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZkbXV4LVx1MDAzZXR4X2xvY2spO1xuIFx0SU5JVF9XT1JLKFx1MDAyNmRtdXgtXHUwMDNldHhfd2FrZXVwX3dvcmssIGJhbV9kbXV4X3R4X3dha2V1cF93b3JrKTtcbkBAIC04MjcsMTAgKzg3NSwxMSBAQCBzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGVycl9kaXNhYmxlX3BtO1xuIFxuK1x0bXV0ZXhfbG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFx0cmV0ID0gaXJxX2dldF9pcnFjaGlwX3N0YXRlKGRtdXgtXHUwMDNlcGNfaXJxLCBJUlFDSElQX1NUQVRFX0xJTkVfTEVWRUwsXG4gXHRcdFx0XHQgICAgXHUwMDI2ZG11eC1cdTAwM2VwY19zdGF0ZSk7XG4gXHRpZiAocmV0KVxuLVx0XHRnb3RvIGVycl9kaXNhYmxlX3BtO1xuK1x0XHRnb3RvIGVycl91bmxvY2tfcG93ZXI7XG4gXG4gXHQvKiBDaGVjayBpZiByZW1vdGUgZmluaXNoZWQgaW5pdGlhbGl6YXRpb24gYmVmb3JlIHVzICovXG4gXHRpZiAoZG11eC1cdTAwM2VwY19zdGF0ZSkge1xuQEAgLTgzOSw5ICs4ODgsMTIgQEAgc3RhdGljIGludCBiYW1fZG11eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRlbHNlXG4gXHRcdFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xuIFx0fVxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbitlcnJfdW5sb2NrX3Bvd2VyOlxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gZXJyX2Rpc2FibGVfcG06XG4gXHRwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTtcbiBcdHBtX3J1bnRpbWVfZG9udF91c2VfYXV0b3N1c3BlbmQoZGV2KTtcbkBAIC04NzIsMTIgKzkyNCwxNSBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpO1xuIFxuIFx0LyogVHJ5IHRvIHdhaXQgZm9yIHJlbW90ZSBzaWRlIHRvIGRyb3AgcG93ZXIgdm90ZSAqL1xuLVx0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCAhZG11eC1cdTAwM2VyeCwgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxuK1x0aWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoZG11eC1cdTAwM2VwY193YWl0LCAhUkVBRF9PTkNFKGRtdXgtXHUwMDNlcngpLFxuK1x0XHRcdFx0QkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKVxuIFx0XHRkZXZfZXJyKGRldiwgXCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcmVtb3RlIHNpZGUgdG8gc3VzcGVuZFxcblwiKTtcbiBcbiBcdC8qIE1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGNsZWFuZWQgdXAgYmVmb3JlIHdlIHJldHVybiAqL1xuIFx0ZGlzYWJsZV9pcnEoZG11eC1cdTAwM2VwY19pcnEpO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZkbXV4LVx1MDAzZXBvd2VyX2xvY2spO1xuIFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRtdXgtXHUwMDNlcG93ZXJfbG9jayk7XG4gXHRiYW1fZG11eF9mcmVlX3NrYnMoZG11eC1cdTAwM2V0eF9za2JzLCBETUFfVE9fREVWSUNFKTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwODo1MjoxMC45MzI2NzY0NjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjM4MTU4Mjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdXQU4gRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdG91Y2hlZCBgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBpdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSBgcG93ZXJfbG9ja2AgbXV0ZXggdG8gcHJvdGVjdCBwb3dlci1jb250cm9sIHN0YXRlIHdpdGhpbiB0aGUgYGJhbV9kbXV4YCBkcml2ZXIuIFRoZSBwYXRjaCBzZWVtcyB0byBhZmZlY3Qgc2V2ZXJhbCBrZXkgZnVuY3Rpb25zOiBgYmFtX2RtdXhfcGNfdm90ZWAsIGBiYW1fZG11eF9wb3dlcl9vZmZgLCBgYmFtX2RtdXhfcGNfaXJxYCwgYGJhbV9kbXV4X3J1bnRpbWVfc3VzcGVuZGAsIGBiYW1fZG11eF9ydW50aW1lX3Jlc3VtZWAsIGBiYW1fZG11eF9wcm9iZWAsIGFuZCBgYmFtX2RtdXhfcmVtb3ZlYC4gRnJvbSB0aGUgZmlsZSBuYW1lLCBpdCdzIGNsZWFyIHRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEJBTSBEYXRhIE11bHRpcGxleGVyLCB3aGljaCBpcyBXV0FOIHJlbGF0ZWQsIHNvIEknbSB0aGlua2luZyBjZWxsdWxhciBkYXRhLlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyByZWFjaGFiaWxpdHkuIEdpdmVuIHRoYXQgdGhpcyBpcyBhIFdXQU4gZHJpdmVyLCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gVGhlc2UgV1dBTiBkcml2ZXJzIG9mdGVuIGhhdmUgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIHNvIEkgc2hvdWxkIHNlZSBpZiB0aGUgcGxhdGZvcm0gSSdtIHdvcmtpbmcgd2l0aCBldmVuIGhhcyBhIGNoYW5jZSBvZiBydW5uaW5nIHRoaXMuXG5cbkxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyB0byBzZWUgaWYgSSBjYW4gZmlndXJlIG91dCBpZiBpdCdzIHNlbGVjdGFibGUsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFNlYXJjaGluZyBmb3IgYHFjb21fYmFtX2RtdXhgIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTU1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MTUuNTcwODM4NzUyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTU4NDUwNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicWNvbV9iYW1fZG11eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJNQUlOVEFJTkVSUz0yMjA5Nz1GOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxiYW0tZG11eC55YW1sXFxuTUFJTlRBSU5FUlM6MjIwOTg6RjpcXHRkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1xcbk1BSU5UQUlORVJTLTIyMDk5LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTY1PWNvbmZpZyBRQ09NX0JBTV9ETVVYXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNzUtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NzY6XFx0ICBjYWxsZWQgcWNvbV9iYW1fZG11eC5cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNzctXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19NSElfV1dBTl9NQklNKSArPSBtaGlfd3dhbl9tYmltLm9cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19RQ09NX0JBTV9ETVVYKSArPSBxY29tX2JhbV9kbXV4Lm9cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTE0LW9iai0kKENPTkZJR19SUE1TR19XV0FOX0NUUkwpICs9IHJwbXNnX3d3YW5fY3RybC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA4OjUyOjE3LjMyNjY5MjAyOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTMxMjk4MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBRQ09NX0JBTV9ETVVYIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBRQ09NX0JBTV9ETVVYYC4gTGV0J3MgZGlnIGludG8gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMgdG8gc2VlIHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYC4gVGhpcyBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGZvciBhbnl0aGluZyByZWxhdGVkIHRvIFdXQU4gKFdpcmVsZXNzIFdpZGUgQXJlYSBOZXR3b3JrKSBhbmQgUXVhbGNvbW0gKFFDT00pIGhhcmR3YXJlLCBhbmQgQkFNIChwcm9iYWJseSBCdXMgQWNjZXNzIE1hbmFnZXIpIHNvdW5kcyBsaWtlIGEgbGlrZWx5IGNvbXBvbmVudCB0byBiZSBmb3VuZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYSBXV0FOIGRyaXZlci4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGNvbmRpdGlvbmFsIGxvZ2ljIG9yIGFuIGluY2x1c2lvbiB0aGF0J3MgdGllZCB0byB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgcmVhZGluZyB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0IGluZm9ybWF0aW9uIEkgY2FuIGdsZWFuLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzYyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MjEuMjM5ODI0NTIzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzc5MTU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUUNPTV9CQU1fRE1VWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93d2FuL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTUzPWNvbmZpZyBNSElfV1dBTl9NQklNXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNjQtXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjY1OmNvbmZpZyBRQ09NX0JBTV9ETVVYXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTY2LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwODo1MjoyMS4zNDM2MjAxNTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTU2NTgyNTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIFdXQU4gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBXV0FOIChXaXJlbGVzcyBXaWRlIEFyZWEgTmV0d29yaykgZHJpdmVycyBhcmUgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4gSXQncyB1c3VhbGx5IHRoZSBLY29uZmlnIGZpbGUgdGhhdCBkaWN0YXRlcyBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkgcmVjYWxsIHRoYXQgYGRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ2AgaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LCBiYXNlZCBvbiBwcmlvciBleHBlcmllbmNlLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGFyb3VuZCBsaW5lIDY1OyBJIGtub3cgdGhhdCBLY29uZmlnIGZpbGVzIGFyZSBzdHJ1Y3R1cmVkLCBzbyB1c3VhbGx5LCBJIGNhbiBmaW5kIGtleSBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvciBpbml0aWFsIGRyaXZlciBzZWxlY3Rpb24gaW4gdGhhdCBhcmVhLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byBhc3Nlc3MgdGhlIGRpZmZlcmVudCBkcml2ZXJzIGluIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmRpdGlvbmFsbHkgaW5jbHVkZWQuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcxOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA4OjUyOjI0LjkwMDIwNTE5MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHQgICAgICAgICAgSUQgMC4gQWRkaXRpb25hbCBsaW5rcyBjYW4gYmUgY3JlYXRlZCB2aWEgd3dhbiBydG5ldGxpbmsgdHlwZS5cXG4gIDYxOlxcdFxcbiAgNjI6XFx0ICAgICAgICAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgNjM6XFx0ICAgICAgICAgIGNhbGxlZCBtaGlfd3dhbl9tYmltLlxcbiAgNjQ6XFx0XFxuICA2NTpcXHRjb25maWcgUUNPTV9CQU1fRE1VWFxcbiAgNjY6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEJBTS1ETVVYIFdXQU4gbmV0d29yayBkcml2ZXJcXFwiXFxuICA2NzpcXHRcXHRkZXBlbmRzIG9uIChETUFfRU5HSU5FIFxcdTAwMjZcXHUwMDI2IFBNIFxcdTAwMjZcXHUwMDI2IFFDT01fU01FTV9TVEFURSkgfHwgQ09NUElMRV9URVNUXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIFRoZSBCQU0gRGF0YSBNdWx0aXBsZXhlciBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIG5ldHdvcmsgZGF0YSBjaGFubmVsc1xcbiAgNzA6XFx0XFx0ICBvZiBtb2RlbXMgaW50ZWdyYXRlZCBpbnRvIG1hbnkgb2xkZXIgUXVhbGNvbW0gU29DcywgZS5nLiBRdWFsY29tbVxcbiAgNzE6XFx0XFx0ICBNU004OTE2IG9yIE1TTTg5NzQuIFRoZSBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCB2aWEgUU1JL0FUIGZyb21cXG4gIDcyOlxcdFxcdCAgdXNlcnNwYWNlIHdpdGggY29udHJvbCBwb3J0cyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgV1dBTiBzdWJzeXN0ZW1cXG4gIDczOlxcdFxcdCAgKENPTkZJR19SUE1TR19XV0FOX0NUUkwpIG9yIFFSVFIgbmV0d29yayBzb2NrZXRzIChDT05GSUdfUVJUUikuXFxuICA3NDpcXHRcXG4gIDc1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICA3NjpcXHRcXHQgIGNhbGxlZCBxY29tX2JhbV9kbXV4LlxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgUlBNU0dfV1dBTl9DVFJMXFxuICA3OTpcXHRcXHR0cmlzdGF0ZSBcXFwiUlBNU0cgV1dBTiBjb250cm9sIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MjQuOTAwMjY3NTQyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzODA2Mzk1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFF1YWxjb21tIE1vZGVtIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBUaGUgZGVzY3JpcHRpb24gc2F5cyBpdCdzIG1lYW50IGZvciB0aG9zZSBvbGRlciBRdWFsY29tbSBTb0NzIHdpdGggaW50ZWdyYXRlZCBtb2RlbXMsIHlvdSBrbm93LCB0aGUgb25lcyBsaWtlIHRoZSBNU004OTE2IG9yIE1TTTg5NzQuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgcGxhdGZvcm0gZHJpdmVyLCBhIHZlcnkgc3BlY2lmaWMgdHlwZSB0YWlsb3JlZCBmb3IgaGFyZHdhcmUgaW50ZWdyYXRlZCBvbiB0aGF0IGxldmVsLlxuXG5UbyBnZXQgYSBiZXR0ZXIgZ3Jhc3Agb2YgaXRzIHN0cnVjdHVyZSwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIGp1bXAgaW50byBgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNgLiBUaGUgYHBsYXRmb3JtX2RyaXZlcmAgd2lsbCBiZSBhIGNydWNpYWwgcG9pbnQgb2YgcmVmZXJlbmNlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYW5kIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkgYW50aWNpcGF0ZSB0aGlzIGZpbGUgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IGluc2lnaHQgaW50byBpdHMgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzI3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwODo1MjoyOC41MzgzMzQ2ODFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzM0NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz05NDc9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYmFtX2RtdXhfb2ZfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk0OC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5NDk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmFtX2RtdXhfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk1MC1cXHQucHJvYmUgPSBiYW1fZG11eF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk1Ny19O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjk1ODptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGJhbV9kbXV4X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwODo1MjoyOC41OTgwNzQ3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2OTI0Nzc3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHFjb21fYmFtX2RtdXhgIERyaXZlcidzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIGBxY29tX2JhbV9kbXV4YC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBhIHBsYXRmb3JtIGRyaXZlciwgcmlnaHQ/IERldmljZXMgYXJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZSwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gQ2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgdGhpbmcgaW4gUUVNVT8gTm9wZSwgdGhhdCdzIGEgbm8tZ28uIFFFTVUgZG9lc24ndCwgYnkgZGVmYXVsdCwgZW11bGF0ZSB0aGF0IFF1YWxjb21tIEJBTS1ETVVYIGhhcmR3YXJlLiBFdmVuIGlmIGl0ICpkaWQqLCBpdCdzIHN1Y2ggYSBzcGVjaWZpYyBTb0MgcGVyaXBoZXJhbCwgaXQncyB1bmxpa2VseSB0byBiZSBicm9hZGx5IGFjY2Vzc2libGUuXG5cbkhtbSwgY291bGQgSSBwb3NzaWJseSBpbnN0YW50aWF0ZSBpdCB0aHJvdWdoIGBzeXNmc2Agb3Igc29tZSBvdGhlciB1c2VyLXNwYWNlIGludGVyZmFjZT8gTm8sIGl0J3MgZGVmaW5lZCBhcyBhbiBPRiBkZXZpY2UsIHNvIHRoYXQncyBub3QgZ29pbmcgdG8gd29yayBlaXRoZXIuIFRoZSBwYXRjaCBpdHNlbGYgaXMgZml4aW5nIGEgcmFjZSBjb25kaXRpb24gd2l0aGluIHRoZSBwb3dlciBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdHkgb2YgYHFjb21fYmFtX2RtdXhgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSG93ZXZlciwgZ2l2ZW4gdGhhdCB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBhbmQgaXQncyBidWlsdCBmb3IgUXVhbGNvbW0gU29DcywgaXQncyBjbGVhciBpdCB3b24ndCBiZSByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHQ0UgYW5kIFFFTVUgYXJlIG91dC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIGRpZyBhIGxpdHRsZSBkZWVwZXIuIElzIHRoZXJlIGFueSBjb25jZWl2YWJsZSB3YXkgdG8gdHJpZ2dlciB0aGlzIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlPyBUaGUgcHJvYmUgZnVuY3Rpb24gaXRzZWxmIHJlcXVpcmVzIGEgYFwicWNvbSxiYW0tZG11eFwiYCBjb21wYXRpYmxlIHN0cmluZywgd2hpY2ggaXMgdGhlIGZpcnN0IGhhcmR3YXJlIHNwZWNpZmljIGZsYWcuIE9uIHRvcCBvZiB0aGF0LCBpdCBuZWVkcyB0aGUgYHBjX2Fja2Agc21lbSBzdGF0ZSwgYHBjX2lycWAsIGB0eGAsIGFuZCBgcnhgIERNQSBjaGFubmVscy4gQ2xlYXJseSwgdGhpcyBpcyBkZWVwbHkgdGllZCB0byB0aGUgaGFyZHdhcmUuXG5cbioqVmVyZGljdDogV29ydGhGdXp6aW5nPWZhbHNlLiBUaGlzIGRyaXZlciBpc24ndCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLioqXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MjEsIk91dHB1dFRva2VucyI6MTEwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA4OjUyOjM1LjI5MDU1NDY1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxY29tX2JhbV9kbXV4IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIEJBTSBEYXRhIE11bHRpcGxleGVyIGhhcmR3YXJlIGZvdW5kIGluIHNwZWNpZmljIG9sZGVyIFF1YWxjb21tIFNvQ3MgKGUuZy4sIE1TTTg5MTYsIE1TTTg5NzQpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgc28gdGhlIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWNvbV9iYW1fZG11eCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBCQU0gRGF0YSBNdWx0aXBsZXhlciBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBvbGRlciBRdWFsY29tbSBTb0NzIChlLmcuLCBNU004OTE2LCBNU004OTc0KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDg6NTI6MzUuMjkwNTgwNzkyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxpz8j[1] Phase: Running StartedAt: 2026-08-08 08:52:46 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxpz8j[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-08 08:52:46 +0000 UTC FinishedAt: 2026-08-08 08:52:51 +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,}