Name: series-workflow7q7mc Phase: Failed StartedAt: 2026-09-11 08:46:36 +0000 UTC FinishedAt: 2026-09-11 08:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q7mc[0] Phase: Succeeded StartedAt: 2026-09-11 08:46:36 +0000 UTC FinishedAt: 2026-09-11 08:50:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q7mc[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 08:46:36 +0000 UTC FinishedAt: 2026-09-11 08:50:11 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDA4OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoc3BlY2lmaWNhbGx5IGhhbmRsaW5nIFR4IERNQSBtYXBwaW5nIGZhaWx1cmUgcm9sbGJhY2tzIGluIGp1bWJvIGZyYW1lIHRyYW5zbWlzc2lvbikuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DIGNvbnRyb2xsZXJzIChvciBkZWRpY2F0ZWQgUENJZSBkZXZpY2VzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ODVkOGJlNTI0MDUwYTkxYzNmZGNlODg5Njk1YjVlMDkzNDQxNDI3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMDg6NDk6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jXG5pbmRleCA2NjAyNWUyNTA5ZTkxLi44NDE1Yzc0MGVlOWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmNcbkBAIC0yMCw2ICYjNDM7MjAsNyBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IHR4X3EtXHUwMDNlcHJpdl9kYXRhO1xuIFx0dW5zaWduZWQgaW50IGVudHJ5ID0gdHhfcS1cdTAwM2VjdXJfdHg7XG4mIzQzO1x0dW5zaWduZWQgaW50IGZpcnN0X2VudHJ5ID0gZW50cnk7XG4gXHR1bnNpZ25lZCBpbnQgYm1heCwgYnVmX2xlbjtcbiBcdHVuc2lnbmVkIGludCBpID0gMSwgbGVuO1xuIFx0c3RydWN0IGRtYV9kZXNjICpkZXNjO1xuQEAgLTU3LDcgJiM0Mzs1OCw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRcdCAgICAgIGJtYXgsIERNQV9UT19ERVZJQ0UpO1xuIFx0XHRcdGRlc2MtXHUwMDNlZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpO1xuIFx0XHRcdGlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LVx1MDAzZWRldmljZSwgZGVzMikpXG4tXHRcdFx0XHRyZXR1cm4gLTE7XG4mIzQzO1x0XHRcdFx0Z290byBlcnJfdW5tYXA7XG4gXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5idWYgPSBkZXMyO1xuIFx0XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ubGVuID0gYm1heDtcbiBcdFx0XHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGJtYXgsIGNzdW0sXG5AQCAtNzAsNyAmIzQzOzcxLDcgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdFx0ICAgICAgRE1BX1RPX0RFVklDRSk7XG4gXHRcdFx0ZGVzYy1cdTAwM2VkZXMyID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhkZXMyKSk7XG4gXHRcdFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtXHUwMDNlZGV2aWNlLCBkZXMyKSlcbi1cdFx0XHRcdHJldHVybiAtMTtcbiYjNDM7XHRcdFx0XHRnb3RvIGVycl91bm1hcDtcbiBcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XG4gXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBsZW47XG4gXHRcdFx0LyogbGFzdCBkZXNjcmlwdG9yIGNhbiBiZSBzZXQgbm93ICovXG5AQCAtODMsNiAmIzQzOzg0LDIwIEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHR0eF9xLVx1MDAzZWN1cl90eCA9IGVudHJ5O1xuIFxuIFx0cmV0dXJuIGVudHJ5O1xuJiM0MztcbiYjNDM7ZXJyX3VubWFwOlxuJiM0MztcdHdoaWxlIChmaXJzdF9lbnRyeSAhPSBlbnRyeSkge1xuJiM0MztcdFx0ZG1hX3VubWFwX3NpbmdsZShwcml2LVx1MDAzZWRldmljZSxcbiYjNDM7XHRcdFx0XHQgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5idWYsXG4mIzQzO1x0XHRcdFx0IHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0ubGVuLFxuJiM0MztcdFx0XHRcdCBETUFfVE9fREVWSUNFKTtcbiYjNDM7XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDtcbiYjNDM7XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0ubGVuID0gMDtcbiYjNDM7XHRcdGZpcnN0X2VudHJ5ID0gU1RNTUFDX05FWFRfRU5UUlkoZmlyc3RfZW50cnksXG4mIzQzO1x0XHRcdFx0XHRcdHByaXYtXHUwMDNlZG1hX2NvbmYuZG1hX3R4X3NpemUpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC0xO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBpc19qdW1ib19mcm0odW5zaWduZWQgaW50IGxlbiwgYm9vbCBlbmhfZGVzYylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9yaW5nX21vZGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jXG5pbmRleCBmNzk0OTQxOWViOWZkLi40MTcwYzg5N2JkMWE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jXG5AQCAtMzcsNiAmIzQzOzM3LDcgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGxlbiA9IG5vcGFnZWRfbGVuIC0gYm1heDtcbiBcbiBcdGlmIChub3BhZ2VkX2xlbiBcdTAwM2UgQlVGX1NJWkVfOEtpQikge1xuJiM0MztcdFx0dW5zaWduZWQgaW50IGZpcnN0X2VudHJ5ID0gZW50cnk7XG4gXG4gXHRcdGRlczIgPSBkbWFfbWFwX3NpbmdsZShwcml2LVx1MDAzZWRldmljZSwgc2tiLVx1MDAzZWRhdGEsIGJtYXgsXG4gXHRcdFx0XHQgICAgICBETUFfVE9fREVWSUNFKTtcbkBAIC02Miw4ICYjNDM7NjMsMTUgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZGVzMiA9IGRtYV9tYXBfc2luZ2xlKHByaXYtXHUwMDNlZGV2aWNlLCBza2ItXHUwMDNlZGF0YSAmIzQzOyBibWF4LCBsZW4sXG4gXHRcdFx0XHQgICAgICBETUFfVE9fREVWSUNFKTtcbiBcdFx0ZGVzYy1cdTAwM2VkZXMyID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhkZXMyKSk7XG4tXHRcdGlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LVx1MDAzZWRldmljZSwgZGVzMikpXG4mIzQzO1x0XHRpZiAoZG1hX21hcHBpbmdfZXJyb3IocHJpdi1cdTAwM2VkZXZpY2UsIGRlczIpKSB7XG4mIzQzO1x0XHRcdGRtYV91bm1hcF9zaW5nbGUocHJpdi1cdTAwM2VkZXZpY2UsXG4mIzQzO1x0XHRcdFx0XHQgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5idWYsXG4mIzQzO1x0XHRcdFx0XHQgYm1heCwgRE1BX1RPX0RFVklDRSk7XG4mIzQzO1x0XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDtcbiYjNDM7XHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5sZW4gPSAwO1xuJiM0MztcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmlzX2p1bWJvID0gZmFsc2U7XG4gXHRcdFx0cmV0dXJuIC0xO1xuJiM0MztcdFx0fVxuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XG4gXHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ubGVuID0gbGVuO1xuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmlzX2p1bWJvID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggMjQ2NTZiMzUzNTBiMS4uOTA1MDYxMTg2MjEwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC00NzY3LDE1ICYjNDM7NDc2NywxNSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGJvb2wgZW5oX2Rlc2MsIGhhc192bGFuLCBzZXRfaWMsIGlzX2p1bWJvID0gZmFsc2U7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnksIGVudHJ5LCB0eF9wYWNrZXRzO1xuIFx0dTMyIHF1ZXVlID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XG4gXHRpbnQgbmZyYWdzID0gc2tiX3NoaW5mbyhza2IpLVx1MDAzZW5yX2ZyYWdzO1xuLVx0dW5zaWduZWQgaW50IGZpcnN0X2VudHJ5LCB0eF9wYWNrZXRzO1xuIFx0c3RydWN0IHN0bW1hY190eHFfc3RhdHMgKnR4cV9zdGF0cztcbiBcdHN0cnVjdCBkbWFfZGVzYyAqZGVzYywgKmZpcnN0X2Rlc2M7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xO1xuIFx0aW50IGksIGNzdW1faW5zZXJ0aW9uID0gMDtcbi1cdGludCBlbnRyeSwgZmlyc3RfdHg7XG4gXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xuJiM0MztcdGludCBmaXJzdF90eCwgcmV0O1xuIFx0dTMyIHNkdV9sZW47XG4gXG4gXHRpZiAocHJpdi1cdTAwM2V0eF9wYXRoX2luX2xwaV9tb2RlIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVlZV9zd190aW1lcl9lbilcbkBAIC00ODMyLDkgJiM0Mzs0ODMyLDEwIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0Y3N1bV9pbnNlcnRpb24gPSBza2ItXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUw7XG4gXG4gXHRpZiAodW5saWtlbHkoaXNfanVtYm8pKSB7XG4tXHRcdGVudHJ5ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTtcbi1cdFx0aWYgKHVubGlrZWx5KGVudHJ5IFx1MDAzYyAwKSBcdTAwMjZcdTAwMjYgKGVudHJ5ICE9IC1FSU5WQUwpKVxuJiM0MztcdFx0cmV0ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTtcbiYjNDM7XHRcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApIFx1MDAyNlx1MDAyNiAocmV0ICE9IC1FSU5WQUwpKVxuIFx0XHRcdGdvdG8gZG1hX21hcF9lcnI7XG4mIzQzO1x0XHRlbnRyeSA9IHJldDtcbiBcdH0gZWxzZSB7XG4gXHRcdGJvb2wgbGFzdF9zZWdtZW50ID0gKG5mcmFncyA9PSAwKTtcbiBcbkBAIC00OTg0LDYgJiM0Mzs0OTg1LDI2IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIGRtYV9tYXBfZXJyOlxuIFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7VHggRE1BIG1hcCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHQvKiBlbnRyeSBwb2ludHMgb25lIHBhc3QgdGhlIGxhc3QgZGVzY3JpcHRvciB3cml0dGVuIGZvciB0aGlzIGZyYW1lOlxuJiM0MztcdCAqIG9uIGZhaWx1cmUgaXQgaXMgdGhlIGRlc2NyaXB0b3Igd2hvc2UgRE1BIG1hcHBpbmcgZmFpbGVkLCBzbyB3YWxrXG4mIzQzO1x0ICogZnJvbSBmaXJzdF9lbnRyeSB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGVudHJ5LiAgUmVzZXQgY3VyX3R4XG4mIzQzO1x0ICogdW5jb25kaXRpb25hbGx5IGFzIGJvdGggc3RtbWFjX3ZsYW5faW5zZXJ0KCkgYW5kIHN0bW1hY19qdW1ib19mcm0oKVxuJiM0MztcdCAqIG1heSBoYXZlIGFkdmFuY2VkIGl0LCBhbmQgcmVsZWFzZSB0aGUgVkxBTiBjb250ZXh0IGRlc2NyaXB0b3IuXG4mIzQzO1x0ICovXG4mIzQzO1x0d2hpbGUgKGZpcnN0X2VudHJ5ICE9IGVudHJ5KSB7XG4mIzQzO1x0XHRkZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGZpcnN0X2VudHJ5KTtcbiYjNDM7XHRcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi1cdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xuJiM0MztcdFx0c3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYsIHF1ZXVlLCBmaXJzdF9lbnRyeSk7XG4mIzQzO1x0XHRmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LFxuJiM0MztcdFx0XHRcdFx0XHRwcml2LVx1MDAzZWRtYV9jb25mLmRtYV90eF9zaXplKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHR4X3EtXHUwMDNlY3VyX3R4ID0gZmlyc3RfdHg7XG4mIzQzO1x0aWYgKGhhc192bGFuKSB7XG4mIzQzO1x0XHRkZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGZpcnN0X3R4KTtcbiYjNDM7XHRcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi1cdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xuJiM0MztcdH1cbiBtYXhfc2R1X2VycjpcbiBcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiBcdHByaXYtXHUwMDNleHN0YXRzLnR4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA4OjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKHNwZWNpZmljYWxseSBoYW5kbGluZyBUeCBETUEgbWFwcGluZyBmYWlsdXJlIHJvbGxiYWNrcyBpbiBqdW1ibyBmcmFtZSB0cmFuc21pc3Npb24pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSAvIFNvQyBjb250cm9sbGVycyAob3IgZGVkaWNhdGVkIFBDSWUgZGV2aWNlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTg1ZDhiZTUyNDA1MGE5MWMzZmRjZTg4OTY5NWI1ZTA5MzQ0MTQyNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDA4OjQ5OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jCmluZGV4IDY2MDI1ZTI1MDllOTEuLjg0MTVjNzQwZWU5ZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMKQEAgLTIwLDYgJiM0MzsyMCw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsCiAJdW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTsKIAlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSB0eF9xLSZndDtwcml2X2RhdGE7CiAJdW5zaWduZWQgaW50IGVudHJ5ID0gdHhfcS0mZ3Q7Y3VyX3R4OwomIzQzOwl1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnkgPSBlbnRyeTsKIAl1bnNpZ25lZCBpbnQgYm1heCwgYnVmX2xlbjsKIAl1bnNpZ25lZCBpbnQgaSA9IDEsIGxlbjsKIAlzdHJ1Y3QgZG1hX2Rlc2MgKmRlc2M7CkBAIC01Nyw3ICYjNDM7NTgsNyBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCQkgICAgICBibWF4LCBETUFfVE9fREVWSUNFKTsKIAkJCWRlc2MtJmd0O2RlczIgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGRlczIpKTsKIAkJCWlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LSZndDtkZXZpY2UsIGRlczIpKQotCQkJCXJldHVybiAtMTsKJiM0MzsJCQkJZ290byBlcnJfdW5tYXA7CiAJCQl0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2VudHJ5XS5idWYgPSBkZXMyOwogCQkJdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtlbnRyeV0ubGVuID0gYm1heDsKIAkJCXN0bW1hY19wcmVwYXJlX3R4X2Rlc2MocHJpdiwgZGVzYywgMCwgYm1heCwgY3N1bSwKQEAgLTcwLDcgJiM0Mzs3MSw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJCSAgICAgIERNQV9UT19ERVZJQ0UpOwogCQkJZGVzYy0mZ3Q7ZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpOwogCQkJaWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtJmd0O2RldmljZSwgZGVzMikpCi0JCQkJcmV0dXJuIC0xOwomIzQzOwkJCQlnb3RvIGVycl91bm1hcDsKIAkJCXR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7CiAJCQl0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBsZW47CiAJCQkvKiBsYXN0IGRlc2NyaXB0b3IgY2FuIGJlIHNldCBub3cgKi8KQEAgLTgzLDYgJiM0Mzs4NCwyMCBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXR4X3EtJmd0O2N1cl90eCA9IGVudHJ5OwogCiAJcmV0dXJuIGVudHJ5OwomIzQzOwomIzQzO2Vycl91bm1hcDoKJiM0MzsJd2hpbGUgKGZpcnN0X2VudHJ5ICE9IGVudHJ5KSB7CiYjNDM7CQlkbWFfdW5tYXBfc2luZ2xlKHByaXYtJmd0O2RldmljZSwKJiM0MzsJCQkJIHR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmJ1ZiwKJiM0MzsJCQkJIHR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmxlbiwKJiM0MzsJCQkJIERNQV9UT19ERVZJQ0UpOwomIzQzOwkJdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDsKJiM0MzsJCXR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmxlbiA9IDA7CiYjNDM7CQlmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LAomIzQzOwkJCQkJCXByaXYtJmd0O2RtYV9jb25mLmRtYV90eF9zaXplKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gLTE7CiB9CiAKIHN0YXRpYyBib29sIGlzX2p1bWJvX2ZybSh1bnNpZ25lZCBpbnQgbGVuLCBib29sIGVuaF9kZXNjKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9yaW5nX21vZGUuYwppbmRleCBmNzk0OTQxOWViOWZkLi40MTcwYzg5N2JkMWE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9yaW5nX21vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9yaW5nX21vZGUuYwpAQCAtMzcsNiAmIzQzOzM3LDcgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlsZW4gPSBub3BhZ2VkX2xlbiAtIGJtYXg7CiAKIAlpZiAobm9wYWdlZF9sZW4gJmd0OyBCVUZfU0laRV84S2lCKSB7CiYjNDM7CQl1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnkgPSBlbnRyeTsKIAogCQlkZXMyID0gZG1hX21hcF9zaW5nbGUocHJpdi0mZ3Q7ZGV2aWNlLCBza2ItJmd0O2RhdGEsIGJtYXgsCiAJCQkJICAgICAgRE1BX1RPX0RFVklDRSk7CkBAIC02Miw4ICYjNDM7NjMsMTUgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJZGVzMiA9IGRtYV9tYXBfc2luZ2xlKHByaXYtJmd0O2RldmljZSwgc2tiLSZndDtkYXRhICYjNDM7IGJtYXgsIGxlbiwKIAkJCQkgICAgICBETUFfVE9fREVWSUNFKTsKIAkJZGVzYy0mZ3Q7ZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpOwotCQlpZiAoZG1hX21hcHBpbmdfZXJyb3IocHJpdi0mZ3Q7ZGV2aWNlLCBkZXMyKSkKJiM0MzsJCWlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LSZndDtkZXZpY2UsIGRlczIpKSB7CiYjNDM7CQkJZG1hX3VubWFwX3NpbmdsZShwcml2LSZndDtkZXZpY2UsCiYjNDM7CQkJCQkgdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmLAomIzQzOwkJCQkJIGJtYXgsIERNQV9UT19ERVZJQ0UpOwomIzQzOwkJCXR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmJ1ZiA9IDA7CiYjNDM7CQkJdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0ubGVuID0gMDsKJiM0MzsJCQl0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5pc19qdW1ibyA9IGZhbHNlOwogCQkJcmV0dXJuIC0xOwomIzQzOwkJfQogCQl0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2VudHJ5XS5idWYgPSBkZXMyOwogCQl0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBsZW47CiAJCXR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZW50cnldLmlzX2p1bWJvID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IDI0NjU2YjM1MzUwYjEuLjkwNTA2MTE4NjIxMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtNDc2NywxNSAmIzQzOzQ3NjcsMTUgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJYm9vbCBlbmhfZGVzYywgaGFzX3ZsYW4sIHNldF9pYywgaXNfanVtYm8gPSBmYWxzZTsKIAlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCXVuc2lnbmVkIGludCBub3BhZ2VkX2xlbiA9IHNrYl9oZWFkbGVuKHNrYik7CiYjNDM7CXVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgZW50cnksIHR4X3BhY2tldHM7CiAJdTMyIHF1ZXVlID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7CiAJaW50IG5mcmFncyA9IHNrYl9zaGluZm8oc2tiKS0mZ3Q7bnJfZnJhZ3M7Ci0JdW5zaWduZWQgaW50IGZpcnN0X2VudHJ5LCB0eF9wYWNrZXRzOwogCXN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzICp0eHFfc3RhdHM7CiAJc3RydWN0IGRtYV9kZXNjICpkZXNjLCAqZmlyc3RfZGVzYzsKIAlzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xOwogCWludCBpLCBjc3VtX2luc2VydGlvbiA9IDA7Ci0JaW50IGVudHJ5LCBmaXJzdF90eDsKIAlkbWFfYWRkcl90IGRtYV9hZGRyOwomIzQzOwlpbnQgZmlyc3RfdHgsIHJldDsKIAl1MzIgc2R1X2xlbjsKIAogCWlmIChwcml2LSZndDt0eF9wYXRoX2luX2xwaV9tb2RlICZhbXA7JmFtcDsgcHJpdi0mZ3Q7ZWVlX3N3X3RpbWVyX2VuKQpAQCAtNDgzMiw5ICYjNDM7NDgzMiwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAljc3VtX2luc2VydGlvbiA9IHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUw7CiAKIAlpZiAodW5saWtlbHkoaXNfanVtYm8pKSB7Ci0JCWVudHJ5ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTsKLQkJaWYgKHVubGlrZWx5KGVudHJ5ICZsdDsgMCkgJmFtcDsmYW1wOyAoZW50cnkgIT0gLUVJTlZBTCkpCiYjNDM7CQlyZXQgPSBzdG1tYWNfanVtYm9fZnJtKHByaXYsIHR4X3EsIHNrYiwgY3N1bV9pbnNlcnRpb24pOwomIzQzOwkJaWYgKHVubGlrZWx5KHJldCAmbHQ7IDApICZhbXA7JmFtcDsgKHJldCAhPSAtRUlOVkFMKSkKIAkJCWdvdG8gZG1hX21hcF9lcnI7CiYjNDM7CQllbnRyeSA9IHJldDsKIAl9IGVsc2UgewogCQlib29sIGxhc3Rfc2VnbWVudCA9IChuZnJhZ3MgPT0gMCk7CiAKQEAgLTQ5ODQsNiAmIzQzOzQ5ODUsMjYgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIGRtYV9tYXBfZXJyOgogCW5ldGRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O1R4IERNQSBtYXAgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CS8qIGVudHJ5IHBvaW50cyBvbmUgcGFzdCB0aGUgbGFzdCBkZXNjcmlwdG9yIHdyaXR0ZW4gZm9yIHRoaXMgZnJhbWU6CiYjNDM7CSAqIG9uIGZhaWx1cmUgaXQgaXMgdGhlIGRlc2NyaXB0b3Igd2hvc2UgRE1BIG1hcHBpbmcgZmFpbGVkLCBzbyB3YWxrCiYjNDM7CSAqIGZyb20gZmlyc3RfZW50cnkgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBlbnRyeS4gIFJlc2V0IGN1cl90eAomIzQzOwkgKiB1bmNvbmRpdGlvbmFsbHkgYXMgYm90aCBzdG1tYWNfdmxhbl9pbnNlcnQoKSBhbmQgc3RtbWFjX2p1bWJvX2ZybSgpCiYjNDM7CSAqIG1heSBoYXZlIGFkdmFuY2VkIGl0LCBhbmQgcmVsZWFzZSB0aGUgVkxBTiBjb250ZXh0IGRlc2NyaXB0b3IuCiYjNDM7CSAqLwomIzQzOwl3aGlsZSAoZmlyc3RfZW50cnkgIT0gZW50cnkpIHsKJiM0MzsJCWRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfZW50cnkpOwomIzQzOwkJc3RtbWFjX3JlbGVhc2VfdHhfZGVzYyhwcml2LCBkZXNjLCBwcml2LSZndDtkZXNjcmlwdG9yX21vZGUpOwomIzQzOwkJc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHByaXYsICZhbXA7cHJpdi0mZ3Q7ZG1hX2NvbmYsIHF1ZXVlLCBmaXJzdF9lbnRyeSk7CiYjNDM7CQlmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LAomIzQzOwkJCQkJCXByaXYtJmd0O2RtYV9jb25mLmRtYV90eF9zaXplKTsKJiM0MzsJfQomIzQzOwomIzQzOwl0eF9xLSZndDtjdXJfdHggPSBmaXJzdF90eDsKJiM0MzsJaWYgKGhhc192bGFuKSB7CiYjNDM7CQlkZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGZpcnN0X3R4KTsKJiM0MzsJCXN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi0mZ3Q7ZGVzY3JpcHRvcl9tb2RlKTsKJiM0MzsJfQogbWF4X3NkdV9lcnI6CiAJZGV2X2tmcmVlX3NrYihza2IpOwogCXByaXYtJmd0O3hzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI0NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZnV6ei13b3J0aHksIGtlZXBpbmcgb3VyIGd1aWRlbGluZXMgaW4gbWluZC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgZGlzc2VjdCB3aGF0JiMzOTtzIGJlZW4gdG91Y2hlZC4gSSBzZWUgd2UmIzM5O3ZlIGdvdCBtb2RpZmljYXRpb25zIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBUaG9zZSBmaWxlcGF0aHMgYXJlIHByZXR0eSBzcGVjaWZpYywgc28gdGhpcyBsb29rcyBsaWtlIHdlJiMzOTtyZSB6ZXJvaW5nIGluIG9uIGEgcGFydGljdWxhciBwaWVjZSBvZiB0aGUgcHV6emxlLgoKTm93LCB3aGF0IGV4YWN0bHkgKmlzKiBgc3RtbWFjYD8gVGhhdCYjMzk7cyB0aGUga2V5IHF1ZXN0aW9uLiBXZSBuZWVkIHRvIGFzY2VydGFpbiB0aGUgcm9sZSBpdCBwbGF5cyBpbiB0aGUgc3lzdGVtLiBJcyB0aGlzIGFuIEV0aGVybmV0IGRyaXZlciB0aWVkIHRvIHNvbWUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUsIHBlcmhhcHMgYW4gU29DIG9yIFBDSWUgZGV2aWNlPyBPciwgbW9yZSBpbXBvcnRhbnRseSBmb3IgZnV6emluZywgaXMgdGhlcmUgYSBwb3NzaWJpbGl0eSBvZiBlbXVsYXRpb24/IENhbiB3ZSBzaW11bGF0ZSB0aGlzIGhhcmR3YXJlIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCwgb3IgYXJlIHdlIGxpbWl0ZWQgdG8gdGVzdGluZyBvbiBhY3R1YWwgZGV2aWNlcz8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBpcyBhIGRyaXZlciB0aGF0IGNhbiBiZSBhZGVxdWF0ZWx5IGFzc2Vzc2VkIHdpdGggc29mdHdhcmUuIExldCYjMzk7cyBkbyBhIHF1aWNrIHNlYXJjaCBpbiBLY29uZmlnIGFuZCB0aGUgZHJpdmVycyBkaXJlY3RvcnkgdG8gZmlndXJlIHRoYXQgb3V0LiBLbm93aW5nIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5IGlzIGNyaXRpY2FsLiBJZiB3ZSAqY2FuKiBlbXVsYXRlLCB0aGF04oCZcyBhIGJpZyAmIzM0O3llcyYjMzQ7IHRvIGZ1enppbmcuIElmIGl0JiMzOTtzIHN0cmljdGx5IGhhcmR3YXJlLCBpdCBiZWNvbWVzIGEgbXVjaCB0b3VnaGVyIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7U1RNTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMTg5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE4OmlmIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxOlx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIyLVx0ZGVwZW5kcyBvbiBJTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjU6XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2LVx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk6Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMDpcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMS1cdHNlbGVjdCBNRkRfU1lTQ09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDI6aWYgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NTI9Y29uZmlnIERXTUFDX0dFTkVSSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTQ6XHRkZWZhdWx0IFNUTU1BQ19QTEFURk9STVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM2ND1jb25maWcgRFdNQUNfVklTQ09OVElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzcxOmVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zODg9Y29uZmlnIERXTUFDX0xPT05HU09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTItXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzkzOlx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzk0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMS1cdHNlbGVjdCBNT1RPUkNPTU1fUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwMjpcdHNlbGVjdCBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwODpcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA5LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDEwLVx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQxMTpcdHNlbGVjdCBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxOS1cdCAgSWYgdW5zdXJlLCBzYXkgTi5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDIwOmVuZGlmICMgU1RNTUFDX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfU1RNTUFDX0VUSCkgJiM0Mzs9IHN0bW1hYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0zLXN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToxMjpzdG1tYWMtJChDT05GSUdfU1RNTUFDX1NFTEZURVNUUykgJiM0Mzs9IHN0bW1hY19zZWxmdGVzdHMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0xNC0jIE9yZGVyaW5nIG1hdHRlcnMuIEdlbmVyaWMgZHJpdmVyIG11c3QgYmUgbGFzdC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19TVE1NQUNfUExBVEZPUk0pXHQmIzQzOz0gc3RtbWFjLXBsYXRmb3JtLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19EV01BQ19BTkFSSU9OKVx0JiM0Mzs9IGR3bWFjLWFuYXJpb24ub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTQ3PWR3bWFjLWFsdHItc29jZnBnYS1vYmpzIDo9IGR3bWFjLXNvY2ZwZ2Eub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfU1RNTUFDX0xJQlBDSSlcdCYjNDM7PSBzdG1tYWNfbGlicGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19TVE1NQUNfUENJKVx0JiM0Mzs9IHN0bW1hYy1wY2kub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTEtb2JqLSQoQ09ORklHX0RXTUFDX0lOVEVMKVx0JiM0Mzs9IGR3bWFjLWludGVsLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM9MTc9c3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNDYtXHQvKiBkbyBub3QgY2xvc2UgdGhlIGRlc2NyaXB0b3IgYW5kIGRvIG5vdCBzZXQgb3duIGJpdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjQ3Olx0c3RtbWFjX3ByZXBhcmVfdHhfZGVzYyhwcml2LCBkZXNjLCAxLCBidWZfbGVuLCBjc3VtLCBTVE1NQUNfQ0hBSU5fTU9ERSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy00OC1cdFx0XHQwLCBmYWxzZSwgc2tiLVx1MDAzZWxlbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTUxLVx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZltlbnRyeV0gPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjUyOlx0XHRlbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGVudHJ5LCBwcml2LVx1MDAzZWRtYV9jb25mLmRtYV90eF9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy01My1cdFx0ZGVzYyA9IHR4X3EtXHUwMDNlZG1hX3R4ICYjNDM7IGVudHJ5O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy02NC1cdFx0XHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGJtYXgsIGNzdW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6NjU6XHRcdFx0XHRcdFNUTU1BQ19DSEFJTl9NT0RFLCAxLCBmYWxzZSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNjYtXHRcdFx0bGVuIC09IGJtYXg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTc4LVx0XHRcdHN0bW1hY19wcmVwYXJlX3R4X2Rlc2MocHJpdiwgZGVzYywgMCwgbGVuLCBjc3VtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjc5Olx0XHRcdFx0XHRTVE1NQUNfQ0hBSU5fTU9ERSwgMSwgdHJ1ZSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtODAtXHRcdFx0bGVuID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtOTUtXHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0ubGVuID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo5NjpcdFx0Zmlyc3RfZW50cnkgPSBTVE1NQUNfTkVYVF9FTlRSWShmaXJzdF9lbnRyeSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy05Ny1cdFx0XHRcdFx0XHRwcml2LVx1MDAzZWRtYV9jb25mLmRtYV90eF9zaXplKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozOiAgU1RNTUFDIENvbW1vbiBIZWFkZXIgRmlsZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yMC0jaWYgSVNfRU5BQkxFRChDT05GSUdfVkxBTl84MDIxUSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjIxOiNkZWZpbmUgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTIyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTQ5PXN0YXRpYyBpbmxpbmUgYm9vbCBkd21hY19pc194bWFjKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU0OiNkZWZpbmUgU1RNTUFDX0NIQU4wXHQwXHQvKiBBbHdheXMgc3VwcG9ydGVkIGFuZCBkZWZhdWx0IGZvciBhbGwgY2hpcHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY1LSNkZWZpbmUgRE1BX0RFRkFVTFRfUlhfU0laRVx0NTEyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjojZGVmaW5lIFNUTU1BQ19ORVhUX0VOVFJZKHgsIHNpemUpXHQoKHggJiM0MzsgMSkgXHUwMDI2IChzaXplIC0gMSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaD0yNDg9c3RydWN0IHN0bW1hY19zYWZldHlfc3RhdHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI1NS0vKiBOdW1iZXIgb2YgZmllbGRzIGluIFNhZmV0eSBTdGF0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjU2OiNkZWZpbmUgU1RNTUFDX1NBRkVUWV9GRUFUX1NJWkVcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yNTctXHQoc2l6ZW9mKHN0cnVjdCBzdG1tYWNfc2FmZXR5X3N0YXRzKSAvIHNpemVvZih1bnNpZ25lZCBsb25nKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zMjgtLyogTVNJIGRlZmluZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjMyOTojZGVmaW5lIFNUTU1BQ19NU0lfVkVDX01BWFx0MzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTMzMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zNDAtLyogVHggY29hbGVzY2UgcGFyYW1ldGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzQxOiNkZWZpbmUgU1RNTUFDX0NPQUxfVFhfVElNRVJcdDUwMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM0MjojZGVmaW5lIFNUTU1BQ19NQVhfQ09BTF9UWF9USUNLXHQxMDAwMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM0MzojZGVmaW5lIFNUTU1BQ19UWF9NQVhfRlJBTUVTXHQyNTZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM0NDojZGVmaW5lIFNUTU1BQ19UWF9GUkFNRVNcdDI1XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNDU6I2RlZmluZSBTVE1NQUNfUlhfRlJBTUVTXHQwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zNDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDE2PXN0cnVjdCBkbWFfZmVhdHVyZXMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUzNS0vKiBEZWZhdWx0IExQSSB0aW1lcnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjUzNjojZGVmaW5lIFNUTU1BQ19ERUZBVUxUX0xJVF9MU1x0MHgzRThcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjUzNzojZGVmaW5lIFNUTU1BQ19ERUZBVUxUX1RXVF9MU1x0MHgxRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTM4OiNkZWZpbmUgU1RNTUFDX0VUX01BWFx0XHQweEZGRkZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01MzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NTY1PXZvaWQgc3RtbWFjX2F4aV9ibGVuX3RvX21hc2sodTMyICpyZWd2YWwsIGNvbnN0IHUzMiAqYmxlbiwgc2l6ZV90IGxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1Njc6I2RlZmluZSBTVE1NQUNfQ0hBSU5fTU9ERVx0MHgxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1Njg6I2RlZmluZSBTVE1NQUNfUklOR19NT0RFXHQweDJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NzItLyogUmVjZWl2ZSBTaWRlIFNjYWxpbmcgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU3MzojZGVmaW5lIFNUTU1BQ19SU1NfSEFTSF9LRVlfU0laRVx0NDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU3NDojZGVmaW5lIFNUTU1BQ19SU1NfTUFYX1RBQkxFX1NJWkVcdDI1NlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTc2LS8qIFZMQU4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU3NzojZGVmaW5lIFNUTU1BQ19WTEFOX05PTkVcdDB4MFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTc4OiNkZWZpbmUgU1RNTUFDX1ZMQU5fUkVNT1ZFXHQweDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU3OTojZGVmaW5lIFNUTU1BQ19WTEFOX0lOU0VSVFx0MHgyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1ODA6I2RlZmluZSBTVE1NQUNfVkxBTl9SRVBMQUNFXHQweDNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU4MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM2PXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTg5LVx0cGxhdF9kYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VhYWwgPSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzo5MDpcdHBsYXRfZGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtOTEtXHRwbGF0X2RhdC1cdTAwM2VwbXQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MTg2PXN0YXRpYyBpbnQgdGVncmFfZXFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjM5LVx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBlcW9zO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNDA6XHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TUEhfRElTQUJMRSB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI0MTpcdFx0XHQgICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVAgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNDI6XHRcdFx0ICAgU1RNTUFDX0ZMQUdfVVNFX1BIWV9XT0w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI0My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9Njk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHdtYWNfZ2VuZXJpY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTcxLVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3MjpcdFx0Lm5hbWUgICAgICAgICAgID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzMtXHRcdC5wbVx0XHQ9IFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MzYxPXN0YXRpYyBzdHJ1Y3QgaW14X2R3bWFjX29wcyBpbXg4bXBfZHdtYWNfZGF0YSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNjQtXHQuc2V0X2ludGZfbW9kZSA9IGlteDhtcF9zZXRfaW50Zl9tb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzY1Olx0LmZsYWdzID0gU1RNTUFDX0ZMQUdfRUVFX0RJU0FCTEUgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzY2Olx0XHQgU1RNTUFDX0ZMQUdfSFdUU1RBTVBfQ09SUkVDVF9MQVRFTkNZIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjM2NzpcdFx0IFNUTU1BQ19GTEFHX0tFRVBfUFJFQU1CTEVfQkVGT1JFX1NGRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM2OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MzU4PXN0YXRpYyBpbnQgaW50ZWxfY3Jvc3N0c3RhbXAoa3RpbWVfdCAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzc5LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjM4MDpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlZmxhZ3MgXHUwMDI2IFNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzgxLVx0XHRyZXR1cm4gLUVCVVNZO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjM4MzpcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTM4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQwMy1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlYXV4X3RzX2xvY2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0MDQ6XHRcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5TVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQwNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00MjktXHRcdFx0XHRcdCAgICAgIEhaIC8gMTAwKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0MzA6XHRcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5TVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQzMS1cdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ1NjpcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5TVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ1Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTU5Nj1zdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU5OC1cdC8qIGNsa19jc3JfaSA9IDIwLTM1TUh6IFx1MDAyNiBNREMgPSBjbGtfY3NyX2kvMTYgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTk5Olx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTYwMC1cdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NjE2PXN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTYyNS1cdHBsYXQtXHUwMDNlcGh5X2FkZHIgPSAtMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NjI2Olx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNjI3LVx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MjgtXHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NjI5Olx0cGxhdC1cdTAwM2VmbGFncyB8PSAoU1RNTUFDX0ZMQUdfVFNPX0VOIHwgU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjcwODpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVkxBTl9GQUlMX1FfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTcwOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NzQ4Olx0cGxhdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5TVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc2MD1zdGF0aWMgaW50IGVobF9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc2Ni1cdHBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc2NzpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVVNFX1BIWV9XT0w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc2ODpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfSFdUU1RBTVBfQ09SUkVDVF9MQVRFTkNZO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NjktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMTQ5PXN0YXRpYyBpbnQgc3RtbWFjX2NvbmZpZ19zaW5nbGVfbXNpKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE2My1cdHJlcy1cdTAwM2V3b2xfaXJxID0gcmVzLVx1MDAzZWlycTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE2NDpcdHBsYXQtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+U1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTY1LVx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBTaW5nbGUgSVJRIGVuYWJsZW1lbnQgc3VjY2Vzc2Z1bFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExNzE9c3RhdGljIGludCBzdG1tYWNfY29uZmlnX211bHRpX21zaShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExNzg6XHRpZiAocGxhdC1cdTAwM2Vtc2lfcnhfYmFzZV92ZWMgXHUwMDNlPSBTVE1NQUNfTVNJX1ZFQ19NQVggfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE3OTpcdCAgICBwbGF0LVx1MDAzZW1zaV90eF9iYXNlX3ZlYyBcdTAwM2U9IFNUTU1BQ19NU0lfVkVDX01BWCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTgwLVx0XHRkZXZfaW5mbyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IEludmFsaWQgUlggXHUwMDI2IFRYIHZlY3RvciBkZWZpbmVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE4NTpcdHJldCA9IHBjaV9hbGxvY19pcnFfdmVjdG9ycyhwZGV2LCAyLCBTVE1NQUNfTVNJX1ZFQ19NQVgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExODYtXHRcdFx0XHQgICAgUENJX0lSUV9NU0kgfCBQQ0lfSVJRX01TSVgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIwNTpcdGlmIChwbGF0LVx1MDAzZW1zaV9tYWNfdmVjIFx1MDAzYyBTVE1NQUNfTVNJX1ZFQ19NQVgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMDYtXHRcdHJlcy1cdTAwM2VpcnEgPSBwY2lfaXJxX3ZlY3RvcihwZGV2LCBwbGF0LVx1MDAzZW1zaV9tYWNfdmVjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIwNzpcdGlmIChwbGF0LVx1MDAzZW1zaV93b2xfdmVjIFx1MDAzYyBTVE1NQUNfTVNJX1ZFQ19NQVgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMDgtXHRcdHJlcy1cdTAwM2V3b2xfaXJxID0gcGNpX2lycV92ZWN0b3IocGRldiwgcGxhdC1cdTAwM2Vtc2lfd29sX3ZlYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyMDk6XHRpZiAocGxhdC1cdTAwM2Vtc2lfc2Z0eV9jZV92ZWMgXHUwMDNjIFNUTU1BQ19NU0lfVkVDX01BWClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIxMC1cdFx0cmVzLVx1MDAzZXNmdHlfY2VfaXJxID0gcGNpX2lycV92ZWN0b3IocGRldiwgcGxhdC1cdTAwM2Vtc2lfc2Z0eV9jZV92ZWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjExOlx0aWYgKHBsYXQtXHUwMDNlbXNpX3NmdHlfdWVfdmVjIFx1MDAzYyBTVE1NQUNfTVNJX1ZFQ19NQVgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMTItXHRcdHJlcy1cdTAwM2VzZnR5X3VlX2lycSA9IHBjaV9pcnFfdmVjdG9yKHBkZXYsIHBsYXQtXHUwMDNlbXNpX3NmdHlfdWVfdmVjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIxNDpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjE1LVx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBtdWx0aSBNU0kgZW5hYmxlbWVudCBzdWNjZXNzZnVsXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzMTQtXHQgKiBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gZGF0YSBzZXR0aW5ncyBiZWxvdy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTMxNTpcdCAqIE5vdGU6IE1TSSB2ZWN0b3IgdGFrZXMgdmFsdWUgZnJvbSAwIHVwdG8gMzEgKFNUTU1BQ19NU0lfVkVDX01BWClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTMxNi1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzE3Olx0cGxhdC1cdTAwM2Vtc2lfbWFjX3ZlYyA9IFNUTU1BQ19NU0lfVkVDX01BWDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTMxODpcdHBsYXQtXHUwMDNlbXNpX3dvbF92ZWMgPSBTVE1NQUNfTVNJX1ZFQ19NQVg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzMTk6XHRwbGF0LVx1MDAzZW1zaV9zZnR5X2NlX3ZlYyA9IFNUTU1BQ19NU0lfVkVDX01BWDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTMyMDpcdHBsYXQtXHUwMDNlbXNpX3NmdHlfdWVfdmVjID0gU1RNTUFDX01TSV9WRUNfTUFYO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzIxOlx0cGxhdC1cdTAwM2Vtc2lfcnhfYmFzZV92ZWMgPSBTVE1NQUNfTVNJX1ZFQ19NQVg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzMjI6XHRwbGF0LVx1MDAzZW1zaV90eF9iYXNlX3ZlYyA9IFNUTU1BQ19NU0lfVkVDX01BWDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTMyMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTg2PXN0YXRpYyB2b2lkIGxvb25nc29uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTk0LVx0LyogY2xrX2Nzcl9pID0gMTAwLTE1ME1IeiBcdTAwMjYgTURDID0gY2xrX2Nzcl9pLzYyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjk1Olx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8xMDBfMTUwTTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtOTYtXHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTM3Nz1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX21zaV9jb25maWcoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00MDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjQwMjpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00MDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYz01NTY9c3RhdGljIGludCBtZWRpYXRla19kd21hY19jb21tb25fZGF0YShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNTYzLVx0aWYgKHByaXZfcGxhdC1cdTAwM2VtYWNfd29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo1NjQ6XHRcdHBsYXQtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+U1RNTUFDX0ZMQUdfVVNFX1BIWV9XT0w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTU2NS1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NTY2Olx0XHRwbGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1VTRV9QSFlfV09MO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy01NjctXHRwbGF0LVx1MDAzZXJpd3Rfb2ZmID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yMDg9bW90b3Jjb21tX2RlZmF1bHRfcGxhdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI0My1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ0Olx0cGxhdC1cdTAwM2VjbGtfY3NyXHRcdD0gU1RNTUFDX0NTUl8yMF8zNU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDUtXHRwbGF0LVx1MDAzZXR4X2NvZVx0XHQ9IDE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjUwLVx0cGxhdC1cdTAwM2VyZXN1bWVcdFx0PSBtb3RvcmNvbW1fcmVzdW1lO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjUxOlx0cGxhdC1cdTAwM2VmbGFnc1x0XHQ9IFNUTU1BQ19GTEFHX1RTT19FTiB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNTI6XHRcdFx0XHQgIFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yNjQ9c3RhdGljIGludCBtb3RvcmNvbW1fc2V0dXBfaXJxKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI3NjpcdFx0cGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNzctXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTc3MS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3NzI6XHRwbGF0X2RhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl82MF8xMDBNO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03NzMtXHRwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdiA9IGV0aHFvcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTc4MS1cdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsIFwmIzM0O3NucHMsdHNvXCYjMzQ7KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6NzgyOlx0XHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTc4My1cdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgXCYjMzQ7cWNvbSxxY3M0MDQtZXRocW9zXCYjMzQ7KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6Nzg0Olx0XHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19SWF9DTEtfUlVOU19JTl9MUEk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTc4NS1cdGlmIChkYXRhLVx1MDAzZWRtYV9hZGRyX3dpZHRoKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE4OC1cdHBsYXRfZGF0LVx1MDAzZWV4aXQgPSByZW5lc2FzX2diZXRoX2V4aXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MTg5Olx0cGxhdF9kYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfRU5fVFhfTFBJX0NMS19QSFlfQ0FQIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xOTAtXHRcdFx0ICAgZ2JldGgtXHUwMDNlb2ZfZGF0YS1cdTAwM2VzdG1tYWNfZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJlbmVzYXNfZ2JldGhfb2ZfZGF0YSByZW5lc2FzX2diZXRoX29mX2RhdGEgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIwNC1cdC5zZXRfY2xrX3R4X3JhdGUgPSB0cnVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIwNTpcdC5zdG1tYWNfZmxhZ3MgPSBTVE1NQUNfRkxBR19IV1RTVEFNUF9DT1JSRUNUX0xBVEVOQ1kgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIwNjpcdFx0XHRTVE1NQUNfRkxBR19TUEhfRElTQUJMRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMDctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9MjA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVuZXNhc19nYmV0aF9vZl9kYXRhIHJlbmVzYXNfZ21hY19vZl9kYXRhID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMTEtXHQubnVtX2Nsa3MgPSBBUlJBWV9TSVpFKHJlbmVzYXNfZ21hY19jbGtzKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMTI6XHQuc3RtbWFjX2ZsYWdzID0gU1RNTUFDX0ZMQUdfSFdUU1RBTVBfQ09SUkVDVF9MQVRFTkNZLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIxMy1cdC5oYXNfcGNzID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xMTM9c3RhdGljIHZvaWQgczMyX2dtYWNfc2V0dXBfbXVsdGlfaXJxKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoxMzU6XHRwbGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX01VTFRJX01TSV9FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTEzNi1cdGRldl9pbmZvKGRldiwgXCYjMzQ7TXVsdGktSVJRIG1vZGUgKHBlciBxdWV1ZSBJUlFzKSBzZWxlY3RlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTM5LW1hY19pcnFfbW9kZTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjE0MDpcdHBsYXQtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+U1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTQxLVx0ZGV2X2luZm8oZGV2LCBcJiMzNDtNQUMgSVJRIG1vZGUgc2VsZWN0ZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTE0ND1zdGF0aWMgaW50IHMzMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTE5Ny1cdHBsYXQtXHUwMDNlcG10ID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjE5ODpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xOTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTI5ND1zdGF0aWMgaW50IHNtdGdfY3Jvc3N0c3RhbXAoa3RpbWVfdCAqZGV2aWNlLCBzdHJ1Y3Qgc3lzdGVtX2NvdW50ZXJ2YWxfdCAqc3lzdGVtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy0zMDktXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzozMTA6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWZsYWdzIFx1MDAyNiBTVE1NQUNfRkxBR19FWFRfU05BUFNIT1RfRU4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtMzExLVx0XHRyZXR1cm4gLUVCVVNZO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz01Njk9c3RhdGljIHZvaWQgc29jZnBnYV9hZ2lsZXg1X3NldHVwX3BsYXRfZGF0KHN0cnVjdCBzb2NmcGdhX2R3bWFjICpkd21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTc1LVx0LyogRW5hYmxlIFRTTyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjU3NjpcdHBsYXRfZGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MTk9c3RhdGljIGludCBzb3BoZ29fc2cyMDQ0X2R3bWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy0yNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjI4Olx0cGxhdF9kYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy0yOS1cdHBsYXRfZGF0LVx1MDAzZXNldF9jbGtfdHhfcmF0ZSA9IHN0bW1hY19zZXRfY2xrX3R4X3JhdGU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MDpcdHBsYXRfZGF0LVx1MDAzZWZsYWdzIHw9IChTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVAgfCBTVE1NQUNfRkxBR19TUEhfRElTQUJMRSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1MS1cdHBsYXRfZGF0LVx1MDAzZWRtYV9jZmctXHUwMDNlZGNoZSA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1NjA6XHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU2MS1cdHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2ID0gZHdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTA1PXN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMjEtXHQvKiBCU1AgZGlzYWJsZXMgaXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjEyMjpcdHBsYXRfZGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTIzLVx0cGxhdF9kYXQtXHUwMDNlaG9zdF9kbWFfd2lkdGggPSAzMjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTExMDU9c3RhdGljIGludCBzdW44aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTE4MC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTgxOlx0cGxhdF9kYXQtXHUwMDNlcnhfY29lID0gU1RNTUFDX1JYX0NPRV9UWVBFMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTE4Mi1cdHBsYXRfZGF0LVx1MDAzZXR4X2NvZSA9IHRydWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjExODM6XHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19IQVNfU1VOOEk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExODQtXHRwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdiA9IGdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjYtXHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyNzpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjgtXHRwbGF0LVx1MDAzZXBtdCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjM3NDpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU0VSREVTX1VQX0FGVEVSX1BIWV9MSU5LVVA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jPTQwPXN0YXRpYyB2b2lkIGR3bWFjMTAwMF9jb3JlX2luaXQoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy01OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM6NjA6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTYxLVx0LyogVGFnIGRldGVjdGlvbiB3aXRob3V0IGZpbHRlcmluZyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9MTI0PXN0YXRpYyB2b2lkIGR3bWFjMTAwMF9zZXRfbWNoYXNoKHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgKm1jZmlsdGVyYml0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTE0MC1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jOjE0MTpcdFx0cHJfZGVidWcoXCYjMzQ7U1RNTUFDOiBlcnIgaW4gc2V0dGluZyBtdWx0aWNhc3QgZmlsdGVyXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtMTQyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYz0zMTg9c3RhdGljIGludCBkd21hYzEwMDBfc2V0X2xwaV9tb2RlKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtMzI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzozMjU6XHRpZiAobW9kZSA9PSBTVE1NQUNfTFBJX1RJTUVSKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy0zMjYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTMyOC1cdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IExQSV9DVFJMX1NUQVRVUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jOjMyOTpcdGlmIChtb2RlID09IFNUTU1BQ19MUElfRk9SQ0VEKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy0zMzAtXHRcdHZhbHVlIHw9IExQSV9DVFJMX1NUQVRVU19MUElFTiB8IExQSV9DVFJMX1NUQVRVU19MUElUWEE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYz01MjM9dm9pZCBkd21hYzEwMDBfdGltZXN0YW1wX2ludGVycnVwdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy01MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jOjUzNDpcdGlmICghKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjYgU1RNTUFDX0ZMQUdfRVhUX1NOQVBTSE9UX0VOKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTM1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYz01Njc9aW50IGR3bWFjMTAwMF9wdHBfZW5hYmxlKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTgzLVx0XHRcdHRjcl92YWwgfD0gR01BQ19QVFBfVENSX0FUU0ZDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo1ODQ6XHRcdFx0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTg1LVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy01ODYtXHRcdFx0dGNyX3ZhbCBcdTAwMjY9IH5HTUFDX1BUUF9UQ1JfQVRTRU4wO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo1ODc6XHRcdFx0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZWZsYWdzIFx1MDAyNj0gflNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTg4LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfY29yZS5jPTIyPXN0YXRpYyB2b2lkIGR3bWFjMTAwX2NvcmVfaW5pdChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmM6MzI6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzMtXHR3cml0ZWwoRVRIX1BfODAyMVEsIGlvYWRkciAmIzQzOyBNQUNfVkxBTjEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9Mzg2PXN0YXRpYyBpbnQgZHdtYWM0X3NldF9scGlfbW9kZShzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTM5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM6MzkzOlx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9ESVNBQkxFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTM5NC1cdFx0dmFsdWUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMzk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzozOTg6XHRcdGlmIChtb2RlID09IFNUTU1BQ19MUElfVElNRVIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMzk5LVx0XHRcdC8qIFJldHVybiBFUkFOR0UgaWYgdGhlIHRpbWVyIGlzIGxhcmdlciB0aGFuIHRoZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtNDAxLVx0XHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzo0MDI6XHRcdFx0aWYgKGV0IFx1MDAzZSBTVE1NQUNfRVRfTUFYKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy00MDMtXHRcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfbGliLmM9MTk5PXZvaWQgc3RtbWFjX2R3bWFjNF9zZXRfbWFjX2FkZHIodm9pZCBfX2lvbWVtICppb2FkZHIsIGNvbnN0IHU4IGFkZHJbNl0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jLTIwOC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jOjIwOTpcdGRhdGEgfD0gRklFTERfUFJFUChHTUFDX0hJX0RDUywgU1RNTUFDX0NIQU4wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9saWIuYy0yMTAtXHR3cml0ZWwoZGF0YSB8IEdNQUNfSElfUkVHX0FFLCBpb2FkZHIgJiM0MzsgaGlnaCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC02LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo3OiNpZm5kZWYgX19TVE1NQUNfRFdYR01BQzJfSF9fXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjg6I2RlZmluZSBfX1NUTU1BQ19EV1hHTUFDMl9IX19cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oPTQ2OD1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19kZXNjX29wcyBkd3hnbWFjMjEwX2Rlc2Nfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC00NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjQ3MDojZW5kaWYgLyogX19TVE1NQUNfRFdYR01BQzJfSF9fICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jPTQyOD1zdGF0aWMgaW50IGR3eGdtYWMyX3NldF9scGlfbW9kZShzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtNDM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jOjQzNTpcdGlmIChtb2RlID09IFNUTU1BQ19MUElfVElNRVIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtNDM2LVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTQzOC1cdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0xQSV9DVFJMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzo0Mzk6XHRpZiAobW9kZSA9PSBTVE1NQUNfTFBJX0ZPUkNFRCkge1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0ODAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBgc3RtbWFjYCBEcml2ZXIgQWNjZXNzaWJpbGl0eSBpbiBGdXp6aW5nIEVudmlyb25tZW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYHN0bW1hY2Ag4oCTIHRoYXQmIzM5O3MgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlciwgYW5kIGFsc28gcmVsYXRlcyB0byB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMsIG9yIERXTUFDLiBUaGUgcXVlc3Rpb24gaXM6IGNhbiBJIHJlYWNoIHRoaXMgaW4gYSBmdXp6aW5nIGVudmlyb25tZW50PyBDYW4gSSBnZXQgYXQgaXQgdGhyb3VnaCBRRU1VIG9yIGEgY29tcGFyYWJsZSBzZXR1cD8KCkkgbmVlZCB0byBjb25maXJtIGlmIGl0JiMzOTtzIGVtdWxhdGVkIG9yIGFjY2Vzc2libGUuIElzIHRoZXJlIGEgcGxhdGZvcm0gZGV2aWNlIG9yIFBDSSBkZXZpY2UgdGhhdCBlbXVsYXRlcyBpdD8gSXMgdGhlcmUgYW4gZWFzeSB3YXkgdG8gZ2V0IGF0IHRoZSBzdG1tYWMgZGV2aWNlIHRocm91Z2ggc3RhbmRhcmQgUUVNVSAvIHN5emthbGxlciBhbWQ2NCBmdXp6aW5nPyBJIG5lZWQgdG8gY2hlY2sgdGhlIFFFTVUgc3VwcG9ydC4gT3IgaXMgaXQganVzdCBhIHN0cmljdGx5IHBoeXNpY2FsIEV0aGVybmV0IE5JQyBkcml2ZXI/CgpBaCwgcmlnaHQsIHRoaXMgaXMgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBTZWN0aW9uIDIgc2F5cyAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VJiMzNDsuIFRoaXMgbWVhbnMgbXkgdGFyZ2V0IGlzbiYjMzk7dCBnb2luZyB0byBiZSBlYXN5IQoKU28sIHdoYXQgRXRoZXJuZXQgZHJpdmVycyAqYXJlKiBlbXVsYXRlZCBpbiBRRU1VPyBMZXQmIzM5O3MgcmVmcmVzaCBteSBtZW1vcnkuIEluIHN0YW5kYXJkIFFFTVUgeDg2XzY0IC8gYW1kNjQgLyBHQ0UsIHdlIGhhdmU6IGUxMDAwLCBlMTAwMGUsIGlnYiwgcnRsODEzOSwgODEzOWNwLCB2aXJ0aW8tbmV0LCBwY25ldCwgbmUya19wY2ksIHN1bmdlbSwgdHVsaXAgLyBkZWMyMTE0MCwgcm9ja2VyLCB2bXhuZXQzLCB1c2ItbmV0IC8gY2RjX2V0aGVyIC8gcm5kaXMsIHZtd2FyZSB2bXhuZXQzLCBhbmQgaW50ZWwgODI1NXggKGUxMDApLgoKQWxyaWdodCwgd2hhdCBhYm91dCBgc3RtbWFjYD8gSXQmIzM5O3MgRFdNQUMsIG9yIEdNQUMsIG9yIFhHTUFDLCB1c2VkIG9uIEFSTS9BUk02NCBTb0NzLCBsaWtlIEFsbHdpbm5lciwgUm9ja2NoaXAsIEFtbG9naWMsIFNUTTMyLCBOWFAgaS5NWCwgVGVncmEsIEludGVsIEVsa2hhcnQgTGFrZSAvIFRpZ2VyIExha2UgLyBBbGRlciBMYWtlIFBDSCBpbnRlZ3JhdGVkIE1BQywgTG9vbmdzb24uIFNvLCBubyBsdWNrIGhlcmUuCgoqKk5vLioqIERvZXMgc3RhbmRhcmQgUUVNVSB4ODZfNjQgLyBhbWQ2NCAqZW11bGF0ZSogYW55IGBzdG1tYWNgIGRldmljZT8gSXQgc2VlbXMgbm8uIEkgbWlnaHQgZ2V0IGEgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBvciBzb21lIEFSTS1zcGVjaWZpYyBtYWNoaW5lcyBsaWtlIGBvcmFuZ2VwaS1wY2AsIGJ1dCBvbiB4ODZfNjQgLyBhbWQ2NCDigJMgdGhlIGFyY2hpdGVjdHVyZSBJJiMzOTttIGZvY3VzZWQgb24g4oCTIGBzdG1tYWNgIG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlIGxpa2UgdGhlIEludGVsIFRpZ2VyIExha2UgLyBFbGtoYXJ0IExha2UgUENJIERXTUFDIG9yIExvb25nc29uIFBDSSBEV01BQyBvciBNb3RvcmNvbW0gUENJIERXTUFDLCBvciBBUk0gU29DIHBsYXRmb3JtIGRldmljZXMuCgpTbywgdGhlIGxhc3QgY2hlY2suIElzIHRoZXJlIGFueSB2aXJ0dWFsIGJ1cyBvciBlbXVsYXRvciBvciBkdW1teSBkZXZpY2UgdGhhdCB1c2VzIGBzdG1tYWNgPyBMZXQmIzM5O3MgaW52ZXN0aWdhdGU6IGNhbiBgc3RtbWFjYCBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBhIHBsYXRmb3JtIGRldmljZSwgbmV0bGluaywgc3lzZnMsIG9yIGFueXRoaW5nLCBvciBpcyBpdCBzdHJpY3RseSBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcj8gSSBzdXNwZWN0IHRoZSBsYXR0ZXIsIGJ1dCBJIG5lZWQgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsYXRmb3JtX2RldmljZV9yZWdpc3Rlci4qc3RtbWFjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxODU1CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZWJ1Z2dpbmcgTmV0d29yayBEcml2ZXIgQ29tcGF0aWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGhpdHRpbmcgYSB3YWxsIHdpdGggdGhpcyBFdGhlcm5ldCBpc3N1ZS4gVGltZSB0byBkaWcgaW50byB0aGUgZHJpdmVyIGNvZGUuIEdpdmVuIHRoZSBhcmNoaXRlY3R1cmUgSSYjMzk7bSBsb29raW5nIGF0LCB0aGUgbW9zdCBsaWtlbHkgY3VscHJpdHMgYXJlIHRoZSBjb3JlIFNUTU1BQyBkcml2ZXIsIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBjb2RlLCBvciB0aGUgSW50ZWwtc3BlY2lmaWMgRFdtYWMgaW1wbGVtZW50YXRpb24gaWYgaXQmIzM5O3MgYmFzZWQgb24gdGhhdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgYHN0bW1hY19wY2kuY2AsIHRoYXQgaGFuZGxlcyBQQ0kgYnVzIGluaXRpYWxpemF0aW9uLiBJZiB0aGF0IGRvZXNuJiMzOTt0IHlpZWxkIGFueXRoaW5nIGltbWVkaWF0ZWx5LCBJJiMzOTtsbCBicmFuY2ggb3V0IHRvIGBzdG1tYWMtcGxhdGZvcm0uY2AsIHNpbmNlIHRoYXQgd2lsbCBoYW5kbGUgdGhlIGJhc2UgbGF5ZXIgcGxhdGZvcm0gc2V0dXAuIE9mIGNvdXJzZSBJIHNob3VsZCBpbnZlc3RpZ2F0ZSBgZHdtYWMtaW50ZWwuY2AgaWYgdGhpcyBhIEludGVsLWJhc2VkIERXbWFjIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBidXMgaW50ZXJhY3Rpb24sIHRoZSBkZXZpY2UgcHJvYmluZywgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMg4oCTIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBhbnkgb2J2aW91cyBoYXJkd2FyZSBkaWZmZXJlbmNlcyBvciB1bmV4cGVjdGVkIHJlZ2lzdGVyIHNldHRpbmdzIHRoYXQgbWlnaHQgYmUgdGhlIHNvdXJjZSBvZiB0aGUgdHJvdWJsZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXNlIGZpbGVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDkwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgIDM6XHQgIFRoaXMgY29udGFpbnMgdGhlIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIHBjaSBkcml2ZXIuXG4gICA0Olx0XG4gICA1Olx0ICBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiAgVmF5YXZ5YSBMYWJzIFB2dCBMdGRcbiAgIDY6XHRcbiAgIDc6XHRcbiAgIDg6XHQgIEF1dGhvcjogUmF5YWdvbmQgS29rYXRhbnVyIFx1MDAzY3JheWFnb25kQHZheWF2eWFsYWJzLmNvbVx1MDAzZVxuICAgOTpcdCAgQXV0aG9yOiBHaXVzZXBwZSBDYXZhbGxhcm8gXHUwMDNjcGVwcGUuY2F2YWxsYXJvQHN0LmNvbVx1MDAzZVxuICAxMDpcdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gIDExOlx0XG4gIDEyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcdTAwM2VcbiAgMTM6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2kuaFx1MDAzZVxuICAxNDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtaS5oXHUwMDNlXG4gIDE1Olx0XG4gIDE2Olx0I2luY2x1ZGUgXCYjMzQ7c3RtbWFjLmhcJiMzNDtcbiAgMTc6XHQjaW5jbHVkZSBcJiMzNDtzdG1tYWNfbGlicGNpLmhcJiMzNDtcbiAgMTg6XHRcbiAgMTk6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcbiAgMjA6XHRcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcbiAgMjE6XHR9O1xuICAyMjpcdFxuICAyMzpcdHN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuICAyNDpcdHtcbiAgMjU6XHRcdC8qIGNsa19jc3JfaSA9IDIwLTM1TUh6IFx1MDAyNiBNREMgPSBjbGtfY3NyX2kvMTYgKi9cbiAgMjY6XHRcdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjBfMzVNO1xuICAyNzpcdFx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XG4gIDI4Olx0XHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcbiAgMjk6XHRcbiAgMzA6XHRcdHBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VuZWVkc19yZXNldCA9IHRydWU7XG4gIDMxOlx0fVxuICAzMjpcdFxuICAzMzpcdHN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAgMzQ6XHRcdFx0XHQgICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuICAzNTpcdHtcbiAgMzY6XHRcdC8qIFNldCBjb21tb24gZGVmYXVsdCBkYXRhIGZpcnN0ICovXG4gIDM3Olx0XHRjb21tb25fZGVmYXVsdF9kYXRhKHBsYXQpO1xuICAzODpcdFxuICAzOTpcdFx0cGxhdC1cdTAwM2VidXNfaWQgPSAxO1xuICA0MDpcdFx0cGxhdC1cdTAwM2VwaHlfYWRkciA9IDA7XG4gIDQxOlx0XHRwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcbiAgNDI6XHRcbiAgNDM6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmwgPSAzMjtcbiAgNDQ6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmx4OCA9IHRydWU7XG4gIDQ1Olx0XHQvKiBUT0RPOiBBWEkgKi9cbiAgNDY6XHRcbiAgNDc6XHRcdHJldHVybiAwO1xuICA0ODpcdH1cbiAgNDk6XHRcbiAgNTA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XG4gIDUxOlx0XHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxuICA1MjpcdH07XG4gIDUzOlx0XG4gIDU0Olx0c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAgNTU6XHRcdFx0XHRcdCAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbiAgNTY6XHR7XG4gIDU3Olx0XHRpbnQgaTtcbiAgNTg6XHRcbiAgNTk6XHRcdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XG4gIDYwOlx0XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7XG4gIDYxOlx0XHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcbiAgNjI6XHRcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xuICA2MzpcdFx0cGxhdC1cdTAwM2VwbXQgPSB0cnVlO1xuICA2NDpcdFxuICA2NTpcdFx0LyogU2V0IGRlZmF1bHQgbnVtYmVyIG9mIFJYIGFuZCBUWCBxdWV1ZXMgdG8gdXNlICovXG4gIDY2Olx0XHRwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2UgPSA0O1xuICA2NzpcdFx0cGxhdC1cdTAwM2VyeF9xdWV1ZXNfdG9fdXNlID0gNDtcbiAgNjg6XHRcbiAgNjk6XHRcdHBsYXQtXHUwMDNldHhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1RYX0FMR09SSVRITV9XUlI7XG4gIDcwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7IGkmIzQzOyYjNDM7KSB7XG4gIDcxOlx0XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XG4gIDcyOlx0XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX2NmZ1tpXS53ZWlnaHQgPSAyNTtcbiAgNzM6XHRcdFx0aWYgKGkgXHUwMDNlIDApXG4gIDc0Olx0XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLnRic19lbiA9IDE7XG4gIDc1Olx0XHR9XG4gIDc2Olx0XG4gIDc3Olx0XHRwbGF0LVx1MDAzZXJ4X3NjaGVkX2FsZ29yaXRobSA9IE1UTF9SWF9BTEdPUklUSE1fU1A7XG4gIDc4Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7IGkmIzQzOyYjNDM7KVxuICA3OTpcdFx0XHRwbGF0LVx1MDAzZXJ4X3F1ZXVlc19jZmdbaV0ubW9kZV90b191c2UgPSBNVExfUVVFVUVfRENCO1xuICA4MDpcdFxuICA4MTpcdFx0cGxhdC1cdTAwM2VidXNfaWQgPSAxO1xuICA4MjpcdFx0cGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XG4gIDgzOlx0XG4gIDg0Olx0XHRwbGF0LVx1MDAzZWRtYV9jZmctXHUwMDNlcGJsID0gMzI7XG4gIDg1Olx0XHRwbGF0LVx1MDAzZWRtYV9jZmctXHUwMDNlcGJseDggPSB0cnVlO1xuICA4NjpcdFxuICA4NzpcdFx0LyogQXhpIENvbmZpZ3VyYXRpb24gKi9cbiAgODg6XHRcdHBsYXQtXHUwMDNlYXhpID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnBsYXQtXHUwMDNlYXhpKSwgR0ZQX0tFUk5FTCk7XG4gIDg5Olx0XHRpZiAoIXBsYXQtXHUwMDNlYXhpKVxuICA5MDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU3MQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgU1RNTUFDIERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdGhlIGBzdG1tYWNgIGRyaXZlciBnZXRzIGluaXRpYWxpemVkLiBJIGtub3cgaXQmIzM5O3MgcmVnaXN0ZXJlZCB3aXRoIGVpdGhlciBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgb3IgYHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcmAsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC4gVGhlIGtleSBpcyBpbiBob3cgaXQmIzM5O3MgbWF0Y2hlZCB0byB0aGUgaGFyZHdhcmUg4oCTIHdoZXRoZXIgdGhhdCYjMzk7cyB0aHJvdWdoIFBDSSB2ZW5kb3IgYW5kIGRldmljZSBJRHMgd2hlbiB3ZSYjMzk7cmUgdGFsa2luZyBQQ0ktYmFzZWQgaGFyZHdhcmUsIG9yIHVzaW5nIGRldmljZSB0cmVlIG5vZGVzIGZvciBwbGF0Zm9ybSBkZXZpY2VzLgoKSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIG1hdGNoaW5nIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgUENJIElEIHRhYmxlIGluIGBzdG1tYWNfcGNpLmNgIGFuZCBhbHNvIHRha2UgYSBsb29rIGF0IGBkd21hYy1pbnRlbC5jYC4gVGhhdCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBrbm93cyB3aGVuIGl0JiMzOTtzIHRhbGtpbmcgdG8gdGhlIHJpZ2h0IHBpZWNlIG9mIGhhcmR3YXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGluIHRob3NlIHRhYmxlcy4gQXJlIHdlIHJlbHlpbmcgb24gdmVyeSBzcGVjaWZpYyBJRHMsIG9yIGFyZSB0aGVyZSBhbnkgd2lsZGNhcmQgZW50cmllcyBvciBtb3JlIGZsZXhpYmxlIG1hdGNoaW5nIG1lY2hhbmlzbXMgaW4gcGxhY2U/IEkgbmVlZCB0byBsb29rIGNsb3NlciBhdCB3aGF0IHRob3NlIHRhYmxlcyBjb250YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTQ1Olx0XHRpZiAocmV0KSB7XG4gMTQ2Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBFUlJPUjogZmFpbGVkIHRvIGVuYWJsZSBkZXZpY2VcXG5cJiMzNDssXG4gMTQ3Olx0XHRcdFx0X19mdW5jX18pO1xuIDE0ODpcdFx0XHRyZXR1cm4gcmV0O1xuIDE0OTpcdFx0fVxuIDE1MDpcdFxuIDE1MTpcdFx0LyogR2V0IHRoZSBiYXNlIGFkZHJlc3Mgb2YgZGV2aWNlICovXG4gMTUyOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBQQ0lfU1REX05VTV9CQVJTOyBpJiM0MzsmIzQzOykge1xuIDE1MzpcdFx0XHRpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCBpKSA9PSAwKVxuIDE1NDpcdFx0XHRcdGNvbnRpbnVlO1xuIDE1NTpcdFx0XHRyZXMuYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBkZXYsIGksIFNUTU1BQ19SRVNPVVJDRV9OQU1FKTtcbiAxNTY6XHRcdFx0aWYgKElTX0VSUihyZXMuYWRkcikpXG4gMTU3Olx0XHRcdFx0cmV0dXJuIFBUUl9FUlIocmVzLmFkZHIpO1xuIDE1ODpcdFx0XHRicmVhaztcbiAxNTk6XHRcdH1cbiAxNjA6XHRcbiAxNjE6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuIDE2MjpcdFxuIDE2MzpcdFx0cmV0ID0gaW5mby1cdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcbiAxNjQ6XHRcdGlmIChyZXQpXG4gMTY1Olx0XHRcdHJldHVybiByZXQ7XG4gMTY2Olx0XG4gMTY3Olx0XHRyZXMud29sX2lycSA9IHBkZXYtXHUwMDNlaXJxO1xuIDE2ODpcdFx0cmVzLmlycSA9IHBkZXYtXHUwMDNlaXJxO1xuIDE2OTpcdFxuIDE3MDpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNldHNvZWUgPSAxO1xuIDE3MTpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlbXJ4cGVlID0gMTtcbiAxNzI6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW1lc3RlZSA9IDE7XG4gMTczOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtcnhlZSA9IDE7XG4gMTc0Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtdHhlZSA9IDE7XG4gMTc1Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VlcHNpID0gMTtcbiAxNzY6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZWVkcHAgPSAxO1xuIDE3NzpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlcHJ0eWVuID0gMTtcbiAxNzg6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZXRtb3V0ZW4gPSAxO1xuIDE3OTpcdFxuIDE4MDpcdFx0cGxhdC1cdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG4gMTgxOlx0XHRwbGF0LVx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XG4gMTgyOlx0XG4gMTgzOlx0XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbiAxODQ6XHR9XG4gMTg1Olx0XG4gMTg2Olx0LyoqXG4gMTg3Olx0ICogc3RtbWFjX3BjaV9yZW1vdmVcbiAxODg6XHQgKlxuIDE4OTpcdCAqIEBwZGV2OiBwbGF0Zm9ybSBkZXZpY2UgcG9pbnRlclxuIDE5MDpcdCAqIERlc2NyaXB0aW9uOiB0aGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBtYWluIHRvIGZyZWUgdGhlIG5ldCByZXNvdXJjZXMuXG4gMTkxOlx0ICovXG4gMTkyOlx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gMTkzOlx0e1xuIDE5NDpcdFx0c3RtbWFjX2R2cl9yZW1vdmUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDE5NTpcdH1cbiAxOTY6XHRcbiAxOTc6XHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xuIDE5ODpcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcdFx0MHgwNzAwXG4gMTk5Olx0XG4gMjAwOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcdFx0MHgxMTA4XG4gMjAxOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXHRcdDB4NzEwMlxuIDIwMjpcdFxuIDIwMzpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbiAyMDQ6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTA2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFNUTU1BQyBhbmQgUUVNVSBFbXVsYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIHN0YXJ0IGJ5IGNvbnNpZGVyaW5nIGBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNgIGFuZCByZWxhdGVkIFBDSSBkcml2ZXJzLiBCZWZvcmUgZGl2aW5nIGRlZXAsIEkmIzM5O2xsIHF1aWNrbHkgcmVmZXIgdG8gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeS4gVGhpcyBpcyBpbXBvcnRhbnQ6IGFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHZlbmRvci1zcGVjaWZpYyB0aGF0IG5lZWRzIGEgcGh5c2ljYWwgY2FyZCwgbGlrZSBzb21lIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnM/ICBUaGUgZXhhbXBsZXMgbGlzdGVkIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgYXJlIGdvb2QgcmVmZXJlbmNlIHBvaW50cy4KClRoZSBjb3JlIHF1ZXN0aW9uIG5vdyBpczogZG9lcyBgc3RtbWFjYCBvciBgRFdNQUNgIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYW4gQVNJQyBub3Qgc2ltdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8KCkkga25vdyBgc3RtbWFjYCBpcyB0aGUgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoRFdNQUMsIEdNQUMsIFhHTUFDKSBhbmQgYWxzbyBzdXBwb3J0cyBTVE1pY3JvIFNUTTMyIGFuZCBTVGkgRXRoZXJuZXQgY29udHJvbGxlcnMuIE5vdywgdGhlIGtleSBpcyB3aGV0aGVyIHRoaXMgaGFyZHdhcmUgaXMgKnByZXNlbnQqIG9yICplbXVsYXRlZCogaW4gYSBzdGFuZGFyZCBRRU1VIGFtZDY0IHNldHVwLgoKSW1tZWRpYXRlbHksIHRoZSBhbnN3ZXIgaXMgKm5vKi4gU3RhbmRhcmQgUUVNVSBmb3IgYW1kNjQgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgU3lub3BzeXMgRFdNQUMgb3IgU1RNaWNybyBNQUMuIEkga25vdyB0aGF0IHRoZSBzdGFuZGFyZCBuZXR3b3JrIGRldmljZXMgZW11bGF0ZWQgaW4gUUVNVSBmb3IgeDg2XzY0IGFyZSB0aGluZ3MgbGlrZSBgZTEwMDBgLCBgcGNuZXRgLCBgdmlydGlvLW5ldC1wY2lgLCBldGMuIEkmIzM5O2xsIG1ha2UgYSBxdWljayBsaXN0IHRvIGpvZyBteSBtZW1vcnk6IGBlMTAwMCwgZTEwMDAtODI1NDRnYywgZTEwMDAtODI1NDVlbSwgZTEwMDBlLCBpZ2IsIGk4MjU1MCwgaTgyNTUxLCBpODI1NTdhLCBpODI1NTdiLCBpODI1NTdjLCBpODI1NThhLCBpODI1NThiLCBpODI1NTlhLCBpODI1NTliLCBpODI1NTljLCBpODI1NTllciwgaTgyNTYyLCBuZTJrX3BjaSwgcGNuZXQsIHJ0bDgxMzksIHR1bGlwLCB2bXhuZXQzLCB2aXJ0aW8tbmV0LXBjaSwgcm9ja2VyYC4KClNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogaXMgYHN0bW1hY2Agb3IgYGR3bWFjYCBlbXVsYXRlZCBpbiAqYW55KiBRRU1VIGZvciB4ODZfNjQ/IE5vLiBRRU1VIGhhbmRsZXMgbmV0d29yayBkaWZmZXJlbnRseSBmb3IgQVJNLCBzdWNoIGFzICBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIGZvciBBUk0gYG9yYW5nZXBpLXBjYCBhbmQgYGlteF9mZWNgIGZvciBBUk0gaS5NWCwgYW5kIG1heWJlIGBjYWRlbmNlX2dlbWAgZm9yIFhpbGlueCBaeW5xIEFSTS4gTm9uZSBvZiB0aG9zZSBhcmUgYHN0bW1hY2AsIGFuZCBjcml0aWNhbGx5LCBub25lIGFyZSBpbiB0aGUgc3RhbmRhcmQgYW1kNjQgLyB4ODZfNjQgUUVNVSBidWlsZC4KCkhvd2V2ZXIsIEkmIzM5O20gbm90IGdvaW5nIHRvIHByZW1hdHVyZWx5IGRlY2xhcmUgZGVmZWF0LiBDYW4gYHN0bW1hY2AgcG90ZW50aWFsbHkgYmUgKnByb2JlZCogb3IgKmluc3RhbnRpYXRlZCogdGhyb3VnaCBhbm90aGVyIG1lY2hhbmlzbT8gUGVyaGFwcyB0aGVyZSBhcmUgaW5kaXJlY3QgY2FsbHMgb3IgbW9jayBkcml2ZXJzIGludm9sdmVkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGF2ZW51ZSB0byBleHBsb3JlIOKAkyBjaGVja2luZyBmb3IgYW55IG90aGVyIGNhbGxlcnMgb3IgbW9jayBkcml2ZXJzIGFzc29jaWF0ZWQgd2l0aCBgc3RtbWFjYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjgzPXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMzA6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjExODpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzQxOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9Mzc0PXN0YXRpYyBpbnQgaXBxODA2eF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo0ODM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU2MjpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU2My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTQyPXN0YXRpYyBpbnQgbHBjMTh4eF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo2ODpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NTk5PXN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjQyOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NDc9c3RhdGljIGludCBtZXNvbjZfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo3MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTc0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9MzgyPXN0YXRpYyBpbnQgbWVzb244Yl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NDY0Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI5Mz1zdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM1OTpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzYwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NDg9c3RhdGljIGludCByem4xX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjY4Olx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02OS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MzU9c3RhdGljIGludCBzb3BoZ29fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjY1Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02Ni19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMDc6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jPTkwPXN0YXRpYyBpbnQgc3RhcmZpdmVfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM6MTUzOlx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTU0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTUyNT1zdGF0aWMgaW50IHN0bTMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjU3OTpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTExMDU9c3RhdGljIGludCBzdW44aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwMjpcdC8qIHRoZSBNQUMgaXMgcnVudGltZSBzdXNwZW5kZWQgYWZ0ZXIgc3RtbWFjX2R2cl9wcm9iZSgpLCBzbyB3ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjAzLVx0ICogbmVlZCB0byBlbnN1cmUgdGhlIE1BQyByZXN1bWUgYmFjayBiZWZvcmUgb3RoZXIgb3BlcmF0aW9ucyBzdWNoXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjA4LVx0LyogVGhlIG11eCBtdXN0IGJlIHJlZ2lzdGVyZWQgYWZ0ZXIgcGFyZW50IE1ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwOTpcdCAqIHNvIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjEwLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjM3NjpcdGVyciA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3Ny1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yMDU9c3RhdGljIGludCB2aXNjb250aV9ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjM3Olx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMT12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTI6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDEzLVx0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03ODE2PUVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbGF0X2RhdF9hbGxvYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc4MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc4MTg6c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODE5LVx0XHRcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTIwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTIxOiAqIHN0bW1hY19kdnJfcHJvYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMi0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODEzMDppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzEtXHRcdCAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxNDE6XHRyZXQgPSBfX3N0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE0Mi1cdGlmIChyZXQgXHUwMDI2XHUwMDI2IHBsYXRfZGF0LVx1MDAzZWV4aXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTQ2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODE0NzpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfZHZyX3Byb2JlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE0OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODQ2PWludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NTU6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1Ni19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMjk3CgkJCQkJCQlvdXRwdXQ6IDExMQoJCQkJCQkJdGhvdWdodHM6IDUxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmlhZ2UgRGVjaXNpb246IFdvcnRoRnV6emluZyA9IEZhbHNlIGZvciBzdG1tYWMgRHJpdmVyIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIG91dGxpbmVkIGluIFNlY3Rpb24gMiBvZiB0aGUgZnV6emluZyBpbnN0cnVjdGlvbnMuIFRoZSBjb3JlIG9mIG15IGFzc2Vzc21lbnQgcmVzdHMgb24gZGV0ZXJtaW5pbmcgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byB0aGUgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKSYjMzQ7IGNhdGVnb3J5LgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNyaXRlcmlvbi4gVGhlIGluc3RydWN0aW9ucyBkZWZpbmUgdGhpcyBhcyBjb2RlIHJlbGlhbnQgb24gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gQ29uc2lkZXJpbmcgbXkgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgYW1kNjQsIGFuZCB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uIOKAkyBgc3RtbWFjYCDigJMgdGhpcyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLgoKYHN0bW1hY2AgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9gKSBpcyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgYW5kIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBjb250cm9sbGVycy4gRnJvbSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBoYXJkd2FyZSwgdGhlc2UgY29udHJvbGxlcnMgYXJlIHBoeXNpY2FsIGhhcmR3YXJlIChTb0MvUENJKSBjb21wb25lbnRzLiBTdGFuZGFyZCBRRU1VIG9yIEdDRSBWTXMgb24gYW1kNjQgZG9uJiMzOTt0IGVtdWxhdGUgdGhpcyB0eXBlIG9mIHBoeXNpY2FsIGhhcmR3YXJlLiBZb3UmIzM5O2QgbmVlZCBkZWRpY2F0ZWQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIGZvciBwcm9wZXIgZW11bGF0aW9uLiBDb25zZXF1ZW50bHksIHRoZXNlIGNoYW5nZXMgYXJlLCBmb3IgYWxsIHByYWN0aWNhbCBwdXJwb3Nlcywgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudC4KClNvLCBsZXQmIzM5O3MgcHV0IGl0IGFsbCB0b2dldGhlcjogSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIE15IHJlYXNvbmluZyBpcyBjb25jaXNlOiB0aGUgYHN0bW1hY2AgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIChTb0MvUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzKSBub3QgZW11bGF0ZWQgaW4gdGhlIHVzdWFsIFFFTVUvR0NFIGFtZDY0IGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgbGVmdCBlbXB0eS4KCkEgcXVpY2sgZmluYWwgY2hlY2s6IEkgY2FuIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb250YWluZWQgd2l0aGluIGBzdG1tYWNgOiBgY2hhaW5fbW9kZS5jYCwgYHJpbmdfbW9kZS5jYCwgYW5kIGBzdG1tYWNfbWFpbi5jYCBhcmUgYWxsIGNsZWFybHkgcGFydCBvZiB0aGUgYHN0bW1hY2AgZHJpdmVyLgoKTm93LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKHNwZWNpZmljYWxseSBoYW5kbGluZyBUeCBETUEgbWFwcGluZyBmYWlsdXJlIHJvbGxiYWNrcyBpbiBqdW1ibyBmcmFtZSB0cmFuc21pc3Npb24pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSAvIFNvQyBjb250cm9sbGVycyAob3IgZGVkaWNhdGVkIFBDSWUgZGV2aWNlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIG1vZGlmeSB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChzcGVjaWZpY2FsbHkgaGFuZGxpbmcgVHggRE1BIG1hcHBpbmcgZmFpbHVyZSByb2xsYmFja3MgaW4ganVtYm8gZnJhbWUgdHJhbnNtaXNzaW9uKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLyBTb0MgY29udHJvbGxlcnMgKG9yIGRlZGljYXRlZCBQQ0llIGRldmljZXMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjE1LjMxMDE1MTI3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTE3NDA0ODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoc3BlY2lmaWNhbGx5IGhhbmRsaW5nIFR4IERNQSBtYXBwaW5nIGZhaWx1cmUgcm9sbGJhY2tzIGluIGp1bWJvIGZyYW1lIHRyYW5zbWlzc2lvbikuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DIGNvbnRyb2xsZXJzIChvciBkZWRpY2F0ZWQgUENJZSBkZXZpY2VzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjE1LjMxMDE1NzA5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM1Nzk5MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTg1ZDhiZTUyNDA1MGE5MWMzZmRjZTg4OTY5NWI1ZTA5MzQ0MTQyN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCAxMSAwODo0OToxNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmNcXG5pbmRleCA2NjAyNWUyNTA5ZTkxLi44NDE1Yzc0MGVlOWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuY1xcbkBAIC0yMCw2ICsyMCw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHVuc2lnbmVkIGludCBub3BhZ2VkX2xlbiA9IHNrYl9oZWFkbGVuKHNrYik7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IHR4X3EtXFx1MDAzZXByaXZfZGF0YTtcXG4gXFx0dW5zaWduZWQgaW50IGVudHJ5ID0gdHhfcS1cXHUwMDNlY3VyX3R4O1xcbitcXHR1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnkgPSBlbnRyeTtcXG4gXFx0dW5zaWduZWQgaW50IGJtYXgsIGJ1Zl9sZW47XFxuIFxcdHVuc2lnbmVkIGludCBpID0gMSwgbGVuO1xcbiBcXHRzdHJ1Y3QgZG1hX2Rlc2MgKmRlc2M7XFxuQEAgLTU3LDcgKzU4LDcgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYm1heCwgRE1BX1RPX0RFVklDRSk7XFxuIFxcdFxcdFxcdGRlc2MtXFx1MDAzZWRlczIgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGRlczIpKTtcXG4gXFx0XFx0XFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtXFx1MDAzZWRldmljZSwgZGVzMikpXFxuLVxcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4rXFx0XFx0XFx0XFx0Z290byBlcnJfdW5tYXA7XFxuIFxcdFxcdFxcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XFxuIFxcdFxcdFxcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmxlbiA9IGJtYXg7XFxuIFxcdFxcdFxcdHN0bW1hY19wcmVwYXJlX3R4X2Rlc2MocHJpdiwgZGVzYywgMCwgYm1heCwgY3N1bSxcXG5AQCAtNzAsNyArNzEsNyBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBETUFfVE9fREVWSUNFKTtcXG4gXFx0XFx0XFx0ZGVzYy1cXHUwMDNlZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpO1xcbiBcXHRcXHRcXHRpZiAoZG1hX21hcHBpbmdfZXJyb3IocHJpdi1cXHUwMDNlZGV2aWNlLCBkZXMyKSlcXG4tXFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbitcXHRcXHRcXHRcXHRnb3RvIGVycl91bm1hcDtcXG4gXFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0uYnVmID0gZGVzMjtcXG4gXFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ubGVuID0gbGVuO1xcbiBcXHRcXHRcXHQvKiBsYXN0IGRlc2NyaXB0b3IgY2FuIGJlIHNldCBub3cgKi9cXG5AQCAtODMsNiArODQsMjAgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0dHhfcS1cXHUwMDNlY3VyX3R4ID0gZW50cnk7XFxuIFxcbiBcXHRyZXR1cm4gZW50cnk7XFxuK1xcbitlcnJfdW5tYXA6XFxuK1xcdHdoaWxlIChmaXJzdF9lbnRyeSAhPSBlbnRyeSkge1xcbitcXHRcXHRkbWFfdW5tYXBfc2luZ2xlKHByaXYtXFx1MDAzZWRldmljZSxcXG4rXFx0XFx0XFx0XFx0IHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmJ1ZixcXG4rXFx0XFx0XFx0XFx0IHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmxlbixcXG4rXFx0XFx0XFx0XFx0IERNQV9UT19ERVZJQ0UpO1xcbitcXHRcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5idWYgPSAwO1xcbitcXHRcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5sZW4gPSAwO1xcbitcXHRcXHRmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VkbWFfY29uZi5kbWFfdHhfc2l6ZSk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAtMTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgaXNfanVtYm9fZnJtKHVuc2lnbmVkIGludCBsZW4sIGJvb2wgZW5oX2Rlc2MpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmNcXG5pbmRleCBmNzk0OTQxOWViOWZkLi40MTcwYzg5N2JkMWE4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmNcXG5AQCAtMzcsNiArMzcsNyBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRsZW4gPSBub3BhZ2VkX2xlbiAtIGJtYXg7XFxuIFxcbiBcXHRpZiAobm9wYWdlZF9sZW4gXFx1MDAzZSBCVUZfU0laRV84S2lCKSB7XFxuK1xcdFxcdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSA9IGVudHJ5O1xcbiBcXG4gXFx0XFx0ZGVzMiA9IGRtYV9tYXBfc2luZ2xlKHByaXYtXFx1MDAzZWRldmljZSwgc2tiLVxcdTAwM2VkYXRhLCBibWF4LFxcbiBcXHRcXHRcXHRcXHQgICAgICBETUFfVE9fREVWSUNFKTtcXG5AQCAtNjIsOCArNjMsMTUgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0ZGVzMiA9IGRtYV9tYXBfc2luZ2xlKHByaXYtXFx1MDAzZWRldmljZSwgc2tiLVxcdTAwM2VkYXRhICsgYm1heCwgbGVuLFxcbiBcXHRcXHRcXHRcXHQgICAgICBETUFfVE9fREVWSUNFKTtcXG4gXFx0XFx0ZGVzYy1cXHUwMDNlZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpO1xcbi1cXHRcXHRpZiAoZG1hX21hcHBpbmdfZXJyb3IocHJpdi1cXHUwMDNlZGV2aWNlLCBkZXMyKSlcXG4rXFx0XFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtXFx1MDAzZWRldmljZSwgZGVzMikpIHtcXG4rXFx0XFx0XFx0ZG1hX3VubWFwX3NpbmdsZShwcml2LVxcdTAwM2VkZXZpY2UsXFxuK1xcdFxcdFxcdFxcdFxcdCB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5idWYsXFxuK1xcdFxcdFxcdFxcdFxcdCBibWF4LCBETUFfVE9fREVWSUNFKTtcXG4rXFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDtcXG4rXFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0ubGVuID0gMDtcXG4rXFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uaXNfanVtYm8gPSBmYWxzZTtcXG4gXFx0XFx0XFx0cmV0dXJuIC0xO1xcbitcXHRcXHR9XFxuIFxcdFxcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XFxuIFxcdFxcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmxlbiA9IGxlbjtcXG4gXFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0uaXNfanVtYm8gPSB0cnVlO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDI0NjU2YjM1MzUwYjEuLjkwNTA2MTE4NjIxMDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtNDc2NywxNSArNDc2NywxNSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0Ym9vbCBlbmhfZGVzYywgaGFzX3ZsYW4sIHNldF9pYywgaXNfanVtYm8gPSBmYWxzZTtcXG4gXFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcXG4rXFx0dW5zaWduZWQgaW50IGZpcnN0X2VudHJ5LCBlbnRyeSwgdHhfcGFja2V0cztcXG4gXFx0dTMyIHF1ZXVlID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuIFxcdGludCBuZnJhZ3MgPSBza2Jfc2hpbmZvKHNrYiktXFx1MDAzZW5yX2ZyYWdzO1xcbi1cXHR1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnksIHR4X3BhY2tldHM7XFxuIFxcdHN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzICp0eHFfc3RhdHM7XFxuIFxcdHN0cnVjdCBkbWFfZGVzYyAqZGVzYywgKmZpcnN0X2Rlc2M7XFxuIFxcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3E7XFxuIFxcdGludCBpLCBjc3VtX2luc2VydGlvbiA9IDA7XFxuLVxcdGludCBlbnRyeSwgZmlyc3RfdHg7XFxuIFxcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XFxuK1xcdGludCBmaXJzdF90eCwgcmV0O1xcbiBcXHR1MzIgc2R1X2xlbjtcXG4gXFxuIFxcdGlmIChwcml2LVxcdTAwM2V0eF9wYXRoX2luX2xwaV9tb2RlIFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWVlZV9zd190aW1lcl9lbilcXG5AQCAtNDgzMiw5ICs0ODMyLDEwIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRjc3VtX2luc2VydGlvbiA9IHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUw7XFxuIFxcbiBcXHRpZiAodW5saWtlbHkoaXNfanVtYm8pKSB7XFxuLVxcdFxcdGVudHJ5ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTtcXG4tXFx0XFx0aWYgKHVubGlrZWx5KGVudHJ5IFxcdTAwM2MgMCkgXFx1MDAyNlxcdTAwMjYgKGVudHJ5ICE9IC1FSU5WQUwpKVxcbitcXHRcXHRyZXQgPSBzdG1tYWNfanVtYm9fZnJtKHByaXYsIHR4X3EsIHNrYiwgY3N1bV9pbnNlcnRpb24pO1xcbitcXHRcXHRpZiAodW5saWtlbHkocmV0IFxcdTAwM2MgMCkgXFx1MDAyNlxcdTAwMjYgKHJldCAhPSAtRUlOVkFMKSlcXG4gXFx0XFx0XFx0Z290byBkbWFfbWFwX2VycjtcXG4rXFx0XFx0ZW50cnkgPSByZXQ7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGJvb2wgbGFzdF9zZWdtZW50ID0gKG5mcmFncyA9PSAwKTtcXG4gXFxuQEAgLTQ5ODQsNiArNDk4NSwyNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIGRtYV9tYXBfZXJyOlxcbiBcXHRuZXRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIlR4IERNQSBtYXAgZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFxuK1xcdC8qIGVudHJ5IHBvaW50cyBvbmUgcGFzdCB0aGUgbGFzdCBkZXNjcmlwdG9yIHdyaXR0ZW4gZm9yIHRoaXMgZnJhbWU6XFxuK1xcdCAqIG9uIGZhaWx1cmUgaXQgaXMgdGhlIGRlc2NyaXB0b3Igd2hvc2UgRE1BIG1hcHBpbmcgZmFpbGVkLCBzbyB3YWxrXFxuK1xcdCAqIGZyb20gZmlyc3RfZW50cnkgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBlbnRyeS4gIFJlc2V0IGN1cl90eFxcbitcXHQgKiB1bmNvbmRpdGlvbmFsbHkgYXMgYm90aCBzdG1tYWNfdmxhbl9pbnNlcnQoKSBhbmQgc3RtbWFjX2p1bWJvX2ZybSgpXFxuK1xcdCAqIG1heSBoYXZlIGFkdmFuY2VkIGl0LCBhbmQgcmVsZWFzZSB0aGUgVkxBTiBjb250ZXh0IGRlc2NyaXB0b3IuXFxuK1xcdCAqL1xcbitcXHR3aGlsZSAoZmlyc3RfZW50cnkgIT0gZW50cnkpIHtcXG4rXFx0XFx0ZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBmaXJzdF9lbnRyeSk7XFxuK1xcdFxcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi1cXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcXG4rXFx0XFx0c3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkbWFfY29uZiwgcXVldWUsIGZpcnN0X2VudHJ5KTtcXG4rXFx0XFx0Zmlyc3RfZW50cnkgPSBTVE1NQUNfTkVYVF9FTlRSWShmaXJzdF9lbnRyeSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlZG1hX2NvbmYuZG1hX3R4X3NpemUpO1xcbitcXHR9XFxuK1xcbitcXHR0eF9xLVxcdTAwM2VjdXJfdHggPSBmaXJzdF90eDtcXG4rXFx0aWYgKGhhc192bGFuKSB7XFxuK1xcdFxcdGRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfdHgpO1xcbitcXHRcXHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXFx1MDAzZWRlc2NyaXB0b3JfbW9kZSk7XFxuK1xcdH1cXG4gbWF4X3NkdV9lcnI6XFxuIFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4gXFx0cHJpdi1cXHUwMDNleHN0YXRzLnR4X2Ryb3BwZWQrKztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDg6NDk6MTUuOTQ5MDc3MjU2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0Mzg3ODQ2MDE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoc3BlY2lmaWNhbGx5IGhhbmRsaW5nIFR4IERNQSBtYXBwaW5nIGZhaWx1cmUgcm9sbGJhY2tzIGluIGp1bWJvIGZyYW1lIHRyYW5zbWlzc2lvbikuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DIGNvbnRyb2xsZXJzIChvciBkZWRpY2F0ZWQgUENJZSBkZXZpY2VzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTg1ZDhiZTUyNDA1MGE5MWMzZmRjZTg4OTY5NWI1ZTA5MzQ0MTQyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDA4OjQ5OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jXG5pbmRleCA2NjAyNWUyNTA5ZTkxLi44NDE1Yzc0MGVlOWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmNcbkBAIC0yMCw2ICsyMCw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHR1bnNpZ25lZCBpbnQgbm9wYWdlZF9sZW4gPSBza2JfaGVhZGxlbihza2IpO1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gdHhfcS1cdTAwM2Vwcml2X2RhdGE7XG4gXHR1bnNpZ25lZCBpbnQgZW50cnkgPSB0eF9xLVx1MDAzZWN1cl90eDtcbitcdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSA9IGVudHJ5O1xuIFx0dW5zaWduZWQgaW50IGJtYXgsIGJ1Zl9sZW47XG4gXHR1bnNpZ25lZCBpbnQgaSA9IDEsIGxlbjtcbiBcdHN0cnVjdCBkbWFfZGVzYyAqZGVzYztcbkBAIC01Nyw3ICs1OCw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRcdCAgICAgIGJtYXgsIERNQV9UT19ERVZJQ0UpO1xuIFx0XHRcdGRlc2MtXHUwMDNlZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpO1xuIFx0XHRcdGlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LVx1MDAzZWRldmljZSwgZGVzMikpXG4tXHRcdFx0XHRyZXR1cm4gLTE7XG4rXHRcdFx0XHRnb3RvIGVycl91bm1hcDtcbiBcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XG4gXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBibWF4O1xuIFx0XHRcdHN0bW1hY19wcmVwYXJlX3R4X2Rlc2MocHJpdiwgZGVzYywgMCwgYm1heCwgY3N1bSxcbkBAIC03MCw3ICs3MSw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRcdCAgICAgIERNQV9UT19ERVZJQ0UpO1xuIFx0XHRcdGRlc2MtXHUwMDNlZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpO1xuIFx0XHRcdGlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LVx1MDAzZWRldmljZSwgZGVzMikpXG4tXHRcdFx0XHRyZXR1cm4gLTE7XG4rXHRcdFx0XHRnb3RvIGVycl91bm1hcDtcbiBcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XG4gXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBsZW47XG4gXHRcdFx0LyogbGFzdCBkZXNjcmlwdG9yIGNhbiBiZSBzZXQgbm93ICovXG5AQCAtODMsNiArODQsMjAgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHR4X3EtXHUwMDNlY3VyX3R4ID0gZW50cnk7XG4gXG4gXHRyZXR1cm4gZW50cnk7XG4rXG4rZXJyX3VubWFwOlxuK1x0d2hpbGUgKGZpcnN0X2VudHJ5ICE9IGVudHJ5KSB7XG4rXHRcdGRtYV91bm1hcF9zaW5nbGUocHJpdi1cdTAwM2VkZXZpY2UsXG4rXHRcdFx0XHQgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5idWYsXG4rXHRcdFx0XHQgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5sZW4sXG4rXHRcdFx0XHQgRE1BX1RPX0RFVklDRSk7XG4rXHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDtcbitcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5sZW4gPSAwO1xuK1x0XHRmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LFxuK1x0XHRcdFx0XHRcdHByaXYtXHUwMDNlZG1hX2NvbmYuZG1hX3R4X3NpemUpO1xuK1x0fVxuK1xuK1x0cmV0dXJuIC0xO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBpc19qdW1ib19mcm0odW5zaWduZWQgaW50IGxlbiwgYm9vbCBlbmhfZGVzYylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9yaW5nX21vZGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jXG5pbmRleCBmNzk0OTQxOWViOWZkLi40MTcwYzg5N2JkMWE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jXG5AQCAtMzcsNiArMzcsNyBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0bGVuID0gbm9wYWdlZF9sZW4gLSBibWF4O1xuIFxuIFx0aWYgKG5vcGFnZWRfbGVuIFx1MDAzZSBCVUZfU0laRV84S2lCKSB7XG4rXHRcdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSA9IGVudHJ5O1xuIFxuIFx0XHRkZXMyID0gZG1hX21hcF9zaW5nbGUocHJpdi1cdTAwM2VkZXZpY2UsIHNrYi1cdTAwM2VkYXRhLCBibWF4LFxuIFx0XHRcdFx0ICAgICAgRE1BX1RPX0RFVklDRSk7XG5AQCAtNjIsOCArNjMsMTUgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZGVzMiA9IGRtYV9tYXBfc2luZ2xlKHByaXYtXHUwMDNlZGV2aWNlLCBza2ItXHUwMDNlZGF0YSArIGJtYXgsIGxlbixcbiBcdFx0XHRcdCAgICAgIERNQV9UT19ERVZJQ0UpO1xuIFx0XHRkZXNjLVx1MDAzZWRlczIgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGRlczIpKTtcbi1cdFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtXHUwMDNlZGV2aWNlLCBkZXMyKSlcbitcdFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtXHUwMDNlZGV2aWNlLCBkZXMyKSkge1xuK1x0XHRcdGRtYV91bm1hcF9zaW5nbGUocHJpdi1cdTAwM2VkZXZpY2UsXG4rXHRcdFx0XHRcdCB0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmJ1ZixcbitcdFx0XHRcdFx0IGJtYXgsIERNQV9UT19ERVZJQ0UpO1xuK1x0XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDtcbitcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmxlbiA9IDA7XG4rXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5pc19qdW1ibyA9IGZhbHNlO1xuIFx0XHRcdHJldHVybiAtMTtcbitcdFx0fVxuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XG4gXHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ubGVuID0gbGVuO1xuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmlzX2p1bWJvID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggMjQ2NTZiMzUzNTBiMS4uOTA1MDYxMTg2MjEwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC00NzY3LDE1ICs0NzY3LDE1IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0Ym9vbCBlbmhfZGVzYywgaGFzX3ZsYW4sIHNldF9pYywgaXNfanVtYm8gPSBmYWxzZTtcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHR1bnNpZ25lZCBpbnQgbm9wYWdlZF9sZW4gPSBza2JfaGVhZGxlbihza2IpO1xuK1x0dW5zaWduZWQgaW50IGZpcnN0X2VudHJ5LCBlbnRyeSwgdHhfcGFja2V0cztcbiBcdHUzMiBxdWV1ZSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuIFx0aW50IG5mcmFncyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncztcbi1cdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgdHhfcGFja2V0cztcbiBcdHN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzICp0eHFfc3RhdHM7XG4gXHRzdHJ1Y3QgZG1hX2Rlc2MgKmRlc2MsICpmaXJzdF9kZXNjO1xuIFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcTtcbiBcdGludCBpLCBjc3VtX2luc2VydGlvbiA9IDA7XG4tXHRpbnQgZW50cnksIGZpcnN0X3R4O1xuIFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbitcdGludCBmaXJzdF90eCwgcmV0O1xuIFx0dTMyIHNkdV9sZW47XG4gXG4gXHRpZiAocHJpdi1cdTAwM2V0eF9wYXRoX2luX2xwaV9tb2RlIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVlZV9zd190aW1lcl9lbilcbkBAIC00ODMyLDkgKzQ4MzIsMTAgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRjc3VtX2luc2VydGlvbiA9IHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTDtcbiBcbiBcdGlmICh1bmxpa2VseShpc19qdW1ibykpIHtcbi1cdFx0ZW50cnkgPSBzdG1tYWNfanVtYm9fZnJtKHByaXYsIHR4X3EsIHNrYiwgY3N1bV9pbnNlcnRpb24pO1xuLVx0XHRpZiAodW5saWtlbHkoZW50cnkgXHUwMDNjIDApIFx1MDAyNlx1MDAyNiAoZW50cnkgIT0gLUVJTlZBTCkpXG4rXHRcdHJldCA9IHN0bW1hY19qdW1ib19mcm0ocHJpdiwgdHhfcSwgc2tiLCBjc3VtX2luc2VydGlvbik7XG4rXHRcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApIFx1MDAyNlx1MDAyNiAocmV0ICE9IC1FSU5WQUwpKVxuIFx0XHRcdGdvdG8gZG1hX21hcF9lcnI7XG4rXHRcdGVudHJ5ID0gcmV0O1xuIFx0fSBlbHNlIHtcbiBcdFx0Ym9vbCBsYXN0X3NlZ21lbnQgPSAobmZyYWdzID09IDApO1xuIFxuQEAgLTQ5ODQsNiArNDk4NSwyNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBkbWFfbWFwX2VycjpcbiBcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiVHggRE1BIG1hcCBmYWlsZWRcXG5cIik7XG4rXG4rXHQvKiBlbnRyeSBwb2ludHMgb25lIHBhc3QgdGhlIGxhc3QgZGVzY3JpcHRvciB3cml0dGVuIGZvciB0aGlzIGZyYW1lOlxuK1x0ICogb24gZmFpbHVyZSBpdCBpcyB0aGUgZGVzY3JpcHRvciB3aG9zZSBETUEgbWFwcGluZyBmYWlsZWQsIHNvIHdhbGtcbitcdCAqIGZyb20gZmlyc3RfZW50cnkgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBlbnRyeS4gIFJlc2V0IGN1cl90eFxuK1x0ICogdW5jb25kaXRpb25hbGx5IGFzIGJvdGggc3RtbWFjX3ZsYW5faW5zZXJ0KCkgYW5kIHN0bW1hY19qdW1ib19mcm0oKVxuK1x0ICogbWF5IGhhdmUgYWR2YW5jZWQgaXQsIGFuZCByZWxlYXNlIHRoZSBWTEFOIGNvbnRleHQgZGVzY3JpcHRvci5cbitcdCAqL1xuK1x0d2hpbGUgKGZpcnN0X2VudHJ5ICE9IGVudHJ5KSB7XG4rXHRcdGRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfZW50cnkpO1xuK1x0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbitcdFx0c3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYsIHF1ZXVlLCBmaXJzdF9lbnRyeSk7XG4rXHRcdGZpcnN0X2VudHJ5ID0gU1RNTUFDX05FWFRfRU5UUlkoZmlyc3RfZW50cnksXG4rXHRcdFx0XHRcdFx0cHJpdi1cdTAwM2VkbWFfY29uZi5kbWFfdHhfc2l6ZSk7XG4rXHR9XG4rXG4rXHR0eF9xLVx1MDAzZWN1cl90eCA9IGZpcnN0X3R4O1xuK1x0aWYgKGhhc192bGFuKSB7XG4rXHRcdGRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfdHgpO1xuK1x0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbitcdH1cbiBtYXhfc2R1X2VycjpcbiBcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiBcdHByaXYtXHUwMDNleHN0YXRzLnR4X2Ryb3BwZWQrKztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjE1Ljk0OTA4MDc3NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk1MjczOTIyOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCBpZiBpdCdzIGZ1enotd29ydGh5LCBrZWVwaW5nIG91ciBndWlkZWxpbmVzIGluIG1pbmQuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgZGlzc2VjdCB3aGF0J3MgYmVlbiB0b3VjaGVkLiBJIHNlZSB3ZSd2ZSBnb3QgbW9kaWZpY2F0aW9ucyB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jYCwgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gVGhvc2UgZmlsZXBhdGhzIGFyZSBwcmV0dHkgc3BlY2lmaWMsIHNvIHRoaXMgbG9va3MgbGlrZSB3ZSdyZSB6ZXJvaW5nIGluIG9uIGEgcGFydGljdWxhciBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5Ob3csIHdoYXQgZXhhY3RseSAqaXMqIGBzdG1tYWNgPyBUaGF0J3MgdGhlIGtleSBxdWVzdGlvbi4gV2UgbmVlZCB0byBhc2NlcnRhaW4gdGhlIHJvbGUgaXQgcGxheXMgaW4gdGhlIHN5c3RlbS4gSXMgdGhpcyBhbiBFdGhlcm5ldCBkcml2ZXIgdGllZCB0byBzb21lIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlLCBwZXJoYXBzIGFuIFNvQyBvciBQQ0llIGRldmljZT8gT3IsIG1vcmUgaW1wb3J0YW50bHkgZm9yIGZ1enppbmcsIGlzIHRoZXJlIGEgcG9zc2liaWxpdHkgb2YgZW11bGF0aW9uPyBDYW4gd2Ugc2ltdWxhdGUgdGhpcyBoYXJkd2FyZSBpbiBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQsIG9yIGFyZSB3ZSBsaW1pdGVkIHRvIHRlc3Rpbmcgb24gYWN0dWFsIGRldmljZXM/IEkgbmVlZCB0byBrbm93IGlmIHRoaXMgaXMgYSBkcml2ZXIgdGhhdCBjYW4gYmUgYWRlcXVhdGVseSBhc3Nlc3NlZCB3aXRoIHNvZnR3YXJlLiBMZXQncyBkbyBhIHF1aWNrIHNlYXJjaCBpbiBLY29uZmlnIGFuZCB0aGUgZHJpdmVycyBkaXJlY3RvcnkgdG8gZmlndXJlIHRoYXQgb3V0LiBLbm93aW5nIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5IGlzIGNyaXRpY2FsLiBJZiB3ZSAqY2FuKiBlbXVsYXRlLCB0aGF04oCZcyBhIGJpZyBcInllc1wiIHRvIGZ1enppbmcuIElmIGl0J3Mgc3RyaWN0bHkgaGFyZHdhcmUsIGl0IGJlY29tZXMgYSBtdWNoIHRvdWdoZXIgY2FsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI0NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjI1LjQ3NjQ3ODQ1MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU4OTYyNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1RNTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIxODkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODppZiBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMTpcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjItXFx0ZGVwZW5kcyBvbiBJTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI1OlxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2LVxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI5OmNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwOlxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMS1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQyOmlmIFNUTU1BQ19QTEFURk9STVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTUyPWNvbmZpZyBEV01BQ19HRU5FUklDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTQ6XFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzY0PWNvbmZpZyBEV01BQ19WSVNDT05USVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzE6ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3Mzpjb25maWcgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzkyLVxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzkzOlxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDEtXFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwMjpcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDg6XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDktXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMC1cXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQxMTpcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDEyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE5LVxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQyMDplbmRpZiAjIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICs9IHN0bW1hYy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMy1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTI6c3RtbWFjLSQoQ09ORklHX1NUTU1BQ19TRUxGVEVTVFMpICs9IHN0bW1hY19zZWxmdGVzdHMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTE0LSMgT3JkZXJpbmcgbWF0dGVycy4gR2VuZXJpYyBkcml2ZXIgbXVzdCBiZSBsYXN0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19TVE1NQUNfUExBVEZPUk0pXFx0Kz0gc3RtbWFjLXBsYXRmb3JtLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfRFdNQUNfQU5BUklPTilcXHQrPSBkd21hYy1hbmFyaW9uLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTQ3PWR3bWFjLWFsdHItc29jZnBnYS1vYmpzIDo9IGR3bWFjLXNvY2ZwZ2Eub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ5Om9iai0kKENPTkZJR19TVE1NQUNfTElCUENJKVxcdCs9IHN0bW1hY19saWJwY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19TVE1NQUNfUENJKVxcdCs9IHN0bW1hYy1wY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19EV01BQ19JTlRFTClcXHQrPSBkd21hYy1pbnRlbC5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM9MTc9c3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy00Ni1cXHQvKiBkbyBub3QgY2xvc2UgdGhlIGRlc2NyaXB0b3IgYW5kIGRvIG5vdCBzZXQgb3duIGJpdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo0NzpcXHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDEsIGJ1Zl9sZW4sIGNzdW0sIFNUTU1BQ19DSEFJTl9NT0RFLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy00OC1cXHRcXHRcXHQwLCBmYWxzZSwgc2tiLVxcdTAwM2VsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTUxLVxcdFxcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZltlbnRyeV0gPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo1MjpcXHRcXHRlbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGVudHJ5LCBwcml2LVxcdTAwM2VkbWFfY29uZi5kbWFfdHhfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTUzLVxcdFxcdGRlc2MgPSB0eF9xLVxcdTAwM2VkbWFfdHggKyBlbnRyeTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy02NC1cXHRcXHRcXHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGJtYXgsIGNzdW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjY1OlxcdFxcdFxcdFxcdFxcdFNUTU1BQ19DSEFJTl9NT0RFLCAxLCBmYWxzZSwgc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy02Ni1cXHRcXHRcXHRsZW4gLT0gYm1heDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy03OC1cXHRcXHRcXHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGxlbiwgY3N1bSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6Nzk6XFx0XFx0XFx0XFx0XFx0U1RNTUFDX0NIQUlOX01PREUsIDEsIHRydWUsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtODAtXFx0XFx0XFx0bGVuID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy05NS1cXHRcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5sZW4gPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo5NjpcXHRcXHRmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy05Ny1cXHRcXHRcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VkbWFfY29uZi5kbWFfdHhfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzogIFNUTU1BQyBDb21tb24gSGVhZGVyIEZpbGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjAtI2lmIElTX0VOQUJMRUQoQ09ORklHX1ZMQU5fODAyMVEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjE6I2RlZmluZSBTVE1NQUNfVkxBTl9UQUdfVVNFRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTIyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pZl92bGFuLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaD00OT1zdGF0aWMgaW5saW5lIGJvb2wgZHdtYWNfaXNfeG1hYyhlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1NDojZGVmaW5lIFNUTU1BQ19DSEFOMFxcdDBcXHQvKiBBbHdheXMgc3VwcG9ydGVkIGFuZCBkZWZhdWx0IGZvciBhbGwgY2hpcHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY1LSNkZWZpbmUgRE1BX0RFRkFVTFRfUlhfU0laRVxcdDUxMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2OiNkZWZpbmUgU1RNTUFDX05FWFRfRU5UUlkoeCwgc2l6ZSlcXHQoKHggKyAxKSBcXHUwMDI2IChzaXplIC0gMSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaD0yNDg9c3RydWN0IHN0bW1hY19zYWZldHlfc3RhdHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjU1LS8qIE51bWJlciBvZiBmaWVsZHMgaW4gU2FmZXR5IFN0YXRzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjU2OiNkZWZpbmUgU1RNTUFDX1NBRkVUWV9GRUFUX1NJWkVcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjU3LVxcdChzaXplb2Yoc3RydWN0IHN0bW1hY19zYWZldHlfc3RhdHMpIC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMzI4LS8qIE1TSSBkZWZpbmVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzI5OiNkZWZpbmUgU1RNTUFDX01TSV9WRUNfTUFYXFx0MzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zNDAtLyogVHggY29hbGVzY2UgcGFyYW1ldGVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM0MTojZGVmaW5lIFNUTU1BQ19DT0FMX1RYX1RJTUVSXFx0NTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM0MjojZGVmaW5lIFNUTU1BQ19NQVhfQ09BTF9UWF9USUNLXFx0MTAwMDAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzQzOiNkZWZpbmUgU1RNTUFDX1RYX01BWF9GUkFNRVNcXHQyNTZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNDQ6I2RlZmluZSBTVE1NQUNfVFhfRlJBTUVTXFx0MjVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNDU6I2RlZmluZSBTVE1NQUNfUlhfRlJBTUVTXFx0MFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTM0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTQxNj1zdHJ1Y3QgZG1hX2ZlYXR1cmVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUzNS0vKiBEZWZhdWx0IExQSSB0aW1lcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1MzY6I2RlZmluZSBTVE1NQUNfREVGQVVMVF9MSVRfTFNcXHQweDNFOFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjUzNzojZGVmaW5lIFNUTU1BQ19ERUZBVUxUX1RXVF9MU1xcdDB4MUVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1Mzg6I2RlZmluZSBTVE1NQUNfRVRfTUFYXFx0XFx0MHhGRkZGRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTU2NT12b2lkIHN0bW1hY19heGlfYmxlbl90b19tYXNrKHUzMiAqcmVndmFsLCBjb25zdCB1MzIgKmJsZW4sIHNpemVfdCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1Njc6I2RlZmluZSBTVE1NQUNfQ0hBSU5fTU9ERVxcdDB4MVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU2ODojZGVmaW5lIFNUTU1BQ19SSU5HX01PREVcXHQweDJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NzItLyogUmVjZWl2ZSBTaWRlIFNjYWxpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1NzM6I2RlZmluZSBTVE1NQUNfUlNTX0hBU0hfS0VZX1NJWkVcXHQ0MFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU3NDojZGVmaW5lIFNUTU1BQ19SU1NfTUFYX1RBQkxFX1NJWkVcXHQyNTZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTc2LS8qIFZMQU4gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1Nzc6I2RlZmluZSBTVE1NQUNfVkxBTl9OT05FXFx0MHgwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTc4OiNkZWZpbmUgU1RNTUFDX1ZMQU5fUkVNT1ZFXFx0MHgxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTc5OiNkZWZpbmUgU1RNTUFDX1ZMQU5fSU5TRVJUXFx0MHgyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTgwOiNkZWZpbmUgU1RNTUFDX1ZMQU5fUkVQTEFDRVxcdDB4M1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzY9c3RhdGljIGludCBkd2NfZXRoX2R3bWFjX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy04OS1cXHRwbGF0X2RhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlYWFsID0gMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjkwOlxcdHBsYXRfZGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy05MS1cXHRwbGF0X2RhdC1cXHUwMDNlcG10ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MTg2PXN0YXRpYyBpbnQgdGVncmFfZXFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yMzktXFx0cGxhdF9kYXQtXFx1MDAzZWJzcF9wcml2ID0gZXFvcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI0MDpcXHRwbGF0X2RhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjQxOlxcdFxcdFxcdCAgIFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUCB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNDI6XFx0XFx0XFx0ICAgU1RNTUFDX0ZMQUdfVVNFX1BIWV9XT0w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9Njk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHdtYWNfZ2VuZXJpY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzEtXFx0LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NzI6XFx0XFx0Lm5hbWUgICAgICAgICAgID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTczLVxcdFxcdC5wbVxcdFxcdD0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zNjE9c3RhdGljIHN0cnVjdCBpbXhfZHdtYWNfb3BzIGlteDhtcF9kd21hY19kYXRhID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzY0LVxcdC5zZXRfaW50Zl9tb2RlID0gaW14OG1wX3NldF9pbnRmX21vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzY1OlxcdC5mbGFncyA9IFNUTU1BQ19GTEFHX0VFRV9ESVNBQkxFIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozNjY6XFx0XFx0IFNUTU1BQ19GTEFHX0hXVFNUQU1QX0NPUlJFQ1RfTEFURU5DWSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzY3OlxcdFxcdCBTVE1NQUNfRkxBR19LRUVQX1BSRUFNQkxFX0JFRk9SRV9TRkQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzY4LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTM1OD1zdGF0aWMgaW50IGludGVsX2Nyb3NzdHN0YW1wKGt0aW1lX3QgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzc5LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MzgwOlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VmbGFncyBcXHUwMDI2IFNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTM4MS1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MzgzOlxcdHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX0lOVF9TTkFQU0hPVF9FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTM4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDAzLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlYXV4X3RzX2xvY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDA0OlxcdFxcdHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5TVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00MDUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQyOS1cXHRcXHRcXHRcXHRcXHQgICAgICBIWiAvIDEwMCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQzMDpcXHRcXHRwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+U1RNTUFDX0ZMQUdfSU5UX1NOQVBTSE9UX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDMxLVxcdFxcdHJldHVybiAtRVRJTUVET1VUO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTY6XFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gflNUTU1BQ19GTEFHX0lOVF9TTkFQU0hPVF9FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTk2PXN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01OTgtXFx0LyogY2xrX2Nzcl9pID0gMjAtMzVNSHogXFx1MDAyNiBNREMgPSBjbGtfY3NyX2kvMTYgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU5OTpcXHRwbGF0LVxcdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MDAtXFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz02MTY9c3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MjUtXFx0cGxhdC1cXHUwMDNlcGh5X2FkZHIgPSAtMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjYyNjpcXHRwbGF0LVxcdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTYyNy1cXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNjI4LVxcdHBsYXQtXFx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjYyOTpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSAoU1RNTUFDX0ZMQUdfVFNPX0VOIHwgU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNjMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3MDg6XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVkxBTl9GQUlMX1FfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc0ODpcXHRwbGF0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+U1RNTUFDX0ZMQUdfSU5UX1NOQVBTSE9UX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03NjA9c3RhdGljIGludCBlaGxfY29tbW9uX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc2Ni1cXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlID0gODtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc2NzpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19VU0VfUEhZX1dPTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc2ODpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19IV1RTVEFNUF9DT1JSRUNUX0xBVEVOQ1k7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExNDk9c3RhdGljIGludCBzdG1tYWNfY29uZmlnX3NpbmdsZV9tc2koc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNjMtXFx0cmVzLVxcdTAwM2V3b2xfaXJxID0gcmVzLVxcdTAwM2VpcnE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTY0OlxcdHBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5TVE1NQUNfRkxBR19NVUxUSV9NU0lfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTY1LVxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogU2luZ2xlIElSUSBlbmFibGVtZW50IHN1Y2Nlc3NmdWxcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExNzE9c3RhdGljIGludCBzdG1tYWNfY29uZmlnX211bHRpX21zaShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExNzg6XFx0aWYgKHBsYXQtXFx1MDAzZW1zaV9yeF9iYXNlX3ZlYyBcXHUwMDNlPSBTVE1NQUNfTVNJX1ZFQ19NQVggfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExNzk6XFx0ICAgIHBsYXQtXFx1MDAzZW1zaV90eF9iYXNlX3ZlYyBcXHUwMDNlPSBTVE1NQUNfTVNJX1ZFQ19NQVgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExODAtXFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIiVzOiBJbnZhbGlkIFJYIFxcdTAwMjYgVFggdmVjdG9yIGRlZmluZWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTg1OlxcdHJldCA9IHBjaV9hbGxvY19pcnFfdmVjdG9ycyhwZGV2LCAyLCBTVE1NQUNfTVNJX1ZFQ19NQVgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTg2LVxcdFxcdFxcdFxcdCAgICBQQ0lfSVJRX01TSSB8IFBDSV9JUlFfTVNJWCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjA1OlxcdGlmIChwbGF0LVxcdTAwM2Vtc2lfbWFjX3ZlYyBcXHUwMDNjIFNUTU1BQ19NU0lfVkVDX01BWClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMDYtXFx0XFx0cmVzLVxcdTAwM2VpcnEgPSBwY2lfaXJxX3ZlY3RvcihwZGV2LCBwbGF0LVxcdTAwM2Vtc2lfbWFjX3ZlYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjA3OlxcdGlmIChwbGF0LVxcdTAwM2Vtc2lfd29sX3ZlYyBcXHUwMDNjIFNUTU1BQ19NU0lfVkVDX01BWClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMDgtXFx0XFx0cmVzLVxcdTAwM2V3b2xfaXJxID0gcGNpX2lycV92ZWN0b3IocGRldiwgcGxhdC1cXHUwMDNlbXNpX3dvbF92ZWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIwOTpcXHRpZiAocGxhdC1cXHUwMDNlbXNpX3NmdHlfY2VfdmVjIFxcdTAwM2MgU1RNTUFDX01TSV9WRUNfTUFYKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIxMC1cXHRcXHRyZXMtXFx1MDAzZXNmdHlfY2VfaXJxID0gcGNpX2lycV92ZWN0b3IocGRldiwgcGxhdC1cXHUwMDNlbXNpX3NmdHlfY2VfdmVjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyMTE6XFx0aWYgKHBsYXQtXFx1MDAzZW1zaV9zZnR5X3VlX3ZlYyBcXHUwMDNjIFNUTU1BQ19NU0lfVkVDX01BWClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMTItXFx0XFx0cmVzLVxcdTAwM2VzZnR5X3VlX2lycSA9IHBjaV9pcnFfdmVjdG9yKHBkZXYsIHBsYXQtXFx1MDAzZW1zaV9zZnR5X3VlX3ZlYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIxNDpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjE1LVxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogbXVsdGkgTVNJIGVuYWJsZW1lbnQgc3VjY2Vzc2Z1bFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTMxNC1cXHQgKiBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gZGF0YSBzZXR0aW5ncyBiZWxvdy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzMTU6XFx0ICogTm90ZTogTVNJIHZlY3RvciB0YWtlcyB2YWx1ZSBmcm9tIDAgdXB0byAzMSAoU1RNTUFDX01TSV9WRUNfTUFYKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTMxNi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzMTc6XFx0cGxhdC1cXHUwMDNlbXNpX21hY192ZWMgPSBTVE1NQUNfTVNJX1ZFQ19NQVg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzE4OlxcdHBsYXQtXFx1MDAzZW1zaV93b2xfdmVjID0gU1RNTUFDX01TSV9WRUNfTUFYO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTMxOTpcXHRwbGF0LVxcdTAwM2Vtc2lfc2Z0eV9jZV92ZWMgPSBTVE1NQUNfTVNJX1ZFQ19NQVg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzIwOlxcdHBsYXQtXFx1MDAzZW1zaV9zZnR5X3VlX3ZlYyA9IFNUTU1BQ19NU0lfVkVDX01BWDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzMjE6XFx0cGxhdC1cXHUwMDNlbXNpX3J4X2Jhc2VfdmVjID0gU1RNTUFDX01TSV9WRUNfTUFYO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTMyMjpcXHRwbGF0LVxcdTAwM2Vtc2lfdHhfYmFzZV92ZWMgPSBTVE1NQUNfTVNJX1ZFQ19NQVg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz04Nj1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTk0LVxcdC8qIGNsa19jc3JfaSA9IDEwMC0xNTBNSHogXFx1MDAyNiBNREMgPSBjbGtfY3NyX2kvNjIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjk1OlxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzEwMF8xNTBNO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtOTYtXFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0zNzc9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19tc2lfY29uZmlnKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00MDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo0MDI6XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDAzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYz01NTY9c3RhdGljIGludCBtZWRpYXRla19kd21hY19jb21tb25fZGF0YShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy01NjMtXFx0aWYgKHByaXZfcGxhdC1cXHUwMDNlbWFjX3dvbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjU2NDpcXHRcXHRwbGF0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+U1RNTUFDX0ZMQUdfVVNFX1BIWV9XT0w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy01NjUtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NTY2OlxcdFxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1VTRV9QSFlfV09MO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNTY3LVxcdHBsYXQtXFx1MDAzZXJpd3Rfb2ZmID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTIwOD1tb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDMtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ0OlxcdHBsYXQtXFx1MDAzZWNsa19jc3JcXHRcXHQ9IFNUTU1BQ19DU1JfMjBfMzVNO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI0NS1cXHRwbGF0LVxcdTAwM2V0eF9jb2VcXHRcXHQ9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNTAtXFx0cGxhdC1cXHUwMDNlcmVzdW1lXFx0XFx0PSBtb3RvcmNvbW1fcmVzdW1lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI1MTpcXHRwbGF0LVxcdTAwM2VmbGFnc1xcdFxcdD0gU1RNTUFDX0ZMQUdfVFNPX0VOIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNTI6XFx0XFx0XFx0XFx0ICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjUzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjY0PXN0YXRpYyBpbnQgbW90b3Jjb21tX3NldHVwX2lycShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNzY6XFx0XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI3Ny1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz02ODQ9c3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03NzEtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3NzI6XFx0cGxhdF9kYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzYwXzEwME07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03NzMtXFx0cGxhdF9kYXQtXFx1MDAzZWJzcF9wcml2ID0gZXRocW9zO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03ODEtXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgXFxcInNucHMsdHNvXFxcIikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3ODI6XFx0XFx0cGxhdF9kYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTc4My1cXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFxcXCJxY29tLHFjczQwNC1ldGhxb3NcXFwiKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jOjc4NDpcXHRcXHRwbGF0X2RhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfUlhfQ0xLX1JVTlNfSU5fTFBJO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzg1LVxcdGlmIChkYXRhLVxcdTAwM2VkbWFfYWRkcl93aWR0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTg4LVxcdHBsYXRfZGF0LVxcdTAwM2VleGl0ID0gcmVuZXNhc19nYmV0aF9leGl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxODk6XFx0cGxhdF9kYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUCB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE5MC1cXHRcXHRcXHQgICBnYmV0aC1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlc3RtbWFjX2ZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJlbmVzYXNfZ2JldGhfb2ZfZGF0YSByZW5lc2FzX2diZXRoX29mX2RhdGEgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjA0LVxcdC5zZXRfY2xrX3R4X3JhdGUgPSB0cnVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMDU6XFx0LnN0bW1hY19mbGFncyA9IFNUTU1BQ19GTEFHX0hXVFNUQU1QX0NPUlJFQ1RfTEFURU5DWSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIwNjpcXHRcXHRcXHRTVE1NQUNfRkxBR19TUEhfRElTQUJMRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjA3LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9MjA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVuZXNhc19nYmV0aF9vZl9kYXRhIHJlbmVzYXNfZ21hY19vZl9kYXRhID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIxMS1cXHQubnVtX2Nsa3MgPSBBUlJBWV9TSVpFKHJlbmVzYXNfZ21hY19jbGtzKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MjEyOlxcdC5zdG1tYWNfZmxhZ3MgPSBTVE1NQUNfRkxBR19IV1RTVEFNUF9DT1JSRUNUX0xBVEVOQ1ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIxMy1cXHQuaGFzX3BjcyA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xMTM9c3RhdGljIHZvaWQgczMyX2dtYWNfc2V0dXBfbXVsdGlfaXJxKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTEzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoxMzU6XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTEzNi1cXHRkZXZfaW5mbyhkZXYsIFxcXCJNdWx0aS1JUlEgbW9kZSAocGVyIHF1ZXVlIElSUXMpIHNlbGVjdGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTEzOS1tYWNfaXJxX21vZGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM6MTQwOlxcdHBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5TVE1NQUNfRkxBR19NVUxUSV9NU0lfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTQxLVxcdGRldl9pbmZvKGRldiwgXFxcIk1BQyBJUlEgbW9kZSBzZWxlY3RlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xNDQ9c3RhdGljIGludCBzMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTE5Ny1cXHRwbGF0LVxcdTAwM2VwbXQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjE5ODpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TUEhfRElTQUJMRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xOTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9Mjk0PXN0YXRpYyBpbnQgc210Z19jcm9zc3RzdGFtcChrdGltZV90ICpkZXZpY2UsIHN0cnVjdCBzeXN0ZW1fY291bnRlcnZhbF90ICpzeXN0ZW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtMzA5LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzozMTA6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU1RNTUFDX0ZMQUdfRVhUX1NOQVBTSE9UX0VOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy0zMTEtXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz01Njk9c3RhdGljIHZvaWQgc29jZnBnYV9hZ2lsZXg1X3NldHVwX3BsYXRfZGF0KHN0cnVjdCBzb2NmcGdhX2R3bWFjICpkd21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzUtXFx0LyogRW5hYmxlIFRTTyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1NzY6XFx0cGxhdF9kYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTc3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MTk9c3RhdGljIGludCBzb3BoZ29fc2cyMDQ0X2R3bWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjI4OlxcdHBsYXRfZGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TUEhfRElTQUJMRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy0yOS1cXHRwbGF0X2RhdC1cXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9OTA9c3RhdGljIGludCBzdGFyZml2ZV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNTA6XFx0cGxhdF9kYXQtXFx1MDAzZWZsYWdzIHw9IChTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVAgfCBTVE1NQUNfRkxBR19TUEhfRElTQUJMRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTEtXFx0cGxhdF9kYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZWRjaGUgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01NTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1NjA6XFx0cGxhdF9kYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU2MS1cXHRwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYgPSBkd21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jPTEwNT1zdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMjEtXFx0LyogQlNQIGRpc2FibGVzIGl0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM6MTIyOlxcdHBsYXRfZGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TUEhfRElTQUJMRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMjMtXFx0cGxhdF9kYXQtXFx1MDAzZWhvc3RfZG1hX3dpZHRoID0gMzI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTExMDU9c3RhdGljIGludCBzdW44aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTgwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTE4MTpcXHRwbGF0X2RhdC1cXHUwMDNlcnhfY29lID0gU1RNTUFDX1JYX0NPRV9UWVBFMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExODItXFx0cGxhdF9kYXQtXFx1MDAzZXR4X2NvZSA9IHRydWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTgzOlxcdHBsYXRfZGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19IQVNfU1VOOEk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTg0LVxcdHBsYXRfZGF0LVxcdTAwM2Vic3BfcHJpdiA9IGdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI2LVxcdHBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozMjc6XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI4LVxcdHBsYXQtXFx1MDAzZXBtdCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjM3NDpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TRVJERVNfVVBfQUZURVJfUEhZX0xJTktVUDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9NDA9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2NvcmVfaW5pdChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo2MDojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTYxLVxcdC8qIFRhZyBkZXRlY3Rpb24gd2l0aG91dCBmaWx0ZXJpbmcgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9MTI0PXN0YXRpYyB2b2lkIGR3bWFjMTAwMF9zZXRfbWNoYXNoKHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgKm1jZmlsdGVyYml0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtMTQwLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzoxNDE6XFx0XFx0cHJfZGVidWcoXFxcIlNUTU1BQzogZXJyIGluIHNldHRpbmcgbXVsdGljYXN0IGZpbHRlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy0xNDItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYz0zMTg9c3RhdGljIGludCBkd21hYzEwMDBfc2V0X2xwaV9tb2RlKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy0zMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzozMjU6XFx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9USU1FUilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTMyNi1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTMyOC1cXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIExQSV9DVFJMX1NUQVRVUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzozMjk6XFx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9GT1JDRUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy0zMzAtXFx0XFx0dmFsdWUgfD0gTFBJX0NUUkxfU1RBVFVTX0xQSUVOIHwgTFBJX0NUUkxfU1RBVFVTX0xQSVRYQTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9NTIzPXZvaWQgZHdtYWMxMDAwX3RpbWVzdGFtcF9pbnRlcnJ1cHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy01MzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo1MzQ6XFx0aWYgKCEocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBTVE1NQUNfRkxBR19FWFRfU05BUFNIT1RfRU4pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTM1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9NTY3PWludCBkd21hYzEwMDBfcHRwX2VuYWJsZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTgzLVxcdFxcdFxcdHRjcl92YWwgfD0gR01BQ19QVFBfVENSX0FUU0ZDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM6NTg0OlxcdFxcdFxcdHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTU4NS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTg2LVxcdFxcdFxcdHRjcl92YWwgXFx1MDAyNj0gfkdNQUNfUFRQX1RDUl9BVFNFTjA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo1ODc6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gflNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTU4OC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmM9MjI9c3RhdGljIHZvaWQgZHdtYWMxMDBfY29yZV9pbml0KHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfY29yZS5jLTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2NvcmUuYzozMjojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzMtXFx0d3JpdGVsKEVUSF9QXzgwMjFRLCBpb2FkZHIgKyBNQUNfVkxBTjEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYz0zODY9c3RhdGljIGludCBkd21hYzRfc2V0X2xwaV9tb2RlKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy0zOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzozOTM6XFx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9ESVNBQkxFKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy0zOTQtXFx0XFx0dmFsdWUgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy0zOTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzozOTg6XFx0XFx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9USU1FUikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMzk5LVxcdFxcdFxcdC8qIFJldHVybiBFUkFOR0UgaWYgdGhlIHRpbWVyIGlzIGxhcmdlciB0aGFuIHRoZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy00MDEtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzo0MDI6XFx0XFx0XFx0aWYgKGV0IFxcdTAwM2UgU1RNTUFDX0VUX01BWClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTQwMy1cXHRcXHRcXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9saWIuYz0xOTk9dm9pZCBzdG1tYWNfZHdtYWM0X3NldF9tYWNfYWRkcih2b2lkIF9faW9tZW0gKmlvYWRkciwgY29uc3QgdTggYWRkcls2XSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9saWIuYy0yMDgtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jOjIwOTpcXHRkYXRhIHw9IEZJRUxEX1BSRVAoR01BQ19ISV9EQ1MsIFNUTU1BQ19DSEFOMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jLTIxMC1cXHR3cml0ZWwoZGF0YSB8IEdNQUNfSElfUkVHX0FFLCBpb2FkZHIgKyBoaWdoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjc6I2lmbmRlZiBfX1NUTU1BQ19EV1hHTUFDMl9IX19cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjg6I2RlZmluZSBfX1NUTU1BQ19EV1hHTUFDMl9IX19cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oPTQ2OD1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19kZXNjX29wcyBkd3hnbWFjMjEwX2Rlc2Nfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtNDY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDcwOiNlbmRpZiAvKiBfX1NUTU1BQ19EV1hHTUFDMl9IX18gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz00Mjg9c3RhdGljIGludCBkd3hnbWFjMl9zZXRfbHBpX21vZGUoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtNDM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzo0MzU6XFx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9USU1FUilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtNDM2LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy00MzgtXFx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19MUElfQ1RSTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jOjQzOTpcXHRpZiAobW9kZSA9PSBTVE1NQUNfTFBJX0ZPUkNFRCkge1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OToyNS42MDIzODIwMDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MTE0MDY5NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgYHN0bW1hY2AgRHJpdmVyIEFjY2Vzc2liaWxpdHkgaW4gRnV6emluZyBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgc3RtbWFjYCDigJMgdGhhdCdzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIsIGFuZCBhbHNvIHJlbGF0ZXMgdG8gdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDLCBvciBEV01BQy4gVGhlIHF1ZXN0aW9uIGlzOiBjYW4gSSByZWFjaCB0aGlzIGluIGEgZnV6emluZyBlbnZpcm9ubWVudD8gQ2FuIEkgZ2V0IGF0IGl0IHRocm91Z2ggUUVNVSBvciBhIGNvbXBhcmFibGUgc2V0dXA/XG5cbkkgbmVlZCB0byBjb25maXJtIGlmIGl0J3MgZW11bGF0ZWQgb3IgYWNjZXNzaWJsZS4gSXMgdGhlcmUgYSBwbGF0Zm9ybSBkZXZpY2Ugb3IgUENJIGRldmljZSB0aGF0IGVtdWxhdGVzIGl0PyBJcyB0aGVyZSBhbiBlYXN5IHdheSB0byBnZXQgYXQgdGhlIHN0bW1hYyBkZXZpY2UgdGhyb3VnaCBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIGFtZDY0IGZ1enppbmc/IEkgbmVlZCB0byBjaGVjayB0aGUgUUVNVSBzdXBwb3J0LiBPciBpcyBpdCBqdXN0IGEgc3RyaWN0bHkgcGh5c2ljYWwgRXRoZXJuZXQgTklDIGRyaXZlcj9cblxuQWgsIHJpZ2h0LCB0aGlzIGlzIHdoYXQgSSdtIGxvb2tpbmcgZm9yLiBTZWN0aW9uIDIgc2F5cyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VXCIuIFRoaXMgbWVhbnMgbXkgdGFyZ2V0IGlzbid0IGdvaW5nIHRvIGJlIGVhc3khXG5cblNvLCB3aGF0IEV0aGVybmV0IGRyaXZlcnMgKmFyZSogZW11bGF0ZWQgaW4gUUVNVT8gTGV0J3MgcmVmcmVzaCBteSBtZW1vcnkuIEluIHN0YW5kYXJkIFFFTVUgeDg2XzY0IC8gYW1kNjQgLyBHQ0UsIHdlIGhhdmU6IGUxMDAwLCBlMTAwMGUsIGlnYiwgcnRsODEzOSwgODEzOWNwLCB2aXJ0aW8tbmV0LCBwY25ldCwgbmUya19wY2ksIHN1bmdlbSwgdHVsaXAgLyBkZWMyMTE0MCwgcm9ja2VyLCB2bXhuZXQzLCB1c2ItbmV0IC8gY2RjX2V0aGVyIC8gcm5kaXMsIHZtd2FyZSB2bXhuZXQzLCBhbmQgaW50ZWwgODI1NXggKGUxMDApLlxuXG5BbHJpZ2h0LCB3aGF0IGFib3V0IGBzdG1tYWNgPyBJdCdzIERXTUFDLCBvciBHTUFDLCBvciBYR01BQywgdXNlZCBvbiBBUk0vQVJNNjQgU29DcywgbGlrZSBBbGx3aW5uZXIsIFJvY2tjaGlwLCBBbWxvZ2ljLCBTVE0zMiwgTlhQIGkuTVgsIFRlZ3JhLCBJbnRlbCBFbGtoYXJ0IExha2UgLyBUaWdlciBMYWtlIC8gQWxkZXIgTGFrZSBQQ0ggaW50ZWdyYXRlZCBNQUMsIExvb25nc29uLiBTbywgbm8gbHVjayBoZXJlLlxuXG4qKk5vLioqIERvZXMgc3RhbmRhcmQgUUVNVSB4ODZfNjQgLyBhbWQ2NCAqZW11bGF0ZSogYW55IGBzdG1tYWNgIGRldmljZT8gSXQgc2VlbXMgbm8uIEkgbWlnaHQgZ2V0IGEgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBvciBzb21lIEFSTS1zcGVjaWZpYyBtYWNoaW5lcyBsaWtlIGBvcmFuZ2VwaS1wY2AsIGJ1dCBvbiB4ODZfNjQgLyBhbWQ2NCDigJMgdGhlIGFyY2hpdGVjdHVyZSBJJ20gZm9jdXNlZCBvbiDigJMgYHN0bW1hY2AgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUgbGlrZSB0aGUgSW50ZWwgVGlnZXIgTGFrZSAvIEVsa2hhcnQgTGFrZSBQQ0kgRFdNQUMgb3IgTG9vbmdzb24gUENJIERXTUFDIG9yIE1vdG9yY29tbSBQQ0kgRFdNQUMsIG9yIEFSTSBTb0MgcGxhdGZvcm0gZGV2aWNlcy5cblxuU28sIHRoZSBsYXN0IGNoZWNrLiBJcyB0aGVyZSBhbnkgdmlydHVhbCBidXMgb3IgZW11bGF0b3Igb3IgZHVtbXkgZGV2aWNlIHRoYXQgdXNlcyBgc3RtbWFjYD8gTGV0J3MgaW52ZXN0aWdhdGU6IGNhbiBgc3RtbWFjYCBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBhIHBsYXRmb3JtIGRldmljZSwgbmV0bGluaywgc3lzZnMsIG9yIGFueXRoaW5nLCBvciBpcyBpdCBzdHJpY3RseSBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcj8gSSBzdXNwZWN0IHRoZSBsYXR0ZXIsIGJ1dCBJIG5lZWQgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0ODAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDg6NDk6MzQuNzE2NDU0MzcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTM0MjkzODYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RldmljZV9yZWdpc3Rlci4qc3RtbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OTozNi4xMDk4OTUzNzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTE4NDQ5NzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlYnVnZ2luZyBOZXR3b3JrIERyaXZlciBDb21wYXRpYmlsaXR5KipcblxuT2theSwgc28gSSdtIGhpdHRpbmcgYSB3YWxsIHdpdGggdGhpcyBFdGhlcm5ldCBpc3N1ZS4gVGltZSB0byBkaWcgaW50byB0aGUgZHJpdmVyIGNvZGUuIEdpdmVuIHRoZSBhcmNoaXRlY3R1cmUgSSdtIGxvb2tpbmcgYXQsIHRoZSBtb3N0IGxpa2VseSBjdWxwcml0cyBhcmUgdGhlIGNvcmUgU1RNTUFDIGRyaXZlciwgdGhlIHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGNvZGUsIG9yIHRoZSBJbnRlbC1zcGVjaWZpYyBEV21hYyBpbXBsZW1lbnRhdGlvbiBpZiBpdCdzIGJhc2VkIG9uIHRoYXQuIEknbSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgYHN0bW1hY19wY2kuY2AsIHRoYXQgaGFuZGxlcyBQQ0kgYnVzIGluaXRpYWxpemF0aW9uLiBJZiB0aGF0IGRvZXNuJ3QgeWllbGQgYW55dGhpbmcgaW1tZWRpYXRlbHksIEknbGwgYnJhbmNoIG91dCB0byBgc3RtbWFjLXBsYXRmb3JtLmNgLCBzaW5jZSB0aGF0IHdpbGwgaGFuZGxlIHRoZSBiYXNlIGxheWVyIHBsYXRmb3JtIHNldHVwLiBPZiBjb3Vyc2UgSSBzaG91bGQgaW52ZXN0aWdhdGUgYGR3bWFjLWludGVsLmNgIGlmIHRoaXMgYSBJbnRlbC1iYXNlZCBEV21hYyBjb25maWd1cmF0aW9uLiBJJ2xsIGZvY3VzIG9uIHRoZSBidXMgaW50ZXJhY3Rpb24sIHRoZSBkZXZpY2UgcHJvYmluZywgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMg4oCTIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBhbnkgb2J2aW91cyBoYXJkd2FyZSBkaWZmZXJlbmNlcyBvciB1bmV4cGVjdGVkIHJlZ2lzdGVyIHNldHRpbmdzIHRoYXQgbWlnaHQgYmUgdGhlIHNvdXJjZSBvZiB0aGUgdHJvdWJsZS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVzZSBmaWxlcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTg1NSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjM4LjYyODM0OTIzM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogOTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgIDM6XFx0ICBUaGlzIGNvbnRhaW5zIHRoZSBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZSBwY2kgZHJpdmVyLlxcbiAgIDQ6XFx0XFxuICAgNTpcXHQgIENvcHlyaWdodCAoQykgMjAxMS0yMDEyICBWYXlhdnlhIExhYnMgUHZ0IEx0ZFxcbiAgIDY6XFx0XFxuICAgNzpcXHRcXG4gICA4OlxcdCAgQXV0aG9yOiBSYXlhZ29uZCBLb2thdGFudXIgXFx1MDAzY3JheWFnb25kQHZheWF2eWFsYWJzLmNvbVxcdTAwM2VcXG4gICA5OlxcdCAgQXV0aG9yOiBHaXVzZXBwZSBDYXZhbGxhcm8gXFx1MDAzY3BlcHBlLmNhdmFsbGFyb0BzdC5jb21cXHUwMDNlXFxuICAxMDpcXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiAgMTE6XFx0XFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1pLmhcXHUwMDNlXFxuICAxNTpcXHRcXG4gIDE2OlxcdCNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4gIDE3OlxcdCNpbmNsdWRlIFxcXCJzdG1tYWNfbGlicGNpLmhcXFwiXFxuICAxODpcXHRcXG4gIDE5OlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbiAgMjA6XFx0XFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbiAgMjE6XFx0fTtcXG4gIDIyOlxcdFxcbiAgMjM6XFx0c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuICAyNDpcXHR7XFxuICAyNTpcXHRcXHQvKiBjbGtfY3NyX2kgPSAyMC0zNU1IeiBcXHUwMDI2IE1EQyA9IGNsa19jc3JfaS8xNiAqL1xcbiAgMjY6XFx0XFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjBfMzVNO1xcbiAgMjc6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbiAgMjg6XFx0XFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VuZWVkc19yZXNldCA9IHRydWU7XFxuICAzMTpcXHR9XFxuICAzMjpcXHRcXG4gIDMzOlxcdHN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gIDM0OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuICAzNTpcXHR7XFxuICAzNjpcXHRcXHQvKiBTZXQgY29tbW9uIGRlZmF1bHQgZGF0YSBmaXJzdCAqL1xcbiAgMzc6XFx0XFx0Y29tbW9uX2RlZmF1bHRfZGF0YShwbGF0KTtcXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0cGxhdC1cXHUwMDNlYnVzX2lkID0gMTtcXG4gIDQwOlxcdFxcdHBsYXQtXFx1MDAzZXBoeV9hZGRyID0gMDtcXG4gIDQxOlxcdFxcdHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJsID0gMzI7XFxuICA0NDpcXHRcXHRwbGF0LVxcdTAwM2VkbWFfY2ZnLVxcdTAwM2VwYmx4OCA9IHRydWU7XFxuICA0NTpcXHRcXHQvKiBUT0RPOiBBWEkgKi9cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0XFx0cmV0dXJuIDA7XFxuICA0ODpcXHR9XFxuICA0OTpcXHRcXG4gIDUwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcXG4gIDUxOlxcdFxcdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXFxuICA1MjpcXHR9O1xcbiAgNTM6XFx0XFxuICA1NDpcXHRzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAgNTU6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbiAgNTY6XFx0e1xcbiAgNTc6XFx0XFx0aW50IGk7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzI1MF8zMDBNO1xcbiAgNjA6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG4gIDYxOlxcdFxcdHBsYXQtXFx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcXG4gIDYyOlxcdFxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG4gIDYzOlxcdFxcdHBsYXQtXFx1MDAzZXBtdCA9IHRydWU7XFxuICA2NDpcXHRcXG4gIDY1OlxcdFxcdC8qIFNldCBkZWZhdWx0IG51bWJlciBvZiBSWCBhbmQgVFggcXVldWVzIHRvIHVzZSAqL1xcbiAgNjY6XFx0XFx0cGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDQ7XFxuICA2NzpcXHRcXHRwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlID0gNDtcXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0cGxhdC1cXHUwMDNldHhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1RYX0FMR09SSVRITV9XUlI7XFxuICA3MDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XFxuICA3MTpcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcXG4gIDcyOlxcdFxcdFxcdHBsYXQtXFx1MDAzZXR4X3F1ZXVlc19jZmdbaV0ud2VpZ2h0ID0gMjU7XFxuICA3MzpcXHRcXHRcXHRpZiAoaSBcXHUwMDNlIDApXFxuICA3NDpcXHRcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLnRic19lbiA9IDE7XFxuICA3NTpcXHRcXHR9XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdHBsYXQtXFx1MDAzZXJ4X3NjaGVkX2FsZ29yaXRobSA9IE1UTF9SWF9BTEdPUklUSE1fU1A7XFxuICA3ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSsrKVxcbiAgNzk6XFx0XFx0XFx0cGxhdC1cXHUwMDNlcnhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdHBsYXQtXFx1MDAzZWJ1c19pZCA9IDE7XFxuICA4MjpcXHRcXHRwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XFxuICA4MzpcXHRcXG4gIDg0OlxcdFxcdHBsYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZXBibCA9IDMyO1xcbiAgODU6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJseDggPSB0cnVlO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHQvKiBBeGkgQ29uZmlndXJhdGlvbiAqL1xcbiAgODg6XFx0XFx0cGxhdC1cXHUwMDNlYXhpID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqcGxhdC1cXHUwMDNlYXhpKSwgR0ZQX0tFUk5FTCk7XFxuICA4OTpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZWF4aSlcXG4gIDkwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OTozOC42Mjg1MTU1OTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTU1MzcxNjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0aGUgYHN0bW1hY2AgZHJpdmVyIGdldHMgaW5pdGlhbGl6ZWQuIEkga25vdyBpdCdzIHJlZ2lzdGVyZWQgd2l0aCBlaXRoZXIgYHBjaV9yZWdpc3Rlcl9kcml2ZXJgIG9yIGBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXJgLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQuIFRoZSBrZXkgaXMgaW4gaG93IGl0J3MgbWF0Y2hlZCB0byB0aGUgaGFyZHdhcmUg4oCTIHdoZXRoZXIgdGhhdCdzIHRocm91Z2ggUENJIHZlbmRvciBhbmQgZGV2aWNlIElEcyB3aGVuIHdlJ3JlIHRhbGtpbmcgUENJLWJhc2VkIGhhcmR3YXJlLCBvciB1c2luZyBkZXZpY2UgdHJlZSBub2RlcyBmb3IgcGxhdGZvcm0gZGV2aWNlcy5cblxuSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIG1hdGNoaW5nIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBQQ0kgSUQgdGFibGUgaW4gYHN0bW1hY19wY2kuY2AgYW5kIGFsc28gdGFrZSBhIGxvb2sgYXQgYGR3bWFjLWludGVsLmNgLiBUaGF0IHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGtub3dzIHdoZW4gaXQncyB0YWxraW5nIHRvIHRoZSByaWdodCBwaWVjZSBvZiBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGluIHRob3NlIHRhYmxlcy4gQXJlIHdlIHJlbHlpbmcgb24gdmVyeSBzcGVjaWZpYyBJRHMsIG9yIGFyZSB0aGVyZSBhbnkgd2lsZGNhcmQgZW50cmllcyBvciBtb3JlIGZsZXhpYmxlIG1hdGNoaW5nIG1lY2hhbmlzbXMgaW4gcGxhY2U/IEkgbmVlZCB0byBsb29rIGNsb3NlciBhdCB3aGF0IHRob3NlIHRhYmxlcyBjb250YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU3MSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDg6NDk6NDEuNTgzODkxMjk3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQ1OlxcdFxcdGlmIChyZXQpIHtcXG4gMTQ2OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIiVzOiBFUlJPUjogZmFpbGVkIHRvIGVuYWJsZSBkZXZpY2VcXFxcblxcXCIsXFxuIDE0NzpcXHRcXHRcXHRcXHRfX2Z1bmNfXyk7XFxuIDE0ODpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxNDk6XFx0XFx0fVxcbiAxNTA6XFx0XFxuIDE1MTpcXHRcXHQvKiBHZXQgdGhlIGJhc2UgYWRkcmVzcyBvZiBkZXZpY2UgKi9cXG4gMTUyOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBQQ0lfU1REX05VTV9CQVJTOyBpKyspIHtcXG4gMTUzOlxcdFxcdFxcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIGkpID09IDApXFxuIDE1NDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMTU1OlxcdFxcdFxcdHJlcy5hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgaSwgU1RNTUFDX1JFU09VUkNFX05BTUUpO1xcbiAxNTY6XFx0XFx0XFx0aWYgKElTX0VSUihyZXMuYWRkcikpXFxuIDE1NzpcXHRcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihyZXMuYWRkcik7XFxuIDE1ODpcXHRcXHRcXHRicmVhaztcXG4gMTU5OlxcdFxcdH1cXG4gMTYwOlxcdFxcbiAxNjE6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuIDE2MjpcXHRcXG4gMTYzOlxcdFxcdHJldCA9IGluZm8tXFx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xcbiAxNjQ6XFx0XFx0aWYgKHJldClcXG4gMTY1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDE2NjpcXHRcXG4gMTY3OlxcdFxcdHJlcy53b2xfaXJxID0gcGRldi1cXHUwMDNlaXJxO1xcbiAxNjg6XFx0XFx0cmVzLmlycSA9IHBkZXYtXFx1MDAzZWlycTtcXG4gMTY5OlxcdFxcbiAxNzA6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2V0c29lZSA9IDE7XFxuIDE3MTpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZW1yeHBlZSA9IDE7XFxuIDE3MjpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZW1lc3RlZSA9IDE7XFxuIDE3MzpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZW1yeGVlID0gMTtcXG4gMTc0OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbXR4ZWUgPSAxO1xcbiAxNzU6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VlcHNpID0gMTtcXG4gMTc2OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlZWRwcCA9IDE7XFxuIDE3NzpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZXBydHllbiA9IDE7XFxuIDE3ODpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZXRtb3V0ZW4gPSAxO1xcbiAxNzk6XFx0XFxuIDE4MDpcXHRcXHRwbGF0LVxcdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuIDE4MTpcXHRcXHRwbGF0LVxcdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xcbiAxODI6XFx0XFxuIDE4MzpcXHRcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG4gMTg0OlxcdH1cXG4gMTg1OlxcdFxcbiAxODY6XFx0LyoqXFxuIDE4NzpcXHQgKiBzdG1tYWNfcGNpX3JlbW92ZVxcbiAxODg6XFx0ICpcXG4gMTg5OlxcdCAqIEBwZGV2OiBwbGF0Zm9ybSBkZXZpY2UgcG9pbnRlclxcbiAxOTA6XFx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cXG4gMTkxOlxcdCAqL1xcbiAxOTI6XFx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIDE5MzpcXHR7XFxuIDE5NDpcXHRcXHRzdG1tYWNfZHZyX3JlbW92ZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gMTk1OlxcdH1cXG4gMTk2OlxcdFxcbiAxOTc6XFx0Lyogc3ludGhldGljIElELCBubyBvZmZpY2lhbCB2ZW5kb3IgKi9cXG4gMTk4OlxcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcXHRcXHQweDA3MDBcXG4gMTk5OlxcdFxcbiAyMDA6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcXHRcXHQweDExMDhcXG4gMjAxOlxcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFxcdFxcdDB4NzEwMlxcbiAyMDI6XFx0XFxuIDIwMzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuIDIwNDpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDg6NDk6NDEuNTg0MDQxNjU3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExNzczNTAzNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFNUTU1BQyBhbmQgUUVNVSBFbXVsYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBzdGFydCBieSBjb25zaWRlcmluZyBgUENJX0RFVklDRV9JRF9TVE1NQUNfU1RNTUFDYCBhbmQgcmVsYXRlZCBQQ0kgZHJpdmVycy4gQmVmb3JlIGRpdmluZyBkZWVwLCBJJ2xsIHF1aWNrbHkgcmVmZXIgdG8gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeS4gVGhpcyBpcyBpbXBvcnRhbnQ6IGFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHZlbmRvci1zcGVjaWZpYyB0aGF0IG5lZWRzIGEgcGh5c2ljYWwgY2FyZCwgbGlrZSBzb21lIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnM/ICBUaGUgZXhhbXBsZXMgbGlzdGVkIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgYXJlIGdvb2QgcmVmZXJlbmNlIHBvaW50cy5cblxuVGhlIGNvcmUgcXVlc3Rpb24gbm93IGlzOiBkb2VzIGBzdG1tYWNgIG9yIGBEV01BQ2AgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBvciBhbiBBU0lDIG5vdCBzaW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50P1xuXG5JIGtub3cgYHN0bW1hY2AgaXMgdGhlIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKERXTUFDLCBHTUFDLCBYR01BQykgYW5kIGFsc28gc3VwcG9ydHMgU1RNaWNybyBTVE0zMiBhbmQgU1RpIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBOb3csIHRoZSBrZXkgaXMgd2hldGhlciB0aGlzIGhhcmR3YXJlIGlzICpwcmVzZW50KiBvciAqZW11bGF0ZWQqIGluIGEgc3RhbmRhcmQgUUVNVSBhbWQ2NCBzZXR1cC5cblxuSW1tZWRpYXRlbHksIHRoZSBhbnN3ZXIgaXMgKm5vKi4gU3RhbmRhcmQgUUVNVSBmb3IgYW1kNjQgZG9lc24ndCBlbXVsYXRlIHRoZSBTeW5vcHN5cyBEV01BQyBvciBTVE1pY3JvIE1BQy4gSSBrbm93IHRoYXQgdGhlIHN0YW5kYXJkIG5ldHdvcmsgZGV2aWNlcyBlbXVsYXRlZCBpbiBRRU1VIGZvciB4ODZfNjQgYXJlIHRoaW5ncyBsaWtlIGBlMTAwMGAsIGBwY25ldGAsIGB2aXJ0aW8tbmV0LXBjaWAsIGV0Yy4gSSdsbCBtYWtlIGEgcXVpY2sgbGlzdCB0byBqb2cgbXkgbWVtb3J5OiBgZTEwMDAsIGUxMDAwLTgyNTQ0Z2MsIGUxMDAwLTgyNTQ1ZW0sIGUxMDAwZSwgaWdiLCBpODI1NTAsIGk4MjU1MSwgaTgyNTU3YSwgaTgyNTU3YiwgaTgyNTU3YywgaTgyNTU4YSwgaTgyNTU4YiwgaTgyNTU5YSwgaTgyNTU5YiwgaTgyNTU5YywgaTgyNTU5ZXIsIGk4MjU2MiwgbmUya19wY2ksIHBjbmV0LCBydGw4MTM5LCB0dWxpcCwgdm14bmV0MywgdmlydGlvLW5ldC1wY2ksIHJvY2tlcmAuXG5cblNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogaXMgYHN0bW1hY2Agb3IgYGR3bWFjYCBlbXVsYXRlZCBpbiAqYW55KiBRRU1VIGZvciB4ODZfNjQ/IE5vLiBRRU1VIGhhbmRsZXMgbmV0d29yayBkaWZmZXJlbnRseSBmb3IgQVJNLCBzdWNoIGFzICBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIGZvciBBUk0gYG9yYW5nZXBpLXBjYCBhbmQgYGlteF9mZWNgIGZvciBBUk0gaS5NWCwgYW5kIG1heWJlIGBjYWRlbmNlX2dlbWAgZm9yIFhpbGlueCBaeW5xIEFSTS4gTm9uZSBvZiB0aG9zZSBhcmUgYHN0bW1hY2AsIGFuZCBjcml0aWNhbGx5LCBub25lIGFyZSBpbiB0aGUgc3RhbmRhcmQgYW1kNjQgLyB4ODZfNjQgUUVNVSBidWlsZC5cblxuSG93ZXZlciwgSSdtIG5vdCBnb2luZyB0byBwcmVtYXR1cmVseSBkZWNsYXJlIGRlZmVhdC4gQ2FuIGBzdG1tYWNgIHBvdGVudGlhbGx5IGJlICpwcm9iZWQqIG9yICppbnN0YW50aWF0ZWQqIHRocm91Z2ggYW5vdGhlciBtZWNoYW5pc20/IFBlcmhhcHMgdGhlcmUgYXJlIGluZGlyZWN0IGNhbGxzIG9yIG1vY2sgZHJpdmVycyBpbnZvbHZlZC4gVGhhdCdzIHRoZSBuZXh0IGF2ZW51ZSB0byBleHBsb3JlIOKAkyBjaGVja2luZyBmb3IgYW55IG90aGVyIGNhbGxlcnMgb3IgbW9jayBkcml2ZXJzIGFzc29jaWF0ZWQgd2l0aCBgc3RtbWFjYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5MDYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OTo1My4zNTc1NDkxNTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTY1MjMwNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2R2cl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMzMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjExODpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzNDE6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDgzOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTYyOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz00Mj1zdGF0aWMgaW50IGxwYzE4eHhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Njg6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjktfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYz01OTk9c3RhdGljIGludCBtZWRpYXRla19kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2NDI6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NzM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz0zODI9c3RhdGljIGludCBtZXNvbjhiX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo0NjQ6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDY1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI5Mz1zdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM1OTpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTQ4PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo2ODpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo2NTpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMDc6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9OTA9c3RhdGljIGludCBzdGFyZml2ZV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNTM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTUyNT1zdGF0aWMgaW50IHN0bTMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjU3OTpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01ODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjAyOlxcdC8qIHRoZSBNQUMgaXMgcnVudGltZSBzdXNwZW5kZWQgYWZ0ZXIgc3RtbWFjX2R2cl9wcm9iZSgpLCBzbyB3ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMy1cXHQgKiBuZWVkIHRvIGVuc3VyZSB0aGUgTUFDIHJlc3VtZSBiYWNrIGJlZm9yZSBvdGhlciBvcGVyYXRpb25zIHN1Y2hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwOC1cXHQvKiBUaGUgbXV4IG11c3QgYmUgcmVnaXN0ZXJlZCBhZnRlciBwYXJlbnQgTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwOTpcXHQgKiBzbyBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMTAtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6Mzc2OlxcdGVyciA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzctXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jPTIwNT1zdGF0aWMgaW50IHZpc2NvbnRpX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYzoyMzc6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTE9dm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQxMjppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDEzLVxcdFxcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzgxNj1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzgxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc4MTg6c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzgxOS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTIwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODEyMTogKiBzdG1tYWNfZHZyX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTIyLSAqIEBkZXY6IGRldmljZSBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMjktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTMwOmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzEtXFx0XFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODE0MTpcXHRyZXQgPSBfX3N0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxNDItXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiBwbGF0X2RhdC1cXHUwMDNlZXhpdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE0Ni19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTQ3OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19kdnJfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgzOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODQ2PWludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NTU6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OTo1NC43MTQwODk4NzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTExMzM5OTc5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmlhZ2UgRGVjaXNpb246IFdvcnRoRnV6emluZyA9IEZhbHNlIGZvciBzdG1tYWMgRHJpdmVyIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBvdXRsaW5lZCBpbiBTZWN0aW9uIDIgb2YgdGhlIGZ1enppbmcgaW5zdHJ1Y3Rpb25zLiBUaGUgY29yZSBvZiBteSBhc3Nlc3NtZW50IHJlc3RzIG9uIGRldGVybWluaW5nIGlmIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gdGhlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcIiBjYXRlZ29yeS5cblxuU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgb24gdGhlIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY3JpdGVyaW9uLiBUaGUgaW5zdHJ1Y3Rpb25zIGRlZmluZSB0aGlzIGFzIGNvZGUgcmVsaWFudCBvbiBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBDb25zaWRlcmluZyBteSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCBhbWQ2NCwgYW5kIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24g4oCTIGBzdG1tYWNgIOKAkyB0aGlzIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuXG5cbmBzdG1tYWNgIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCkgaXMgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIGFuZCBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgY29udHJvbGxlcnMuIEZyb20gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaGFyZHdhcmUsIHRoZXNlIGNvbnRyb2xsZXJzIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSAoU29DL1BDSSkgY29tcG9uZW50cy4gU3RhbmRhcmQgUUVNVSBvciBHQ0UgVk1zIG9uIGFtZDY0IGRvbid0IGVtdWxhdGUgdGhpcyB0eXBlIG9mIHBoeXNpY2FsIGhhcmR3YXJlLiBZb3UnZCBuZWVkIGRlZGljYXRlZCBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgZm9yIHByb3BlciBlbXVsYXRpb24uIENvbnNlcXVlbnRseSwgdGhlc2UgY2hhbmdlcyBhcmUsIGZvciBhbGwgcHJhY3RpY2FsIHB1cnBvc2VzLCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5TbywgbGV0J3MgcHV0IGl0IGFsbCB0b2dldGhlcjogSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTXkgcmVhc29uaW5nIGlzIGNvbmNpc2U6IHRoZSBgc3RtbWFjYCBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgKFNvQy9QQ0kgRXRoZXJuZXQgY29udHJvbGxlcnMpIG5vdCBlbXVsYXRlZCBpbiB0aGUgdXN1YWwgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuIGBFbmFibGVDb25maWdzYCBhbmQgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBsZWZ0IGVtcHR5LlxuXG5BIHF1aWNrIGZpbmFsIGNoZWNrOiBJIGNhbiBzZWUgdGhhdCB0aGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29udGFpbmVkIHdpdGhpbiBgc3RtbWFjYDogYGNoYWluX21vZGUuY2AsIGByaW5nX21vZGUuY2AsIGFuZCBgc3RtbWFjX21haW4uY2AgYXJlIGFsbCBjbGVhcmx5IHBhcnQgb2YgdGhlIGBzdG1tYWNgIGRyaXZlci5cblxuTm93LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjk3LCJPdXRwdXRUb2tlbnMiOjExMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OTo1OS44Mjc0OTUwNjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIG1vZGlmeSB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChzcGVjaWZpY2FsbHkgaGFuZGxpbmcgVHggRE1BIG1hcHBpbmcgZmFpbHVyZSByb2xsYmFja3MgaW4ganVtYm8gZnJhbWUgdHJhbnNtaXNzaW9uKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLyBTb0MgY29udHJvbGxlcnMgKG9yIGRlZGljYXRlZCBQQ0llIGRldmljZXMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoc3BlY2lmaWNhbGx5IGhhbmRsaW5nIFR4IERNQSBtYXBwaW5nIGZhaWx1cmUgcm9sbGJhY2tzIGluIGp1bWJvIGZyYW1lIHRyYW5zbWlzc2lvbikuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DIGNvbnRyb2xsZXJzIChvciBkZWRpY2F0ZWQgUENJZSBkZXZpY2VzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjU5LjgyNzU0MDk0OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7q7mc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 08:46:36 +0000 UTC FinishedAt: 2026-09-11 08:50:01 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDA4OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoc3BlY2lmaWNhbGx5IGhhbmRsaW5nIFR4IERNQSBtYXBwaW5nIGZhaWx1cmUgcm9sbGJhY2tzIGluIGp1bWJvIGZyYW1lIHRyYW5zbWlzc2lvbikuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DIGNvbnRyb2xsZXJzIChvciBkZWRpY2F0ZWQgUENJZSBkZXZpY2VzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ODVkOGJlNTI0MDUwYTkxYzNmZGNlODg5Njk1YjVlMDkzNDQxNDI3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMDg6NDk6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jXG5pbmRleCA2NjAyNWUyNTA5ZTkxLi44NDE1Yzc0MGVlOWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmNcbkBAIC0yMCw2ICYjNDM7MjAsNyBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IHR4X3EtXHUwMDNlcHJpdl9kYXRhO1xuIFx0dW5zaWduZWQgaW50IGVudHJ5ID0gdHhfcS1cdTAwM2VjdXJfdHg7XG4mIzQzO1x0dW5zaWduZWQgaW50IGZpcnN0X2VudHJ5ID0gZW50cnk7XG4gXHR1bnNpZ25lZCBpbnQgYm1heCwgYnVmX2xlbjtcbiBcdHVuc2lnbmVkIGludCBpID0gMSwgbGVuO1xuIFx0c3RydWN0IGRtYV9kZXNjICpkZXNjO1xuQEAgLTU3LDcgJiM0Mzs1OCw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRcdCAgICAgIGJtYXgsIERNQV9UT19ERVZJQ0UpO1xuIFx0XHRcdGRlc2MtXHUwMDNlZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpO1xuIFx0XHRcdGlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LVx1MDAzZWRldmljZSwgZGVzMikpXG4tXHRcdFx0XHRyZXR1cm4gLTE7XG4mIzQzO1x0XHRcdFx0Z290byBlcnJfdW5tYXA7XG4gXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5idWYgPSBkZXMyO1xuIFx0XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ubGVuID0gYm1heDtcbiBcdFx0XHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGJtYXgsIGNzdW0sXG5AQCAtNzAsNyAmIzQzOzcxLDcgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdFx0ICAgICAgRE1BX1RPX0RFVklDRSk7XG4gXHRcdFx0ZGVzYy1cdTAwM2VkZXMyID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhkZXMyKSk7XG4gXHRcdFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtXHUwMDNlZGV2aWNlLCBkZXMyKSlcbi1cdFx0XHRcdHJldHVybiAtMTtcbiYjNDM7XHRcdFx0XHRnb3RvIGVycl91bm1hcDtcbiBcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XG4gXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBsZW47XG4gXHRcdFx0LyogbGFzdCBkZXNjcmlwdG9yIGNhbiBiZSBzZXQgbm93ICovXG5AQCAtODMsNiAmIzQzOzg0LDIwIEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHR0eF9xLVx1MDAzZWN1cl90eCA9IGVudHJ5O1xuIFxuIFx0cmV0dXJuIGVudHJ5O1xuJiM0MztcbiYjNDM7ZXJyX3VubWFwOlxuJiM0MztcdHdoaWxlIChmaXJzdF9lbnRyeSAhPSBlbnRyeSkge1xuJiM0MztcdFx0ZG1hX3VubWFwX3NpbmdsZShwcml2LVx1MDAzZWRldmljZSxcbiYjNDM7XHRcdFx0XHQgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5idWYsXG4mIzQzO1x0XHRcdFx0IHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0ubGVuLFxuJiM0MztcdFx0XHRcdCBETUFfVE9fREVWSUNFKTtcbiYjNDM7XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDtcbiYjNDM7XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0ubGVuID0gMDtcbiYjNDM7XHRcdGZpcnN0X2VudHJ5ID0gU1RNTUFDX05FWFRfRU5UUlkoZmlyc3RfZW50cnksXG4mIzQzO1x0XHRcdFx0XHRcdHByaXYtXHUwMDNlZG1hX2NvbmYuZG1hX3R4X3NpemUpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC0xO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBpc19qdW1ib19mcm0odW5zaWduZWQgaW50IGxlbiwgYm9vbCBlbmhfZGVzYylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9yaW5nX21vZGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jXG5pbmRleCBmNzk0OTQxOWViOWZkLi40MTcwYzg5N2JkMWE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jXG5AQCAtMzcsNiAmIzQzOzM3LDcgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGxlbiA9IG5vcGFnZWRfbGVuIC0gYm1heDtcbiBcbiBcdGlmIChub3BhZ2VkX2xlbiBcdTAwM2UgQlVGX1NJWkVfOEtpQikge1xuJiM0MztcdFx0dW5zaWduZWQgaW50IGZpcnN0X2VudHJ5ID0gZW50cnk7XG4gXG4gXHRcdGRlczIgPSBkbWFfbWFwX3NpbmdsZShwcml2LVx1MDAzZWRldmljZSwgc2tiLVx1MDAzZWRhdGEsIGJtYXgsXG4gXHRcdFx0XHQgICAgICBETUFfVE9fREVWSUNFKTtcbkBAIC02Miw4ICYjNDM7NjMsMTUgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZGVzMiA9IGRtYV9tYXBfc2luZ2xlKHByaXYtXHUwMDNlZGV2aWNlLCBza2ItXHUwMDNlZGF0YSAmIzQzOyBibWF4LCBsZW4sXG4gXHRcdFx0XHQgICAgICBETUFfVE9fREVWSUNFKTtcbiBcdFx0ZGVzYy1cdTAwM2VkZXMyID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhkZXMyKSk7XG4tXHRcdGlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LVx1MDAzZWRldmljZSwgZGVzMikpXG4mIzQzO1x0XHRpZiAoZG1hX21hcHBpbmdfZXJyb3IocHJpdi1cdTAwM2VkZXZpY2UsIGRlczIpKSB7XG4mIzQzO1x0XHRcdGRtYV91bm1hcF9zaW5nbGUocHJpdi1cdTAwM2VkZXZpY2UsXG4mIzQzO1x0XHRcdFx0XHQgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5idWYsXG4mIzQzO1x0XHRcdFx0XHQgYm1heCwgRE1BX1RPX0RFVklDRSk7XG4mIzQzO1x0XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDtcbiYjNDM7XHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5sZW4gPSAwO1xuJiM0MztcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmlzX2p1bWJvID0gZmFsc2U7XG4gXHRcdFx0cmV0dXJuIC0xO1xuJiM0MztcdFx0fVxuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XG4gXHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ubGVuID0gbGVuO1xuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmlzX2p1bWJvID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggMjQ2NTZiMzUzNTBiMS4uOTA1MDYxMTg2MjEwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC00NzY3LDE1ICYjNDM7NDc2NywxNSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGJvb2wgZW5oX2Rlc2MsIGhhc192bGFuLCBzZXRfaWMsIGlzX2p1bWJvID0gZmFsc2U7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnksIGVudHJ5LCB0eF9wYWNrZXRzO1xuIFx0dTMyIHF1ZXVlID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XG4gXHRpbnQgbmZyYWdzID0gc2tiX3NoaW5mbyhza2IpLVx1MDAzZW5yX2ZyYWdzO1xuLVx0dW5zaWduZWQgaW50IGZpcnN0X2VudHJ5LCB0eF9wYWNrZXRzO1xuIFx0c3RydWN0IHN0bW1hY190eHFfc3RhdHMgKnR4cV9zdGF0cztcbiBcdHN0cnVjdCBkbWFfZGVzYyAqZGVzYywgKmZpcnN0X2Rlc2M7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xO1xuIFx0aW50IGksIGNzdW1faW5zZXJ0aW9uID0gMDtcbi1cdGludCBlbnRyeSwgZmlyc3RfdHg7XG4gXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xuJiM0MztcdGludCBmaXJzdF90eCwgcmV0O1xuIFx0dTMyIHNkdV9sZW47XG4gXG4gXHRpZiAocHJpdi1cdTAwM2V0eF9wYXRoX2luX2xwaV9tb2RlIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVlZV9zd190aW1lcl9lbilcbkBAIC00ODMyLDkgJiM0Mzs0ODMyLDEwIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0Y3N1bV9pbnNlcnRpb24gPSBza2ItXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUw7XG4gXG4gXHRpZiAodW5saWtlbHkoaXNfanVtYm8pKSB7XG4tXHRcdGVudHJ5ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTtcbi1cdFx0aWYgKHVubGlrZWx5KGVudHJ5IFx1MDAzYyAwKSBcdTAwMjZcdTAwMjYgKGVudHJ5ICE9IC1FSU5WQUwpKVxuJiM0MztcdFx0cmV0ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTtcbiYjNDM7XHRcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApIFx1MDAyNlx1MDAyNiAocmV0ICE9IC1FSU5WQUwpKVxuIFx0XHRcdGdvdG8gZG1hX21hcF9lcnI7XG4mIzQzO1x0XHRlbnRyeSA9IHJldDtcbiBcdH0gZWxzZSB7XG4gXHRcdGJvb2wgbGFzdF9zZWdtZW50ID0gKG5mcmFncyA9PSAwKTtcbiBcbkBAIC00OTg0LDYgJiM0Mzs0OTg1LDI2IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIGRtYV9tYXBfZXJyOlxuIFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7VHggRE1BIG1hcCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHQvKiBlbnRyeSBwb2ludHMgb25lIHBhc3QgdGhlIGxhc3QgZGVzY3JpcHRvciB3cml0dGVuIGZvciB0aGlzIGZyYW1lOlxuJiM0MztcdCAqIG9uIGZhaWx1cmUgaXQgaXMgdGhlIGRlc2NyaXB0b3Igd2hvc2UgRE1BIG1hcHBpbmcgZmFpbGVkLCBzbyB3YWxrXG4mIzQzO1x0ICogZnJvbSBmaXJzdF9lbnRyeSB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGVudHJ5LiAgUmVzZXQgY3VyX3R4XG4mIzQzO1x0ICogdW5jb25kaXRpb25hbGx5IGFzIGJvdGggc3RtbWFjX3ZsYW5faW5zZXJ0KCkgYW5kIHN0bW1hY19qdW1ib19mcm0oKVxuJiM0MztcdCAqIG1heSBoYXZlIGFkdmFuY2VkIGl0LCBhbmQgcmVsZWFzZSB0aGUgVkxBTiBjb250ZXh0IGRlc2NyaXB0b3IuXG4mIzQzO1x0ICovXG4mIzQzO1x0d2hpbGUgKGZpcnN0X2VudHJ5ICE9IGVudHJ5KSB7XG4mIzQzO1x0XHRkZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGZpcnN0X2VudHJ5KTtcbiYjNDM7XHRcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi1cdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xuJiM0MztcdFx0c3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYsIHF1ZXVlLCBmaXJzdF9lbnRyeSk7XG4mIzQzO1x0XHRmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LFxuJiM0MztcdFx0XHRcdFx0XHRwcml2LVx1MDAzZWRtYV9jb25mLmRtYV90eF9zaXplKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHR4X3EtXHUwMDNlY3VyX3R4ID0gZmlyc3RfdHg7XG4mIzQzO1x0aWYgKGhhc192bGFuKSB7XG4mIzQzO1x0XHRkZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGZpcnN0X3R4KTtcbiYjNDM7XHRcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi1cdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xuJiM0MztcdH1cbiBtYXhfc2R1X2VycjpcbiBcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiBcdHByaXYtXHUwMDNleHN0YXRzLnR4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA4OjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKHNwZWNpZmljYWxseSBoYW5kbGluZyBUeCBETUEgbWFwcGluZyBmYWlsdXJlIHJvbGxiYWNrcyBpbiBqdW1ibyBmcmFtZSB0cmFuc21pc3Npb24pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSAvIFNvQyBjb250cm9sbGVycyAob3IgZGVkaWNhdGVkIFBDSWUgZGV2aWNlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTg1ZDhiZTUyNDA1MGE5MWMzZmRjZTg4OTY5NWI1ZTA5MzQ0MTQyNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDA4OjQ5OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jCmluZGV4IDY2MDI1ZTI1MDllOTEuLjg0MTVjNzQwZWU5ZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMKQEAgLTIwLDYgJiM0MzsyMCw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsCiAJdW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTsKIAlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSB0eF9xLSZndDtwcml2X2RhdGE7CiAJdW5zaWduZWQgaW50IGVudHJ5ID0gdHhfcS0mZ3Q7Y3VyX3R4OwomIzQzOwl1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnkgPSBlbnRyeTsKIAl1bnNpZ25lZCBpbnQgYm1heCwgYnVmX2xlbjsKIAl1bnNpZ25lZCBpbnQgaSA9IDEsIGxlbjsKIAlzdHJ1Y3QgZG1hX2Rlc2MgKmRlc2M7CkBAIC01Nyw3ICYjNDM7NTgsNyBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCQkgICAgICBibWF4LCBETUFfVE9fREVWSUNFKTsKIAkJCWRlc2MtJmd0O2RlczIgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGRlczIpKTsKIAkJCWlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LSZndDtkZXZpY2UsIGRlczIpKQotCQkJCXJldHVybiAtMTsKJiM0MzsJCQkJZ290byBlcnJfdW5tYXA7CiAJCQl0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2VudHJ5XS5idWYgPSBkZXMyOwogCQkJdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtlbnRyeV0ubGVuID0gYm1heDsKIAkJCXN0bW1hY19wcmVwYXJlX3R4X2Rlc2MocHJpdiwgZGVzYywgMCwgYm1heCwgY3N1bSwKQEAgLTcwLDcgJiM0Mzs3MSw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJCSAgICAgIERNQV9UT19ERVZJQ0UpOwogCQkJZGVzYy0mZ3Q7ZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpOwogCQkJaWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtJmd0O2RldmljZSwgZGVzMikpCi0JCQkJcmV0dXJuIC0xOwomIzQzOwkJCQlnb3RvIGVycl91bm1hcDsKIAkJCXR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7CiAJCQl0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBsZW47CiAJCQkvKiBsYXN0IGRlc2NyaXB0b3IgY2FuIGJlIHNldCBub3cgKi8KQEAgLTgzLDYgJiM0Mzs4NCwyMCBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXR4X3EtJmd0O2N1cl90eCA9IGVudHJ5OwogCiAJcmV0dXJuIGVudHJ5OwomIzQzOwomIzQzO2Vycl91bm1hcDoKJiM0MzsJd2hpbGUgKGZpcnN0X2VudHJ5ICE9IGVudHJ5KSB7CiYjNDM7CQlkbWFfdW5tYXBfc2luZ2xlKHByaXYtJmd0O2RldmljZSwKJiM0MzsJCQkJIHR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmJ1ZiwKJiM0MzsJCQkJIHR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmxlbiwKJiM0MzsJCQkJIERNQV9UT19ERVZJQ0UpOwomIzQzOwkJdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDsKJiM0MzsJCXR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmxlbiA9IDA7CiYjNDM7CQlmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LAomIzQzOwkJCQkJCXByaXYtJmd0O2RtYV9jb25mLmRtYV90eF9zaXplKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gLTE7CiB9CiAKIHN0YXRpYyBib29sIGlzX2p1bWJvX2ZybSh1bnNpZ25lZCBpbnQgbGVuLCBib29sIGVuaF9kZXNjKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9yaW5nX21vZGUuYwppbmRleCBmNzk0OTQxOWViOWZkLi40MTcwYzg5N2JkMWE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9yaW5nX21vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9yaW5nX21vZGUuYwpAQCAtMzcsNiAmIzQzOzM3LDcgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlsZW4gPSBub3BhZ2VkX2xlbiAtIGJtYXg7CiAKIAlpZiAobm9wYWdlZF9sZW4gJmd0OyBCVUZfU0laRV84S2lCKSB7CiYjNDM7CQl1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnkgPSBlbnRyeTsKIAogCQlkZXMyID0gZG1hX21hcF9zaW5nbGUocHJpdi0mZ3Q7ZGV2aWNlLCBza2ItJmd0O2RhdGEsIGJtYXgsCiAJCQkJICAgICAgRE1BX1RPX0RFVklDRSk7CkBAIC02Miw4ICYjNDM7NjMsMTUgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJZGVzMiA9IGRtYV9tYXBfc2luZ2xlKHByaXYtJmd0O2RldmljZSwgc2tiLSZndDtkYXRhICYjNDM7IGJtYXgsIGxlbiwKIAkJCQkgICAgICBETUFfVE9fREVWSUNFKTsKIAkJZGVzYy0mZ3Q7ZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpOwotCQlpZiAoZG1hX21hcHBpbmdfZXJyb3IocHJpdi0mZ3Q7ZGV2aWNlLCBkZXMyKSkKJiM0MzsJCWlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LSZndDtkZXZpY2UsIGRlczIpKSB7CiYjNDM7CQkJZG1hX3VubWFwX3NpbmdsZShwcml2LSZndDtkZXZpY2UsCiYjNDM7CQkJCQkgdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmLAomIzQzOwkJCQkJIGJtYXgsIERNQV9UT19ERVZJQ0UpOwomIzQzOwkJCXR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmJ1ZiA9IDA7CiYjNDM7CQkJdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0ubGVuID0gMDsKJiM0MzsJCQl0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5pc19qdW1ibyA9IGZhbHNlOwogCQkJcmV0dXJuIC0xOwomIzQzOwkJfQogCQl0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2VudHJ5XS5idWYgPSBkZXMyOwogCQl0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBsZW47CiAJCXR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbZW50cnldLmlzX2p1bWJvID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IDI0NjU2YjM1MzUwYjEuLjkwNTA2MTE4NjIxMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtNDc2NywxNSAmIzQzOzQ3NjcsMTUgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJYm9vbCBlbmhfZGVzYywgaGFzX3ZsYW4sIHNldF9pYywgaXNfanVtYm8gPSBmYWxzZTsKIAlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCXVuc2lnbmVkIGludCBub3BhZ2VkX2xlbiA9IHNrYl9oZWFkbGVuKHNrYik7CiYjNDM7CXVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgZW50cnksIHR4X3BhY2tldHM7CiAJdTMyIHF1ZXVlID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7CiAJaW50IG5mcmFncyA9IHNrYl9zaGluZm8oc2tiKS0mZ3Q7bnJfZnJhZ3M7Ci0JdW5zaWduZWQgaW50IGZpcnN0X2VudHJ5LCB0eF9wYWNrZXRzOwogCXN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzICp0eHFfc3RhdHM7CiAJc3RydWN0IGRtYV9kZXNjICpkZXNjLCAqZmlyc3RfZGVzYzsKIAlzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xOwogCWludCBpLCBjc3VtX2luc2VydGlvbiA9IDA7Ci0JaW50IGVudHJ5LCBmaXJzdF90eDsKIAlkbWFfYWRkcl90IGRtYV9hZGRyOwomIzQzOwlpbnQgZmlyc3RfdHgsIHJldDsKIAl1MzIgc2R1X2xlbjsKIAogCWlmIChwcml2LSZndDt0eF9wYXRoX2luX2xwaV9tb2RlICZhbXA7JmFtcDsgcHJpdi0mZ3Q7ZWVlX3N3X3RpbWVyX2VuKQpAQCAtNDgzMiw5ICYjNDM7NDgzMiwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAljc3VtX2luc2VydGlvbiA9IHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUw7CiAKIAlpZiAodW5saWtlbHkoaXNfanVtYm8pKSB7Ci0JCWVudHJ5ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTsKLQkJaWYgKHVubGlrZWx5KGVudHJ5ICZsdDsgMCkgJmFtcDsmYW1wOyAoZW50cnkgIT0gLUVJTlZBTCkpCiYjNDM7CQlyZXQgPSBzdG1tYWNfanVtYm9fZnJtKHByaXYsIHR4X3EsIHNrYiwgY3N1bV9pbnNlcnRpb24pOwomIzQzOwkJaWYgKHVubGlrZWx5KHJldCAmbHQ7IDApICZhbXA7JmFtcDsgKHJldCAhPSAtRUlOVkFMKSkKIAkJCWdvdG8gZG1hX21hcF9lcnI7CiYjNDM7CQllbnRyeSA9IHJldDsKIAl9IGVsc2UgewogCQlib29sIGxhc3Rfc2VnbWVudCA9IChuZnJhZ3MgPT0gMCk7CiAKQEAgLTQ5ODQsNiAmIzQzOzQ5ODUsMjYgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIGRtYV9tYXBfZXJyOgogCW5ldGRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O1R4IERNQSBtYXAgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CS8qIGVudHJ5IHBvaW50cyBvbmUgcGFzdCB0aGUgbGFzdCBkZXNjcmlwdG9yIHdyaXR0ZW4gZm9yIHRoaXMgZnJhbWU6CiYjNDM7CSAqIG9uIGZhaWx1cmUgaXQgaXMgdGhlIGRlc2NyaXB0b3Igd2hvc2UgRE1BIG1hcHBpbmcgZmFpbGVkLCBzbyB3YWxrCiYjNDM7CSAqIGZyb20gZmlyc3RfZW50cnkgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBlbnRyeS4gIFJlc2V0IGN1cl90eAomIzQzOwkgKiB1bmNvbmRpdGlvbmFsbHkgYXMgYm90aCBzdG1tYWNfdmxhbl9pbnNlcnQoKSBhbmQgc3RtbWFjX2p1bWJvX2ZybSgpCiYjNDM7CSAqIG1heSBoYXZlIGFkdmFuY2VkIGl0LCBhbmQgcmVsZWFzZSB0aGUgVkxBTiBjb250ZXh0IGRlc2NyaXB0b3IuCiYjNDM7CSAqLwomIzQzOwl3aGlsZSAoZmlyc3RfZW50cnkgIT0gZW50cnkpIHsKJiM0MzsJCWRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfZW50cnkpOwomIzQzOwkJc3RtbWFjX3JlbGVhc2VfdHhfZGVzYyhwcml2LCBkZXNjLCBwcml2LSZndDtkZXNjcmlwdG9yX21vZGUpOwomIzQzOwkJc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHByaXYsICZhbXA7cHJpdi0mZ3Q7ZG1hX2NvbmYsIHF1ZXVlLCBmaXJzdF9lbnRyeSk7CiYjNDM7CQlmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LAomIzQzOwkJCQkJCXByaXYtJmd0O2RtYV9jb25mLmRtYV90eF9zaXplKTsKJiM0MzsJfQomIzQzOwomIzQzOwl0eF9xLSZndDtjdXJfdHggPSBmaXJzdF90eDsKJiM0MzsJaWYgKGhhc192bGFuKSB7CiYjNDM7CQlkZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGZpcnN0X3R4KTsKJiM0MzsJCXN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi0mZ3Q7ZGVzY3JpcHRvcl9tb2RlKTsKJiM0MzsJfQogbWF4X3NkdV9lcnI6CiAJZGV2X2tmcmVlX3NrYihza2IpOwogCXByaXYtJmd0O3hzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI0NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZnV6ei13b3J0aHksIGtlZXBpbmcgb3VyIGd1aWRlbGluZXMgaW4gbWluZC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgZGlzc2VjdCB3aGF0JiMzOTtzIGJlZW4gdG91Y2hlZC4gSSBzZWUgd2UmIzM5O3ZlIGdvdCBtb2RpZmljYXRpb25zIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBUaG9zZSBmaWxlcGF0aHMgYXJlIHByZXR0eSBzcGVjaWZpYywgc28gdGhpcyBsb29rcyBsaWtlIHdlJiMzOTtyZSB6ZXJvaW5nIGluIG9uIGEgcGFydGljdWxhciBwaWVjZSBvZiB0aGUgcHV6emxlLgoKTm93LCB3aGF0IGV4YWN0bHkgKmlzKiBgc3RtbWFjYD8gVGhhdCYjMzk7cyB0aGUga2V5IHF1ZXN0aW9uLiBXZSBuZWVkIHRvIGFzY2VydGFpbiB0aGUgcm9sZSBpdCBwbGF5cyBpbiB0aGUgc3lzdGVtLiBJcyB0aGlzIGFuIEV0aGVybmV0IGRyaXZlciB0aWVkIHRvIHNvbWUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUsIHBlcmhhcHMgYW4gU29DIG9yIFBDSWUgZGV2aWNlPyBPciwgbW9yZSBpbXBvcnRhbnRseSBmb3IgZnV6emluZywgaXMgdGhlcmUgYSBwb3NzaWJpbGl0eSBvZiBlbXVsYXRpb24/IENhbiB3ZSBzaW11bGF0ZSB0aGlzIGhhcmR3YXJlIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCwgb3IgYXJlIHdlIGxpbWl0ZWQgdG8gdGVzdGluZyBvbiBhY3R1YWwgZGV2aWNlcz8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBpcyBhIGRyaXZlciB0aGF0IGNhbiBiZSBhZGVxdWF0ZWx5IGFzc2Vzc2VkIHdpdGggc29mdHdhcmUuIExldCYjMzk7cyBkbyBhIHF1aWNrIHNlYXJjaCBpbiBLY29uZmlnIGFuZCB0aGUgZHJpdmVycyBkaXJlY3RvcnkgdG8gZmlndXJlIHRoYXQgb3V0LiBLbm93aW5nIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5IGlzIGNyaXRpY2FsLiBJZiB3ZSAqY2FuKiBlbXVsYXRlLCB0aGF04oCZcyBhIGJpZyAmIzM0O3llcyYjMzQ7IHRvIGZ1enppbmcuIElmIGl0JiMzOTtzIHN0cmljdGx5IGhhcmR3YXJlLCBpdCBiZWNvbWVzIGEgbXVjaCB0b3VnaGVyIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7U1RNTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMTg5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE4OmlmIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxOlx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIyLVx0ZGVwZW5kcyBvbiBJTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjU6XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2LVx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk6Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMDpcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMS1cdHNlbGVjdCBNRkRfU1lTQ09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDI6aWYgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NTI9Y29uZmlnIERXTUFDX0dFTkVSSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTQ6XHRkZWZhdWx0IFNUTU1BQ19QTEFURk9STVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM2ND1jb25maWcgRFdNQUNfVklTQ09OVElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzcxOmVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zODg9Y29uZmlnIERXTUFDX0xPT05HU09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTItXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzkzOlx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzk0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMS1cdHNlbGVjdCBNT1RPUkNPTU1fUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwMjpcdHNlbGVjdCBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwODpcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA5LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDEwLVx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQxMTpcdHNlbGVjdCBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxOS1cdCAgSWYgdW5zdXJlLCBzYXkgTi5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDIwOmVuZGlmICMgU1RNTUFDX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfU1RNTUFDX0VUSCkgJiM0Mzs9IHN0bW1hYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0zLXN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToxMjpzdG1tYWMtJChDT05GSUdfU1RNTUFDX1NFTEZURVNUUykgJiM0Mzs9IHN0bW1hY19zZWxmdGVzdHMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0xNC0jIE9yZGVyaW5nIG1hdHRlcnMuIEdlbmVyaWMgZHJpdmVyIG11c3QgYmUgbGFzdC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19TVE1NQUNfUExBVEZPUk0pXHQmIzQzOz0gc3RtbWFjLXBsYXRmb3JtLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19EV01BQ19BTkFSSU9OKVx0JiM0Mzs9IGR3bWFjLWFuYXJpb24ub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTQ3PWR3bWFjLWFsdHItc29jZnBnYS1vYmpzIDo9IGR3bWFjLXNvY2ZwZ2Eub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfU1RNTUFDX0xJQlBDSSlcdCYjNDM7PSBzdG1tYWNfbGlicGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19TVE1NQUNfUENJKVx0JiM0Mzs9IHN0bW1hYy1wY2kub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTEtb2JqLSQoQ09ORklHX0RXTUFDX0lOVEVMKVx0JiM0Mzs9IGR3bWFjLWludGVsLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM9MTc9c3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNDYtXHQvKiBkbyBub3QgY2xvc2UgdGhlIGRlc2NyaXB0b3IgYW5kIGRvIG5vdCBzZXQgb3duIGJpdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjQ3Olx0c3RtbWFjX3ByZXBhcmVfdHhfZGVzYyhwcml2LCBkZXNjLCAxLCBidWZfbGVuLCBjc3VtLCBTVE1NQUNfQ0hBSU5fTU9ERSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy00OC1cdFx0XHQwLCBmYWxzZSwgc2tiLVx1MDAzZWxlbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTUxLVx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZltlbnRyeV0gPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjUyOlx0XHRlbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGVudHJ5LCBwcml2LVx1MDAzZWRtYV9jb25mLmRtYV90eF9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy01My1cdFx0ZGVzYyA9IHR4X3EtXHUwMDNlZG1hX3R4ICYjNDM7IGVudHJ5O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy02NC1cdFx0XHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGJtYXgsIGNzdW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6NjU6XHRcdFx0XHRcdFNUTU1BQ19DSEFJTl9NT0RFLCAxLCBmYWxzZSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNjYtXHRcdFx0bGVuIC09IGJtYXg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTc4LVx0XHRcdHN0bW1hY19wcmVwYXJlX3R4X2Rlc2MocHJpdiwgZGVzYywgMCwgbGVuLCBjc3VtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjc5Olx0XHRcdFx0XHRTVE1NQUNfQ0hBSU5fTU9ERSwgMSwgdHJ1ZSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtODAtXHRcdFx0bGVuID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtOTUtXHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0ubGVuID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo5NjpcdFx0Zmlyc3RfZW50cnkgPSBTVE1NQUNfTkVYVF9FTlRSWShmaXJzdF9lbnRyeSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy05Ny1cdFx0XHRcdFx0XHRwcml2LVx1MDAzZWRtYV9jb25mLmRtYV90eF9zaXplKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozOiAgU1RNTUFDIENvbW1vbiBIZWFkZXIgRmlsZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yMC0jaWYgSVNfRU5BQkxFRChDT05GSUdfVkxBTl84MDIxUSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjIxOiNkZWZpbmUgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTIyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTQ5PXN0YXRpYyBpbmxpbmUgYm9vbCBkd21hY19pc194bWFjKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU0OiNkZWZpbmUgU1RNTUFDX0NIQU4wXHQwXHQvKiBBbHdheXMgc3VwcG9ydGVkIGFuZCBkZWZhdWx0IGZvciBhbGwgY2hpcHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY1LSNkZWZpbmUgRE1BX0RFRkFVTFRfUlhfU0laRVx0NTEyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjojZGVmaW5lIFNUTU1BQ19ORVhUX0VOVFJZKHgsIHNpemUpXHQoKHggJiM0MzsgMSkgXHUwMDI2IChzaXplIC0gMSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaD0yNDg9c3RydWN0IHN0bW1hY19zYWZldHlfc3RhdHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI1NS0vKiBOdW1iZXIgb2YgZmllbGRzIGluIFNhZmV0eSBTdGF0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjU2OiNkZWZpbmUgU1RNTUFDX1NBRkVUWV9GRUFUX1NJWkVcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yNTctXHQoc2l6ZW9mKHN0cnVjdCBzdG1tYWNfc2FmZXR5X3N0YXRzKSAvIHNpemVvZih1bnNpZ25lZCBsb25nKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zMjgtLyogTVNJIGRlZmluZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjMyOTojZGVmaW5lIFNUTU1BQ19NU0lfVkVDX01BWFx0MzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTMzMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zNDAtLyogVHggY29hbGVzY2UgcGFyYW1ldGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzQxOiNkZWZpbmUgU1RNTUFDX0NPQUxfVFhfVElNRVJcdDUwMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM0MjojZGVmaW5lIFNUTU1BQ19NQVhfQ09BTF9UWF9USUNLXHQxMDAwMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM0MzojZGVmaW5lIFNUTU1BQ19UWF9NQVhfRlJBTUVTXHQyNTZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM0NDojZGVmaW5lIFNUTU1BQ19UWF9GUkFNRVNcdDI1XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNDU6I2RlZmluZSBTVE1NQUNfUlhfRlJBTUVTXHQwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zNDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDE2PXN0cnVjdCBkbWFfZmVhdHVyZXMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUzNS0vKiBEZWZhdWx0IExQSSB0aW1lcnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjUzNjojZGVmaW5lIFNUTU1BQ19ERUZBVUxUX0xJVF9MU1x0MHgzRThcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjUzNzojZGVmaW5lIFNUTU1BQ19ERUZBVUxUX1RXVF9MU1x0MHgxRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTM4OiNkZWZpbmUgU1RNTUFDX0VUX01BWFx0XHQweEZGRkZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01MzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NTY1PXZvaWQgc3RtbWFjX2F4aV9ibGVuX3RvX21hc2sodTMyICpyZWd2YWwsIGNvbnN0IHUzMiAqYmxlbiwgc2l6ZV90IGxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1Njc6I2RlZmluZSBTVE1NQUNfQ0hBSU5fTU9ERVx0MHgxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1Njg6I2RlZmluZSBTVE1NQUNfUklOR19NT0RFXHQweDJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NzItLyogUmVjZWl2ZSBTaWRlIFNjYWxpbmcgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU3MzojZGVmaW5lIFNUTU1BQ19SU1NfSEFTSF9LRVlfU0laRVx0NDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU3NDojZGVmaW5lIFNUTU1BQ19SU1NfTUFYX1RBQkxFX1NJWkVcdDI1NlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTc2LS8qIFZMQU4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU3NzojZGVmaW5lIFNUTU1BQ19WTEFOX05PTkVcdDB4MFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTc4OiNkZWZpbmUgU1RNTUFDX1ZMQU5fUkVNT1ZFXHQweDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU3OTojZGVmaW5lIFNUTU1BQ19WTEFOX0lOU0VSVFx0MHgyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1ODA6I2RlZmluZSBTVE1NQUNfVkxBTl9SRVBMQUNFXHQweDNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU4MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM2PXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTg5LVx0cGxhdF9kYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VhYWwgPSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzo5MDpcdHBsYXRfZGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtOTEtXHRwbGF0X2RhdC1cdTAwM2VwbXQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MTg2PXN0YXRpYyBpbnQgdGVncmFfZXFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjM5LVx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBlcW9zO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNDA6XHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TUEhfRElTQUJMRSB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI0MTpcdFx0XHQgICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVAgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNDI6XHRcdFx0ICAgU1RNTUFDX0ZMQUdfVVNFX1BIWV9XT0w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI0My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9Njk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHdtYWNfZ2VuZXJpY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTcxLVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3MjpcdFx0Lm5hbWUgICAgICAgICAgID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzMtXHRcdC5wbVx0XHQ9IFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MzYxPXN0YXRpYyBzdHJ1Y3QgaW14X2R3bWFjX29wcyBpbXg4bXBfZHdtYWNfZGF0YSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNjQtXHQuc2V0X2ludGZfbW9kZSA9IGlteDhtcF9zZXRfaW50Zl9tb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzY1Olx0LmZsYWdzID0gU1RNTUFDX0ZMQUdfRUVFX0RJU0FCTEUgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzY2Olx0XHQgU1RNTUFDX0ZMQUdfSFdUU1RBTVBfQ09SUkVDVF9MQVRFTkNZIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjM2NzpcdFx0IFNUTU1BQ19GTEFHX0tFRVBfUFJFQU1CTEVfQkVGT1JFX1NGRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM2OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MzU4PXN0YXRpYyBpbnQgaW50ZWxfY3Jvc3N0c3RhbXAoa3RpbWVfdCAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzc5LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjM4MDpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlZmxhZ3MgXHUwMDI2IFNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzgxLVx0XHRyZXR1cm4gLUVCVVNZO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjM4MzpcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTM4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQwMy1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlYXV4X3RzX2xvY2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0MDQ6XHRcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5TVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQwNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00MjktXHRcdFx0XHRcdCAgICAgIEhaIC8gMTAwKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0MzA6XHRcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5TVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQzMS1cdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ1NjpcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5TVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ1Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTU5Nj1zdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU5OC1cdC8qIGNsa19jc3JfaSA9IDIwLTM1TUh6IFx1MDAyNiBNREMgPSBjbGtfY3NyX2kvMTYgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTk5Olx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTYwMC1cdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NjE2PXN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTYyNS1cdHBsYXQtXHUwMDNlcGh5X2FkZHIgPSAtMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NjI2Olx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNjI3LVx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MjgtXHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NjI5Olx0cGxhdC1cdTAwM2VmbGFncyB8PSAoU1RNTUFDX0ZMQUdfVFNPX0VOIHwgU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjcwODpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVkxBTl9GQUlMX1FfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTcwOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NzQ4Olx0cGxhdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5TVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc2MD1zdGF0aWMgaW50IGVobF9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc2Ni1cdHBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc2NzpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVVNFX1BIWV9XT0w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc2ODpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfSFdUU1RBTVBfQ09SUkVDVF9MQVRFTkNZO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NjktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMTQ5PXN0YXRpYyBpbnQgc3RtbWFjX2NvbmZpZ19zaW5nbGVfbXNpKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE2My1cdHJlcy1cdTAwM2V3b2xfaXJxID0gcmVzLVx1MDAzZWlycTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE2NDpcdHBsYXQtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+U1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTY1LVx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBTaW5nbGUgSVJRIGVuYWJsZW1lbnQgc3VjY2Vzc2Z1bFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExNzE9c3RhdGljIGludCBzdG1tYWNfY29uZmlnX211bHRpX21zaShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExNzg6XHRpZiAocGxhdC1cdTAwM2Vtc2lfcnhfYmFzZV92ZWMgXHUwMDNlPSBTVE1NQUNfTVNJX1ZFQ19NQVggfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE3OTpcdCAgICBwbGF0LVx1MDAzZW1zaV90eF9iYXNlX3ZlYyBcdTAwM2U9IFNUTU1BQ19NU0lfVkVDX01BWCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTgwLVx0XHRkZXZfaW5mbyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IEludmFsaWQgUlggXHUwMDI2IFRYIHZlY3RvciBkZWZpbmVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE4NTpcdHJldCA9IHBjaV9hbGxvY19pcnFfdmVjdG9ycyhwZGV2LCAyLCBTVE1NQUNfTVNJX1ZFQ19NQVgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExODYtXHRcdFx0XHQgICAgUENJX0lSUV9NU0kgfCBQQ0lfSVJRX01TSVgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIwNTpcdGlmIChwbGF0LVx1MDAzZW1zaV9tYWNfdmVjIFx1MDAzYyBTVE1NQUNfTVNJX1ZFQ19NQVgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMDYtXHRcdHJlcy1cdTAwM2VpcnEgPSBwY2lfaXJxX3ZlY3RvcihwZGV2LCBwbGF0LVx1MDAzZW1zaV9tYWNfdmVjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIwNzpcdGlmIChwbGF0LVx1MDAzZW1zaV93b2xfdmVjIFx1MDAzYyBTVE1NQUNfTVNJX1ZFQ19NQVgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMDgtXHRcdHJlcy1cdTAwM2V3b2xfaXJxID0gcGNpX2lycV92ZWN0b3IocGRldiwgcGxhdC1cdTAwM2Vtc2lfd29sX3ZlYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyMDk6XHRpZiAocGxhdC1cdTAwM2Vtc2lfc2Z0eV9jZV92ZWMgXHUwMDNjIFNUTU1BQ19NU0lfVkVDX01BWClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIxMC1cdFx0cmVzLVx1MDAzZXNmdHlfY2VfaXJxID0gcGNpX2lycV92ZWN0b3IocGRldiwgcGxhdC1cdTAwM2Vtc2lfc2Z0eV9jZV92ZWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjExOlx0aWYgKHBsYXQtXHUwMDNlbXNpX3NmdHlfdWVfdmVjIFx1MDAzYyBTVE1NQUNfTVNJX1ZFQ19NQVgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMTItXHRcdHJlcy1cdTAwM2VzZnR5X3VlX2lycSA9IHBjaV9pcnFfdmVjdG9yKHBkZXYsIHBsYXQtXHUwMDNlbXNpX3NmdHlfdWVfdmVjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIxNDpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjE1LVx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBtdWx0aSBNU0kgZW5hYmxlbWVudCBzdWNjZXNzZnVsXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzMTQtXHQgKiBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gZGF0YSBzZXR0aW5ncyBiZWxvdy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTMxNTpcdCAqIE5vdGU6IE1TSSB2ZWN0b3IgdGFrZXMgdmFsdWUgZnJvbSAwIHVwdG8gMzEgKFNUTU1BQ19NU0lfVkVDX01BWClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTMxNi1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzE3Olx0cGxhdC1cdTAwM2Vtc2lfbWFjX3ZlYyA9IFNUTU1BQ19NU0lfVkVDX01BWDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTMxODpcdHBsYXQtXHUwMDNlbXNpX3dvbF92ZWMgPSBTVE1NQUNfTVNJX1ZFQ19NQVg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzMTk6XHRwbGF0LVx1MDAzZW1zaV9zZnR5X2NlX3ZlYyA9IFNUTU1BQ19NU0lfVkVDX01BWDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTMyMDpcdHBsYXQtXHUwMDNlbXNpX3NmdHlfdWVfdmVjID0gU1RNTUFDX01TSV9WRUNfTUFYO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzIxOlx0cGxhdC1cdTAwM2Vtc2lfcnhfYmFzZV92ZWMgPSBTVE1NQUNfTVNJX1ZFQ19NQVg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzMjI6XHRwbGF0LVx1MDAzZW1zaV90eF9iYXNlX3ZlYyA9IFNUTU1BQ19NU0lfVkVDX01BWDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTMyMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTg2PXN0YXRpYyB2b2lkIGxvb25nc29uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTk0LVx0LyogY2xrX2Nzcl9pID0gMTAwLTE1ME1IeiBcdTAwMjYgTURDID0gY2xrX2Nzcl9pLzYyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjk1Olx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8xMDBfMTUwTTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtOTYtXHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTM3Nz1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX21zaV9jb25maWcoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00MDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjQwMjpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00MDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYz01NTY9c3RhdGljIGludCBtZWRpYXRla19kd21hY19jb21tb25fZGF0YShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNTYzLVx0aWYgKHByaXZfcGxhdC1cdTAwM2VtYWNfd29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo1NjQ6XHRcdHBsYXQtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+U1RNTUFDX0ZMQUdfVVNFX1BIWV9XT0w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTU2NS1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NTY2Olx0XHRwbGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1VTRV9QSFlfV09MO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy01NjctXHRwbGF0LVx1MDAzZXJpd3Rfb2ZmID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yMDg9bW90b3Jjb21tX2RlZmF1bHRfcGxhdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI0My1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ0Olx0cGxhdC1cdTAwM2VjbGtfY3NyXHRcdD0gU1RNTUFDX0NTUl8yMF8zNU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDUtXHRwbGF0LVx1MDAzZXR4X2NvZVx0XHQ9IDE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjUwLVx0cGxhdC1cdTAwM2VyZXN1bWVcdFx0PSBtb3RvcmNvbW1fcmVzdW1lO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjUxOlx0cGxhdC1cdTAwM2VmbGFnc1x0XHQ9IFNUTU1BQ19GTEFHX1RTT19FTiB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNTI6XHRcdFx0XHQgIFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yNjQ9c3RhdGljIGludCBtb3RvcmNvbW1fc2V0dXBfaXJxKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI3NjpcdFx0cGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNzctXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTc3MS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3NzI6XHRwbGF0X2RhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl82MF8xMDBNO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03NzMtXHRwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdiA9IGV0aHFvcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTc4MS1cdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsIFwmIzM0O3NucHMsdHNvXCYjMzQ7KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6NzgyOlx0XHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTc4My1cdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgXCYjMzQ7cWNvbSxxY3M0MDQtZXRocW9zXCYjMzQ7KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6Nzg0Olx0XHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19SWF9DTEtfUlVOU19JTl9MUEk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTc4NS1cdGlmIChkYXRhLVx1MDAzZWRtYV9hZGRyX3dpZHRoKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE4OC1cdHBsYXRfZGF0LVx1MDAzZWV4aXQgPSByZW5lc2FzX2diZXRoX2V4aXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MTg5Olx0cGxhdF9kYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfRU5fVFhfTFBJX0NMS19QSFlfQ0FQIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xOTAtXHRcdFx0ICAgZ2JldGgtXHUwMDNlb2ZfZGF0YS1cdTAwM2VzdG1tYWNfZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJlbmVzYXNfZ2JldGhfb2ZfZGF0YSByZW5lc2FzX2diZXRoX29mX2RhdGEgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIwNC1cdC5zZXRfY2xrX3R4X3JhdGUgPSB0cnVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIwNTpcdC5zdG1tYWNfZmxhZ3MgPSBTVE1NQUNfRkxBR19IV1RTVEFNUF9DT1JSRUNUX0xBVEVOQ1kgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIwNjpcdFx0XHRTVE1NQUNfRkxBR19TUEhfRElTQUJMRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMDctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9MjA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVuZXNhc19nYmV0aF9vZl9kYXRhIHJlbmVzYXNfZ21hY19vZl9kYXRhID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMTEtXHQubnVtX2Nsa3MgPSBBUlJBWV9TSVpFKHJlbmVzYXNfZ21hY19jbGtzKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMTI6XHQuc3RtbWFjX2ZsYWdzID0gU1RNTUFDX0ZMQUdfSFdUU1RBTVBfQ09SUkVDVF9MQVRFTkNZLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIxMy1cdC5oYXNfcGNzID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xMTM9c3RhdGljIHZvaWQgczMyX2dtYWNfc2V0dXBfbXVsdGlfaXJxKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoxMzU6XHRwbGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX01VTFRJX01TSV9FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTEzNi1cdGRldl9pbmZvKGRldiwgXCYjMzQ7TXVsdGktSVJRIG1vZGUgKHBlciBxdWV1ZSBJUlFzKSBzZWxlY3RlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTM5LW1hY19pcnFfbW9kZTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjE0MDpcdHBsYXQtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+U1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTQxLVx0ZGV2X2luZm8oZGV2LCBcJiMzNDtNQUMgSVJRIG1vZGUgc2VsZWN0ZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTE0ND1zdGF0aWMgaW50IHMzMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTE5Ny1cdHBsYXQtXHUwMDNlcG10ID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjE5ODpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xOTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTI5ND1zdGF0aWMgaW50IHNtdGdfY3Jvc3N0c3RhbXAoa3RpbWVfdCAqZGV2aWNlLCBzdHJ1Y3Qgc3lzdGVtX2NvdW50ZXJ2YWxfdCAqc3lzdGVtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy0zMDktXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzozMTA6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWZsYWdzIFx1MDAyNiBTVE1NQUNfRkxBR19FWFRfU05BUFNIT1RfRU4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtMzExLVx0XHRyZXR1cm4gLUVCVVNZO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz01Njk9c3RhdGljIHZvaWQgc29jZnBnYV9hZ2lsZXg1X3NldHVwX3BsYXRfZGF0KHN0cnVjdCBzb2NmcGdhX2R3bWFjICpkd21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTc1LVx0LyogRW5hYmxlIFRTTyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjU3NjpcdHBsYXRfZGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MTk9c3RhdGljIGludCBzb3BoZ29fc2cyMDQ0X2R3bWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy0yNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjI4Olx0cGxhdF9kYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy0yOS1cdHBsYXRfZGF0LVx1MDAzZXNldF9jbGtfdHhfcmF0ZSA9IHN0bW1hY19zZXRfY2xrX3R4X3JhdGU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MDpcdHBsYXRfZGF0LVx1MDAzZWZsYWdzIHw9IChTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVAgfCBTVE1NQUNfRkxBR19TUEhfRElTQUJMRSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1MS1cdHBsYXRfZGF0LVx1MDAzZWRtYV9jZmctXHUwMDNlZGNoZSA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1NjA6XHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU2MS1cdHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2ID0gZHdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTA1PXN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMjEtXHQvKiBCU1AgZGlzYWJsZXMgaXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjEyMjpcdHBsYXRfZGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1NQSF9ESVNBQkxFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTIzLVx0cGxhdF9kYXQtXHUwMDNlaG9zdF9kbWFfd2lkdGggPSAzMjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTExMDU9c3RhdGljIGludCBzdW44aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTE4MC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTgxOlx0cGxhdF9kYXQtXHUwMDNlcnhfY29lID0gU1RNTUFDX1JYX0NPRV9UWVBFMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTE4Mi1cdHBsYXRfZGF0LVx1MDAzZXR4X2NvZSA9IHRydWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjExODM6XHRwbGF0X2RhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19IQVNfU1VOOEk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExODQtXHRwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdiA9IGdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjYtXHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyNzpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjgtXHRwbGF0LVx1MDAzZXBtdCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjM3NDpcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU0VSREVTX1VQX0FGVEVSX1BIWV9MSU5LVVA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jPTQwPXN0YXRpYyB2b2lkIGR3bWFjMTAwMF9jb3JlX2luaXQoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy01OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM6NjA6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTYxLVx0LyogVGFnIGRldGVjdGlvbiB3aXRob3V0IGZpbHRlcmluZyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9MTI0PXN0YXRpYyB2b2lkIGR3bWFjMTAwMF9zZXRfbWNoYXNoKHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgKm1jZmlsdGVyYml0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTE0MC1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jOjE0MTpcdFx0cHJfZGVidWcoXCYjMzQ7U1RNTUFDOiBlcnIgaW4gc2V0dGluZyBtdWx0aWNhc3QgZmlsdGVyXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtMTQyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYz0zMTg9c3RhdGljIGludCBkd21hYzEwMDBfc2V0X2xwaV9tb2RlKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtMzI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzozMjU6XHRpZiAobW9kZSA9PSBTVE1NQUNfTFBJX1RJTUVSKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy0zMjYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTMyOC1cdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IExQSV9DVFJMX1NUQVRVUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jOjMyOTpcdGlmIChtb2RlID09IFNUTU1BQ19MUElfRk9SQ0VEKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy0zMzAtXHRcdHZhbHVlIHw9IExQSV9DVFJMX1NUQVRVU19MUElFTiB8IExQSV9DVFJMX1NUQVRVU19MUElUWEE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYz01MjM9dm9pZCBkd21hYzEwMDBfdGltZXN0YW1wX2ludGVycnVwdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy01MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jOjUzNDpcdGlmICghKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjYgU1RNTUFDX0ZMQUdfRVhUX1NOQVBTSE9UX0VOKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTM1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYz01Njc9aW50IGR3bWFjMTAwMF9wdHBfZW5hYmxlKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTgzLVx0XHRcdHRjcl92YWwgfD0gR01BQ19QVFBfVENSX0FUU0ZDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo1ODQ6XHRcdFx0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTg1LVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy01ODYtXHRcdFx0dGNyX3ZhbCBcdTAwMjY9IH5HTUFDX1BUUF9UQ1JfQVRTRU4wO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo1ODc6XHRcdFx0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZWZsYWdzIFx1MDAyNj0gflNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTg4LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfY29yZS5jPTIyPXN0YXRpYyB2b2lkIGR3bWFjMTAwX2NvcmVfaW5pdChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmM6MzI6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzMtXHR3cml0ZWwoRVRIX1BfODAyMVEsIGlvYWRkciAmIzQzOyBNQUNfVkxBTjEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9Mzg2PXN0YXRpYyBpbnQgZHdtYWM0X3NldF9scGlfbW9kZShzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTM5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM6MzkzOlx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9ESVNBQkxFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTM5NC1cdFx0dmFsdWUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMzk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzozOTg6XHRcdGlmIChtb2RlID09IFNUTU1BQ19MUElfVElNRVIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMzk5LVx0XHRcdC8qIFJldHVybiBFUkFOR0UgaWYgdGhlIHRpbWVyIGlzIGxhcmdlciB0aGFuIHRoZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtNDAxLVx0XHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzo0MDI6XHRcdFx0aWYgKGV0IFx1MDAzZSBTVE1NQUNfRVRfTUFYKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy00MDMtXHRcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfbGliLmM9MTk5PXZvaWQgc3RtbWFjX2R3bWFjNF9zZXRfbWFjX2FkZHIodm9pZCBfX2lvbWVtICppb2FkZHIsIGNvbnN0IHU4IGFkZHJbNl0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jLTIwOC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jOjIwOTpcdGRhdGEgfD0gRklFTERfUFJFUChHTUFDX0hJX0RDUywgU1RNTUFDX0NIQU4wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9saWIuYy0yMTAtXHR3cml0ZWwoZGF0YSB8IEdNQUNfSElfUkVHX0FFLCBpb2FkZHIgJiM0MzsgaGlnaCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC02LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo3OiNpZm5kZWYgX19TVE1NQUNfRFdYR01BQzJfSF9fXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjg6I2RlZmluZSBfX1NUTU1BQ19EV1hHTUFDMl9IX19cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oPTQ2OD1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19kZXNjX29wcyBkd3hnbWFjMjEwX2Rlc2Nfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC00NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjQ3MDojZW5kaWYgLyogX19TVE1NQUNfRFdYR01BQzJfSF9fICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jPTQyOD1zdGF0aWMgaW50IGR3eGdtYWMyX3NldF9scGlfbW9kZShzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtNDM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jOjQzNTpcdGlmIChtb2RlID09IFNUTU1BQ19MUElfVElNRVIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtNDM2LVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTQzOC1cdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0xQSV9DVFJMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzo0Mzk6XHRpZiAobW9kZSA9PSBTVE1NQUNfTFBJX0ZPUkNFRCkge1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0ODAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBgc3RtbWFjYCBEcml2ZXIgQWNjZXNzaWJpbGl0eSBpbiBGdXp6aW5nIEVudmlyb25tZW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYHN0bW1hY2Ag4oCTIHRoYXQmIzM5O3MgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlciwgYW5kIGFsc28gcmVsYXRlcyB0byB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMsIG9yIERXTUFDLiBUaGUgcXVlc3Rpb24gaXM6IGNhbiBJIHJlYWNoIHRoaXMgaW4gYSBmdXp6aW5nIGVudmlyb25tZW50PyBDYW4gSSBnZXQgYXQgaXQgdGhyb3VnaCBRRU1VIG9yIGEgY29tcGFyYWJsZSBzZXR1cD8KCkkgbmVlZCB0byBjb25maXJtIGlmIGl0JiMzOTtzIGVtdWxhdGVkIG9yIGFjY2Vzc2libGUuIElzIHRoZXJlIGEgcGxhdGZvcm0gZGV2aWNlIG9yIFBDSSBkZXZpY2UgdGhhdCBlbXVsYXRlcyBpdD8gSXMgdGhlcmUgYW4gZWFzeSB3YXkgdG8gZ2V0IGF0IHRoZSBzdG1tYWMgZGV2aWNlIHRocm91Z2ggc3RhbmRhcmQgUUVNVSAvIHN5emthbGxlciBhbWQ2NCBmdXp6aW5nPyBJIG5lZWQgdG8gY2hlY2sgdGhlIFFFTVUgc3VwcG9ydC4gT3IgaXMgaXQganVzdCBhIHN0cmljdGx5IHBoeXNpY2FsIEV0aGVybmV0IE5JQyBkcml2ZXI/CgpBaCwgcmlnaHQsIHRoaXMgaXMgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBTZWN0aW9uIDIgc2F5cyAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VJiMzNDsuIFRoaXMgbWVhbnMgbXkgdGFyZ2V0IGlzbiYjMzk7dCBnb2luZyB0byBiZSBlYXN5IQoKU28sIHdoYXQgRXRoZXJuZXQgZHJpdmVycyAqYXJlKiBlbXVsYXRlZCBpbiBRRU1VPyBMZXQmIzM5O3MgcmVmcmVzaCBteSBtZW1vcnkuIEluIHN0YW5kYXJkIFFFTVUgeDg2XzY0IC8gYW1kNjQgLyBHQ0UsIHdlIGhhdmU6IGUxMDAwLCBlMTAwMGUsIGlnYiwgcnRsODEzOSwgODEzOWNwLCB2aXJ0aW8tbmV0LCBwY25ldCwgbmUya19wY2ksIHN1bmdlbSwgdHVsaXAgLyBkZWMyMTE0MCwgcm9ja2VyLCB2bXhuZXQzLCB1c2ItbmV0IC8gY2RjX2V0aGVyIC8gcm5kaXMsIHZtd2FyZSB2bXhuZXQzLCBhbmQgaW50ZWwgODI1NXggKGUxMDApLgoKQWxyaWdodCwgd2hhdCBhYm91dCBgc3RtbWFjYD8gSXQmIzM5O3MgRFdNQUMsIG9yIEdNQUMsIG9yIFhHTUFDLCB1c2VkIG9uIEFSTS9BUk02NCBTb0NzLCBsaWtlIEFsbHdpbm5lciwgUm9ja2NoaXAsIEFtbG9naWMsIFNUTTMyLCBOWFAgaS5NWCwgVGVncmEsIEludGVsIEVsa2hhcnQgTGFrZSAvIFRpZ2VyIExha2UgLyBBbGRlciBMYWtlIFBDSCBpbnRlZ3JhdGVkIE1BQywgTG9vbmdzb24uIFNvLCBubyBsdWNrIGhlcmUuCgoqKk5vLioqIERvZXMgc3RhbmRhcmQgUUVNVSB4ODZfNjQgLyBhbWQ2NCAqZW11bGF0ZSogYW55IGBzdG1tYWNgIGRldmljZT8gSXQgc2VlbXMgbm8uIEkgbWlnaHQgZ2V0IGEgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBvciBzb21lIEFSTS1zcGVjaWZpYyBtYWNoaW5lcyBsaWtlIGBvcmFuZ2VwaS1wY2AsIGJ1dCBvbiB4ODZfNjQgLyBhbWQ2NCDigJMgdGhlIGFyY2hpdGVjdHVyZSBJJiMzOTttIGZvY3VzZWQgb24g4oCTIGBzdG1tYWNgIG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlIGxpa2UgdGhlIEludGVsIFRpZ2VyIExha2UgLyBFbGtoYXJ0IExha2UgUENJIERXTUFDIG9yIExvb25nc29uIFBDSSBEV01BQyBvciBNb3RvcmNvbW0gUENJIERXTUFDLCBvciBBUk0gU29DIHBsYXRmb3JtIGRldmljZXMuCgpTbywgdGhlIGxhc3QgY2hlY2suIElzIHRoZXJlIGFueSB2aXJ0dWFsIGJ1cyBvciBlbXVsYXRvciBvciBkdW1teSBkZXZpY2UgdGhhdCB1c2VzIGBzdG1tYWNgPyBMZXQmIzM5O3MgaW52ZXN0aWdhdGU6IGNhbiBgc3RtbWFjYCBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBhIHBsYXRmb3JtIGRldmljZSwgbmV0bGluaywgc3lzZnMsIG9yIGFueXRoaW5nLCBvciBpcyBpdCBzdHJpY3RseSBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcj8gSSBzdXNwZWN0IHRoZSBsYXR0ZXIsIGJ1dCBJIG5lZWQgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsYXRmb3JtX2RldmljZV9yZWdpc3Rlci4qc3RtbWFjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxODU1CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZWJ1Z2dpbmcgTmV0d29yayBEcml2ZXIgQ29tcGF0aWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGhpdHRpbmcgYSB3YWxsIHdpdGggdGhpcyBFdGhlcm5ldCBpc3N1ZS4gVGltZSB0byBkaWcgaW50byB0aGUgZHJpdmVyIGNvZGUuIEdpdmVuIHRoZSBhcmNoaXRlY3R1cmUgSSYjMzk7bSBsb29raW5nIGF0LCB0aGUgbW9zdCBsaWtlbHkgY3VscHJpdHMgYXJlIHRoZSBjb3JlIFNUTU1BQyBkcml2ZXIsIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBjb2RlLCBvciB0aGUgSW50ZWwtc3BlY2lmaWMgRFdtYWMgaW1wbGVtZW50YXRpb24gaWYgaXQmIzM5O3MgYmFzZWQgb24gdGhhdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgYHN0bW1hY19wY2kuY2AsIHRoYXQgaGFuZGxlcyBQQ0kgYnVzIGluaXRpYWxpemF0aW9uLiBJZiB0aGF0IGRvZXNuJiMzOTt0IHlpZWxkIGFueXRoaW5nIGltbWVkaWF0ZWx5LCBJJiMzOTtsbCBicmFuY2ggb3V0IHRvIGBzdG1tYWMtcGxhdGZvcm0uY2AsIHNpbmNlIHRoYXQgd2lsbCBoYW5kbGUgdGhlIGJhc2UgbGF5ZXIgcGxhdGZvcm0gc2V0dXAuIE9mIGNvdXJzZSBJIHNob3VsZCBpbnZlc3RpZ2F0ZSBgZHdtYWMtaW50ZWwuY2AgaWYgdGhpcyBhIEludGVsLWJhc2VkIERXbWFjIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBidXMgaW50ZXJhY3Rpb24sIHRoZSBkZXZpY2UgcHJvYmluZywgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMg4oCTIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBhbnkgb2J2aW91cyBoYXJkd2FyZSBkaWZmZXJlbmNlcyBvciB1bmV4cGVjdGVkIHJlZ2lzdGVyIHNldHRpbmdzIHRoYXQgbWlnaHQgYmUgdGhlIHNvdXJjZSBvZiB0aGUgdHJvdWJsZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXNlIGZpbGVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDkwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgIDM6XHQgIFRoaXMgY29udGFpbnMgdGhlIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIHBjaSBkcml2ZXIuXG4gICA0Olx0XG4gICA1Olx0ICBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiAgVmF5YXZ5YSBMYWJzIFB2dCBMdGRcbiAgIDY6XHRcbiAgIDc6XHRcbiAgIDg6XHQgIEF1dGhvcjogUmF5YWdvbmQgS29rYXRhbnVyIFx1MDAzY3JheWFnb25kQHZheWF2eWFsYWJzLmNvbVx1MDAzZVxuICAgOTpcdCAgQXV0aG9yOiBHaXVzZXBwZSBDYXZhbGxhcm8gXHUwMDNjcGVwcGUuY2F2YWxsYXJvQHN0LmNvbVx1MDAzZVxuICAxMDpcdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gIDExOlx0XG4gIDEyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcdTAwM2VcbiAgMTM6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2kuaFx1MDAzZVxuICAxNDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtaS5oXHUwMDNlXG4gIDE1Olx0XG4gIDE2Olx0I2luY2x1ZGUgXCYjMzQ7c3RtbWFjLmhcJiMzNDtcbiAgMTc6XHQjaW5jbHVkZSBcJiMzNDtzdG1tYWNfbGlicGNpLmhcJiMzNDtcbiAgMTg6XHRcbiAgMTk6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcbiAgMjA6XHRcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcbiAgMjE6XHR9O1xuICAyMjpcdFxuICAyMzpcdHN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuICAyNDpcdHtcbiAgMjU6XHRcdC8qIGNsa19jc3JfaSA9IDIwLTM1TUh6IFx1MDAyNiBNREMgPSBjbGtfY3NyX2kvMTYgKi9cbiAgMjY6XHRcdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjBfMzVNO1xuICAyNzpcdFx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XG4gIDI4Olx0XHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcbiAgMjk6XHRcbiAgMzA6XHRcdHBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VuZWVkc19yZXNldCA9IHRydWU7XG4gIDMxOlx0fVxuICAzMjpcdFxuICAzMzpcdHN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAgMzQ6XHRcdFx0XHQgICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuICAzNTpcdHtcbiAgMzY6XHRcdC8qIFNldCBjb21tb24gZGVmYXVsdCBkYXRhIGZpcnN0ICovXG4gIDM3Olx0XHRjb21tb25fZGVmYXVsdF9kYXRhKHBsYXQpO1xuICAzODpcdFxuICAzOTpcdFx0cGxhdC1cdTAwM2VidXNfaWQgPSAxO1xuICA0MDpcdFx0cGxhdC1cdTAwM2VwaHlfYWRkciA9IDA7XG4gIDQxOlx0XHRwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcbiAgNDI6XHRcbiAgNDM6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmwgPSAzMjtcbiAgNDQ6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmx4OCA9IHRydWU7XG4gIDQ1Olx0XHQvKiBUT0RPOiBBWEkgKi9cbiAgNDY6XHRcbiAgNDc6XHRcdHJldHVybiAwO1xuICA0ODpcdH1cbiAgNDk6XHRcbiAgNTA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XG4gIDUxOlx0XHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxuICA1MjpcdH07XG4gIDUzOlx0XG4gIDU0Olx0c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAgNTU6XHRcdFx0XHRcdCAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcbiAgNTY6XHR7XG4gIDU3Olx0XHRpbnQgaTtcbiAgNTg6XHRcbiAgNTk6XHRcdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XG4gIDYwOlx0XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7XG4gIDYxOlx0XHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcbiAgNjI6XHRcdHBsYXQtXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xuICA2MzpcdFx0cGxhdC1cdTAwM2VwbXQgPSB0cnVlO1xuICA2NDpcdFxuICA2NTpcdFx0LyogU2V0IGRlZmF1bHQgbnVtYmVyIG9mIFJYIGFuZCBUWCBxdWV1ZXMgdG8gdXNlICovXG4gIDY2Olx0XHRwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2UgPSA0O1xuICA2NzpcdFx0cGxhdC1cdTAwM2VyeF9xdWV1ZXNfdG9fdXNlID0gNDtcbiAgNjg6XHRcbiAgNjk6XHRcdHBsYXQtXHUwMDNldHhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1RYX0FMR09SSVRITV9XUlI7XG4gIDcwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7IGkmIzQzOyYjNDM7KSB7XG4gIDcxOlx0XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XG4gIDcyOlx0XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX2NmZ1tpXS53ZWlnaHQgPSAyNTtcbiAgNzM6XHRcdFx0aWYgKGkgXHUwMDNlIDApXG4gIDc0Olx0XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLnRic19lbiA9IDE7XG4gIDc1Olx0XHR9XG4gIDc2Olx0XG4gIDc3Olx0XHRwbGF0LVx1MDAzZXJ4X3NjaGVkX2FsZ29yaXRobSA9IE1UTF9SWF9BTEdPUklUSE1fU1A7XG4gIDc4Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7IGkmIzQzOyYjNDM7KVxuICA3OTpcdFx0XHRwbGF0LVx1MDAzZXJ4X3F1ZXVlc19jZmdbaV0ubW9kZV90b191c2UgPSBNVExfUVVFVUVfRENCO1xuICA4MDpcdFxuICA4MTpcdFx0cGxhdC1cdTAwM2VidXNfaWQgPSAxO1xuICA4MjpcdFx0cGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XG4gIDgzOlx0XG4gIDg0Olx0XHRwbGF0LVx1MDAzZWRtYV9jZmctXHUwMDNlcGJsID0gMzI7XG4gIDg1Olx0XHRwbGF0LVx1MDAzZWRtYV9jZmctXHUwMDNlcGJseDggPSB0cnVlO1xuICA4NjpcdFxuICA4NzpcdFx0LyogQXhpIENvbmZpZ3VyYXRpb24gKi9cbiAgODg6XHRcdHBsYXQtXHUwMDNlYXhpID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnBsYXQtXHUwMDNlYXhpKSwgR0ZQX0tFUk5FTCk7XG4gIDg5Olx0XHRpZiAoIXBsYXQtXHUwMDNlYXhpKVxuICA5MDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU3MQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgU1RNTUFDIERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdGhlIGBzdG1tYWNgIGRyaXZlciBnZXRzIGluaXRpYWxpemVkLiBJIGtub3cgaXQmIzM5O3MgcmVnaXN0ZXJlZCB3aXRoIGVpdGhlciBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgb3IgYHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcmAsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC4gVGhlIGtleSBpcyBpbiBob3cgaXQmIzM5O3MgbWF0Y2hlZCB0byB0aGUgaGFyZHdhcmUg4oCTIHdoZXRoZXIgdGhhdCYjMzk7cyB0aHJvdWdoIFBDSSB2ZW5kb3IgYW5kIGRldmljZSBJRHMgd2hlbiB3ZSYjMzk7cmUgdGFsa2luZyBQQ0ktYmFzZWQgaGFyZHdhcmUsIG9yIHVzaW5nIGRldmljZSB0cmVlIG5vZGVzIGZvciBwbGF0Zm9ybSBkZXZpY2VzLgoKSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIG1hdGNoaW5nIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgUENJIElEIHRhYmxlIGluIGBzdG1tYWNfcGNpLmNgIGFuZCBhbHNvIHRha2UgYSBsb29rIGF0IGBkd21hYy1pbnRlbC5jYC4gVGhhdCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBrbm93cyB3aGVuIGl0JiMzOTtzIHRhbGtpbmcgdG8gdGhlIHJpZ2h0IHBpZWNlIG9mIGhhcmR3YXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGluIHRob3NlIHRhYmxlcy4gQXJlIHdlIHJlbHlpbmcgb24gdmVyeSBzcGVjaWZpYyBJRHMsIG9yIGFyZSB0aGVyZSBhbnkgd2lsZGNhcmQgZW50cmllcyBvciBtb3JlIGZsZXhpYmxlIG1hdGNoaW5nIG1lY2hhbmlzbXMgaW4gcGxhY2U/IEkgbmVlZCB0byBsb29rIGNsb3NlciBhdCB3aGF0IHRob3NlIHRhYmxlcyBjb250YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTQ1Olx0XHRpZiAocmV0KSB7XG4gMTQ2Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBFUlJPUjogZmFpbGVkIHRvIGVuYWJsZSBkZXZpY2VcXG5cJiMzNDssXG4gMTQ3Olx0XHRcdFx0X19mdW5jX18pO1xuIDE0ODpcdFx0XHRyZXR1cm4gcmV0O1xuIDE0OTpcdFx0fVxuIDE1MDpcdFxuIDE1MTpcdFx0LyogR2V0IHRoZSBiYXNlIGFkZHJlc3Mgb2YgZGV2aWNlICovXG4gMTUyOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBQQ0lfU1REX05VTV9CQVJTOyBpJiM0MzsmIzQzOykge1xuIDE1MzpcdFx0XHRpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCBpKSA9PSAwKVxuIDE1NDpcdFx0XHRcdGNvbnRpbnVlO1xuIDE1NTpcdFx0XHRyZXMuYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBkZXYsIGksIFNUTU1BQ19SRVNPVVJDRV9OQU1FKTtcbiAxNTY6XHRcdFx0aWYgKElTX0VSUihyZXMuYWRkcikpXG4gMTU3Olx0XHRcdFx0cmV0dXJuIFBUUl9FUlIocmVzLmFkZHIpO1xuIDE1ODpcdFx0XHRicmVhaztcbiAxNTk6XHRcdH1cbiAxNjA6XHRcbiAxNjE6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuIDE2MjpcdFxuIDE2MzpcdFx0cmV0ID0gaW5mby1cdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcbiAxNjQ6XHRcdGlmIChyZXQpXG4gMTY1Olx0XHRcdHJldHVybiByZXQ7XG4gMTY2Olx0XG4gMTY3Olx0XHRyZXMud29sX2lycSA9IHBkZXYtXHUwMDNlaXJxO1xuIDE2ODpcdFx0cmVzLmlycSA9IHBkZXYtXHUwMDNlaXJxO1xuIDE2OTpcdFxuIDE3MDpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNldHNvZWUgPSAxO1xuIDE3MTpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlbXJ4cGVlID0gMTtcbiAxNzI6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW1lc3RlZSA9IDE7XG4gMTczOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtcnhlZSA9IDE7XG4gMTc0Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtdHhlZSA9IDE7XG4gMTc1Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VlcHNpID0gMTtcbiAxNzY6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZWVkcHAgPSAxO1xuIDE3NzpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlcHJ0eWVuID0gMTtcbiAxNzg6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZXRtb3V0ZW4gPSAxO1xuIDE3OTpcdFxuIDE4MDpcdFx0cGxhdC1cdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG4gMTgxOlx0XHRwbGF0LVx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XG4gMTgyOlx0XG4gMTgzOlx0XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbiAxODQ6XHR9XG4gMTg1Olx0XG4gMTg2Olx0LyoqXG4gMTg3Olx0ICogc3RtbWFjX3BjaV9yZW1vdmVcbiAxODg6XHQgKlxuIDE4OTpcdCAqIEBwZGV2OiBwbGF0Zm9ybSBkZXZpY2UgcG9pbnRlclxuIDE5MDpcdCAqIERlc2NyaXB0aW9uOiB0aGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBtYWluIHRvIGZyZWUgdGhlIG5ldCByZXNvdXJjZXMuXG4gMTkxOlx0ICovXG4gMTkyOlx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gMTkzOlx0e1xuIDE5NDpcdFx0c3RtbWFjX2R2cl9yZW1vdmUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDE5NTpcdH1cbiAxOTY6XHRcbiAxOTc6XHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xuIDE5ODpcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcdFx0MHgwNzAwXG4gMTk5Olx0XG4gMjAwOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcdFx0MHgxMTA4XG4gMjAxOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXHRcdDB4NzEwMlxuIDIwMjpcdFxuIDIwMzpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbiAyMDQ6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTA2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFNUTU1BQyBhbmQgUUVNVSBFbXVsYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIHN0YXJ0IGJ5IGNvbnNpZGVyaW5nIGBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNgIGFuZCByZWxhdGVkIFBDSSBkcml2ZXJzLiBCZWZvcmUgZGl2aW5nIGRlZXAsIEkmIzM5O2xsIHF1aWNrbHkgcmVmZXIgdG8gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeS4gVGhpcyBpcyBpbXBvcnRhbnQ6IGFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHZlbmRvci1zcGVjaWZpYyB0aGF0IG5lZWRzIGEgcGh5c2ljYWwgY2FyZCwgbGlrZSBzb21lIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnM/ICBUaGUgZXhhbXBsZXMgbGlzdGVkIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgYXJlIGdvb2QgcmVmZXJlbmNlIHBvaW50cy4KClRoZSBjb3JlIHF1ZXN0aW9uIG5vdyBpczogZG9lcyBgc3RtbWFjYCBvciBgRFdNQUNgIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYW4gQVNJQyBub3Qgc2ltdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8KCkkga25vdyBgc3RtbWFjYCBpcyB0aGUgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoRFdNQUMsIEdNQUMsIFhHTUFDKSBhbmQgYWxzbyBzdXBwb3J0cyBTVE1pY3JvIFNUTTMyIGFuZCBTVGkgRXRoZXJuZXQgY29udHJvbGxlcnMuIE5vdywgdGhlIGtleSBpcyB3aGV0aGVyIHRoaXMgaGFyZHdhcmUgaXMgKnByZXNlbnQqIG9yICplbXVsYXRlZCogaW4gYSBzdGFuZGFyZCBRRU1VIGFtZDY0IHNldHVwLgoKSW1tZWRpYXRlbHksIHRoZSBhbnN3ZXIgaXMgKm5vKi4gU3RhbmRhcmQgUUVNVSBmb3IgYW1kNjQgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgU3lub3BzeXMgRFdNQUMgb3IgU1RNaWNybyBNQUMuIEkga25vdyB0aGF0IHRoZSBzdGFuZGFyZCBuZXR3b3JrIGRldmljZXMgZW11bGF0ZWQgaW4gUUVNVSBmb3IgeDg2XzY0IGFyZSB0aGluZ3MgbGlrZSBgZTEwMDBgLCBgcGNuZXRgLCBgdmlydGlvLW5ldC1wY2lgLCBldGMuIEkmIzM5O2xsIG1ha2UgYSBxdWljayBsaXN0IHRvIGpvZyBteSBtZW1vcnk6IGBlMTAwMCwgZTEwMDAtODI1NDRnYywgZTEwMDAtODI1NDVlbSwgZTEwMDBlLCBpZ2IsIGk4MjU1MCwgaTgyNTUxLCBpODI1NTdhLCBpODI1NTdiLCBpODI1NTdjLCBpODI1NThhLCBpODI1NThiLCBpODI1NTlhLCBpODI1NTliLCBpODI1NTljLCBpODI1NTllciwgaTgyNTYyLCBuZTJrX3BjaSwgcGNuZXQsIHJ0bDgxMzksIHR1bGlwLCB2bXhuZXQzLCB2aXJ0aW8tbmV0LXBjaSwgcm9ja2VyYC4KClNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogaXMgYHN0bW1hY2Agb3IgYGR3bWFjYCBlbXVsYXRlZCBpbiAqYW55KiBRRU1VIGZvciB4ODZfNjQ/IE5vLiBRRU1VIGhhbmRsZXMgbmV0d29yayBkaWZmZXJlbnRseSBmb3IgQVJNLCBzdWNoIGFzICBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIGZvciBBUk0gYG9yYW5nZXBpLXBjYCBhbmQgYGlteF9mZWNgIGZvciBBUk0gaS5NWCwgYW5kIG1heWJlIGBjYWRlbmNlX2dlbWAgZm9yIFhpbGlueCBaeW5xIEFSTS4gTm9uZSBvZiB0aG9zZSBhcmUgYHN0bW1hY2AsIGFuZCBjcml0aWNhbGx5LCBub25lIGFyZSBpbiB0aGUgc3RhbmRhcmQgYW1kNjQgLyB4ODZfNjQgUUVNVSBidWlsZC4KCkhvd2V2ZXIsIEkmIzM5O20gbm90IGdvaW5nIHRvIHByZW1hdHVyZWx5IGRlY2xhcmUgZGVmZWF0LiBDYW4gYHN0bW1hY2AgcG90ZW50aWFsbHkgYmUgKnByb2JlZCogb3IgKmluc3RhbnRpYXRlZCogdGhyb3VnaCBhbm90aGVyIG1lY2hhbmlzbT8gUGVyaGFwcyB0aGVyZSBhcmUgaW5kaXJlY3QgY2FsbHMgb3IgbW9jayBkcml2ZXJzIGludm9sdmVkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGF2ZW51ZSB0byBleHBsb3JlIOKAkyBjaGVja2luZyBmb3IgYW55IG90aGVyIGNhbGxlcnMgb3IgbW9jayBkcml2ZXJzIGFzc29jaWF0ZWQgd2l0aCBgc3RtbWFjYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjgzPXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMzA6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjExODpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzQxOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9Mzc0PXN0YXRpYyBpbnQgaXBxODA2eF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo0ODM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU2MjpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU2My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTQyPXN0YXRpYyBpbnQgbHBjMTh4eF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo2ODpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NTk5PXN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjQyOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NDc9c3RhdGljIGludCBtZXNvbjZfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo3MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTc0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9MzgyPXN0YXRpYyBpbnQgbWVzb244Yl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NDY0Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI5Mz1zdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM1OTpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzYwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NDg9c3RhdGljIGludCByem4xX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjY4Olx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02OS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MzU9c3RhdGljIGludCBzb3BoZ29fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjY1Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02Ni19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMDc6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jPTkwPXN0YXRpYyBpbnQgc3RhcmZpdmVfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM6MTUzOlx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTU0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTUyNT1zdGF0aWMgaW50IHN0bTMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjU3OTpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTExMDU9c3RhdGljIGludCBzdW44aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwMjpcdC8qIHRoZSBNQUMgaXMgcnVudGltZSBzdXNwZW5kZWQgYWZ0ZXIgc3RtbWFjX2R2cl9wcm9iZSgpLCBzbyB3ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjAzLVx0ICogbmVlZCB0byBlbnN1cmUgdGhlIE1BQyByZXN1bWUgYmFjayBiZWZvcmUgb3RoZXIgb3BlcmF0aW9ucyBzdWNoXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjA4LVx0LyogVGhlIG11eCBtdXN0IGJlIHJlZ2lzdGVyZWQgYWZ0ZXIgcGFyZW50IE1ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwOTpcdCAqIHNvIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjEwLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjM3NjpcdGVyciA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3Ny1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yMDU9c3RhdGljIGludCB2aXNjb250aV9ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjM3Olx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMT12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTI6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDEzLVx0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03ODE2PUVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbGF0X2RhdF9hbGxvYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc4MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc4MTg6c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODE5LVx0XHRcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTIwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTIxOiAqIHN0bW1hY19kdnJfcHJvYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMi0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODEzMDppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzEtXHRcdCAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxNDE6XHRyZXQgPSBfX3N0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE0Mi1cdGlmIChyZXQgXHUwMDI2XHUwMDI2IHBsYXRfZGF0LVx1MDAzZWV4aXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTQ2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODE0NzpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfZHZyX3Byb2JlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE0OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODQ2PWludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NTU6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1Ni19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMjk3CgkJCQkJCQlvdXRwdXQ6IDExMQoJCQkJCQkJdGhvdWdodHM6IDUxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmlhZ2UgRGVjaXNpb246IFdvcnRoRnV6emluZyA9IEZhbHNlIGZvciBzdG1tYWMgRHJpdmVyIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIG91dGxpbmVkIGluIFNlY3Rpb24gMiBvZiB0aGUgZnV6emluZyBpbnN0cnVjdGlvbnMuIFRoZSBjb3JlIG9mIG15IGFzc2Vzc21lbnQgcmVzdHMgb24gZGV0ZXJtaW5pbmcgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byB0aGUgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKSYjMzQ7IGNhdGVnb3J5LgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNyaXRlcmlvbi4gVGhlIGluc3RydWN0aW9ucyBkZWZpbmUgdGhpcyBhcyBjb2RlIHJlbGlhbnQgb24gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gQ29uc2lkZXJpbmcgbXkgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgYW1kNjQsIGFuZCB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uIOKAkyBgc3RtbWFjYCDigJMgdGhpcyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLgoKYHN0bW1hY2AgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9gKSBpcyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgYW5kIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBjb250cm9sbGVycy4gRnJvbSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBoYXJkd2FyZSwgdGhlc2UgY29udHJvbGxlcnMgYXJlIHBoeXNpY2FsIGhhcmR3YXJlIChTb0MvUENJKSBjb21wb25lbnRzLiBTdGFuZGFyZCBRRU1VIG9yIEdDRSBWTXMgb24gYW1kNjQgZG9uJiMzOTt0IGVtdWxhdGUgdGhpcyB0eXBlIG9mIHBoeXNpY2FsIGhhcmR3YXJlLiBZb3UmIzM5O2QgbmVlZCBkZWRpY2F0ZWQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIGZvciBwcm9wZXIgZW11bGF0aW9uLiBDb25zZXF1ZW50bHksIHRoZXNlIGNoYW5nZXMgYXJlLCBmb3IgYWxsIHByYWN0aWNhbCBwdXJwb3Nlcywgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudC4KClNvLCBsZXQmIzM5O3MgcHV0IGl0IGFsbCB0b2dldGhlcjogSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIE15IHJlYXNvbmluZyBpcyBjb25jaXNlOiB0aGUgYHN0bW1hY2AgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIChTb0MvUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzKSBub3QgZW11bGF0ZWQgaW4gdGhlIHVzdWFsIFFFTVUvR0NFIGFtZDY0IGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgbGVmdCBlbXB0eS4KCkEgcXVpY2sgZmluYWwgY2hlY2s6IEkgY2FuIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb250YWluZWQgd2l0aGluIGBzdG1tYWNgOiBgY2hhaW5fbW9kZS5jYCwgYHJpbmdfbW9kZS5jYCwgYW5kIGBzdG1tYWNfbWFpbi5jYCBhcmUgYWxsIGNsZWFybHkgcGFydCBvZiB0aGUgYHN0bW1hY2AgZHJpdmVyLgoKTm93LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKHNwZWNpZmljYWxseSBoYW5kbGluZyBUeCBETUEgbWFwcGluZyBmYWlsdXJlIHJvbGxiYWNrcyBpbiBqdW1ibyBmcmFtZSB0cmFuc21pc3Npb24pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSAvIFNvQyBjb250cm9sbGVycyAob3IgZGVkaWNhdGVkIFBDSWUgZGV2aWNlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIG1vZGlmeSB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChzcGVjaWZpY2FsbHkgaGFuZGxpbmcgVHggRE1BIG1hcHBpbmcgZmFpbHVyZSByb2xsYmFja3MgaW4ganVtYm8gZnJhbWUgdHJhbnNtaXNzaW9uKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLyBTb0MgY29udHJvbGxlcnMgKG9yIGRlZGljYXRlZCBQQ0llIGRldmljZXMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDg6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjE1LjMxMDE1MTI3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTE3NDA0ODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoc3BlY2lmaWNhbGx5IGhhbmRsaW5nIFR4IERNQSBtYXBwaW5nIGZhaWx1cmUgcm9sbGJhY2tzIGluIGp1bWJvIGZyYW1lIHRyYW5zbWlzc2lvbikuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DIGNvbnRyb2xsZXJzIChvciBkZWRpY2F0ZWQgUENJZSBkZXZpY2VzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjE1LjMxMDE1NzA5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM1Nzk5MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTg1ZDhiZTUyNDA1MGE5MWMzZmRjZTg4OTY5NWI1ZTA5MzQ0MTQyN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCAxMSAwODo0OToxNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmNcXG5pbmRleCA2NjAyNWUyNTA5ZTkxLi44NDE1Yzc0MGVlOWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuY1xcbkBAIC0yMCw2ICsyMCw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHVuc2lnbmVkIGludCBub3BhZ2VkX2xlbiA9IHNrYl9oZWFkbGVuKHNrYik7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IHR4X3EtXFx1MDAzZXByaXZfZGF0YTtcXG4gXFx0dW5zaWduZWQgaW50IGVudHJ5ID0gdHhfcS1cXHUwMDNlY3VyX3R4O1xcbitcXHR1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnkgPSBlbnRyeTtcXG4gXFx0dW5zaWduZWQgaW50IGJtYXgsIGJ1Zl9sZW47XFxuIFxcdHVuc2lnbmVkIGludCBpID0gMSwgbGVuO1xcbiBcXHRzdHJ1Y3QgZG1hX2Rlc2MgKmRlc2M7XFxuQEAgLTU3LDcgKzU4LDcgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYm1heCwgRE1BX1RPX0RFVklDRSk7XFxuIFxcdFxcdFxcdGRlc2MtXFx1MDAzZWRlczIgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGRlczIpKTtcXG4gXFx0XFx0XFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtXFx1MDAzZWRldmljZSwgZGVzMikpXFxuLVxcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4rXFx0XFx0XFx0XFx0Z290byBlcnJfdW5tYXA7XFxuIFxcdFxcdFxcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XFxuIFxcdFxcdFxcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmxlbiA9IGJtYXg7XFxuIFxcdFxcdFxcdHN0bW1hY19wcmVwYXJlX3R4X2Rlc2MocHJpdiwgZGVzYywgMCwgYm1heCwgY3N1bSxcXG5AQCAtNzAsNyArNzEsNyBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBETUFfVE9fREVWSUNFKTtcXG4gXFx0XFx0XFx0ZGVzYy1cXHUwMDNlZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpO1xcbiBcXHRcXHRcXHRpZiAoZG1hX21hcHBpbmdfZXJyb3IocHJpdi1cXHUwMDNlZGV2aWNlLCBkZXMyKSlcXG4tXFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbitcXHRcXHRcXHRcXHRnb3RvIGVycl91bm1hcDtcXG4gXFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0uYnVmID0gZGVzMjtcXG4gXFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ubGVuID0gbGVuO1xcbiBcXHRcXHRcXHQvKiBsYXN0IGRlc2NyaXB0b3IgY2FuIGJlIHNldCBub3cgKi9cXG5AQCAtODMsNiArODQsMjAgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0dHhfcS1cXHUwMDNlY3VyX3R4ID0gZW50cnk7XFxuIFxcbiBcXHRyZXR1cm4gZW50cnk7XFxuK1xcbitlcnJfdW5tYXA6XFxuK1xcdHdoaWxlIChmaXJzdF9lbnRyeSAhPSBlbnRyeSkge1xcbitcXHRcXHRkbWFfdW5tYXBfc2luZ2xlKHByaXYtXFx1MDAzZWRldmljZSxcXG4rXFx0XFx0XFx0XFx0IHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmJ1ZixcXG4rXFx0XFx0XFx0XFx0IHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmxlbixcXG4rXFx0XFx0XFx0XFx0IERNQV9UT19ERVZJQ0UpO1xcbitcXHRcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5idWYgPSAwO1xcbitcXHRcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5sZW4gPSAwO1xcbitcXHRcXHRmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VkbWFfY29uZi5kbWFfdHhfc2l6ZSk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAtMTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgaXNfanVtYm9fZnJtKHVuc2lnbmVkIGludCBsZW4sIGJvb2wgZW5oX2Rlc2MpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmNcXG5pbmRleCBmNzk0OTQxOWViOWZkLi40MTcwYzg5N2JkMWE4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmNcXG5AQCAtMzcsNiArMzcsNyBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRsZW4gPSBub3BhZ2VkX2xlbiAtIGJtYXg7XFxuIFxcbiBcXHRpZiAobm9wYWdlZF9sZW4gXFx1MDAzZSBCVUZfU0laRV84S2lCKSB7XFxuK1xcdFxcdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSA9IGVudHJ5O1xcbiBcXG4gXFx0XFx0ZGVzMiA9IGRtYV9tYXBfc2luZ2xlKHByaXYtXFx1MDAzZWRldmljZSwgc2tiLVxcdTAwM2VkYXRhLCBibWF4LFxcbiBcXHRcXHRcXHRcXHQgICAgICBETUFfVE9fREVWSUNFKTtcXG5AQCAtNjIsOCArNjMsMTUgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0ZGVzMiA9IGRtYV9tYXBfc2luZ2xlKHByaXYtXFx1MDAzZWRldmljZSwgc2tiLVxcdTAwM2VkYXRhICsgYm1heCwgbGVuLFxcbiBcXHRcXHRcXHRcXHQgICAgICBETUFfVE9fREVWSUNFKTtcXG4gXFx0XFx0ZGVzYy1cXHUwMDNlZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpO1xcbi1cXHRcXHRpZiAoZG1hX21hcHBpbmdfZXJyb3IocHJpdi1cXHUwMDNlZGV2aWNlLCBkZXMyKSlcXG4rXFx0XFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtXFx1MDAzZWRldmljZSwgZGVzMikpIHtcXG4rXFx0XFx0XFx0ZG1hX3VubWFwX3NpbmdsZShwcml2LVxcdTAwM2VkZXZpY2UsXFxuK1xcdFxcdFxcdFxcdFxcdCB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5idWYsXFxuK1xcdFxcdFxcdFxcdFxcdCBibWF4LCBETUFfVE9fREVWSUNFKTtcXG4rXFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDtcXG4rXFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0ubGVuID0gMDtcXG4rXFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uaXNfanVtYm8gPSBmYWxzZTtcXG4gXFx0XFx0XFx0cmV0dXJuIC0xO1xcbitcXHRcXHR9XFxuIFxcdFxcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XFxuIFxcdFxcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmxlbiA9IGxlbjtcXG4gXFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0uaXNfanVtYm8gPSB0cnVlO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDI0NjU2YjM1MzUwYjEuLjkwNTA2MTE4NjIxMDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtNDc2NywxNSArNDc2NywxNSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0Ym9vbCBlbmhfZGVzYywgaGFzX3ZsYW4sIHNldF9pYywgaXNfanVtYm8gPSBmYWxzZTtcXG4gXFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcXG4rXFx0dW5zaWduZWQgaW50IGZpcnN0X2VudHJ5LCBlbnRyeSwgdHhfcGFja2V0cztcXG4gXFx0dTMyIHF1ZXVlID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuIFxcdGludCBuZnJhZ3MgPSBza2Jfc2hpbmZvKHNrYiktXFx1MDAzZW5yX2ZyYWdzO1xcbi1cXHR1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnksIHR4X3BhY2tldHM7XFxuIFxcdHN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzICp0eHFfc3RhdHM7XFxuIFxcdHN0cnVjdCBkbWFfZGVzYyAqZGVzYywgKmZpcnN0X2Rlc2M7XFxuIFxcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3E7XFxuIFxcdGludCBpLCBjc3VtX2luc2VydGlvbiA9IDA7XFxuLVxcdGludCBlbnRyeSwgZmlyc3RfdHg7XFxuIFxcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XFxuK1xcdGludCBmaXJzdF90eCwgcmV0O1xcbiBcXHR1MzIgc2R1X2xlbjtcXG4gXFxuIFxcdGlmIChwcml2LVxcdTAwM2V0eF9wYXRoX2luX2xwaV9tb2RlIFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWVlZV9zd190aW1lcl9lbilcXG5AQCAtNDgzMiw5ICs0ODMyLDEwIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRjc3VtX2luc2VydGlvbiA9IHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUw7XFxuIFxcbiBcXHRpZiAodW5saWtlbHkoaXNfanVtYm8pKSB7XFxuLVxcdFxcdGVudHJ5ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTtcXG4tXFx0XFx0aWYgKHVubGlrZWx5KGVudHJ5IFxcdTAwM2MgMCkgXFx1MDAyNlxcdTAwMjYgKGVudHJ5ICE9IC1FSU5WQUwpKVxcbitcXHRcXHRyZXQgPSBzdG1tYWNfanVtYm9fZnJtKHByaXYsIHR4X3EsIHNrYiwgY3N1bV9pbnNlcnRpb24pO1xcbitcXHRcXHRpZiAodW5saWtlbHkocmV0IFxcdTAwM2MgMCkgXFx1MDAyNlxcdTAwMjYgKHJldCAhPSAtRUlOVkFMKSlcXG4gXFx0XFx0XFx0Z290byBkbWFfbWFwX2VycjtcXG4rXFx0XFx0ZW50cnkgPSByZXQ7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGJvb2wgbGFzdF9zZWdtZW50ID0gKG5mcmFncyA9PSAwKTtcXG4gXFxuQEAgLTQ5ODQsNiArNDk4NSwyNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIGRtYV9tYXBfZXJyOlxcbiBcXHRuZXRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIlR4IERNQSBtYXAgZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFxuK1xcdC8qIGVudHJ5IHBvaW50cyBvbmUgcGFzdCB0aGUgbGFzdCBkZXNjcmlwdG9yIHdyaXR0ZW4gZm9yIHRoaXMgZnJhbWU6XFxuK1xcdCAqIG9uIGZhaWx1cmUgaXQgaXMgdGhlIGRlc2NyaXB0b3Igd2hvc2UgRE1BIG1hcHBpbmcgZmFpbGVkLCBzbyB3YWxrXFxuK1xcdCAqIGZyb20gZmlyc3RfZW50cnkgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBlbnRyeS4gIFJlc2V0IGN1cl90eFxcbitcXHQgKiB1bmNvbmRpdGlvbmFsbHkgYXMgYm90aCBzdG1tYWNfdmxhbl9pbnNlcnQoKSBhbmQgc3RtbWFjX2p1bWJvX2ZybSgpXFxuK1xcdCAqIG1heSBoYXZlIGFkdmFuY2VkIGl0LCBhbmQgcmVsZWFzZSB0aGUgVkxBTiBjb250ZXh0IGRlc2NyaXB0b3IuXFxuK1xcdCAqL1xcbitcXHR3aGlsZSAoZmlyc3RfZW50cnkgIT0gZW50cnkpIHtcXG4rXFx0XFx0ZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBmaXJzdF9lbnRyeSk7XFxuK1xcdFxcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi1cXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcXG4rXFx0XFx0c3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkbWFfY29uZiwgcXVldWUsIGZpcnN0X2VudHJ5KTtcXG4rXFx0XFx0Zmlyc3RfZW50cnkgPSBTVE1NQUNfTkVYVF9FTlRSWShmaXJzdF9lbnRyeSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlZG1hX2NvbmYuZG1hX3R4X3NpemUpO1xcbitcXHR9XFxuK1xcbitcXHR0eF9xLVxcdTAwM2VjdXJfdHggPSBmaXJzdF90eDtcXG4rXFx0aWYgKGhhc192bGFuKSB7XFxuK1xcdFxcdGRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfdHgpO1xcbitcXHRcXHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXFx1MDAzZWRlc2NyaXB0b3JfbW9kZSk7XFxuK1xcdH1cXG4gbWF4X3NkdV9lcnI6XFxuIFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4gXFx0cHJpdi1cXHUwMDNleHN0YXRzLnR4X2Ryb3BwZWQrKztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDg6NDk6MTUuOTQ5MDc3MjU2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0Mzg3ODQ2MDE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoc3BlY2lmaWNhbGx5IGhhbmRsaW5nIFR4IERNQSBtYXBwaW5nIGZhaWx1cmUgcm9sbGJhY2tzIGluIGp1bWJvIGZyYW1lIHRyYW5zbWlzc2lvbikuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DIGNvbnRyb2xsZXJzIChvciBkZWRpY2F0ZWQgUENJZSBkZXZpY2VzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTg1ZDhiZTUyNDA1MGE5MWMzZmRjZTg4OTY5NWI1ZTA5MzQ0MTQyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDA4OjQ5OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jXG5pbmRleCA2NjAyNWUyNTA5ZTkxLi44NDE1Yzc0MGVlOWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmNcbkBAIC0yMCw2ICsyMCw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHR1bnNpZ25lZCBpbnQgbm9wYWdlZF9sZW4gPSBza2JfaGVhZGxlbihza2IpO1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gdHhfcS1cdTAwM2Vwcml2X2RhdGE7XG4gXHR1bnNpZ25lZCBpbnQgZW50cnkgPSB0eF9xLVx1MDAzZWN1cl90eDtcbitcdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSA9IGVudHJ5O1xuIFx0dW5zaWduZWQgaW50IGJtYXgsIGJ1Zl9sZW47XG4gXHR1bnNpZ25lZCBpbnQgaSA9IDEsIGxlbjtcbiBcdHN0cnVjdCBkbWFfZGVzYyAqZGVzYztcbkBAIC01Nyw3ICs1OCw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRcdCAgICAgIGJtYXgsIERNQV9UT19ERVZJQ0UpO1xuIFx0XHRcdGRlc2MtXHUwMDNlZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpO1xuIFx0XHRcdGlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LVx1MDAzZWRldmljZSwgZGVzMikpXG4tXHRcdFx0XHRyZXR1cm4gLTE7XG4rXHRcdFx0XHRnb3RvIGVycl91bm1hcDtcbiBcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XG4gXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBibWF4O1xuIFx0XHRcdHN0bW1hY19wcmVwYXJlX3R4X2Rlc2MocHJpdiwgZGVzYywgMCwgYm1heCwgY3N1bSxcbkBAIC03MCw3ICs3MSw3IEBAIHN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRcdCAgICAgIERNQV9UT19ERVZJQ0UpO1xuIFx0XHRcdGRlc2MtXHUwMDNlZGVzMiA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZGVzMikpO1xuIFx0XHRcdGlmIChkbWFfbWFwcGluZ19lcnJvcihwcml2LVx1MDAzZWRldmljZSwgZGVzMikpXG4tXHRcdFx0XHRyZXR1cm4gLTE7XG4rXHRcdFx0XHRnb3RvIGVycl91bm1hcDtcbiBcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XG4gXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBsZW47XG4gXHRcdFx0LyogbGFzdCBkZXNjcmlwdG9yIGNhbiBiZSBzZXQgbm93ICovXG5AQCAtODMsNiArODQsMjAgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHR4X3EtXHUwMDNlY3VyX3R4ID0gZW50cnk7XG4gXG4gXHRyZXR1cm4gZW50cnk7XG4rXG4rZXJyX3VubWFwOlxuK1x0d2hpbGUgKGZpcnN0X2VudHJ5ICE9IGVudHJ5KSB7XG4rXHRcdGRtYV91bm1hcF9zaW5nbGUocHJpdi1cdTAwM2VkZXZpY2UsXG4rXHRcdFx0XHQgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5idWYsXG4rXHRcdFx0XHQgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5sZW4sXG4rXHRcdFx0XHQgRE1BX1RPX0RFVklDRSk7XG4rXHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDtcbitcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5sZW4gPSAwO1xuK1x0XHRmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LFxuK1x0XHRcdFx0XHRcdHByaXYtXHUwMDNlZG1hX2NvbmYuZG1hX3R4X3NpemUpO1xuK1x0fVxuK1xuK1x0cmV0dXJuIC0xO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBpc19qdW1ib19mcm0odW5zaWduZWQgaW50IGxlbiwgYm9vbCBlbmhfZGVzYylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9yaW5nX21vZGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jXG5pbmRleCBmNzk0OTQxOWViOWZkLi40MTcwYzg5N2JkMWE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvcmluZ19tb2RlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jXG5AQCAtMzcsNiArMzcsNyBAQCBzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0bGVuID0gbm9wYWdlZF9sZW4gLSBibWF4O1xuIFxuIFx0aWYgKG5vcGFnZWRfbGVuIFx1MDAzZSBCVUZfU0laRV84S2lCKSB7XG4rXHRcdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSA9IGVudHJ5O1xuIFxuIFx0XHRkZXMyID0gZG1hX21hcF9zaW5nbGUocHJpdi1cdTAwM2VkZXZpY2UsIHNrYi1cdTAwM2VkYXRhLCBibWF4LFxuIFx0XHRcdFx0ICAgICAgRE1BX1RPX0RFVklDRSk7XG5AQCAtNjIsOCArNjMsMTUgQEAgc3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZGVzMiA9IGRtYV9tYXBfc2luZ2xlKHByaXYtXHUwMDNlZGV2aWNlLCBza2ItXHUwMDNlZGF0YSArIGJtYXgsIGxlbixcbiBcdFx0XHRcdCAgICAgIERNQV9UT19ERVZJQ0UpO1xuIFx0XHRkZXNjLVx1MDAzZWRlczIgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGRlczIpKTtcbi1cdFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtXHUwMDNlZGV2aWNlLCBkZXMyKSlcbitcdFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKHByaXYtXHUwMDNlZGV2aWNlLCBkZXMyKSkge1xuK1x0XHRcdGRtYV91bm1hcF9zaW5nbGUocHJpdi1cdTAwM2VkZXZpY2UsXG4rXHRcdFx0XHRcdCB0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmJ1ZixcbitcdFx0XHRcdFx0IGJtYXgsIERNQV9UT19ERVZJQ0UpO1xuK1x0XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtmaXJzdF9lbnRyeV0uYnVmID0gMDtcbitcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZmlyc3RfZW50cnldLmxlbiA9IDA7XG4rXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5pc19qdW1ibyA9IGZhbHNlO1xuIFx0XHRcdHJldHVybiAtMTtcbitcdFx0fVxuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmJ1ZiA9IGRlczI7XG4gXHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ubGVuID0gbGVuO1xuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbZW50cnldLmlzX2p1bWJvID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggMjQ2NTZiMzUzNTBiMS4uOTA1MDYxMTg2MjEwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC00NzY3LDE1ICs0NzY3LDE1IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0Ym9vbCBlbmhfZGVzYywgaGFzX3ZsYW4sIHNldF9pYywgaXNfanVtYm8gPSBmYWxzZTtcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHR1bnNpZ25lZCBpbnQgbm9wYWdlZF9sZW4gPSBza2JfaGVhZGxlbihza2IpO1xuK1x0dW5zaWduZWQgaW50IGZpcnN0X2VudHJ5LCBlbnRyeSwgdHhfcGFja2V0cztcbiBcdHUzMiBxdWV1ZSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuIFx0aW50IG5mcmFncyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncztcbi1cdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgdHhfcGFja2V0cztcbiBcdHN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzICp0eHFfc3RhdHM7XG4gXHRzdHJ1Y3QgZG1hX2Rlc2MgKmRlc2MsICpmaXJzdF9kZXNjO1xuIFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcTtcbiBcdGludCBpLCBjc3VtX2luc2VydGlvbiA9IDA7XG4tXHRpbnQgZW50cnksIGZpcnN0X3R4O1xuIFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbitcdGludCBmaXJzdF90eCwgcmV0O1xuIFx0dTMyIHNkdV9sZW47XG4gXG4gXHRpZiAocHJpdi1cdTAwM2V0eF9wYXRoX2luX2xwaV9tb2RlIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVlZV9zd190aW1lcl9lbilcbkBAIC00ODMyLDkgKzQ4MzIsMTAgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRjc3VtX2luc2VydGlvbiA9IHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTDtcbiBcbiBcdGlmICh1bmxpa2VseShpc19qdW1ibykpIHtcbi1cdFx0ZW50cnkgPSBzdG1tYWNfanVtYm9fZnJtKHByaXYsIHR4X3EsIHNrYiwgY3N1bV9pbnNlcnRpb24pO1xuLVx0XHRpZiAodW5saWtlbHkoZW50cnkgXHUwMDNjIDApIFx1MDAyNlx1MDAyNiAoZW50cnkgIT0gLUVJTlZBTCkpXG4rXHRcdHJldCA9IHN0bW1hY19qdW1ib19mcm0ocHJpdiwgdHhfcSwgc2tiLCBjc3VtX2luc2VydGlvbik7XG4rXHRcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApIFx1MDAyNlx1MDAyNiAocmV0ICE9IC1FSU5WQUwpKVxuIFx0XHRcdGdvdG8gZG1hX21hcF9lcnI7XG4rXHRcdGVudHJ5ID0gcmV0O1xuIFx0fSBlbHNlIHtcbiBcdFx0Ym9vbCBsYXN0X3NlZ21lbnQgPSAobmZyYWdzID09IDApO1xuIFxuQEAgLTQ5ODQsNiArNDk4NSwyNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBkbWFfbWFwX2VycjpcbiBcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiVHggRE1BIG1hcCBmYWlsZWRcXG5cIik7XG4rXG4rXHQvKiBlbnRyeSBwb2ludHMgb25lIHBhc3QgdGhlIGxhc3QgZGVzY3JpcHRvciB3cml0dGVuIGZvciB0aGlzIGZyYW1lOlxuK1x0ICogb24gZmFpbHVyZSBpdCBpcyB0aGUgZGVzY3JpcHRvciB3aG9zZSBETUEgbWFwcGluZyBmYWlsZWQsIHNvIHdhbGtcbitcdCAqIGZyb20gZmlyc3RfZW50cnkgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBlbnRyeS4gIFJlc2V0IGN1cl90eFxuK1x0ICogdW5jb25kaXRpb25hbGx5IGFzIGJvdGggc3RtbWFjX3ZsYW5faW5zZXJ0KCkgYW5kIHN0bW1hY19qdW1ib19mcm0oKVxuK1x0ICogbWF5IGhhdmUgYWR2YW5jZWQgaXQsIGFuZCByZWxlYXNlIHRoZSBWTEFOIGNvbnRleHQgZGVzY3JpcHRvci5cbitcdCAqL1xuK1x0d2hpbGUgKGZpcnN0X2VudHJ5ICE9IGVudHJ5KSB7XG4rXHRcdGRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfZW50cnkpO1xuK1x0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbitcdFx0c3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYsIHF1ZXVlLCBmaXJzdF9lbnRyeSk7XG4rXHRcdGZpcnN0X2VudHJ5ID0gU1RNTUFDX05FWFRfRU5UUlkoZmlyc3RfZW50cnksXG4rXHRcdFx0XHRcdFx0cHJpdi1cdTAwM2VkbWFfY29uZi5kbWFfdHhfc2l6ZSk7XG4rXHR9XG4rXG4rXHR0eF9xLVx1MDAzZWN1cl90eCA9IGZpcnN0X3R4O1xuK1x0aWYgKGhhc192bGFuKSB7XG4rXHRcdGRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfdHgpO1xuK1x0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbitcdH1cbiBtYXhfc2R1X2VycjpcbiBcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiBcdHByaXYtXHUwMDNleHN0YXRzLnR4X2Ryb3BwZWQrKztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjE1Ljk0OTA4MDc3NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk1MjczOTIyOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCBpZiBpdCdzIGZ1enotd29ydGh5LCBrZWVwaW5nIG91ciBndWlkZWxpbmVzIGluIG1pbmQuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgZGlzc2VjdCB3aGF0J3MgYmVlbiB0b3VjaGVkLiBJIHNlZSB3ZSd2ZSBnb3QgbW9kaWZpY2F0aW9ucyB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3JpbmdfbW9kZS5jYCwgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gVGhvc2UgZmlsZXBhdGhzIGFyZSBwcmV0dHkgc3BlY2lmaWMsIHNvIHRoaXMgbG9va3MgbGlrZSB3ZSdyZSB6ZXJvaW5nIGluIG9uIGEgcGFydGljdWxhciBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5Ob3csIHdoYXQgZXhhY3RseSAqaXMqIGBzdG1tYWNgPyBUaGF0J3MgdGhlIGtleSBxdWVzdGlvbi4gV2UgbmVlZCB0byBhc2NlcnRhaW4gdGhlIHJvbGUgaXQgcGxheXMgaW4gdGhlIHN5c3RlbS4gSXMgdGhpcyBhbiBFdGhlcm5ldCBkcml2ZXIgdGllZCB0byBzb21lIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlLCBwZXJoYXBzIGFuIFNvQyBvciBQQ0llIGRldmljZT8gT3IsIG1vcmUgaW1wb3J0YW50bHkgZm9yIGZ1enppbmcsIGlzIHRoZXJlIGEgcG9zc2liaWxpdHkgb2YgZW11bGF0aW9uPyBDYW4gd2Ugc2ltdWxhdGUgdGhpcyBoYXJkd2FyZSBpbiBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQsIG9yIGFyZSB3ZSBsaW1pdGVkIHRvIHRlc3Rpbmcgb24gYWN0dWFsIGRldmljZXM/IEkgbmVlZCB0byBrbm93IGlmIHRoaXMgaXMgYSBkcml2ZXIgdGhhdCBjYW4gYmUgYWRlcXVhdGVseSBhc3Nlc3NlZCB3aXRoIHNvZnR3YXJlLiBMZXQncyBkbyBhIHF1aWNrIHNlYXJjaCBpbiBLY29uZmlnIGFuZCB0aGUgZHJpdmVycyBkaXJlY3RvcnkgdG8gZmlndXJlIHRoYXQgb3V0LiBLbm93aW5nIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5IGlzIGNyaXRpY2FsLiBJZiB3ZSAqY2FuKiBlbXVsYXRlLCB0aGF04oCZcyBhIGJpZyBcInllc1wiIHRvIGZ1enppbmcuIElmIGl0J3Mgc3RyaWN0bHkgaGFyZHdhcmUsIGl0IGJlY29tZXMgYSBtdWNoIHRvdWdoZXIgY2FsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI0NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjI1LjQ3NjQ3ODQ1MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU4OTYyNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1RNTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIxODkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODppZiBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMTpcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjItXFx0ZGVwZW5kcyBvbiBJTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI1OlxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2LVxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI5OmNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwOlxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMS1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQyOmlmIFNUTU1BQ19QTEFURk9STVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTUyPWNvbmZpZyBEV01BQ19HRU5FUklDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTQ6XFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzY0PWNvbmZpZyBEV01BQ19WSVNDT05USVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzE6ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3Mzpjb25maWcgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzkyLVxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzkzOlxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDEtXFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwMjpcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDg6XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDktXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMC1cXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQxMTpcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDEyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE5LVxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQyMDplbmRpZiAjIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICs9IHN0bW1hYy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMy1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTI6c3RtbWFjLSQoQ09ORklHX1NUTU1BQ19TRUxGVEVTVFMpICs9IHN0bW1hY19zZWxmdGVzdHMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTE0LSMgT3JkZXJpbmcgbWF0dGVycy4gR2VuZXJpYyBkcml2ZXIgbXVzdCBiZSBsYXN0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19TVE1NQUNfUExBVEZPUk0pXFx0Kz0gc3RtbWFjLXBsYXRmb3JtLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfRFdNQUNfQU5BUklPTilcXHQrPSBkd21hYy1hbmFyaW9uLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTQ3PWR3bWFjLWFsdHItc29jZnBnYS1vYmpzIDo9IGR3bWFjLXNvY2ZwZ2Eub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ5Om9iai0kKENPTkZJR19TVE1NQUNfTElCUENJKVxcdCs9IHN0bW1hY19saWJwY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19TVE1NQUNfUENJKVxcdCs9IHN0bW1hYy1wY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19EV01BQ19JTlRFTClcXHQrPSBkd21hYy1pbnRlbC5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM9MTc9c3RhdGljIGludCBqdW1ib19mcm0oc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy00Ni1cXHQvKiBkbyBub3QgY2xvc2UgdGhlIGRlc2NyaXB0b3IgYW5kIGRvIG5vdCBzZXQgb3duIGJpdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo0NzpcXHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDEsIGJ1Zl9sZW4sIGNzdW0sIFNUTU1BQ19DSEFJTl9NT0RFLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy00OC1cXHRcXHRcXHQwLCBmYWxzZSwgc2tiLVxcdTAwM2VsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTUxLVxcdFxcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZltlbnRyeV0gPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo1MjpcXHRcXHRlbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGVudHJ5LCBwcml2LVxcdTAwM2VkbWFfY29uZi5kbWFfdHhfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTUzLVxcdFxcdGRlc2MgPSB0eF9xLVxcdTAwM2VkbWFfdHggKyBlbnRyeTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy02NC1cXHRcXHRcXHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGJtYXgsIGNzdW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjY1OlxcdFxcdFxcdFxcdFxcdFNUTU1BQ19DSEFJTl9NT0RFLCAxLCBmYWxzZSwgc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy02Ni1cXHRcXHRcXHRsZW4gLT0gYm1heDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy03OC1cXHRcXHRcXHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGxlbiwgY3N1bSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6Nzk6XFx0XFx0XFx0XFx0XFx0U1RNTUFDX0NIQUlOX01PREUsIDEsIHRydWUsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtODAtXFx0XFx0XFx0bGVuID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy05NS1cXHRcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ZpcnN0X2VudHJ5XS5sZW4gPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo5NjpcXHRcXHRmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy05Ny1cXHRcXHRcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VkbWFfY29uZi5kbWFfdHhfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzogIFNUTU1BQyBDb21tb24gSGVhZGVyIEZpbGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjAtI2lmIElTX0VOQUJMRUQoQ09ORklHX1ZMQU5fODAyMVEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjE6I2RlZmluZSBTVE1NQUNfVkxBTl9UQUdfVVNFRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTIyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pZl92bGFuLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaD00OT1zdGF0aWMgaW5saW5lIGJvb2wgZHdtYWNfaXNfeG1hYyhlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1NDojZGVmaW5lIFNUTU1BQ19DSEFOMFxcdDBcXHQvKiBBbHdheXMgc3VwcG9ydGVkIGFuZCBkZWZhdWx0IGZvciBhbGwgY2hpcHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY1LSNkZWZpbmUgRE1BX0RFRkFVTFRfUlhfU0laRVxcdDUxMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2OiNkZWZpbmUgU1RNTUFDX05FWFRfRU5UUlkoeCwgc2l6ZSlcXHQoKHggKyAxKSBcXHUwMDI2IChzaXplIC0gMSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaD0yNDg9c3RydWN0IHN0bW1hY19zYWZldHlfc3RhdHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjU1LS8qIE51bWJlciBvZiBmaWVsZHMgaW4gU2FmZXR5IFN0YXRzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjU2OiNkZWZpbmUgU1RNTUFDX1NBRkVUWV9GRUFUX1NJWkVcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjU3LVxcdChzaXplb2Yoc3RydWN0IHN0bW1hY19zYWZldHlfc3RhdHMpIC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMzI4LS8qIE1TSSBkZWZpbmVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzI5OiNkZWZpbmUgU1RNTUFDX01TSV9WRUNfTUFYXFx0MzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zNDAtLyogVHggY29hbGVzY2UgcGFyYW1ldGVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM0MTojZGVmaW5lIFNUTU1BQ19DT0FMX1RYX1RJTUVSXFx0NTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM0MjojZGVmaW5lIFNUTU1BQ19NQVhfQ09BTF9UWF9USUNLXFx0MTAwMDAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzQzOiNkZWZpbmUgU1RNTUFDX1RYX01BWF9GUkFNRVNcXHQyNTZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNDQ6I2RlZmluZSBTVE1NQUNfVFhfRlJBTUVTXFx0MjVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNDU6I2RlZmluZSBTVE1NQUNfUlhfRlJBTUVTXFx0MFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTM0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTQxNj1zdHJ1Y3QgZG1hX2ZlYXR1cmVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUzNS0vKiBEZWZhdWx0IExQSSB0aW1lcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1MzY6I2RlZmluZSBTVE1NQUNfREVGQVVMVF9MSVRfTFNcXHQweDNFOFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjUzNzojZGVmaW5lIFNUTU1BQ19ERUZBVUxUX1RXVF9MU1xcdDB4MUVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1Mzg6I2RlZmluZSBTVE1NQUNfRVRfTUFYXFx0XFx0MHhGRkZGRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTU2NT12b2lkIHN0bW1hY19heGlfYmxlbl90b19tYXNrKHUzMiAqcmVndmFsLCBjb25zdCB1MzIgKmJsZW4sIHNpemVfdCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1Njc6I2RlZmluZSBTVE1NQUNfQ0hBSU5fTU9ERVxcdDB4MVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU2ODojZGVmaW5lIFNUTU1BQ19SSU5HX01PREVcXHQweDJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NzItLyogUmVjZWl2ZSBTaWRlIFNjYWxpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1NzM6I2RlZmluZSBTVE1NQUNfUlNTX0hBU0hfS0VZX1NJWkVcXHQ0MFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU3NDojZGVmaW5lIFNUTU1BQ19SU1NfTUFYX1RBQkxFX1NJWkVcXHQyNTZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTc2LS8qIFZMQU4gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1Nzc6I2RlZmluZSBTVE1NQUNfVkxBTl9OT05FXFx0MHgwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTc4OiNkZWZpbmUgU1RNTUFDX1ZMQU5fUkVNT1ZFXFx0MHgxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTc5OiNkZWZpbmUgU1RNTUFDX1ZMQU5fSU5TRVJUXFx0MHgyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTgwOiNkZWZpbmUgU1RNTUFDX1ZMQU5fUkVQTEFDRVxcdDB4M1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzY9c3RhdGljIGludCBkd2NfZXRoX2R3bWFjX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy04OS1cXHRwbGF0X2RhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlYWFsID0gMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjkwOlxcdHBsYXRfZGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy05MS1cXHRwbGF0X2RhdC1cXHUwMDNlcG10ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MTg2PXN0YXRpYyBpbnQgdGVncmFfZXFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yMzktXFx0cGxhdF9kYXQtXFx1MDAzZWJzcF9wcml2ID0gZXFvcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI0MDpcXHRwbGF0X2RhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjQxOlxcdFxcdFxcdCAgIFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUCB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNDI6XFx0XFx0XFx0ICAgU1RNTUFDX0ZMQUdfVVNFX1BIWV9XT0w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9Njk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHdtYWNfZ2VuZXJpY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzEtXFx0LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NzI6XFx0XFx0Lm5hbWUgICAgICAgICAgID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTczLVxcdFxcdC5wbVxcdFxcdD0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zNjE9c3RhdGljIHN0cnVjdCBpbXhfZHdtYWNfb3BzIGlteDhtcF9kd21hY19kYXRhID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzY0LVxcdC5zZXRfaW50Zl9tb2RlID0gaW14OG1wX3NldF9pbnRmX21vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzY1OlxcdC5mbGFncyA9IFNUTU1BQ19GTEFHX0VFRV9ESVNBQkxFIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozNjY6XFx0XFx0IFNUTU1BQ19GTEFHX0hXVFNUQU1QX0NPUlJFQ1RfTEFURU5DWSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzY3OlxcdFxcdCBTVE1NQUNfRkxBR19LRUVQX1BSRUFNQkxFX0JFRk9SRV9TRkQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzY4LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTM1OD1zdGF0aWMgaW50IGludGVsX2Nyb3NzdHN0YW1wKGt0aW1lX3QgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzc5LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MzgwOlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VmbGFncyBcXHUwMDI2IFNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTM4MS1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MzgzOlxcdHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX0lOVF9TTkFQU0hPVF9FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTM4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDAzLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlYXV4X3RzX2xvY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDA0OlxcdFxcdHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5TVE1NQUNfRkxBR19JTlRfU05BUFNIT1RfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00MDUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQyOS1cXHRcXHRcXHRcXHRcXHQgICAgICBIWiAvIDEwMCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQzMDpcXHRcXHRwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+U1RNTUFDX0ZMQUdfSU5UX1NOQVBTSE9UX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDMxLVxcdFxcdHJldHVybiAtRVRJTUVET1VUO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTY6XFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gflNUTU1BQ19GTEFHX0lOVF9TTkFQU0hPVF9FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTk2PXN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01OTgtXFx0LyogY2xrX2Nzcl9pID0gMjAtMzVNSHogXFx1MDAyNiBNREMgPSBjbGtfY3NyX2kvMTYgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU5OTpcXHRwbGF0LVxcdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MDAtXFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz02MTY9c3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MjUtXFx0cGxhdC1cXHUwMDNlcGh5X2FkZHIgPSAtMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjYyNjpcXHRwbGF0LVxcdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTYyNy1cXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNjI4LVxcdHBsYXQtXFx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjYyOTpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSAoU1RNTUFDX0ZMQUdfVFNPX0VOIHwgU1RNTUFDX0ZMQUdfU1BIX0RJU0FCTEUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNjMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3MDg6XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVkxBTl9GQUlMX1FfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc0ODpcXHRwbGF0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+U1RNTUFDX0ZMQUdfSU5UX1NOQVBTSE9UX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03NjA9c3RhdGljIGludCBlaGxfY29tbW9uX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc2Ni1cXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlID0gODtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc2NzpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19VU0VfUEhZX1dPTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc2ODpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19IV1RTVEFNUF9DT1JSRUNUX0xBVEVOQ1k7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExNDk9c3RhdGljIGludCBzdG1tYWNfY29uZmlnX3NpbmdsZV9tc2koc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNjMtXFx0cmVzLVxcdTAwM2V3b2xfaXJxID0gcmVzLVxcdTAwM2VpcnE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTY0OlxcdHBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5TVE1NQUNfRkxBR19NVUxUSV9NU0lfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTY1LVxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogU2luZ2xlIElSUSBlbmFibGVtZW50IHN1Y2Nlc3NmdWxcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExNzE9c3RhdGljIGludCBzdG1tYWNfY29uZmlnX211bHRpX21zaShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExNzg6XFx0aWYgKHBsYXQtXFx1MDAzZW1zaV9yeF9iYXNlX3ZlYyBcXHUwMDNlPSBTVE1NQUNfTVNJX1ZFQ19NQVggfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExNzk6XFx0ICAgIHBsYXQtXFx1MDAzZW1zaV90eF9iYXNlX3ZlYyBcXHUwMDNlPSBTVE1NQUNfTVNJX1ZFQ19NQVgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExODAtXFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIiVzOiBJbnZhbGlkIFJYIFxcdTAwMjYgVFggdmVjdG9yIGRlZmluZWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTg1OlxcdHJldCA9IHBjaV9hbGxvY19pcnFfdmVjdG9ycyhwZGV2LCAyLCBTVE1NQUNfTVNJX1ZFQ19NQVgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTg2LVxcdFxcdFxcdFxcdCAgICBQQ0lfSVJRX01TSSB8IFBDSV9JUlFfTVNJWCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjA1OlxcdGlmIChwbGF0LVxcdTAwM2Vtc2lfbWFjX3ZlYyBcXHUwMDNjIFNUTU1BQ19NU0lfVkVDX01BWClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMDYtXFx0XFx0cmVzLVxcdTAwM2VpcnEgPSBwY2lfaXJxX3ZlY3RvcihwZGV2LCBwbGF0LVxcdTAwM2Vtc2lfbWFjX3ZlYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjA3OlxcdGlmIChwbGF0LVxcdTAwM2Vtc2lfd29sX3ZlYyBcXHUwMDNjIFNUTU1BQ19NU0lfVkVDX01BWClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMDgtXFx0XFx0cmVzLVxcdTAwM2V3b2xfaXJxID0gcGNpX2lycV92ZWN0b3IocGRldiwgcGxhdC1cXHUwMDNlbXNpX3dvbF92ZWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIwOTpcXHRpZiAocGxhdC1cXHUwMDNlbXNpX3NmdHlfY2VfdmVjIFxcdTAwM2MgU1RNTUFDX01TSV9WRUNfTUFYKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIxMC1cXHRcXHRyZXMtXFx1MDAzZXNmdHlfY2VfaXJxID0gcGNpX2lycV92ZWN0b3IocGRldiwgcGxhdC1cXHUwMDNlbXNpX3NmdHlfY2VfdmVjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyMTE6XFx0aWYgKHBsYXQtXFx1MDAzZW1zaV9zZnR5X3VlX3ZlYyBcXHUwMDNjIFNUTU1BQ19NU0lfVkVDX01BWClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMTItXFx0XFx0cmVzLVxcdTAwM2VzZnR5X3VlX2lycSA9IHBjaV9pcnFfdmVjdG9yKHBkZXYsIHBsYXQtXFx1MDAzZW1zaV9zZnR5X3VlX3ZlYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIxNDpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19NVUxUSV9NU0lfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjE1LVxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogbXVsdGkgTVNJIGVuYWJsZW1lbnQgc3VjY2Vzc2Z1bFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTMxNC1cXHQgKiBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gZGF0YSBzZXR0aW5ncyBiZWxvdy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzMTU6XFx0ICogTm90ZTogTVNJIHZlY3RvciB0YWtlcyB2YWx1ZSBmcm9tIDAgdXB0byAzMSAoU1RNTUFDX01TSV9WRUNfTUFYKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTMxNi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzMTc6XFx0cGxhdC1cXHUwMDNlbXNpX21hY192ZWMgPSBTVE1NQUNfTVNJX1ZFQ19NQVg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzE4OlxcdHBsYXQtXFx1MDAzZW1zaV93b2xfdmVjID0gU1RNTUFDX01TSV9WRUNfTUFYO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTMxOTpcXHRwbGF0LVxcdTAwM2Vtc2lfc2Z0eV9jZV92ZWMgPSBTVE1NQUNfTVNJX1ZFQ19NQVg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzIwOlxcdHBsYXQtXFx1MDAzZW1zaV9zZnR5X3VlX3ZlYyA9IFNUTU1BQ19NU0lfVkVDX01BWDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzMjE6XFx0cGxhdC1cXHUwMDNlbXNpX3J4X2Jhc2VfdmVjID0gU1RNTUFDX01TSV9WRUNfTUFYO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTMyMjpcXHRwbGF0LVxcdTAwM2Vtc2lfdHhfYmFzZV92ZWMgPSBTVE1NQUNfTVNJX1ZFQ19NQVg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz04Nj1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTk0LVxcdC8qIGNsa19jc3JfaSA9IDEwMC0xNTBNSHogXFx1MDAyNiBNREMgPSBjbGtfY3NyX2kvNjIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjk1OlxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzEwMF8xNTBNO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtOTYtXFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0zNzc9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19tc2lfY29uZmlnKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00MDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo0MDI6XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDAzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYz01NTY9c3RhdGljIGludCBtZWRpYXRla19kd21hY19jb21tb25fZGF0YShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy01NjMtXFx0aWYgKHByaXZfcGxhdC1cXHUwMDNlbWFjX3dvbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjU2NDpcXHRcXHRwbGF0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+U1RNTUFDX0ZMQUdfVVNFX1BIWV9XT0w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy01NjUtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NTY2OlxcdFxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1VTRV9QSFlfV09MO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNTY3LVxcdHBsYXQtXFx1MDAzZXJpd3Rfb2ZmID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTIwOD1tb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDMtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ0OlxcdHBsYXQtXFx1MDAzZWNsa19jc3JcXHRcXHQ9IFNUTU1BQ19DU1JfMjBfMzVNO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI0NS1cXHRwbGF0LVxcdTAwM2V0eF9jb2VcXHRcXHQ9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNTAtXFx0cGxhdC1cXHUwMDNlcmVzdW1lXFx0XFx0PSBtb3RvcmNvbW1fcmVzdW1lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI1MTpcXHRwbGF0LVxcdTAwM2VmbGFnc1xcdFxcdD0gU1RNTUFDX0ZMQUdfVFNPX0VOIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNTI6XFx0XFx0XFx0XFx0ICBTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjUzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjY0PXN0YXRpYyBpbnQgbW90b3Jjb21tX3NldHVwX2lycShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNzY6XFx0XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI3Ny1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz02ODQ9c3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03NzEtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3NzI6XFx0cGxhdF9kYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzYwXzEwME07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03NzMtXFx0cGxhdF9kYXQtXFx1MDAzZWJzcF9wcml2ID0gZXRocW9zO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03ODEtXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgXFxcInNucHMsdHNvXFxcIikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3ODI6XFx0XFx0cGxhdF9kYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTc4My1cXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFxcXCJxY29tLHFjczQwNC1ldGhxb3NcXFwiKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jOjc4NDpcXHRcXHRwbGF0X2RhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfUlhfQ0xLX1JVTlNfSU5fTFBJO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzg1LVxcdGlmIChkYXRhLVxcdTAwM2VkbWFfYWRkcl93aWR0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTg4LVxcdHBsYXRfZGF0LVxcdTAwM2VleGl0ID0gcmVuZXNhc19nYmV0aF9leGl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxODk6XFx0cGxhdF9kYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUCB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE5MC1cXHRcXHRcXHQgICBnYmV0aC1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlc3RtbWFjX2ZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJlbmVzYXNfZ2JldGhfb2ZfZGF0YSByZW5lc2FzX2diZXRoX29mX2RhdGEgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjA0LVxcdC5zZXRfY2xrX3R4X3JhdGUgPSB0cnVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMDU6XFx0LnN0bW1hY19mbGFncyA9IFNUTU1BQ19GTEFHX0hXVFNUQU1QX0NPUlJFQ1RfTEFURU5DWSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIwNjpcXHRcXHRcXHRTVE1NQUNfRkxBR19TUEhfRElTQUJMRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjA3LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9MjA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVuZXNhc19nYmV0aF9vZl9kYXRhIHJlbmVzYXNfZ21hY19vZl9kYXRhID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIxMS1cXHQubnVtX2Nsa3MgPSBBUlJBWV9TSVpFKHJlbmVzYXNfZ21hY19jbGtzKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MjEyOlxcdC5zdG1tYWNfZmxhZ3MgPSBTVE1NQUNfRkxBR19IV1RTVEFNUF9DT1JSRUNUX0xBVEVOQ1ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIxMy1cXHQuaGFzX3BjcyA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xMTM9c3RhdGljIHZvaWQgczMyX2dtYWNfc2V0dXBfbXVsdGlfaXJxKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTEzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoxMzU6XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTEzNi1cXHRkZXZfaW5mbyhkZXYsIFxcXCJNdWx0aS1JUlEgbW9kZSAocGVyIHF1ZXVlIElSUXMpIHNlbGVjdGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTEzOS1tYWNfaXJxX21vZGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM6MTQwOlxcdHBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5TVE1NQUNfRkxBR19NVUxUSV9NU0lfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTQxLVxcdGRldl9pbmZvKGRldiwgXFxcIk1BQyBJUlEgbW9kZSBzZWxlY3RlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xNDQ9c3RhdGljIGludCBzMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTE5Ny1cXHRwbGF0LVxcdTAwM2VwbXQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjE5ODpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TUEhfRElTQUJMRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xOTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9Mjk0PXN0YXRpYyBpbnQgc210Z19jcm9zc3RzdGFtcChrdGltZV90ICpkZXZpY2UsIHN0cnVjdCBzeXN0ZW1fY291bnRlcnZhbF90ICpzeXN0ZW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtMzA5LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzozMTA6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU1RNTUFDX0ZMQUdfRVhUX1NOQVBTSE9UX0VOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy0zMTEtXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz01Njk9c3RhdGljIHZvaWQgc29jZnBnYV9hZ2lsZXg1X3NldHVwX3BsYXRfZGF0KHN0cnVjdCBzb2NmcGdhX2R3bWFjICpkd21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzUtXFx0LyogRW5hYmxlIFRTTyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1NzY6XFx0cGxhdF9kYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTc3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MTk9c3RhdGljIGludCBzb3BoZ29fc2cyMDQ0X2R3bWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjI4OlxcdHBsYXRfZGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TUEhfRElTQUJMRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy0yOS1cXHRwbGF0X2RhdC1cXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9OTA9c3RhdGljIGludCBzdGFyZml2ZV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNTA6XFx0cGxhdF9kYXQtXFx1MDAzZWZsYWdzIHw9IChTVE1NQUNfRkxBR19FTl9UWF9MUElfQ0xLX1BIWV9DQVAgfCBTVE1NQUNfRkxBR19TUEhfRElTQUJMRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTEtXFx0cGxhdF9kYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZWRjaGUgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01NTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1NjA6XFx0cGxhdF9kYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX0VOX1RYX0xQSV9DTEtfUEhZX0NBUDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU2MS1cXHRwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYgPSBkd21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jPTEwNT1zdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMjEtXFx0LyogQlNQIGRpc2FibGVzIGl0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM6MTIyOlxcdHBsYXRfZGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TUEhfRElTQUJMRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMjMtXFx0cGxhdF9kYXQtXFx1MDAzZWhvc3RfZG1hX3dpZHRoID0gMzI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTExMDU9c3RhdGljIGludCBzdW44aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTgwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTE4MTpcXHRwbGF0X2RhdC1cXHUwMDNlcnhfY29lID0gU1RNTUFDX1JYX0NPRV9UWVBFMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExODItXFx0cGxhdF9kYXQtXFx1MDAzZXR4X2NvZSA9IHRydWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTgzOlxcdHBsYXRfZGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19IQVNfU1VOOEk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTg0LVxcdHBsYXRfZGF0LVxcdTAwM2Vic3BfcHJpdiA9IGdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI2LVxcdHBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozMjc6XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI4LVxcdHBsYXQtXFx1MDAzZXBtdCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjM3NDpcXHRwbGF0LVxcdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19TRVJERVNfVVBfQUZURVJfUEhZX0xJTktVUDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9NDA9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2NvcmVfaW5pdChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo2MDojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTYxLVxcdC8qIFRhZyBkZXRlY3Rpb24gd2l0aG91dCBmaWx0ZXJpbmcgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9MTI0PXN0YXRpYyB2b2lkIGR3bWFjMTAwMF9zZXRfbWNoYXNoKHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgKm1jZmlsdGVyYml0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtMTQwLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzoxNDE6XFx0XFx0cHJfZGVidWcoXFxcIlNUTU1BQzogZXJyIGluIHNldHRpbmcgbXVsdGljYXN0IGZpbHRlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy0xNDItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYz0zMTg9c3RhdGljIGludCBkd21hYzEwMDBfc2V0X2xwaV9tb2RlKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy0zMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzozMjU6XFx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9USU1FUilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTMyNi1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTMyOC1cXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIExQSV9DVFJMX1NUQVRVUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzozMjk6XFx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9GT1JDRUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy0zMzAtXFx0XFx0dmFsdWUgfD0gTFBJX0NUUkxfU1RBVFVTX0xQSUVOIHwgTFBJX0NUUkxfU1RBVFVTX0xQSVRYQTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9NTIzPXZvaWQgZHdtYWMxMDAwX3RpbWVzdGFtcF9pbnRlcnJ1cHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYy01MzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo1MzQ6XFx0aWYgKCEocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBTVE1NQUNfRkxBR19FWFRfU05BUFNIT1RfRU4pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTM1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9NTY3PWludCBkd21hYzEwMDBfcHRwX2VuYWJsZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTgzLVxcdFxcdFxcdHRjcl92YWwgfD0gR01BQ19QVFBfVENSX0FUU0ZDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM6NTg0OlxcdFxcdFxcdHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTU4NS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTg2LVxcdFxcdFxcdHRjcl92YWwgXFx1MDAyNj0gfkdNQUNfUFRQX1RDUl9BVFNFTjA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo1ODc6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gflNUTU1BQ19GTEFHX0VYVF9TTkFQU0hPVF9FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTU4OC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmM9MjI9c3RhdGljIHZvaWQgZHdtYWMxMDBfY29yZV9pbml0KHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfY29yZS5jLTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2NvcmUuYzozMjojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzMtXFx0d3JpdGVsKEVUSF9QXzgwMjFRLCBpb2FkZHIgKyBNQUNfVkxBTjEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYz0zODY9c3RhdGljIGludCBkd21hYzRfc2V0X2xwaV9tb2RlKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy0zOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzozOTM6XFx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9ESVNBQkxFKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy0zOTQtXFx0XFx0dmFsdWUgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy0zOTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzozOTg6XFx0XFx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9USU1FUikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMzk5LVxcdFxcdFxcdC8qIFJldHVybiBFUkFOR0UgaWYgdGhlIHRpbWVyIGlzIGxhcmdlciB0aGFuIHRoZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy00MDEtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzo0MDI6XFx0XFx0XFx0aWYgKGV0IFxcdTAwM2UgU1RNTUFDX0VUX01BWClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTQwMy1cXHRcXHRcXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9saWIuYz0xOTk9dm9pZCBzdG1tYWNfZHdtYWM0X3NldF9tYWNfYWRkcih2b2lkIF9faW9tZW0gKmlvYWRkciwgY29uc3QgdTggYWRkcls2XSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9saWIuYy0yMDgtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jOjIwOTpcXHRkYXRhIHw9IEZJRUxEX1BSRVAoR01BQ19ISV9EQ1MsIFNUTU1BQ19DSEFOMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jLTIxMC1cXHR3cml0ZWwoZGF0YSB8IEdNQUNfSElfUkVHX0FFLCBpb2FkZHIgKyBoaWdoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjc6I2lmbmRlZiBfX1NUTU1BQ19EV1hHTUFDMl9IX19cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjg6I2RlZmluZSBfX1NUTU1BQ19EV1hHTUFDMl9IX19cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oPTQ2OD1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19kZXNjX29wcyBkd3hnbWFjMjEwX2Rlc2Nfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtNDY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDcwOiNlbmRpZiAvKiBfX1NUTU1BQ19EV1hHTUFDMl9IX18gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz00Mjg9c3RhdGljIGludCBkd3hnbWFjMl9zZXRfbHBpX21vZGUoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtNDM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzo0MzU6XFx0aWYgKG1vZGUgPT0gU1RNTUFDX0xQSV9USU1FUilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtNDM2LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy00MzgtXFx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19MUElfQ1RSTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jOjQzOTpcXHRpZiAobW9kZSA9PSBTVE1NQUNfTFBJX0ZPUkNFRCkge1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OToyNS42MDIzODIwMDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MTE0MDY5NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgYHN0bW1hY2AgRHJpdmVyIEFjY2Vzc2liaWxpdHkgaW4gRnV6emluZyBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgc3RtbWFjYCDigJMgdGhhdCdzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIsIGFuZCBhbHNvIHJlbGF0ZXMgdG8gdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDLCBvciBEV01BQy4gVGhlIHF1ZXN0aW9uIGlzOiBjYW4gSSByZWFjaCB0aGlzIGluIGEgZnV6emluZyBlbnZpcm9ubWVudD8gQ2FuIEkgZ2V0IGF0IGl0IHRocm91Z2ggUUVNVSBvciBhIGNvbXBhcmFibGUgc2V0dXA/XG5cbkkgbmVlZCB0byBjb25maXJtIGlmIGl0J3MgZW11bGF0ZWQgb3IgYWNjZXNzaWJsZS4gSXMgdGhlcmUgYSBwbGF0Zm9ybSBkZXZpY2Ugb3IgUENJIGRldmljZSB0aGF0IGVtdWxhdGVzIGl0PyBJcyB0aGVyZSBhbiBlYXN5IHdheSB0byBnZXQgYXQgdGhlIHN0bW1hYyBkZXZpY2UgdGhyb3VnaCBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIGFtZDY0IGZ1enppbmc/IEkgbmVlZCB0byBjaGVjayB0aGUgUUVNVSBzdXBwb3J0LiBPciBpcyBpdCBqdXN0IGEgc3RyaWN0bHkgcGh5c2ljYWwgRXRoZXJuZXQgTklDIGRyaXZlcj9cblxuQWgsIHJpZ2h0LCB0aGlzIGlzIHdoYXQgSSdtIGxvb2tpbmcgZm9yLiBTZWN0aW9uIDIgc2F5cyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VXCIuIFRoaXMgbWVhbnMgbXkgdGFyZ2V0IGlzbid0IGdvaW5nIHRvIGJlIGVhc3khXG5cblNvLCB3aGF0IEV0aGVybmV0IGRyaXZlcnMgKmFyZSogZW11bGF0ZWQgaW4gUUVNVT8gTGV0J3MgcmVmcmVzaCBteSBtZW1vcnkuIEluIHN0YW5kYXJkIFFFTVUgeDg2XzY0IC8gYW1kNjQgLyBHQ0UsIHdlIGhhdmU6IGUxMDAwLCBlMTAwMGUsIGlnYiwgcnRsODEzOSwgODEzOWNwLCB2aXJ0aW8tbmV0LCBwY25ldCwgbmUya19wY2ksIHN1bmdlbSwgdHVsaXAgLyBkZWMyMTE0MCwgcm9ja2VyLCB2bXhuZXQzLCB1c2ItbmV0IC8gY2RjX2V0aGVyIC8gcm5kaXMsIHZtd2FyZSB2bXhuZXQzLCBhbmQgaW50ZWwgODI1NXggKGUxMDApLlxuXG5BbHJpZ2h0LCB3aGF0IGFib3V0IGBzdG1tYWNgPyBJdCdzIERXTUFDLCBvciBHTUFDLCBvciBYR01BQywgdXNlZCBvbiBBUk0vQVJNNjQgU29DcywgbGlrZSBBbGx3aW5uZXIsIFJvY2tjaGlwLCBBbWxvZ2ljLCBTVE0zMiwgTlhQIGkuTVgsIFRlZ3JhLCBJbnRlbCBFbGtoYXJ0IExha2UgLyBUaWdlciBMYWtlIC8gQWxkZXIgTGFrZSBQQ0ggaW50ZWdyYXRlZCBNQUMsIExvb25nc29uLiBTbywgbm8gbHVjayBoZXJlLlxuXG4qKk5vLioqIERvZXMgc3RhbmRhcmQgUUVNVSB4ODZfNjQgLyBhbWQ2NCAqZW11bGF0ZSogYW55IGBzdG1tYWNgIGRldmljZT8gSXQgc2VlbXMgbm8uIEkgbWlnaHQgZ2V0IGEgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBvciBzb21lIEFSTS1zcGVjaWZpYyBtYWNoaW5lcyBsaWtlIGBvcmFuZ2VwaS1wY2AsIGJ1dCBvbiB4ODZfNjQgLyBhbWQ2NCDigJMgdGhlIGFyY2hpdGVjdHVyZSBJJ20gZm9jdXNlZCBvbiDigJMgYHN0bW1hY2AgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUgbGlrZSB0aGUgSW50ZWwgVGlnZXIgTGFrZSAvIEVsa2hhcnQgTGFrZSBQQ0kgRFdNQUMgb3IgTG9vbmdzb24gUENJIERXTUFDIG9yIE1vdG9yY29tbSBQQ0kgRFdNQUMsIG9yIEFSTSBTb0MgcGxhdGZvcm0gZGV2aWNlcy5cblxuU28sIHRoZSBsYXN0IGNoZWNrLiBJcyB0aGVyZSBhbnkgdmlydHVhbCBidXMgb3IgZW11bGF0b3Igb3IgZHVtbXkgZGV2aWNlIHRoYXQgdXNlcyBgc3RtbWFjYD8gTGV0J3MgaW52ZXN0aWdhdGU6IGNhbiBgc3RtbWFjYCBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBhIHBsYXRmb3JtIGRldmljZSwgbmV0bGluaywgc3lzZnMsIG9yIGFueXRoaW5nLCBvciBpcyBpdCBzdHJpY3RseSBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcj8gSSBzdXNwZWN0IHRoZSBsYXR0ZXIsIGJ1dCBJIG5lZWQgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0ODAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDg6NDk6MzQuNzE2NDU0MzcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTM0MjkzODYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RldmljZV9yZWdpc3Rlci4qc3RtbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OTozNi4xMDk4OTUzNzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTE4NDQ5NzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlYnVnZ2luZyBOZXR3b3JrIERyaXZlciBDb21wYXRpYmlsaXR5KipcblxuT2theSwgc28gSSdtIGhpdHRpbmcgYSB3YWxsIHdpdGggdGhpcyBFdGhlcm5ldCBpc3N1ZS4gVGltZSB0byBkaWcgaW50byB0aGUgZHJpdmVyIGNvZGUuIEdpdmVuIHRoZSBhcmNoaXRlY3R1cmUgSSdtIGxvb2tpbmcgYXQsIHRoZSBtb3N0IGxpa2VseSBjdWxwcml0cyBhcmUgdGhlIGNvcmUgU1RNTUFDIGRyaXZlciwgdGhlIHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGNvZGUsIG9yIHRoZSBJbnRlbC1zcGVjaWZpYyBEV21hYyBpbXBsZW1lbnRhdGlvbiBpZiBpdCdzIGJhc2VkIG9uIHRoYXQuIEknbSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgYHN0bW1hY19wY2kuY2AsIHRoYXQgaGFuZGxlcyBQQ0kgYnVzIGluaXRpYWxpemF0aW9uLiBJZiB0aGF0IGRvZXNuJ3QgeWllbGQgYW55dGhpbmcgaW1tZWRpYXRlbHksIEknbGwgYnJhbmNoIG91dCB0byBgc3RtbWFjLXBsYXRmb3JtLmNgLCBzaW5jZSB0aGF0IHdpbGwgaGFuZGxlIHRoZSBiYXNlIGxheWVyIHBsYXRmb3JtIHNldHVwLiBPZiBjb3Vyc2UgSSBzaG91bGQgaW52ZXN0aWdhdGUgYGR3bWFjLWludGVsLmNgIGlmIHRoaXMgYSBJbnRlbC1iYXNlZCBEV21hYyBjb25maWd1cmF0aW9uLiBJJ2xsIGZvY3VzIG9uIHRoZSBidXMgaW50ZXJhY3Rpb24sIHRoZSBkZXZpY2UgcHJvYmluZywgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMg4oCTIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBhbnkgb2J2aW91cyBoYXJkd2FyZSBkaWZmZXJlbmNlcyBvciB1bmV4cGVjdGVkIHJlZ2lzdGVyIHNldHRpbmdzIHRoYXQgbWlnaHQgYmUgdGhlIHNvdXJjZSBvZiB0aGUgdHJvdWJsZS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVzZSBmaWxlcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTg1NSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjM4LjYyODM0OTIzM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogOTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgIDM6XFx0ICBUaGlzIGNvbnRhaW5zIHRoZSBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZSBwY2kgZHJpdmVyLlxcbiAgIDQ6XFx0XFxuICAgNTpcXHQgIENvcHlyaWdodCAoQykgMjAxMS0yMDEyICBWYXlhdnlhIExhYnMgUHZ0IEx0ZFxcbiAgIDY6XFx0XFxuICAgNzpcXHRcXG4gICA4OlxcdCAgQXV0aG9yOiBSYXlhZ29uZCBLb2thdGFudXIgXFx1MDAzY3JheWFnb25kQHZheWF2eWFsYWJzLmNvbVxcdTAwM2VcXG4gICA5OlxcdCAgQXV0aG9yOiBHaXVzZXBwZSBDYXZhbGxhcm8gXFx1MDAzY3BlcHBlLmNhdmFsbGFyb0BzdC5jb21cXHUwMDNlXFxuICAxMDpcXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiAgMTE6XFx0XFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1pLmhcXHUwMDNlXFxuICAxNTpcXHRcXG4gIDE2OlxcdCNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4gIDE3OlxcdCNpbmNsdWRlIFxcXCJzdG1tYWNfbGlicGNpLmhcXFwiXFxuICAxODpcXHRcXG4gIDE5OlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbiAgMjA6XFx0XFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbiAgMjE6XFx0fTtcXG4gIDIyOlxcdFxcbiAgMjM6XFx0c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuICAyNDpcXHR7XFxuICAyNTpcXHRcXHQvKiBjbGtfY3NyX2kgPSAyMC0zNU1IeiBcXHUwMDI2IE1EQyA9IGNsa19jc3JfaS8xNiAqL1xcbiAgMjY6XFx0XFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjBfMzVNO1xcbiAgMjc6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbiAgMjg6XFx0XFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VuZWVkc19yZXNldCA9IHRydWU7XFxuICAzMTpcXHR9XFxuICAzMjpcXHRcXG4gIDMzOlxcdHN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gIDM0OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuICAzNTpcXHR7XFxuICAzNjpcXHRcXHQvKiBTZXQgY29tbW9uIGRlZmF1bHQgZGF0YSBmaXJzdCAqL1xcbiAgMzc6XFx0XFx0Y29tbW9uX2RlZmF1bHRfZGF0YShwbGF0KTtcXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0cGxhdC1cXHUwMDNlYnVzX2lkID0gMTtcXG4gIDQwOlxcdFxcdHBsYXQtXFx1MDAzZXBoeV9hZGRyID0gMDtcXG4gIDQxOlxcdFxcdHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJsID0gMzI7XFxuICA0NDpcXHRcXHRwbGF0LVxcdTAwM2VkbWFfY2ZnLVxcdTAwM2VwYmx4OCA9IHRydWU7XFxuICA0NTpcXHRcXHQvKiBUT0RPOiBBWEkgKi9cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0XFx0cmV0dXJuIDA7XFxuICA0ODpcXHR9XFxuICA0OTpcXHRcXG4gIDUwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcXG4gIDUxOlxcdFxcdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXFxuICA1MjpcXHR9O1xcbiAgNTM6XFx0XFxuICA1NDpcXHRzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAgNTU6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbiAgNTY6XFx0e1xcbiAgNTc6XFx0XFx0aW50IGk7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzI1MF8zMDBNO1xcbiAgNjA6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG4gIDYxOlxcdFxcdHBsYXQtXFx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcXG4gIDYyOlxcdFxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG4gIDYzOlxcdFxcdHBsYXQtXFx1MDAzZXBtdCA9IHRydWU7XFxuICA2NDpcXHRcXG4gIDY1OlxcdFxcdC8qIFNldCBkZWZhdWx0IG51bWJlciBvZiBSWCBhbmQgVFggcXVldWVzIHRvIHVzZSAqL1xcbiAgNjY6XFx0XFx0cGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDQ7XFxuICA2NzpcXHRcXHRwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlID0gNDtcXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0cGxhdC1cXHUwMDNldHhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1RYX0FMR09SSVRITV9XUlI7XFxuICA3MDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XFxuICA3MTpcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcXG4gIDcyOlxcdFxcdFxcdHBsYXQtXFx1MDAzZXR4X3F1ZXVlc19jZmdbaV0ud2VpZ2h0ID0gMjU7XFxuICA3MzpcXHRcXHRcXHRpZiAoaSBcXHUwMDNlIDApXFxuICA3NDpcXHRcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLnRic19lbiA9IDE7XFxuICA3NTpcXHRcXHR9XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdHBsYXQtXFx1MDAzZXJ4X3NjaGVkX2FsZ29yaXRobSA9IE1UTF9SWF9BTEdPUklUSE1fU1A7XFxuICA3ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSsrKVxcbiAgNzk6XFx0XFx0XFx0cGxhdC1cXHUwMDNlcnhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdHBsYXQtXFx1MDAzZWJ1c19pZCA9IDE7XFxuICA4MjpcXHRcXHRwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XFxuICA4MzpcXHRcXG4gIDg0OlxcdFxcdHBsYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZXBibCA9IDMyO1xcbiAgODU6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJseDggPSB0cnVlO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHQvKiBBeGkgQ29uZmlndXJhdGlvbiAqL1xcbiAgODg6XFx0XFx0cGxhdC1cXHUwMDNlYXhpID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqcGxhdC1cXHUwMDNlYXhpKSwgR0ZQX0tFUk5FTCk7XFxuICA4OTpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZWF4aSlcXG4gIDkwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OTozOC42Mjg1MTU1OTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTU1MzcxNjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0aGUgYHN0bW1hY2AgZHJpdmVyIGdldHMgaW5pdGlhbGl6ZWQuIEkga25vdyBpdCdzIHJlZ2lzdGVyZWQgd2l0aCBlaXRoZXIgYHBjaV9yZWdpc3Rlcl9kcml2ZXJgIG9yIGBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXJgLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQuIFRoZSBrZXkgaXMgaW4gaG93IGl0J3MgbWF0Y2hlZCB0byB0aGUgaGFyZHdhcmUg4oCTIHdoZXRoZXIgdGhhdCdzIHRocm91Z2ggUENJIHZlbmRvciBhbmQgZGV2aWNlIElEcyB3aGVuIHdlJ3JlIHRhbGtpbmcgUENJLWJhc2VkIGhhcmR3YXJlLCBvciB1c2luZyBkZXZpY2UgdHJlZSBub2RlcyBmb3IgcGxhdGZvcm0gZGV2aWNlcy5cblxuSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIG1hdGNoaW5nIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBQQ0kgSUQgdGFibGUgaW4gYHN0bW1hY19wY2kuY2AgYW5kIGFsc28gdGFrZSBhIGxvb2sgYXQgYGR3bWFjLWludGVsLmNgLiBUaGF0IHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGtub3dzIHdoZW4gaXQncyB0YWxraW5nIHRvIHRoZSByaWdodCBwaWVjZSBvZiBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGluIHRob3NlIHRhYmxlcy4gQXJlIHdlIHJlbHlpbmcgb24gdmVyeSBzcGVjaWZpYyBJRHMsIG9yIGFyZSB0aGVyZSBhbnkgd2lsZGNhcmQgZW50cmllcyBvciBtb3JlIGZsZXhpYmxlIG1hdGNoaW5nIG1lY2hhbmlzbXMgaW4gcGxhY2U/IEkgbmVlZCB0byBsb29rIGNsb3NlciBhdCB3aGF0IHRob3NlIHRhYmxlcyBjb250YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU3MSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDg6NDk6NDEuNTgzODkxMjk3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQ1OlxcdFxcdGlmIChyZXQpIHtcXG4gMTQ2OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIiVzOiBFUlJPUjogZmFpbGVkIHRvIGVuYWJsZSBkZXZpY2VcXFxcblxcXCIsXFxuIDE0NzpcXHRcXHRcXHRcXHRfX2Z1bmNfXyk7XFxuIDE0ODpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxNDk6XFx0XFx0fVxcbiAxNTA6XFx0XFxuIDE1MTpcXHRcXHQvKiBHZXQgdGhlIGJhc2UgYWRkcmVzcyBvZiBkZXZpY2UgKi9cXG4gMTUyOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBQQ0lfU1REX05VTV9CQVJTOyBpKyspIHtcXG4gMTUzOlxcdFxcdFxcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIGkpID09IDApXFxuIDE1NDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMTU1OlxcdFxcdFxcdHJlcy5hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgaSwgU1RNTUFDX1JFU09VUkNFX05BTUUpO1xcbiAxNTY6XFx0XFx0XFx0aWYgKElTX0VSUihyZXMuYWRkcikpXFxuIDE1NzpcXHRcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihyZXMuYWRkcik7XFxuIDE1ODpcXHRcXHRcXHRicmVhaztcXG4gMTU5OlxcdFxcdH1cXG4gMTYwOlxcdFxcbiAxNjE6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuIDE2MjpcXHRcXG4gMTYzOlxcdFxcdHJldCA9IGluZm8tXFx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xcbiAxNjQ6XFx0XFx0aWYgKHJldClcXG4gMTY1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDE2NjpcXHRcXG4gMTY3OlxcdFxcdHJlcy53b2xfaXJxID0gcGRldi1cXHUwMDNlaXJxO1xcbiAxNjg6XFx0XFx0cmVzLmlycSA9IHBkZXYtXFx1MDAzZWlycTtcXG4gMTY5OlxcdFxcbiAxNzA6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2V0c29lZSA9IDE7XFxuIDE3MTpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZW1yeHBlZSA9IDE7XFxuIDE3MjpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZW1lc3RlZSA9IDE7XFxuIDE3MzpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZW1yeGVlID0gMTtcXG4gMTc0OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbXR4ZWUgPSAxO1xcbiAxNzU6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VlcHNpID0gMTtcXG4gMTc2OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlZWRwcCA9IDE7XFxuIDE3NzpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZXBydHllbiA9IDE7XFxuIDE3ODpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZXRtb3V0ZW4gPSAxO1xcbiAxNzk6XFx0XFxuIDE4MDpcXHRcXHRwbGF0LVxcdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuIDE4MTpcXHRcXHRwbGF0LVxcdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xcbiAxODI6XFx0XFxuIDE4MzpcXHRcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG4gMTg0OlxcdH1cXG4gMTg1OlxcdFxcbiAxODY6XFx0LyoqXFxuIDE4NzpcXHQgKiBzdG1tYWNfcGNpX3JlbW92ZVxcbiAxODg6XFx0ICpcXG4gMTg5OlxcdCAqIEBwZGV2OiBwbGF0Zm9ybSBkZXZpY2UgcG9pbnRlclxcbiAxOTA6XFx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cXG4gMTkxOlxcdCAqL1xcbiAxOTI6XFx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIDE5MzpcXHR7XFxuIDE5NDpcXHRcXHRzdG1tYWNfZHZyX3JlbW92ZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gMTk1OlxcdH1cXG4gMTk2OlxcdFxcbiAxOTc6XFx0Lyogc3ludGhldGljIElELCBubyBvZmZpY2lhbCB2ZW5kb3IgKi9cXG4gMTk4OlxcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcXHRcXHQweDA3MDBcXG4gMTk5OlxcdFxcbiAyMDA6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcXHRcXHQweDExMDhcXG4gMjAxOlxcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFxcdFxcdDB4NzEwMlxcbiAyMDI6XFx0XFxuIDIwMzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuIDIwNDpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDg6NDk6NDEuNTg0MDQxNjU3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExNzczNTAzNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFNUTU1BQyBhbmQgUUVNVSBFbXVsYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBzdGFydCBieSBjb25zaWRlcmluZyBgUENJX0RFVklDRV9JRF9TVE1NQUNfU1RNTUFDYCBhbmQgcmVsYXRlZCBQQ0kgZHJpdmVycy4gQmVmb3JlIGRpdmluZyBkZWVwLCBJJ2xsIHF1aWNrbHkgcmVmZXIgdG8gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeS4gVGhpcyBpcyBpbXBvcnRhbnQ6IGFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHZlbmRvci1zcGVjaWZpYyB0aGF0IG5lZWRzIGEgcGh5c2ljYWwgY2FyZCwgbGlrZSBzb21lIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnM/ICBUaGUgZXhhbXBsZXMgbGlzdGVkIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgYXJlIGdvb2QgcmVmZXJlbmNlIHBvaW50cy5cblxuVGhlIGNvcmUgcXVlc3Rpb24gbm93IGlzOiBkb2VzIGBzdG1tYWNgIG9yIGBEV01BQ2AgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBvciBhbiBBU0lDIG5vdCBzaW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50P1xuXG5JIGtub3cgYHN0bW1hY2AgaXMgdGhlIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKERXTUFDLCBHTUFDLCBYR01BQykgYW5kIGFsc28gc3VwcG9ydHMgU1RNaWNybyBTVE0zMiBhbmQgU1RpIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBOb3csIHRoZSBrZXkgaXMgd2hldGhlciB0aGlzIGhhcmR3YXJlIGlzICpwcmVzZW50KiBvciAqZW11bGF0ZWQqIGluIGEgc3RhbmRhcmQgUUVNVSBhbWQ2NCBzZXR1cC5cblxuSW1tZWRpYXRlbHksIHRoZSBhbnN3ZXIgaXMgKm5vKi4gU3RhbmRhcmQgUUVNVSBmb3IgYW1kNjQgZG9lc24ndCBlbXVsYXRlIHRoZSBTeW5vcHN5cyBEV01BQyBvciBTVE1pY3JvIE1BQy4gSSBrbm93IHRoYXQgdGhlIHN0YW5kYXJkIG5ldHdvcmsgZGV2aWNlcyBlbXVsYXRlZCBpbiBRRU1VIGZvciB4ODZfNjQgYXJlIHRoaW5ncyBsaWtlIGBlMTAwMGAsIGBwY25ldGAsIGB2aXJ0aW8tbmV0LXBjaWAsIGV0Yy4gSSdsbCBtYWtlIGEgcXVpY2sgbGlzdCB0byBqb2cgbXkgbWVtb3J5OiBgZTEwMDAsIGUxMDAwLTgyNTQ0Z2MsIGUxMDAwLTgyNTQ1ZW0sIGUxMDAwZSwgaWdiLCBpODI1NTAsIGk4MjU1MSwgaTgyNTU3YSwgaTgyNTU3YiwgaTgyNTU3YywgaTgyNTU4YSwgaTgyNTU4YiwgaTgyNTU5YSwgaTgyNTU5YiwgaTgyNTU5YywgaTgyNTU5ZXIsIGk4MjU2MiwgbmUya19wY2ksIHBjbmV0LCBydGw4MTM5LCB0dWxpcCwgdm14bmV0MywgdmlydGlvLW5ldC1wY2ksIHJvY2tlcmAuXG5cblNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogaXMgYHN0bW1hY2Agb3IgYGR3bWFjYCBlbXVsYXRlZCBpbiAqYW55KiBRRU1VIGZvciB4ODZfNjQ/IE5vLiBRRU1VIGhhbmRsZXMgbmV0d29yayBkaWZmZXJlbnRseSBmb3IgQVJNLCBzdWNoIGFzICBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIGZvciBBUk0gYG9yYW5nZXBpLXBjYCBhbmQgYGlteF9mZWNgIGZvciBBUk0gaS5NWCwgYW5kIG1heWJlIGBjYWRlbmNlX2dlbWAgZm9yIFhpbGlueCBaeW5xIEFSTS4gTm9uZSBvZiB0aG9zZSBhcmUgYHN0bW1hY2AsIGFuZCBjcml0aWNhbGx5LCBub25lIGFyZSBpbiB0aGUgc3RhbmRhcmQgYW1kNjQgLyB4ODZfNjQgUUVNVSBidWlsZC5cblxuSG93ZXZlciwgSSdtIG5vdCBnb2luZyB0byBwcmVtYXR1cmVseSBkZWNsYXJlIGRlZmVhdC4gQ2FuIGBzdG1tYWNgIHBvdGVudGlhbGx5IGJlICpwcm9iZWQqIG9yICppbnN0YW50aWF0ZWQqIHRocm91Z2ggYW5vdGhlciBtZWNoYW5pc20/IFBlcmhhcHMgdGhlcmUgYXJlIGluZGlyZWN0IGNhbGxzIG9yIG1vY2sgZHJpdmVycyBpbnZvbHZlZC4gVGhhdCdzIHRoZSBuZXh0IGF2ZW51ZSB0byBleHBsb3JlIOKAkyBjaGVja2luZyBmb3IgYW55IG90aGVyIGNhbGxlcnMgb3IgbW9jayBkcml2ZXJzIGFzc29jaWF0ZWQgd2l0aCBgc3RtbWFjYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5MDYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OTo1My4zNTc1NDkxNTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTY1MjMwNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2R2cl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMzMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjExODpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzNDE6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDgzOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTYyOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz00Mj1zdGF0aWMgaW50IGxwYzE4eHhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Njg6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjktfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYz01OTk9c3RhdGljIGludCBtZWRpYXRla19kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2NDI6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NzM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz0zODI9c3RhdGljIGludCBtZXNvbjhiX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo0NjQ6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDY1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI5Mz1zdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM1OTpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTQ4PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo2ODpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo2NTpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMDc6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9OTA9c3RhdGljIGludCBzdGFyZml2ZV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNTM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTUyNT1zdGF0aWMgaW50IHN0bTMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjU3OTpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01ODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjAyOlxcdC8qIHRoZSBNQUMgaXMgcnVudGltZSBzdXNwZW5kZWQgYWZ0ZXIgc3RtbWFjX2R2cl9wcm9iZSgpLCBzbyB3ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMy1cXHQgKiBuZWVkIHRvIGVuc3VyZSB0aGUgTUFDIHJlc3VtZSBiYWNrIGJlZm9yZSBvdGhlciBvcGVyYXRpb25zIHN1Y2hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwOC1cXHQvKiBUaGUgbXV4IG11c3QgYmUgcmVnaXN0ZXJlZCBhZnRlciBwYXJlbnQgTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwOTpcXHQgKiBzbyBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMTAtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6Mzc2OlxcdGVyciA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzctXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jPTIwNT1zdGF0aWMgaW50IHZpc2NvbnRpX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYzoyMzc6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTE9dm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQxMjppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDEzLVxcdFxcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzgxNj1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzgxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc4MTg6c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzgxOS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTIwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODEyMTogKiBzdG1tYWNfZHZyX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTIyLSAqIEBkZXY6IGRldmljZSBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMjktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTMwOmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzEtXFx0XFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODE0MTpcXHRyZXQgPSBfX3N0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxNDItXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiBwbGF0X2RhdC1cXHUwMDNlZXhpdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE0Ni19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTQ3OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19kdnJfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgzOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODQ2PWludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NTU6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OTo1NC43MTQwODk4NzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTExMzM5OTc5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmlhZ2UgRGVjaXNpb246IFdvcnRoRnV6emluZyA9IEZhbHNlIGZvciBzdG1tYWMgRHJpdmVyIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBvdXRsaW5lZCBpbiBTZWN0aW9uIDIgb2YgdGhlIGZ1enppbmcgaW5zdHJ1Y3Rpb25zLiBUaGUgY29yZSBvZiBteSBhc3Nlc3NtZW50IHJlc3RzIG9uIGRldGVybWluaW5nIGlmIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gdGhlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcIiBjYXRlZ29yeS5cblxuU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgb24gdGhlIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY3JpdGVyaW9uLiBUaGUgaW5zdHJ1Y3Rpb25zIGRlZmluZSB0aGlzIGFzIGNvZGUgcmVsaWFudCBvbiBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBDb25zaWRlcmluZyBteSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCBhbWQ2NCwgYW5kIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24g4oCTIGBzdG1tYWNgIOKAkyB0aGlzIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuXG5cbmBzdG1tYWNgIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCkgaXMgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIGFuZCBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgY29udHJvbGxlcnMuIEZyb20gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaGFyZHdhcmUsIHRoZXNlIGNvbnRyb2xsZXJzIGFyZSBwaHlzaWNhbCBoYXJkd2FyZSAoU29DL1BDSSkgY29tcG9uZW50cy4gU3RhbmRhcmQgUUVNVSBvciBHQ0UgVk1zIG9uIGFtZDY0IGRvbid0IGVtdWxhdGUgdGhpcyB0eXBlIG9mIHBoeXNpY2FsIGhhcmR3YXJlLiBZb3UnZCBuZWVkIGRlZGljYXRlZCBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgZm9yIHByb3BlciBlbXVsYXRpb24uIENvbnNlcXVlbnRseSwgdGhlc2UgY2hhbmdlcyBhcmUsIGZvciBhbGwgcHJhY3RpY2FsIHB1cnBvc2VzLCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5TbywgbGV0J3MgcHV0IGl0IGFsbCB0b2dldGhlcjogSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTXkgcmVhc29uaW5nIGlzIGNvbmNpc2U6IHRoZSBgc3RtbWFjYCBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgKFNvQy9QQ0kgRXRoZXJuZXQgY29udHJvbGxlcnMpIG5vdCBlbXVsYXRlZCBpbiB0aGUgdXN1YWwgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuIGBFbmFibGVDb25maWdzYCBhbmQgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBsZWZ0IGVtcHR5LlxuXG5BIHF1aWNrIGZpbmFsIGNoZWNrOiBJIGNhbiBzZWUgdGhhdCB0aGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29udGFpbmVkIHdpdGhpbiBgc3RtbWFjYDogYGNoYWluX21vZGUuY2AsIGByaW5nX21vZGUuY2AsIGFuZCBgc3RtbWFjX21haW4uY2AgYXJlIGFsbCBjbGVhcmx5IHBhcnQgb2YgdGhlIGBzdG1tYWNgIGRyaXZlci5cblxuTm93LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjk3LCJPdXRwdXRUb2tlbnMiOjExMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwODo0OTo1OS44Mjc0OTUwNjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIG1vZGlmeSB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChzcGVjaWZpY2FsbHkgaGFuZGxpbmcgVHggRE1BIG1hcHBpbmcgZmFpbHVyZSByb2xsYmFja3MgaW4ganVtYm8gZnJhbWUgdHJhbnNtaXNzaW9uKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLyBTb0MgY29udHJvbGxlcnMgKG9yIGRlZGljYXRlZCBQQ0llIGRldmljZXMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoc3BlY2lmaWNhbGx5IGhhbmRsaW5nIFR4IERNQSBtYXBwaW5nIGZhaWx1cmUgcm9sbGJhY2tzIGluIGp1bWJvIGZyYW1lIHRyYW5zbWlzc2lvbikuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DIGNvbnRyb2xsZXJzIChvciBkZWRpY2F0ZWQgUENJZSBkZXZpY2VzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA4OjQ5OjU5LjgyNzU0MDk0OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7q7mc[1] Phase: Running StartedAt: 2026-09-11 08:50:11 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7q7mc[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-11 08:50:11 +0000 UTC FinishedAt: 2026-09-11 08:50:17 +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,}