Name: series-workflow2b4qm Phase: Failed StartedAt: 2026-08-03 19:19:55 +0000 UTC FinishedAt: 2026-08-03 19:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2b4qm[0] Phase: Succeeded StartedAt: 2026-08-03 19:19:55 +0000 UTC FinishedAt: 2026-08-03 19:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2b4qm[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 19:19:55 +0000 UTC FinishedAt: 2026-08-03 19:42: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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgQ1BMRCBmaXJtd2FyZSB1cGxvYWQgYW5kIHN5c2ZzIGF0dHJpYnV0ZXMgZm9yIHRoZSBBRFZBIHgxIE9DUCBUaW1lY2FyZCwgd2hpY2ggaXMgYSBwaHlzaWNhbCBQQ0llIGRldmljZS4gVGhlIG5ldyBjb2RlIGhlYXZpbHkgcmVsaWVzIG9uIGhhcmR3YXJlLXNwZWNpZmljIGludGVyYWN0aW9ucyAoZS5nLiwgcG9sbGluZyBNTUlPIHJlZ2lzdGVycyBmb3IgTWljcm9CbGF6ZSBmaXJtd2FyZSBncmFudHMsIEkyQyBjb21tdW5pY2F0aW9uIHdpdGggYSBQQ0E5NTQ4IG11eCBhbmQgTGF0dGljZSBDUExEKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIENvbnNlcXVlbnRseSwgdGhlIGNvcmUgbG9naWMgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjFjNTM0NzZmNWVhMDM5YWMxYTM0NGQxYjk5MGRmOWE0Zjk1NzY2YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMTk6NDE6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdGltZWNhcmRcbmluZGV4IDNhZTQxYjc2MzRhYzkuLmY3Yzk5NTVhY2IwYTkgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkXG5AQCAtMTEsNiAmIzQzOzExLDQwIEBAIENvbnRhY3Q6XHRKb25hdGhhbiBMZW1vbiBcdTAwM2Nqb25hdGhhbi5sZW1vbkBnbWFpbC5jb21cdTAwM2VcbiBEZXNjcmlwdGlvbjpcdFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBOdGggdGltZWNhcmRcbiBcdFx0cmVnaXN0ZXJlZC5cbiBcbiYjNDM7V2hhdDpcdFx0L3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2NwbGRfZGV2aWNlX2lkXG4mIzQzO0RhdGU6XHRcdEp1bHkgMjAyNlxuJiM0MztDb250YWN0Olx0U2FnaSBNYWltb24gXHUwMDNjbWFpbW9uLnNhZ2lAZ21haWwuY29tXHUwMDNlXG4mIzQzO0Rlc2NyaXB0aW9uOlx0KFJPKSBUaGUgMzItYml0IExhdHRpY2UgZGV2aWNlIElEIG9mIHRoZSBUQVAgQ1BMRCwgcmVwb3J0ZWQgYXNcbiYjNDM7XHRcdGEgaGV4IHN0cmluZywgZS5nLiBcJiMzNDsweGUxMmJjMDQzXCYjMzQ7LlxuJiM0MztcbiYjNDM7XHRcdE9ubHkgcHJlc2VudCBvbiBBRFZBIHgxIFRBUCBib2FyZHMgKFBDSSBJRCAweGFkNWE6MHgwNDEwKS5cbiYjNDM7XHRcdFRoZSBMYXR0aWNlIExDTVhPM0xGLTIxMCByZXBvcnRzIDB4ZTEyYmMwNDMuXG4mIzQzO1xuJiM0MztcdFx0VGhlIGRyaXZlciBhY3F1aXJlcyB0aGUgTWljcm9CbGF6ZSBJMkMgYnVzIGludGVybmFsbHkgYmVmb3JlXG4mIzQzO1x0XHRpc3N1aW5nIHRoZSBSRUFEX0lEQ09ERSBjb21tYW5kOyBubyBidXMgYXJiaXRyYXRpb24gaXMgcmVxdWlyZWRcbiYjNDM7XHRcdGZyb20gdXNlcnNwYWNlLlxuJiM0MztcbiYjNDM7V2hhdDpcdFx0L3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2NwbGRfc3RhdHVzXG4mIzQzO0RhdGU6XHRcdEp1bHkgMjAyNlxuJiM0MztDb250YWN0Olx0U2FnaSBNYWltb24gXHUwMDNjbWFpbW9uLnNhZ2lAZ21haWwuY29tXHUwMDNlXG4mIzQzO0Rlc2NyaXB0aW9uOlx0KFJPKSBUaGUgc3RhdHVzIHJlZ2lzdGVyIG9mIHRoZSBUQVAgQ1BMRCwgaW4gaHVtYW4tcmVhZGFibGVcbiYjNDM7XHRcdGZvcm06XG4mIzQzO1xuJiM0MztcdFx0ICBkb25lPVx1MDAzYzB8MVx1MDAzZSBidXN5PVx1MDAzYzB8MVx1MDAzZSBmYWlsZWQ9XHUwMDNjMHwxXHUwMDNlXG4mIzQzO1xuJiM0MztcdFx0T25seSBwcmVzZW50IG9uIEFEVkEgeDEgVEFQIGJvYXJkcyAoUENJIElEIDB4YWQ1YToweDA0MTApLlxuJiM0MztcbiYjNDM7XHRcdGRvbmU9MSBpbmRpY2F0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gZmxhc2ggd2FzIHN1Y2Nlc3NmdWxseVxuJiM0MztcdFx0cHJvZ3JhbW1lZCBhbmQgaXMgYWN0aXZlLiAgYnVzeT0xIG1lYW5zIGFuIGludGVybmFsIG9wZXJhdGlvblxuJiM0MztcdFx0aXMgaW4gcHJvZ3Jlc3MuICBmYWlsZWQ9MSBtZWFucyB0aGUgbGFzdCBJU0Mgb3BlcmF0aW9uIGZhaWxlZC5cbiYjNDM7XG4mIzQzO1x0XHRUaGUgZHJpdmVyIGFjcXVpcmVzIHRoZSBNaWNyb0JsYXplIEkyQyBidXMgaW50ZXJuYWxseTsgbm8gYnVzXG4mIzQzO1x0XHRhcmJpdHJhdGlvbiBpcyByZXF1aXJlZCBmcm9tIHVzZXJzcGFjZS5cbiYjNDM7XG4mIzQzO1x0XHRUbyBwcm9ncmFtIG5ldyBDUExEIGZpcm13YXJlIHVzZSB0aGUgc3RhbmRhcmQga2VybmVsXG4mIzQzO1x0XHRmaXJtd2FyZS11cGxvYWQgaW50ZXJmYWNlIHJlZ2lzdGVyZWQgYXQ6XG4mIzQzO1x0XHQvc3lzL2NsYXNzL2Zpcm13YXJlL2FkdmEtY3BsZC9cbiYjNDM7XG4gV2hhdDpcdFx0L3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2F2YWlsYWJsZV9jbG9ja19zb3VyY2VzXG4gRGF0ZTpcdFx0U2VwdGVtYmVyIDIwMjFcbiBDb250YWN0Olx0Sm9uYXRoYW4gTGVtb24gXHUwMDNjam9uYXRoYW4ubGVtb25AZ21haWwuY29tXHUwMDNlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvcHRwX29jcC5jIGIvZHJpdmVycy9wdHAvcHRwX29jcC5jXG5pbmRleCAzNWU5MTFmMWFkNzhjLi5kYjhhYjE2MWQ0ZjBmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvcHRwX29jcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9wdHBfb2NwLmNcbkBAIC0yNCw2ICYjNDM7MjQsMTEgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9udm1lbS1jb25zdW1lci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY3JjMTYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RwbGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FVEFfVElNRUNBUkRcdFx0MHgwNDAwXG4gXG5AQCAtODUsNiAmIzQzOzkwLDcgQEAgc3RydWN0IHB0cF9vY3BfYWR2YV9pbmZvIHtcbiBcdHU4XHRcdFx0XHRzaWduYWxzX25yO1xuIFx0dThcdFx0XHRcdGZyZXFfaW5fbnI7XG4gXHRjb25zdCBzdHJ1Y3Qgb2NwX2F0dHJfZ3JvdXBcdCphdHRyX2dyb3VwcztcbiYjNDM7XHRib29sXHRcdFx0XHRoYXNfY3BsZDsgLyogeDE6IHN1cHBvcnRzIENQTEQgZmlybXdhcmUgdXBsb2FkICovXG4gfTtcbiBcbiAjZGVmaW5lIE9DUF9DVFJMX0VOQUJMRVx0XHRCSVQoMClcbkBAIC0xNjMsNyAmIzQzOzE2OSw4IEBAIHN0cnVjdCBncGlvX3JlZyB7XG4gXHR1MzJcdGdwaW8xO1xuIFx0dTMyXHRfX3BhZDA7XG4gXHR1MzJcdGdwaW8yO1xuLVx0dTMyXHRfX3BhZDE7XG4mIzQzO1x0LyogYWR2YV94MTogSTJDIGJ1cyBvd25lcnNoaXAgcmVnaXN0ZXI7IHJlc2VydmVkIG9uIG90aGVyIHZhcmlhbnRzICovXG4mIzQzO1x0dTMyXHRpMmNfYnVzX2N0cmw7XG4gfTtcbiBcbiBzdHJ1Y3QgaXJpZ19tYXN0ZXJfcmVnIHtcbkBAIC00MTYsNiAmIzQzOzQyMywxMiBAQCBzdHJ1Y3QgcHRwX29jcCB7XG4gXHRkcGxsX3RyYWNrZXIgdHJhY2tlcjtcbiBcdGludCBzaWduYWxzX25yO1xuIFx0aW50IGZyZXFfaW5fbnI7XG4mIzQzO1x0LyogYWR2YV94MSBDUExEIEkyQyAoaW50ZXJuYWwgdXNlIG9ubHkpICovXG4mIzQzO1x0c3RydWN0IG11dGV4XHRcdGNwbGRfbG9jazsgICAgICAgICAgICAvKiBzZXJpYWxpc2VzIENQTEQgb3BlcmF0aW9ucyAqL1xuJiM0MztcdGludFx0XHRcdGNwbGRfaTJjX2FkYXBfbnI7ICAgICAvKiBJMkMgYWRhcHRlciBucjsgLTEgaWYgYWJzZW50ICovXG4mIzQzO1x0c3RydWN0IGZ3X3VwbG9hZFx0KmNwbGRfZndfdXBsb2FkOyAgICAgIC8qIGZpcm13YXJlIHVwbG9hZCBoYW5kbGU7IE5VTEwgaWYgYWJzZW50ICovXG4mIzQzO1x0Ym9vbFx0XHRcdGNwbGRfY2FuY2VsOyAgICAgICAgICAvKiBjYW5jZWxsYXRpb24gcmVxdWVzdGVkICovXG4mIzQzO1x0Ym9vbFx0XHRcdGNwbGRfaW5fY29uZmlnX21vZGU7ICAvKiBFTl9DRkdfVFAgaXNzdWVkIGJ1dCBub3QgeWV0IFJFRlJFU0gmIzM5O2QgKi9cbiB9O1xuIFxuICNkZWZpbmUgT0NQX1JFUV9USU1FU1RBTVBcdEJJVCgwKVxuQEAgLTQ0OSw2ICYjNDM7NDYyLDggQEAgc3RhdGljIGludCBwdHBfb2NwX2FydF9ib2FyZF9pbml0KHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XG4gXG4gc3RhdGljIGludCBwdHBfb2NwX2FkdmFfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xuIFxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGZ3X3VwbG9hZF9vcHMgYWR2YV9jcGxkX3VwbG9hZF9vcHM7XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NwX3NtYV9vcCBvY3BfYWR2YV9zbWFfb3A7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvY3Bfc21hX29wIG9jcF9hZHZhX3gxX3NtYV9vcDtcbiBcbkBAIC0xMjczLDYgJiM0MzsxMjg4LDcgQEAgc3RhdGljIHN0cnVjdCBvY3BfcmVzb3VyY2Ugb2NwX2FkdmFfeDFfcmVzb3VyY2VbXSA9IHtcbiBcdFx0XHQuc2lnbmFsc19uciAgID0gNCxcbiBcdFx0XHQuZnJlcV9pbl9uciAgID0gNCxcbiBcdFx0XHQuYXR0cl9ncm91cHMgID0gYWR2YV90aW1lY2FyZF94MV9ncm91cHMsXG4mIzQzO1x0XHRcdC5oYXNfY3BsZCAgICAgPSB0cnVlLFxuIFx0XHR9LFxuIFx0fSxcbiBcdHsgfVxuQEAgLTMxOTcsNiAmIzQzOzMyMTMsMjAgQEAgcHRwX29jcF9hZHZhX2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0cHRwX29jcF9zbWFfaW5pdChicCk7XG4gXG4mIzQzO1x0aWYgKGluZm8tXHUwMDNlaGFzX2NwbGQpIHtcbiYjNDM7XHRcdHN0cnVjdCBmd191cGxvYWQgKmZ3bDtcbiYjNDM7XG4mIzQzO1x0XHRmd2wgPSBmaXJtd2FyZV91cGxvYWRfcmVnaXN0ZXIoVEhJU19NT0RVTEUsIFx1MDAyNmJwLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIFwmIzM0O2FkdmEtY3BsZFwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBcdTAwMjZhZHZhX2NwbGRfdXBsb2FkX29wcywgYnApO1xuJiM0MztcdFx0aWYgKElTX0VSUihmd2wpKVxuJiM0MztcdFx0XHRkZXZfd2FybihcdTAwMjZicC1cdTAwM2VwZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XHQgXCYjMzQ7Q1BMRCBmaXJtd2FyZSB1cGxvYWQgdW5hdmFpbGFibGU6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgZndsKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0YnAtXHUwMDNlY3BsZF9md191cGxvYWQgPSBmd2w7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiBwdHBfb2NwX2luaXRfY2xvY2soYnAsIFx1MDAyNmluZm8tXHUwMDNlc2Vydm8pO1xuIH1cbiBcbkBAIC00MjI0LDYgJiM0Mzs0MjU0LDQ0MyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9hdHRyX2dyb3VwIGFydF90aW1lY2FyZF9ncm91cHNbXSA9IHtcbiBcdHsgfSxcbiB9O1xuIFxuJiM0MzsvKlxuJiM0MzsgKiBJbnRlcm5hbCBoZWxwZXJzIGZvciB0aGUgYWR2YV94MSBUQVAgQ1BMRCAoTGF0dGljZSBMQ01YTzNMRi0yMTApLlxuJiM0MzsgKlxuJiM0MzsgKiBUaGUgQ1BMRCBzaXRzIGF0IEkyQyBhZGRyZXNzIDB4NDAgYmVoaW5kIGEgUENBOTU0OCBtdXggKDB4NzQpIG9uXG4mIzQzOyAqIGNoYW5uZWwgMC4gIFRoZSBJMkMgYnVzIGlzIHNoYXJlZCB3aXRoIHRoZSBNaWNyb0JsYXplIGZpcm13YXJlO1xuJiM0MzsgKiBjcGxkX2xvY2sgJiM0MzsgbWJsYXplIGFjcXVpcmUvcmVsZWFzZSBwcm92aWRlIG11dHVhbCBleGNsdXNpb24gZm9yIHRoZVxuJiM0MzsgKiBmdWxsIGR1cmF0aW9uIG9mIGFueSBDUExEIG9wZXJhdGlvbi4gIE5vIHJhdyBJMkMgYWNjZXNzIGlzIGV4cG9zZWRcbiYjNDM7ICogdG8gdXNlcnNwYWNlOyBvbmx5IHRoZSBoaWdoLWxldmVsIGF0dHJpYnV0ZXMgYmVsb3cgYXJlLlxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNkZWZpbmUgQURWQV9NVVhfQUREUiAgICAgMHg3NFxuJiM0MzsjZGVmaW5lIEFEVkFfQ1BMRF9BRERSICAgIDB4NDBcbiYjNDM7I2RlZmluZSBBRFZBX01VWF9DSEFOTkVMICAwXG4mIzQzO1xuJiM0MzsjZGVmaW5lIE1CTEFaRV9SRVFVRVNUICAgIDB4MDAwMGFhYWFVXG4mIzQzOyNkZWZpbmUgTUJMQVpFX0dSQU5URUQgICAgMHg1NTU1YWFhYVVcbiYjNDM7I2RlZmluZSBNQkxBWkVfUkVMRUFTRSAgICAweDU1NTUwMDAwVVxuJiM0MzsjZGVmaW5lIE1CTEFaRV9SRVRSSUVTICAgIDIwMFxuJiM0MzsjZGVmaW5lIE1CTEFaRV9SRVRSWV9VUyAgIDEwMDAwXG4mIzQzO1xuJiM0MzsvKiBMYXR0aWNlIExDTVhPM0xGIElTQyBjb21tYW5kIGNvZGVzICovXG4mIzQzOyNkZWZpbmUgQ1BMRF9DTURfUkVBRF9JRCAgICAgIDB4RTAwMDAwMDBVTFxuJiM0MzsjZGVmaW5lIENQTERfQ01EX1JFQURfU1RBVFVTICAweDNDMDAwMDAwVUxcbiYjNDM7I2RlZmluZSBDUExEX0NNRF9FTl9DRkdfVFAgICAgMHg3NCAgIC8qIGVuYWJsZSBjb25maWcsIHRyYW5zcGFyZW50IG1vZGUgKi9cbiYjNDM7I2RlZmluZSBDUExEX0NNRF9ESVNfQ0ZHICAgICAgMHgyNlxuJiM0MzsjZGVmaW5lIENQTERfQ01EX0VSQVNFICAgICAgICAweDBFXG4mIzQzOyNkZWZpbmUgQ1BMRF9DTURfUkVTRVRfQUREUiAgIDB4NDZcbiYjNDM7I2RlZmluZSBDUExEX0NNRF9XUklURV9QQUdFICAgMHg3MFxuJiM0MzsjZGVmaW5lIENQTERfQ01EX1NFVF9ET05FICAgICAweDVFXG4mIzQzOyNkZWZpbmUgQ1BMRF9DTURfUkVGUkVTSCAgICAgIDB4NzlcbiYjNDM7I2RlZmluZSBDUExEX1BBR0VfU0laRSAgICAgICAgMTZcbiYjNDM7XG4mIzQzOy8qIFN0YXR1cyByZWdpc3RlciBiaXQgcG9zaXRpb25zIChMYXR0aWNlIExDTVhPM0xGIGRhdGFzaGVldCkgKi9cbiYjNDM7I2RlZmluZSBDUExEX1NUQVRVU19ET05FICAgQklUKDgpXG4mIzQzOyNkZWZpbmUgQ1BMRF9TVEFUVVNfQlVTWSAgIEJJVCgxMilcbiYjNDM7I2RlZmluZSBDUExEX1NUQVRVU19GQUlMRUQgQklUKDEzKVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogYWR2YV94MV9pMmNfeGZlcigpIC0gaXNzdWUgYSBzaW5nbGUgSTJDIHRyYW5zYWN0aW9uIG9uIHRoZSBDUExEIGJ1cy5cbiYjNDM7ICpcbiYjNDM7ICogQWxsIGJ1ZmZlcnMgYXJlIGhlYXAtYWxsb2NhdGVkIGludGVybmFsbHkgdG8gZ3VhcmFudGVlIERNQSBzYWZldHkgZm9yXG4mIzQzOyAqIHRoZSBYaWxpbnggSTJDIGNvbnRyb2xsZXIuICBDYWxsZXIgbXVzdCBob2xkIGJwLVx1MDAzZWNwbGRfbG9jay5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgYWR2YV94MV9pMmNfeGZlcihzdHJ1Y3QgcHRwX29jcCAqYnAsXG4mIzQzO1x0XHRcdCAgICB1OCBhZGRyLCBjb25zdCB2b2lkICp3ZGF0YSwgdTggd2xlbixcbiYjNDM7XHRcdFx0ICAgIHZvaWQgKnJkYXRhLCB1OCBybGVuLCBib29sIG5vc3RhcnQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7XG4mIzQzO1x0c3RydWN0IGkyY19tc2cgbXNnc1syXTtcbiYjNDM7XHR1OCAqd2J1ZiA9IE5VTEwsICpyYnVmID0gTlVMTDtcbiYjNDM7XHRpbnQgbm1zZ3MgPSAwLCByZXQ7XG4mIzQzO1xuJiM0MztcdGFkYXAgPSBpMmNfZ2V0X2FkYXB0ZXIoUkVBRF9PTkNFKGJwLVx1MDAzZWNwbGRfaTJjX2FkYXBfbnIpKTtcbiYjNDM7XHRpZiAoIWFkYXApXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0aWYgKHdsZW4pIHtcbiYjNDM7XHRcdHdidWYgPSBrbWVtZHVwKHdkYXRhLCB3bGVuLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGlmICghd2J1Zikge1xuJiM0MztcdFx0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0XHRnb3RvIHB1dDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdG1zZ3Nbbm1zZ3MmIzQzOyYjNDM7XSA9IChzdHJ1Y3QgaTJjX21zZyl7XG4mIzQzO1x0XHRcdC5hZGRyICA9IGFkZHIsXG4mIzQzO1x0XHRcdC5mbGFncyA9IEkyQ19NX0RNQV9TQUZFLFxuJiM0MztcdFx0XHQubGVuICAgPSB3bGVuLFxuJiM0MztcdFx0XHQuYnVmICAgPSB3YnVmLFxuJiM0MztcdFx0fTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKHJsZW4pIHtcbiYjNDM7XHRcdHJidWYgPSBremFsbG9jKHJsZW4sIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0aWYgKCFyYnVmKSB7XG4mIzQzO1x0XHRcdHJldCA9IC1FTk9NRU07XG4mIzQzO1x0XHRcdGdvdG8gcHV0O1xuJiM0MztcdFx0fVxuJiM0MztcdFx0bXNnc1tubXNncyYjNDM7JiM0MztdID0gKHN0cnVjdCBpMmNfbXNnKXtcbiYjNDM7XHRcdFx0LmFkZHIgID0gYWRkcixcbiYjNDM7XHRcdFx0LmZsYWdzID0gSTJDX01fUkQgfCBJMkNfTV9ETUFfU0FGRSB8XG4mIzQzO1x0XHRcdFx0IChub3N0YXJ0ID8gSTJDX01fTk9TVEFSVCA6IDApLFxuJiM0MztcdFx0XHQubGVuICAgPSBybGVuLFxuJiM0MztcdFx0XHQuYnVmICAgPSByYnVmLFxuJiM0MztcdFx0fTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldCA9IGkyY190cmFuc2ZlcihhZGFwLCBtc2dzLCBubXNncyk7XG4mIzQzO1x0aWYgKHJldCA9PSBubXNncykge1xuJiM0MztcdFx0aWYgKHJkYXRhIFx1MDAyNlx1MDAyNiBybGVuKVxuJiM0MztcdFx0XHRtZW1jcHkocmRhdGEsIHJidWYsIHJsZW4pO1xuJiM0MztcdFx0cmV0ID0gMDtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cmV0ID0gKHJldCBcdTAwM2MgMCkgPyByZXQgOiAtRUlPO1xuJiM0MztcdH1cbiYjNDM7cHV0OlxuJiM0MztcdGtmcmVlKHdidWYpO1xuJiM0MztcdGtmcmVlKHJidWYpO1xuJiM0MztcdGkyY19wdXRfYWRhcHRlcihhZGFwKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBBY3F1aXJlIHRoZSBzaGFyZWQgSTJDIGJ1cyBmcm9tIHRoZSBNaWNyb0JsYXplIGZpcm13YXJlLiAqL1xuJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoc3RydWN0IHB0cF9vY3AgKmJwKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIHZhbDtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFicC1cdTAwM2VwcHNfc2VsZWN0KVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdC8qIFJlbGVhc2UgYW55IHN0YWxlIGdyYW50IGxlZnQgYnkgYSBwcmV2aW91cyBjcmFzaGVkIGNhbGxlci4gKi9cbiYjNDM7XHRpb3dyaXRlMzIoMCwgXHUwMDI2YnAtXHUwMDNlcHBzX3NlbGVjdC1cdTAwM2VpMmNfYnVzX2N0cmwpO1xuJiM0MztcdHZhbCA9IGlvcmVhZDMyKFx1MDAyNmJwLVx1MDAzZXBwc19zZWxlY3QtXHUwMDNlaTJjX2J1c19jdHJsKTtcbiYjNDM7XHRpZiAodmFsICE9IDApXG4mIzQzO1x0XHRyZXR1cm4gLUVCVVNZO1xuJiM0MztcbiYjNDM7XHRpb3dyaXRlMzIoTUJMQVpFX1JFUVVFU1QsIFx1MDAyNmJwLVx1MDAzZXBwc19zZWxlY3QtXHUwMDNlaTJjX2J1c19jdHJsKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQkxBWkVfUkVUUklFUzsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHVzbGVlcF9yYW5nZShNQkxBWkVfUkVUUllfVVMsIE1CTEFaRV9SRVRSWV9VUyAmIzQzOyAxMDAwKTtcbiYjNDM7XHRcdHZhbCA9IGlvcmVhZDMyKFx1MDAyNmJwLVx1MDAzZXBwc19zZWxlY3QtXHUwMDNlaTJjX2J1c19jdHJsKTtcbiYjNDM7XHRcdGlmICh2YWwgPT0gTUJMQVpFX0dSQU5URUQpXG4mIzQzO1x0XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYWR2YV94MV9tYmxhemVfcmVsZWFzZShzdHJ1Y3QgcHRwX29jcCAqYnApXG4mIzQzO3tcbiYjNDM7XHRpZiAoYnAtXHUwMDNlcHBzX3NlbGVjdClcbiYjNDM7XHRcdGlvd3JpdGUzMihNQkxBWkVfUkVMRUFTRSwgXHUwMDI2YnAtXHUwMDNlcHBzX3NlbGVjdC1cdTAwM2VpMmNfYnVzX2N0cmwpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfbXV4X3NlbGVjdChzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBjaClcbiYjNDM7e1xuJiM0MztcdHU4IHZhbCA9IChjaCBcdTAwM2U9IDApID8gQklUKGNoKSA6IDA7XG4mIzQzO1xuJiM0MztcdHJldHVybiBhZHZhX3gxX2kyY194ZmVyKGJwLCBBRFZBX01VWF9BRERSLCBcdTAwMjZ2YWwsIDEsIE5VTEwsIDAsIGZhbHNlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogU2VuZCAxLWJ5dGUgSVNDIGNvbW1hbmQgJiM0Mzsgb3B0aW9uYWwgYXJndW1lbnRzLiAqL1xuJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF93cml0ZShzdHJ1Y3QgcHRwX29jcCAqYnAsXG4mIzQzO1x0XHRcdCAgICAgIHU4IGNtZCwgY29uc3QgdTggKmFyZ3MsIHU4IG5hcmdzKVxuJiM0Mzt7XG4mIzQzO1x0dTggYnVmWzEgJiM0MzsgNjRdO1xuJiM0MztcbiYjNDM7XHRpZiAobmFyZ3MgXHUwMDNlIDY0KVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0YnVmWzBdID0gY21kO1xuJiM0MztcdGlmIChuYXJncylcbiYjNDM7XHRcdG1lbWNweShcdTAwMjZidWZbMV0sIGFyZ3MsIG5hcmdzKTtcbiYjNDM7XHRyZXR1cm4gYWR2YV94MV9pMmNfeGZlcihicCwgQURWQV9DUExEX0FERFIsIGJ1ZiwgMSAmIzQzOyBuYXJncyxcbiYjNDM7XHRcdFx0XHQgTlVMTCwgMCwgZmFsc2UpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBTZW5kIGEgNC1ieXRlIGNvbW1hbmQgdGhlbiByZWFkIGRhdGEgYmFjayB3aXRob3V0IGFuIGludGVybWVkaWF0ZSBTVE9QXG4mIzQzOyAqIChMYXR0aWNlIGNvbWJpbmVkIHdyaXRl4oaScmVwZWF0ZWQtU1RBUlTihpJyZWFkKS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgYWR2YV94MV9jcGxkX2NtZF9yZWFkKHN0cnVjdCBwdHBfb2NwICpicCxcbiYjNDM7XHRcdFx0XHQgdTMyIGNtZF9iZSwgdTggKm91dCwgdTggb3V0X2xlbilcbiYjNDM7e1xuJiM0MztcdF9fYmUzMiBjbWQgPSBjcHVfdG9fYmUzMihjbWRfYmUpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gYWR2YV94MV9pMmNfeGZlcihicCwgQURWQV9DUExEX0FERFIsIFx1MDAyNmNtZCwgNCwgb3V0LCBvdXRfbGVuLCB0cnVlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoc3RydWN0IHB0cF9vY3AgKmJwLCB1MzIgKnN0YXR1cylcbiYjNDM7e1xuJiM0MztcdHU4IGJ1Zls0XTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfU1RBVFVTLCBidWYsIDQpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdCpzdGF0dXMgPSBnZXRfdW5hbGlnbmVkX2JlMzIoYnVmKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShzdHJ1Y3QgcHRwX29jcCAqYnAsIHVuc2lnbmVkIGludCBtYXhfbXMpXG4mIzQzO3tcbiYjNDM7XHR1MzIgc3RhdHVzO1xuJiM0MztcdHVuc2lnbmVkIGludCBlbGFwc2VkID0gMDtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKGVsYXBzZWQgXHUwMDNjIG1heF9tcykge1xuJiM0MztcdFx0aWYgKGFkdmFfeDFfY3BsZF9yZWFkX3N0YXR1cyhicCwgXHUwMDI2c3RhdHVzKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0XHRpZiAoc3RhdHVzIFx1MDAyNiBDUExEX1NUQVRVU19GQUlMRUQpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0aWYgKCEoc3RhdHVzIFx1MDAyNiBDUExEX1NUQVRVU19CVVNZKSlcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR1c2xlZXBfcmFuZ2UoMTAwMDAwLCAxMDEwMDApO1xuJiM0MztcdFx0ZWxhcHNlZCAmIzQzOz0gMTAwO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogY3BsZF9kZXZpY2VfaWQgLSBzaG93IHRoZSBMYXR0aWNlIGRldmljZSBJRCBvZiB0aGUgVEFQIENQTEQuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnMgdGhlIDMyLWJpdCBJRCBhcyBhIGhleCBzdHJpbmcsIGUuZy4gXCYjMzQ7MHg2MTJiYzA0M1xcblwmIzM0Oy5cbiYjNDM7ICogTGF0dGljZSBMQ01YTzNMRi0yMTAgcmVwb3J0cyAweDYxMkJDMDQzLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHNzaXplX3RcbiYjNDM7Y3BsZF9kZXZpY2VfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiM0MztcdFx0ICAgIGNoYXIgKmJ1ZilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwdHBfb2NwICpicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuJiM0MztcdHU4IGRhdGFbNF07XG4mIzQzO1x0dTMyIGlkID0gMDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmJwLVx1MDAzZWNwbGRfbG9jayk7XG4mIzQzO1x0cmV0ID0gYWR2YV94MV9tYmxhemVfYWNxdWlyZShicCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdHJldCA9IGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gcmVsZWFzZTtcbiYjNDM7XHRyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfSUQsIGRhdGEsIDQpO1xuJiM0MztcdGlmICghcmV0KVxuJiM0MztcdFx0aWQgPSAoKHUzMilkYXRhWzBdIFx1MDAzY1x1MDAzYyAyNCkgfCAoKHUzMilkYXRhWzFdIFx1MDAzY1x1MDAzYyAxNikgfFxuJiM0MztcdFx0ICAgICAoKHUzMilkYXRhWzJdIFx1MDAzY1x1MDAzYyAgOCkgfCAgKHUzMilkYXRhWzNdO1xuJiM0MztcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xuJiM0MztyZWxlYXNlOlxuJiM0MztcdGFkdmFfeDFfbWJsYXplX3JlbGVhc2UoYnApO1xuJiM0MztvdXQ6XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmJwLVx1MDAzZWNwbGRfbG9jayk7XG4mIzQzO1x0cmV0dXJuIHJldCA/IHJldCA6IHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsweCUwOHhcXG5cJiMzNDssIGlkKTtcbiYjNDM7fVxuJiM0MztzdGF0aWMgREVWSUNFX0FUVFJfUk8oY3BsZF9kZXZpY2VfaWQpO1xuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogY3BsZF9zdGF0dXMgLSBzaG93IHRoZSBzdGF0dXMgcmVnaXN0ZXIgb2YgdGhlIFRBUCBDUExELlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nOiBcJiMzNDtkb25lPVx1MDAzYzB8MVx1MDAzZSBidXN5PVx1MDAzYzB8MVx1MDAzZSBmYWlsZWQ9XHUwMDNjMHwxXHUwMDNlXFxuXCYjMzQ7XG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgc3NpemVfdFxuJiM0MztjcGxkX3N0YXR1c19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4mIzQzO1x0XHQgY2hhciAqYnVmKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4mIzQzO1x0dTMyIHN0ID0gMDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmJwLVx1MDAzZWNwbGRfbG9jayk7XG4mIzQzO1x0cmV0ID0gYWR2YV94MV9tYmxhemVfYWNxdWlyZShicCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdHJldCA9IGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gcmVsZWFzZTtcbiYjNDM7XHRyZXQgPSBhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsIFx1MDAyNnN0KTtcbiYjNDM7XHRhZHZhX3gxX211eF9zZWxlY3QoYnAsIC0xKTtcbiYjNDM7cmVsZWFzZTpcbiYjNDM7XHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcbiYjNDM7b3V0OlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuJiM0MztcdHJldHVybiByZXQgPyByZXQgOiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7ZG9uZT0ldSBidXN5PSV1IGZhaWxlZD0ldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgICAhIShzdCBcdTAwMjYgQ1BMRF9TVEFUVVNfRE9ORSksXG4mIzQzO1x0XHRcdFx0ICAgICAgISEoc3QgXHUwMDI2IENQTERfU1RBVFVTX0JVU1kpLFxuJiM0MztcdFx0XHRcdCAgICAgICEhKHN0IFx1MDAyNiBDUExEX1NUQVRVU19GQUlMRUQpKTtcbiYjNDM7fVxuJiM0MztzdGF0aWMgREVWSUNFX0FUVFJfUk8oY3BsZF9zdGF0dXMpO1xuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogYWR2YV94MSBDUExEIGZpcm13YXJlLXVwbG9hZCBjYWxsYmFja3MuXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSBrZXJuZWwgZmlybXdhcmUtdXBsb2FkIHN1YnN5c3RlbSAoQ09ORklHX0ZXX1VQTE9BRCkgZXhwb3NlczpcbiYjNDM7ICogICAvc3lzL2NsYXNzL2Zpcm13YXJlL2FkdmEtY3BsZC97ZGF0YSxsb2FkaW5nLHN0YXR1cyxlcnJvciwuLi59XG4mIzQzOyAqIFVzZXJzcGFjZSB3cml0ZXMgdGhlIHJhdyBiaW5hcnkgcGFnZSBkYXRhIGRpcmVjdGx5IOKAlCBubyAvbGliL2Zpcm13YXJlL1xuJiM0MzsgKiBzdGFnaW5nIGZpbGUgaXMgbmVlZGVkLlxuJiM0MzsgKlxuJiM0MzsgKiBDYWxsYmFjayBzZXF1ZW5jZSBkcml2ZW4gYnkgdGhlIGZyYW1ld29yazpcbiYjNDM7ICogICBwcmVwYXJlKCkgICAgICAtIHZhbGlkYXRlIHNpemUsIGFjcXVpcmUgYnVzLCBlbmFibGUgY29uZmlnLCBlcmFzZSBmbGFzaFxuJiM0MzsgKiAgIHdyaXRlKCkgICAgICAgIC0gcHJvZ3JhbSBvbmUgMTYtYnl0ZSBwYWdlIHBlciBjYWxsXG4mIzQzOyAqICAgcG9sbF9jb21wbGV0ZSgpLSBzZXQgRE9ORSwgUkVGUkVTSCwgd2FpdCBmb3IgQ1BMRCB0byByZWJvb3RcbiYjNDM7ICogICBjYW5jZWwoKSAgICAgICAtIHNldCBmbGFnOyBjaGVja2VkIGF0IHRoZSBzdGFydCBvZiBlYWNoIGNhbGxiYWNrXG4mIzQzOyAqICAgY2xlYW51cCgpICAgICAgLSByZWxlYXNlIGJ1cyByZXNvdXJjZXMgKGNhbGxlZCBvbiBzdWNjZXNzIG9yIGZhaWx1cmUpXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgZW51bSBmd191cGxvYWRfZXJyXG4mIzQzO2FkdmFfY3BsZF9wcmVwYXJlKHN0cnVjdCBmd191cGxvYWQgKmZ3bCwgY29uc3QgdTggKmRhdGEsIHUzMiBzaXplKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbiYjNDM7XHRjb25zdCB1OCBlbl9hcmdzWzJdICA9IHsgMHgwOCwgMHgwMCB9O1xuJiM0MztcdGNvbnN0IHU4IGVyYV9hcmdzWzNdID0geyAweDA0LCAweDAwLCAweDAwIH07IC8qIGNmZyBzZWN0b3Igb25seSAqL1xuJiM0MztcdGNvbnN0IHU4IHplcm8zWzNdICAgID0geyAwIH07XG4mIzQzO1x0Y29uc3QgdTggZGlzX2FyZ3NbMl0gPSB7IDB4MDAsIDB4MDAgfTtcbiYjNDM7XHRlbnVtIGZ3X3VwbG9hZF9lcnIgcmV0ID0gRldfVVBMT0FEX0VSUl9OT05FO1xuJiM0MztcbiYjNDM7XHRpZiAoIXNpemUgfHwgc2l6ZSAlIENQTERfUEFHRV9TSVpFKVxuJiM0MztcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSU5WQUxJRF9TSVpFO1xuJiM0MztcbiYjNDM7XHRicC1cdTAwM2VjcGxkX2NhbmNlbFx0XHQ9IGZhbHNlO1xuJiM0MztcdGJwLVx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGVcdD0gZmFsc2U7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApKSB7XG4mIzQzO1x0XHRyZXQgPSBGV19VUExPQURfRVJSX1RJTUVPVVQ7XG4mIzQzO1x0XHRnb3RvIGVycl91bmxvY2s7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoYWR2YV94MV9tdXhfc2VsZWN0KGJwLCBBRFZBX01VWF9DSEFOTkVMKSkge1xuJiM0MztcdFx0cmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbiYjNDM7XHRcdGdvdG8gZXJyX3JlbGVhc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9FTl9DRkdfVFAsIGVuX2FyZ3MsIDIpIHx8XG4mIzQzO1x0ICAgIGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KGJwLCA1MDAwKSkge1xuJiM0MztcdFx0cmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbiYjNDM7XHRcdGdvdG8gZXJyX2Rlc2VsZWN0O1xuJiM0MztcdH1cbiYjNDM7XHRicC1cdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlID0gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKGJwLVx1MDAzZWNwbGRfY2FuY2VsKSB7XG4mIzQzO1x0XHRyZXQgPSBGV19VUExPQURfRVJSX0NBTkNFTEVEO1xuJiM0MztcdFx0Z290byBlcnJfZGVzZWxlY3Q7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9FUkFTRSwgZXJhX2FyZ3MsIDMpIHx8XG4mIzQzO1x0ICAgIGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KGJwLCAxNTAwMCkpIHtcbiYjNDM7XHRcdHJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XG4mIzQzO1x0XHRnb3RvIGVycl9kZXNlbGVjdDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChicC1cdTAwM2VjcGxkX2NhbmNlbCkge1xuJiM0MztcdFx0cmV0ID0gRldfVVBMT0FEX0VSUl9DQU5DRUxFRDtcbiYjNDM7XHRcdGdvdG8gZXJyX2Rlc2VsZWN0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfUkVTRVRfQUREUiwgemVybzMsIDMpKSB7XG4mIzQzO1x0XHRyZXQgPSBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xuJiM0MztcdFx0Z290byBlcnJfZGVzZWxlY3Q7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9OT05FO1x0LyogY2xlYW51cCgpIHdpbGwgdW5sb2NrIGV2ZXJ5dGhpbmcgKi9cbiYjNDM7XG4mIzQzO2Vycl9kZXNlbGVjdDpcbiYjNDM7XHRpZiAoYnAtXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSkge1xuJiM0MztcdFx0YWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9ESVNfQ0ZHLCBkaXNfYXJncywgMik7XG4mIzQzO1x0XHRicC1cdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlID0gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xuJiM0MztlcnJfcmVsZWFzZTpcbiYjNDM7XHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcbiYjNDM7ZXJyX3VubG9jazpcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgZW51bSBmd191cGxvYWRfZXJyXG4mIzQzO2FkdmFfY3BsZF93cml0ZShzdHJ1Y3QgZndfdXBsb2FkICpmd2wsIGNvbnN0IHU4ICpkYXRhLFxuJiM0MztcdFx0dTMyIG9mZnNldCwgdTMyIHNpemUsIHUzMiAqd3JpdHRlbilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwdHBfb2NwICpicCA9IGZ3bC1cdTAwM2VkZF9oYW5kbGU7XG4mIzQzO1x0dTggcGFnZV9hcmdzWzMgJiM0MzsgQ1BMRF9QQUdFX1NJWkVdO1xuJiM0MztcbiYjNDM7XHRpZiAoYnAtXHUwMDNlY3BsZF9jYW5jZWwpXG4mIzQzO1x0XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9DQU5DRUxFRDtcbiYjNDM7XG4mIzQzO1x0aWYgKHNpemUgXHUwMDNjIENQTERfUEFHRV9TSVpFKVxuJiM0MztcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSU5WQUxJRF9TSVpFO1xuJiM0MztcbiYjNDM7XHRwYWdlX2FyZ3NbMF0gPSAweDAwO1xuJiM0MztcdHBhZ2VfYXJnc1sxXSA9IDB4MDA7XG4mIzQzO1x0cGFnZV9hcmdzWzJdID0gMHgwMTtcbiYjNDM7XHRtZW1jcHkoXHUwMDI2cGFnZV9hcmdzWzNdLCBkYXRhICYjNDM7IG9mZnNldCwgQ1BMRF9QQUdFX1NJWkUpO1xuJiM0MztcbiYjNDM7XHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9XUklURV9QQUdFLFxuJiM0MztcdFx0XHQgICAgICAgcGFnZV9hcmdzLCAzICYjNDM7IENQTERfUEFHRV9TSVpFKSB8fFxuJiM0MztcdCAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMTAwKSlcbiYjNDM7XHRcdHJldHVybiBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xuJiM0MztcbiYjNDM7XHQqd3JpdHRlbiA9IENQTERfUEFHRV9TSVpFO1xuJiM0MztcdHJldHVybiBGV19VUExPQURfRVJSX05PTkU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnJcbiYjNDM7YWR2YV9jcGxkX3BvbGxfY29tcGxldGUoc3RydWN0IGZ3X3VwbG9hZCAqZndsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbiYjNDM7XHRjb25zdCB1OCB6ZXJvM1szXSAgICA9IHsgMCB9O1xuJiM0MztcdGNvbnN0IHU4IHJlZl9hcmdzWzJdID0geyAweDAwLCAweDAwIH07XG4mIzQzO1x0dTMyIHN0O1xuJiM0MztcbiYjNDM7XHRpZiAoYnAtXHUwMDNlY3BsZF9jYW5jZWwpXG4mIzQzO1x0XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9DQU5DRUxFRDtcbiYjNDM7XG4mIzQzO1x0aWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfU0VUX0RPTkUsIHplcm8zLCAzKSB8fFxuJiM0MztcdCAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMTAwMCkpXG4mIzQzO1x0XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbiYjNDM7XG4mIzQzO1x0aWYgKGFkdmFfeDFfY3BsZF9yZWFkX3N0YXR1cyhicCwgXHUwMDI2c3QpIHx8ICEoc3QgXHUwMDI2IENQTERfU1RBVFVTX0RPTkUpKVxuJiM0MztcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XG4mIzQzO1xuJiM0MztcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX1JFRlJFU0gsIHJlZl9hcmdzLCAyKSlcbiYjNDM7XHRcdHJldHVybiBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xuJiM0MztcbiYjNDM7XHQvKiBDUExEIHJlYm9vdHMgYWZ0ZXIgUkVGUkVTSDsgcmUtc2VsZWN0IG11eCBvbmNlIGl0IGNvbWVzIGJhY2sgdXAgKi9cbiYjNDM7XHRtc2xlZXAoMTUwMCk7XG4mIzQzO1x0YWR2YV94MV9tdXhfc2VsZWN0KGJwLCBBRFZBX01VWF9DSEFOTkVMKTtcbiYjNDM7XHRpZiAoYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDMwMDApKVxuJiM0MztcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfVElNRU9VVDtcbiYjNDM7XG4mIzQzO1x0YnAtXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSA9IGZhbHNlO1xuJiM0MztcdHJldHVybiBGV19VUExPQURfRVJSX05PTkU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkXG4mIzQzO2FkdmFfY3BsZF9jYW5jZWwoc3RydWN0IGZ3X3VwbG9hZCAqZndsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbiYjNDM7XG4mIzQzO1x0YnAtXHUwMDNlY3BsZF9jYW5jZWwgPSB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZFxuJiM0MzthZHZhX2NwbGRfY2xlYW51cChzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcHRwX29jcCAqYnAgPSBmd2wtXHUwMDNlZGRfaGFuZGxlO1xuJiM0MztcdGNvbnN0IHU4IGRpc19hcmdzWzJdID0geyAweDAwLCAweDAwIH07XG4mIzQzO1xuJiM0MztcdGlmIChicC1cdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlKSB7XG4mIzQzO1x0XHRhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX0RJU19DRkcsIGRpc19hcmdzLCAyKTtcbiYjNDM7XHRcdGJwLVx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUgPSBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1x0YWR2YV94MV9tdXhfc2VsZWN0KGJwLCAtMSk7XG4mIzQzO1x0YWR2YV94MV9tYmxhemVfcmVsZWFzZShicCk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmJwLVx1MDAzZWNwbGRfbG9jayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZndfdXBsb2FkX29wcyBhZHZhX2NwbGRfdXBsb2FkX29wcyA9IHtcbiYjNDM7XHQucHJlcGFyZVx0ID0gYWR2YV9jcGxkX3ByZXBhcmUsXG4mIzQzO1x0LndyaXRlXHRcdCA9IGFkdmFfY3BsZF93cml0ZSxcbiYjNDM7XHQucG9sbF9jb21wbGV0ZVx0ID0gYWR2YV9jcGxkX3BvbGxfY29tcGxldGUsXG4mIzQzO1x0LmNhbmNlbFx0XHQgPSBhZHZhX2NwbGRfY2FuY2VsLFxuJiM0MztcdC5jbGVhbnVwXHQgPSBhZHZhX2NwbGRfY2xlYW51cCxcbiYjNDM7fTtcbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkdmFfdGltZWNhcmRfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRldl9hdHRyX3NlcmlhbG51bS5hdHRyLFxuIFx0XHUwMDI2ZGV2X2F0dHJfZ25zc19zeW5jLmF0dHIsXG5AQCAtNDI3Miw2ICYjNDM7NDczOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphZHZhX3RpbWVjYXJkX3gxX2F0dHJzW10gPSB7XG4gXHRcdTAwMjZkZXZfYXR0cl90c193aW5kb3dfYWRqdXN0LmF0dHIsXG4gXHRcdTAwMjZkZXZfYXR0cl91dGNfdGFpX29mZnNldC5hdHRyLFxuIFx0XHUwMDI2ZGV2X2F0dHJfdG9kX2NvcnJlY3Rpb24uYXR0cixcbiYjNDM7XHRcdTAwMjZkZXZfYXR0cl9jcGxkX2RldmljZV9pZC5hdHRyLFxuJiM0MztcdFx1MDAyNmRldl9hdHRyX2NwbGRfc3RhdHVzLmF0dHIsXG4gXHROVUxMLFxuIH07XG4gXG5AQCAtNDkwMiw2ICYjNDM7NTM3MSwxMSBAQCBwdHBfb2NwX2RldGFjaChzdHJ1Y3QgcHRwX29jcCAqYnApXG4gXHRcdGNsa19od191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUoYnAtXHUwMDNlaTJjX2Nsayk7XG4gXHRpZiAoYnAtXHUwMDNlbl9pcnFzKVxuIFx0XHRwY2lfZnJlZV9pcnFfdmVjdG9ycyhicC1cdTAwM2VwZGV2KTtcbiYjNDM7XHRpZiAoYnAtXHUwMDNlY3BsZF9md191cGxvYWQpIHtcbiYjNDM7XHRcdGZpcm13YXJlX3VwbG9hZF91bnJlZ2lzdGVyKGJwLVx1MDAzZWNwbGRfZndfdXBsb2FkKTtcbiYjNDM7XHRcdGJwLVx1MDAzZWNwbGRfZndfdXBsb2FkID0gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1x0bXV0ZXhfZGVzdHJveShcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuIFx0ZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2YnAtXHUwMDNlZGV2KTtcbiB9XG4gXG5AQCAtNTA3OCw2ICYjNDM7NTU1MiwxNyBAQCBwdHBfb2NwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIG91dF9kaXNhYmxlO1xuIFxuJiM0MztcdC8qIE11c3QgYmUgYmVmb3JlIHRoZSBmaXJzdCBlcnJvciBwYXRoIHRoYXQgY2FsbHMgcHRwX29jcF9kZXRhY2goKSxcbiYjNDM7XHQgKiBzbyBtdXRleF9kZXN0cm95KCkgYWx3YXlzIHJ1bnMgb24gYW4gaW5pdGlhbGlzZWQgbXV0ZXguXG4mIzQzO1x0ICogTXVzdCBhbHNvIGJlIGJlZm9yZSBwdHBfb2NwX3JlZ2lzdGVyX3Jlc291cmNlcygpOiB0aGUgSTJDIGJ1c1xuJiM0MztcdCAqIG5vdGlmaWVyIChwdHBfb2NwX2kyY19ub3RpZmllcl9jYWxsKSBmaXJlcyB3aGVuIHRoZSBhZGFwdGVyXG4mIzQzO1x0ICogcmVnaXN0ZXJzIGFuZCBzdG9yZXMgdGhlIGFkYXB0ZXIgbnVtYmVyIGluIGNwbGRfaTJjX2FkYXBfbnI7IHRoZVxuJiM0MztcdCAqIC0xIHNlbnRpbmVsIGJlbG93IG11c3QgYWxyZWFkeSBiZSB3cml0dGVuIHNvIHRoYXQgYSBub3RpZmllclxuJiM0MztcdCAqIGZpcmluZyBkdXJpbmcgcmVnaXN0cmF0aW9uIGlzIG5ldmVyIG92ZXJ3cml0dGVuIGJ5IHRoaXMgaW5pdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNmJwLVx1MDAzZWNwbGRfbG9jayk7XG4mIzQzO1x0YnAtXHUwMDNlY3BsZF9pMmNfYWRhcF9uciA9IC0xO1xuJiM0MztcbiBcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmJwLVx1MDAzZXN5bmNfd29yaywgcHRwX29jcF9zeW5jX3dvcmspO1xuIFxuIFx0LyogY29tcGF0IG1vZGUuXG5AQCAtNTIxNywxMSAmIzQzOzU3MDIsMTYgQEAgcHRwX29jcF9pMmNfbm90aWZpZXJfY2FsbChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxuIFxuIGZvdW5kOlxuIFx0YnAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbi1cdGlmIChhZGQpXG4mIzQzO1x0aWYgKGFkZCkge1xuIFx0XHRwdHBfb2NwX3N5bWxpbmsoYnAsIGNoaWxkLCBcJiMzNDtpMmNcJiMzNDspO1xuLVx0ZWxzZVxuJiM0MztcdFx0LyogQ2FjaGUgYWRhcHRlciBucjsgdXNlZCBieSBjcGxkX2RldmljZV9pZC9jcGxkX3N0YXR1cy9jcGxkX3Byb2dyYW1cbiYjNDM7XHRcdCAqIGZvciByZWZlcmVuY2UtY291bnRlZCB1bmJpbmQtc2FmZSBhZGFwdGVyIGFjY2Vzcy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0V1JJVEVfT05DRShicC1cdTAwM2VjcGxkX2kyY19hZGFwX25yLCBpMmNfdmVyaWZ5X2FkYXB0ZXIoY2hpbGQpLVx1MDAzZW5yKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0V1JJVEVfT05DRShicC1cdTAwM2VjcGxkX2kyY19hZGFwX25yLCAtMSk7IC8qIGludmFsaWRhdGUgYmVmb3JlIGZyZWUgKi9cbiBcdFx0c3lzZnNfcmVtb3ZlX2xpbmsoXHUwMDI2YnAtXHUwMDNlZGV2LmtvYmosIFwmIzM0O2kyY1wmIzM0Oyk7XG4tXG4mIzQzO1x0fVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIENQTEQgZmlybXdhcmUgdXBsb2FkIGFuZCBzeXNmcyBhdHRyaWJ1dGVzIGZvciB0aGUgQURWQSB4MSBPQ1AgVGltZWNhcmQsIHdoaWNoIGlzIGEgcGh5c2ljYWwgUENJZSBkZXZpY2UuIFRoZSBuZXcgY29kZSBoZWF2aWx5IHJlbGllcyBvbiBoYXJkd2FyZS1zcGVjaWZpYyBpbnRlcmFjdGlvbnMgKGUuZy4sIHBvbGxpbmcgTU1JTyByZWdpc3RlcnMgZm9yIE1pY3JvQmxhemUgZmlybXdhcmUgZ3JhbnRzLCBJMkMgY29tbXVuaWNhdGlvbiB3aXRoIGEgUENBOTU0OCBtdXggYW5kIExhdHRpY2UgQ1BMRCkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBjb3JlIGxvZ2ljIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGIxYzUzNDc2ZjVlYTAzOWFjMWEzNDRkMWI5OTBkZjlhNGY5NTc2NmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzIDE5OjQxOjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdGltZWNhcmQKaW5kZXggM2FlNDFiNzYzNGFjOS4uZjdjOTk1NWFjYjBhOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkCkBAIC0xMSw2ICYjNDM7MTEsNDAgQEAgQ29udGFjdDoJSm9uYXRoYW4gTGVtb24gJmx0O2pvbmF0aGFuLmxlbW9uQGdtYWlsLmNvbSZndDsKIERlc2NyaXB0aW9uOglUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgYXR0cmlidXRlcyBvZiB0aGUgTnRoIHRpbWVjYXJkCiAJCXJlZ2lzdGVyZWQuCiAKJiM0MztXaGF0OgkJL3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2NwbGRfZGV2aWNlX2lkCiYjNDM7RGF0ZToJCUp1bHkgMjAyNgomIzQzO0NvbnRhY3Q6CVNhZ2kgTWFpbW9uICZsdDttYWltb24uc2FnaUBnbWFpbC5jb20mZ3Q7CiYjNDM7RGVzY3JpcHRpb246CShSTykgVGhlIDMyLWJpdCBMYXR0aWNlIGRldmljZSBJRCBvZiB0aGUgVEFQIENQTEQsIHJlcG9ydGVkIGFzCiYjNDM7CQlhIGhleCBzdHJpbmcsIGUuZy4gJiMzNDsweGUxMmJjMDQzJiMzNDsuCiYjNDM7CiYjNDM7CQlPbmx5IHByZXNlbnQgb24gQURWQSB4MSBUQVAgYm9hcmRzIChQQ0kgSUQgMHhhZDVhOjB4MDQxMCkuCiYjNDM7CQlUaGUgTGF0dGljZSBMQ01YTzNMRi0yMTAgcmVwb3J0cyAweGUxMmJjMDQzLgomIzQzOwomIzQzOwkJVGhlIGRyaXZlciBhY3F1aXJlcyB0aGUgTWljcm9CbGF6ZSBJMkMgYnVzIGludGVybmFsbHkgYmVmb3JlCiYjNDM7CQlpc3N1aW5nIHRoZSBSRUFEX0lEQ09ERSBjb21tYW5kOyBubyBidXMgYXJiaXRyYXRpb24gaXMgcmVxdWlyZWQKJiM0MzsJCWZyb20gdXNlcnNwYWNlLgomIzQzOwomIzQzO1doYXQ6CQkvc3lzL2NsYXNzL3RpbWVjYXJkL29jcE4vY3BsZF9zdGF0dXMKJiM0MztEYXRlOgkJSnVseSAyMDI2CiYjNDM7Q29udGFjdDoJU2FnaSBNYWltb24gJmx0O21haW1vbi5zYWdpQGdtYWlsLmNvbSZndDsKJiM0MztEZXNjcmlwdGlvbjoJKFJPKSBUaGUgc3RhdHVzIHJlZ2lzdGVyIG9mIHRoZSBUQVAgQ1BMRCwgaW4gaHVtYW4tcmVhZGFibGUKJiM0MzsJCWZvcm06CiYjNDM7CiYjNDM7CQkgIGRvbmU9Jmx0OzB8MSZndDsgYnVzeT0mbHQ7MHwxJmd0OyBmYWlsZWQ9Jmx0OzB8MSZndDsKJiM0MzsKJiM0MzsJCU9ubHkgcHJlc2VudCBvbiBBRFZBIHgxIFRBUCBib2FyZHMgKFBDSSBJRCAweGFkNWE6MHgwNDEwKS4KJiM0MzsKJiM0MzsJCWRvbmU9MSBpbmRpY2F0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gZmxhc2ggd2FzIHN1Y2Nlc3NmdWxseQomIzQzOwkJcHJvZ3JhbW1lZCBhbmQgaXMgYWN0aXZlLiAgYnVzeT0xIG1lYW5zIGFuIGludGVybmFsIG9wZXJhdGlvbgomIzQzOwkJaXMgaW4gcHJvZ3Jlc3MuICBmYWlsZWQ9MSBtZWFucyB0aGUgbGFzdCBJU0Mgb3BlcmF0aW9uIGZhaWxlZC4KJiM0MzsKJiM0MzsJCVRoZSBkcml2ZXIgYWNxdWlyZXMgdGhlIE1pY3JvQmxhemUgSTJDIGJ1cyBpbnRlcm5hbGx5OyBubyBidXMKJiM0MzsJCWFyYml0cmF0aW9uIGlzIHJlcXVpcmVkIGZyb20gdXNlcnNwYWNlLgomIzQzOwomIzQzOwkJVG8gcHJvZ3JhbSBuZXcgQ1BMRCBmaXJtd2FyZSB1c2UgdGhlIHN0YW5kYXJkIGtlcm5lbAomIzQzOwkJZmlybXdhcmUtdXBsb2FkIGludGVyZmFjZSByZWdpc3RlcmVkIGF0OgomIzQzOwkJL3N5cy9jbGFzcy9maXJtd2FyZS9hZHZhLWNwbGQvCiYjNDM7CiBXaGF0OgkJL3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2F2YWlsYWJsZV9jbG9ja19zb3VyY2VzCiBEYXRlOgkJU2VwdGVtYmVyIDIwMjEKIENvbnRhY3Q6CUpvbmF0aGFuIExlbW9uICZsdDtqb25hdGhhbi5sZW1vbkBnbWFpbC5jb20mZ3Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9wdHBfb2NwLmMgYi9kcml2ZXJzL3B0cC9wdHBfb2NwLmMKaW5kZXggMzVlOTExZjFhZDc4Yy4uZGI4YWIxNjFkNGYwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wdHAvcHRwX29jcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL3B0cF9vY3AuYwpAQCAtMjQsNiAmIzQzOzI0LDExIEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbnZtZW0tY29uc3VtZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jcmMxNi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2RwbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2Zpcm13YXJlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2Zpcm13YXJlLmgmZ3Q7CiAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9NRVRBX1RJTUVDQVJECQkweDA0MDAKIApAQCAtODUsNiAmIzQzOzkwLDcgQEAgc3RydWN0IHB0cF9vY3BfYWR2YV9pbmZvIHsKIAl1OAkJCQlzaWduYWxzX25yOwogCXU4CQkJCWZyZXFfaW5fbnI7CiAJY29uc3Qgc3RydWN0IG9jcF9hdHRyX2dyb3VwCSphdHRyX2dyb3VwczsKJiM0MzsJYm9vbAkJCQloYXNfY3BsZDsgLyogeDE6IHN1cHBvcnRzIENQTEQgZmlybXdhcmUgdXBsb2FkICovCiB9OwogCiAjZGVmaW5lIE9DUF9DVFJMX0VOQUJMRQkJQklUKDApCkBAIC0xNjMsNyAmIzQzOzE2OSw4IEBAIHN0cnVjdCBncGlvX3JlZyB7CiAJdTMyCWdwaW8xOwogCXUzMglfX3BhZDA7CiAJdTMyCWdwaW8yOwotCXUzMglfX3BhZDE7CiYjNDM7CS8qIGFkdmFfeDE6IEkyQyBidXMgb3duZXJzaGlwIHJlZ2lzdGVyOyByZXNlcnZlZCBvbiBvdGhlciB2YXJpYW50cyAqLwomIzQzOwl1MzIJaTJjX2J1c19jdHJsOwogfTsKIAogc3RydWN0IGlyaWdfbWFzdGVyX3JlZyB7CkBAIC00MTYsNiAmIzQzOzQyMywxMiBAQCBzdHJ1Y3QgcHRwX29jcCB7CiAJZHBsbF90cmFja2VyIHRyYWNrZXI7CiAJaW50IHNpZ25hbHNfbnI7CiAJaW50IGZyZXFfaW5fbnI7CiYjNDM7CS8qIGFkdmFfeDEgQ1BMRCBJMkMgKGludGVybmFsIHVzZSBvbmx5KSAqLwomIzQzOwlzdHJ1Y3QgbXV0ZXgJCWNwbGRfbG9jazsgICAgICAgICAgICAvKiBzZXJpYWxpc2VzIENQTEQgb3BlcmF0aW9ucyAqLwomIzQzOwlpbnQJCQljcGxkX2kyY19hZGFwX25yOyAgICAgLyogSTJDIGFkYXB0ZXIgbnI7IC0xIGlmIGFic2VudCAqLwomIzQzOwlzdHJ1Y3QgZndfdXBsb2FkCSpjcGxkX2Z3X3VwbG9hZDsgICAgICAvKiBmaXJtd2FyZSB1cGxvYWQgaGFuZGxlOyBOVUxMIGlmIGFic2VudCAqLwomIzQzOwlib29sCQkJY3BsZF9jYW5jZWw7ICAgICAgICAgIC8qIGNhbmNlbGxhdGlvbiByZXF1ZXN0ZWQgKi8KJiM0MzsJYm9vbAkJCWNwbGRfaW5fY29uZmlnX21vZGU7ICAvKiBFTl9DRkdfVFAgaXNzdWVkIGJ1dCBub3QgeWV0IFJFRlJFU0gmIzM5O2QgKi8KIH07CiAKICNkZWZpbmUgT0NQX1JFUV9USU1FU1RBTVAJQklUKDApCkBAIC00NDksNiAmIzQzOzQ2Miw4IEBAIHN0YXRpYyBpbnQgcHRwX29jcF9hcnRfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpOwogCiBzdGF0aWMgaW50IHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0KHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGZ3X3VwbG9hZF9vcHMgYWR2YV9jcGxkX3VwbG9hZF9vcHM7CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9zbWFfb3Agb2NwX2FkdmFfc21hX29wOwogc3RhdGljIGNvbnN0IHN0cnVjdCBvY3Bfc21hX29wIG9jcF9hZHZhX3gxX3NtYV9vcDsKIApAQCAtMTI3Myw2ICYjNDM7MTI4OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgb2NwX3Jlc291cmNlIG9jcF9hZHZhX3gxX3Jlc291cmNlW10gPSB7CiAJCQkuc2lnbmFsc19uciAgID0gNCwKIAkJCS5mcmVxX2luX25yICAgPSA0LAogCQkJLmF0dHJfZ3JvdXBzICA9IGFkdmFfdGltZWNhcmRfeDFfZ3JvdXBzLAomIzQzOwkJCS5oYXNfY3BsZCAgICAgPSB0cnVlLAogCQl9LAogCX0sCiAJeyB9CkBAIC0zMTk3LDYgJiM0MzszMjEzLDIwIEBAIHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0KHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcikKIAkJcmV0dXJuIGVycjsKIAlwdHBfb2NwX3NtYV9pbml0KGJwKTsKIAomIzQzOwlpZiAoaW5mby0mZ3Q7aGFzX2NwbGQpIHsKJiM0MzsJCXN0cnVjdCBmd191cGxvYWQgKmZ3bDsKJiM0MzsKJiM0MzsJCWZ3bCA9IGZpcm13YXJlX3VwbG9hZF9yZWdpc3RlcihUSElTX01PRFVMRSwgJmFtcDticC0mZ3Q7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCQkJICAgICAgICYjMzQ7YWR2YS1jcGxkJiMzNDssCiYjNDM7CQkJCQkgICAgICAgJmFtcDthZHZhX2NwbGRfdXBsb2FkX29wcywgYnApOwomIzQzOwkJaWYgKElTX0VSUihmd2wpKQomIzQzOwkJCWRldl93YXJuKCZhbXA7YnAtJmd0O3BkZXYtJmd0O2RldiwKJiM0MzsJCQkJICYjMzQ7Q1BMRCBmaXJtd2FyZSB1cGxvYWQgdW5hdmFpbGFibGU6ICVwZVxuJiMzNDssCiYjNDM7CQkJCSBmd2wpOwomIzQzOwkJZWxzZQomIzQzOwkJCWJwLSZndDtjcGxkX2Z3X3VwbG9hZCA9IGZ3bDsKJiM0MzsJfQomIzQzOwogCXJldHVybiBwdHBfb2NwX2luaXRfY2xvY2soYnAsICZhbXA7aW5mby0mZ3Q7c2Vydm8pOwogfQogCkBAIC00MjI0LDYgJiM0Mzs0MjU0LDQ0MyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9hdHRyX2dyb3VwIGFydF90aW1lY2FyZF9ncm91cHNbXSA9IHsKIAl7IH0sCiB9OwogCiYjNDM7LyoKJiM0MzsgKiBJbnRlcm5hbCBoZWxwZXJzIGZvciB0aGUgYWR2YV94MSBUQVAgQ1BMRCAoTGF0dGljZSBMQ01YTzNMRi0yMTApLgomIzQzOyAqCiYjNDM7ICogVGhlIENQTEQgc2l0cyBhdCBJMkMgYWRkcmVzcyAweDQwIGJlaGluZCBhIFBDQTk1NDggbXV4ICgweDc0KSBvbgomIzQzOyAqIGNoYW5uZWwgMC4gIFRoZSBJMkMgYnVzIGlzIHNoYXJlZCB3aXRoIHRoZSBNaWNyb0JsYXplIGZpcm13YXJlOwomIzQzOyAqIGNwbGRfbG9jayAmIzQzOyBtYmxhemUgYWNxdWlyZS9yZWxlYXNlIHByb3ZpZGUgbXV0dWFsIGV4Y2x1c2lvbiBmb3IgdGhlCiYjNDM7ICogZnVsbCBkdXJhdGlvbiBvZiBhbnkgQ1BMRCBvcGVyYXRpb24uICBObyByYXcgSTJDIGFjY2VzcyBpcyBleHBvc2VkCiYjNDM7ICogdG8gdXNlcnNwYWNlOyBvbmx5IHRoZSBoaWdoLWxldmVsIGF0dHJpYnV0ZXMgYmVsb3cgYXJlLgomIzQzOyAqLwomIzQzOwomIzQzOyNkZWZpbmUgQURWQV9NVVhfQUREUiAgICAgMHg3NAomIzQzOyNkZWZpbmUgQURWQV9DUExEX0FERFIgICAgMHg0MAomIzQzOyNkZWZpbmUgQURWQV9NVVhfQ0hBTk5FTCAgMAomIzQzOwomIzQzOyNkZWZpbmUgTUJMQVpFX1JFUVVFU1QgICAgMHgwMDAwYWFhYVUKJiM0MzsjZGVmaW5lIE1CTEFaRV9HUkFOVEVEICAgIDB4NTU1NWFhYWFVCiYjNDM7I2RlZmluZSBNQkxBWkVfUkVMRUFTRSAgICAweDU1NTUwMDAwVQomIzQzOyNkZWZpbmUgTUJMQVpFX1JFVFJJRVMgICAgMjAwCiYjNDM7I2RlZmluZSBNQkxBWkVfUkVUUllfVVMgICAxMDAwMAomIzQzOwomIzQzOy8qIExhdHRpY2UgTENNWE8zTEYgSVNDIGNvbW1hbmQgY29kZXMgKi8KJiM0MzsjZGVmaW5lIENQTERfQ01EX1JFQURfSUQgICAgICAweEUwMDAwMDAwVUwKJiM0MzsjZGVmaW5lIENQTERfQ01EX1JFQURfU1RBVFVTICAweDNDMDAwMDAwVUwKJiM0MzsjZGVmaW5lIENQTERfQ01EX0VOX0NGR19UUCAgICAweDc0ICAgLyogZW5hYmxlIGNvbmZpZywgdHJhbnNwYXJlbnQgbW9kZSAqLwomIzQzOyNkZWZpbmUgQ1BMRF9DTURfRElTX0NGRyAgICAgIDB4MjYKJiM0MzsjZGVmaW5lIENQTERfQ01EX0VSQVNFICAgICAgICAweDBFCiYjNDM7I2RlZmluZSBDUExEX0NNRF9SRVNFVF9BRERSICAgMHg0NgomIzQzOyNkZWZpbmUgQ1BMRF9DTURfV1JJVEVfUEFHRSAgIDB4NzAKJiM0MzsjZGVmaW5lIENQTERfQ01EX1NFVF9ET05FICAgICAweDVFCiYjNDM7I2RlZmluZSBDUExEX0NNRF9SRUZSRVNIICAgICAgMHg3OQomIzQzOyNkZWZpbmUgQ1BMRF9QQUdFX1NJWkUgICAgICAgIDE2CiYjNDM7CiYjNDM7LyogU3RhdHVzIHJlZ2lzdGVyIGJpdCBwb3NpdGlvbnMgKExhdHRpY2UgTENNWE8zTEYgZGF0YXNoZWV0KSAqLwomIzQzOyNkZWZpbmUgQ1BMRF9TVEFUVVNfRE9ORSAgIEJJVCg4KQomIzQzOyNkZWZpbmUgQ1BMRF9TVEFUVVNfQlVTWSAgIEJJVCgxMikKJiM0MzsjZGVmaW5lIENQTERfU1RBVFVTX0ZBSUxFRCBCSVQoMTMpCiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBhZHZhX3gxX2kyY194ZmVyKCkgLSBpc3N1ZSBhIHNpbmdsZSBJMkMgdHJhbnNhY3Rpb24gb24gdGhlIENQTEQgYnVzLgomIzQzOyAqCiYjNDM7ICogQWxsIGJ1ZmZlcnMgYXJlIGhlYXAtYWxsb2NhdGVkIGludGVybmFsbHkgdG8gZ3VhcmFudGVlIERNQSBzYWZldHkgZm9yCiYjNDM7ICogdGhlIFhpbGlueCBJMkMgY29udHJvbGxlci4gIENhbGxlciBtdXN0IGhvbGQgYnAtJmd0O2NwbGRfbG9jay4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfaTJjX3hmZXIoc3RydWN0IHB0cF9vY3AgKmJwLAomIzQzOwkJCSAgICB1OCBhZGRyLCBjb25zdCB2b2lkICp3ZGF0YSwgdTggd2xlbiwKJiM0MzsJCQkgICAgdm9pZCAqcmRhdGEsIHU4IHJsZW4sIGJvb2wgbm9zdGFydCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcDsKJiM0MzsJc3RydWN0IGkyY19tc2cgbXNnc1syXTsKJiM0MzsJdTggKndidWYgPSBOVUxMLCAqcmJ1ZiA9IE5VTEw7CiYjNDM7CWludCBubXNncyA9IDAsIHJldDsKJiM0MzsKJiM0MzsJYWRhcCA9IGkyY19nZXRfYWRhcHRlcihSRUFEX09OQ0UoYnAtJmd0O2NwbGRfaTJjX2FkYXBfbnIpKTsKJiM0MzsJaWYgKCFhZGFwKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWlmICh3bGVuKSB7CiYjNDM7CQl3YnVmID0ga21lbWR1cCh3ZGF0YSwgd2xlbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CQlpZiAoIXdidWYpIHsKJiM0MzsJCQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJCWdvdG8gcHV0OwomIzQzOwkJfQomIzQzOwkJbXNnc1tubXNncyYjNDM7JiM0MztdID0gKHN0cnVjdCBpMmNfbXNnKXsKJiM0MzsJCQkuYWRkciAgPSBhZGRyLAomIzQzOwkJCS5mbGFncyA9IEkyQ19NX0RNQV9TQUZFLAomIzQzOwkJCS5sZW4gICA9IHdsZW4sCiYjNDM7CQkJLmJ1ZiAgID0gd2J1ZiwKJiM0MzsJCX07CiYjNDM7CX0KJiM0MzsJaWYgKHJsZW4pIHsKJiM0MzsJCXJidWYgPSBremFsbG9jKHJsZW4sIEdGUF9LRVJORUwpOwomIzQzOwkJaWYgKCFyYnVmKSB7CiYjNDM7CQkJcmV0ID0gLUVOT01FTTsKJiM0MzsJCQlnb3RvIHB1dDsKJiM0MzsJCX0KJiM0MzsJCW1zZ3Nbbm1zZ3MmIzQzOyYjNDM7XSA9IChzdHJ1Y3QgaTJjX21zZyl7CiYjNDM7CQkJLmFkZHIgID0gYWRkciwKJiM0MzsJCQkuZmxhZ3MgPSBJMkNfTV9SRCB8IEkyQ19NX0RNQV9TQUZFIHwKJiM0MzsJCQkJIChub3N0YXJ0ID8gSTJDX01fTk9TVEFSVCA6IDApLAomIzQzOwkJCS5sZW4gICA9IHJsZW4sCiYjNDM7CQkJLmJ1ZiAgID0gcmJ1ZiwKJiM0MzsJCX07CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gaTJjX3RyYW5zZmVyKGFkYXAsIG1zZ3MsIG5tc2dzKTsKJiM0MzsJaWYgKHJldCA9PSBubXNncykgewomIzQzOwkJaWYgKHJkYXRhICZhbXA7JmFtcDsgcmxlbikKJiM0MzsJCQltZW1jcHkocmRhdGEsIHJidWYsIHJsZW4pOwomIzQzOwkJcmV0ID0gMDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJldCA9IChyZXQgJmx0OyAwKSA/IHJldCA6IC1FSU87CiYjNDM7CX0KJiM0MztwdXQ6CiYjNDM7CWtmcmVlKHdidWYpOwomIzQzOwlrZnJlZShyYnVmKTsKJiM0MzsJaTJjX3B1dF9hZGFwdGVyKGFkYXApOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MzsvKiBBY3F1aXJlIHRoZSBzaGFyZWQgSTJDIGJ1cyBmcm9tIHRoZSBNaWNyb0JsYXplIGZpcm13YXJlLiAqLwomIzQzO3N0YXRpYyBpbnQgYWR2YV94MV9tYmxhemVfYWNxdWlyZShzdHJ1Y3QgcHRwX29jcCAqYnApCiYjNDM7ewomIzQzOwl1MzIgdmFsOwomIzQzOwlpbnQgaTsKJiM0MzsKJiM0MzsJaWYgKCFicC0mZ3Q7cHBzX3NlbGVjdCkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwkvKiBSZWxlYXNlIGFueSBzdGFsZSBncmFudCBsZWZ0IGJ5IGEgcHJldmlvdXMgY3Jhc2hlZCBjYWxsZXIuICovCiYjNDM7CWlvd3JpdGUzMigwLCAmYW1wO2JwLSZndDtwcHNfc2VsZWN0LSZndDtpMmNfYnVzX2N0cmwpOwomIzQzOwl2YWwgPSBpb3JlYWQzMigmYW1wO2JwLSZndDtwcHNfc2VsZWN0LSZndDtpMmNfYnVzX2N0cmwpOwomIzQzOwlpZiAodmFsICE9IDApCiYjNDM7CQlyZXR1cm4gLUVCVVNZOwomIzQzOwomIzQzOwlpb3dyaXRlMzIoTUJMQVpFX1JFUVVFU1QsICZhbXA7YnAtJmd0O3Bwc19zZWxlY3QtJmd0O2kyY19idXNfY3RybCk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBNQkxBWkVfUkVUUklFUzsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXVzbGVlcF9yYW5nZShNQkxBWkVfUkVUUllfVVMsIE1CTEFaRV9SRVRSWV9VUyAmIzQzOyAxMDAwKTsKJiM0MzsJCXZhbCA9IGlvcmVhZDMyKCZhbXA7YnAtJmd0O3Bwc19zZWxlY3QtJmd0O2kyY19idXNfY3RybCk7CiYjNDM7CQlpZiAodmFsID09IE1CTEFaRV9HUkFOVEVEKQomIzQzOwkJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CXJldHVybiAtRVRJTUVET1VUOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKHN0cnVjdCBwdHBfb2NwICpicCkKJiM0Mzt7CiYjNDM7CWlmIChicC0mZ3Q7cHBzX3NlbGVjdCkKJiM0MzsJCWlvd3JpdGUzMihNQkxBWkVfUkVMRUFTRSwgJmFtcDticC0mZ3Q7cHBzX3NlbGVjdC0mZ3Q7aTJjX2J1c19jdHJsKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBhZHZhX3gxX211eF9zZWxlY3Qoc3RydWN0IHB0cF9vY3AgKmJwLCBpbnQgY2gpCiYjNDM7ewomIzQzOwl1OCB2YWwgPSAoY2ggJmd0Oz0gMCkgPyBCSVQoY2gpIDogMDsKJiM0MzsKJiM0MzsJcmV0dXJuIGFkdmFfeDFfaTJjX3hmZXIoYnAsIEFEVkFfTVVYX0FERFIsICZhbXA7dmFsLCAxLCBOVUxMLCAwLCBmYWxzZSk7CiYjNDM7fQomIzQzOwomIzQzOy8qIFNlbmQgMS1ieXRlIElTQyBjb21tYW5kICYjNDM7IG9wdGlvbmFsIGFyZ3VtZW50cy4gKi8KJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF93cml0ZShzdHJ1Y3QgcHRwX29jcCAqYnAsCiYjNDM7CQkJICAgICAgdTggY21kLCBjb25zdCB1OCAqYXJncywgdTggbmFyZ3MpCiYjNDM7ewomIzQzOwl1OCBidWZbMSAmIzQzOyA2NF07CiYjNDM7CiYjNDM7CWlmIChuYXJncyAmZ3Q7IDY0KQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CWJ1ZlswXSA9IGNtZDsKJiM0MzsJaWYgKG5hcmdzKQomIzQzOwkJbWVtY3B5KCZhbXA7YnVmWzFdLCBhcmdzLCBuYXJncyk7CiYjNDM7CXJldHVybiBhZHZhX3gxX2kyY194ZmVyKGJwLCBBRFZBX0NQTERfQUREUiwgYnVmLCAxICYjNDM7IG5hcmdzLAomIzQzOwkJCQkgTlVMTCwgMCwgZmFsc2UpOwomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFNlbmQgYSA0LWJ5dGUgY29tbWFuZCB0aGVuIHJlYWQgZGF0YSBiYWNrIHdpdGhvdXQgYW4gaW50ZXJtZWRpYXRlIFNUT1AKJiM0MzsgKiAoTGF0dGljZSBjb21iaW5lZCB3cml0ZeKGknJlcGVhdGVkLVNUQVJU4oaScmVhZCkuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBhZHZhX3gxX2NwbGRfY21kX3JlYWQoc3RydWN0IHB0cF9vY3AgKmJwLAomIzQzOwkJCQkgdTMyIGNtZF9iZSwgdTggKm91dCwgdTggb3V0X2xlbikKJiM0Mzt7CiYjNDM7CV9fYmUzMiBjbWQgPSBjcHVfdG9fYmUzMihjbWRfYmUpOwomIzQzOwomIzQzOwlyZXR1cm4gYWR2YV94MV9pMmNfeGZlcihicCwgQURWQV9DUExEX0FERFIsICZhbXA7Y21kLCA0LCBvdXQsIG91dF9sZW4sIHRydWUpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcHRwX29jcCAqYnAsIHUzMiAqc3RhdHVzKQomIzQzO3sKJiM0MzsJdTggYnVmWzRdOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfU1RBVFVTLCBidWYsIDQpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJKnN0YXR1cyA9IGdldF91bmFsaWduZWRfYmUzMihidWYpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShzdHJ1Y3QgcHRwX29jcCAqYnAsIHVuc2lnbmVkIGludCBtYXhfbXMpCiYjNDM7ewomIzQzOwl1MzIgc3RhdHVzOwomIzQzOwl1bnNpZ25lZCBpbnQgZWxhcHNlZCA9IDA7CiYjNDM7CiYjNDM7CXdoaWxlIChlbGFwc2VkICZsdDsgbWF4X21zKSB7CiYjNDM7CQlpZiAoYWR2YV94MV9jcGxkX3JlYWRfc3RhdHVzKGJwLCAmYW1wO3N0YXR1cykpCiYjNDM7CQkJcmV0dXJuIC1FSU87CiYjNDM7CQlpZiAoc3RhdHVzICZhbXA7IENQTERfU1RBVFVTX0ZBSUxFRCkKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCWlmICghKHN0YXR1cyAmYW1wOyBDUExEX1NUQVRVU19CVVNZKSkKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJCXVzbGVlcF9yYW5nZSgxMDAwMDAsIDEwMTAwMCk7CiYjNDM7CQllbGFwc2VkICYjNDM7PSAxMDA7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogY3BsZF9kZXZpY2VfaWQgLSBzaG93IHRoZSBMYXR0aWNlIGRldmljZSBJRCBvZiB0aGUgVEFQIENQTEQuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zIHRoZSAzMi1iaXQgSUQgYXMgYSBoZXggc3RyaW5nLCBlLmcuICYjMzQ7MHg2MTJiYzA0M1xuJiMzNDsuCiYjNDM7ICogTGF0dGljZSBMQ01YTzNMRi0yMTAgcmVwb3J0cyAweDYxMkJDMDQzLgomIzQzOyAqLwomIzQzO3N0YXRpYyBzc2l6ZV90CiYjNDM7Y3BsZF9kZXZpY2VfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAomIzQzOwkJICAgIGNoYXIgKmJ1ZikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwdHBfb2NwICpicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwomIzQzOwl1OCBkYXRhWzRdOwomIzQzOwl1MzIgaWQgPSAwOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CXJldCA9IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CXJldCA9IGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIHJlbGVhc2U7CiYjNDM7CXJldCA9IGFkdmFfeDFfY3BsZF9jbWRfcmVhZChicCwgQ1BMRF9DTURfUkVBRF9JRCwgZGF0YSwgNCk7CiYjNDM7CWlmICghcmV0KQomIzQzOwkJaWQgPSAoKHUzMilkYXRhWzBdICZsdDsmbHQ7IDI0KSB8ICgodTMyKWRhdGFbMV0gJmx0OyZsdDsgMTYpIHwKJiM0MzsJCSAgICAgKCh1MzIpZGF0YVsyXSAmbHQ7Jmx0OyAgOCkgfCAgKHUzMilkYXRhWzNdOwomIzQzOwlhZHZhX3gxX211eF9zZWxlY3QoYnAsIC0xKTsKJiM0MztyZWxlYXNlOgomIzQzOwlhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTsKJiM0MztvdXQ6CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2JwLSZndDtjcGxkX2xvY2spOwomIzQzOwlyZXR1cm4gcmV0ID8gcmV0IDogc3lzZnNfZW1pdChidWYsICYjMzQ7MHglMDh4XG4mIzM0OywgaWQpOwomIzQzO30KJiM0MztzdGF0aWMgREVWSUNFX0FUVFJfUk8oY3BsZF9kZXZpY2VfaWQpOwomIzQzOwomIzQzOy8qCiYjNDM7ICogY3BsZF9zdGF0dXMgLSBzaG93IHRoZSBzdGF0dXMgcmVnaXN0ZXIgb2YgdGhlIFRBUCBDUExELgomIzQzOyAqCiYjNDM7ICogUmV0dXJucyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZzogJiMzNDtkb25lPSZsdDswfDEmZ3Q7IGJ1c3k9Jmx0OzB8MSZndDsgZmFpbGVkPSZsdDswfDEmZ3Q7XG4mIzM0OwomIzQzOyAqLwomIzQzO3N0YXRpYyBzc2l6ZV90CiYjNDM7Y3BsZF9zdGF0dXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAomIzQzOwkJIGNoYXIgKmJ1ZikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwdHBfb2NwICpicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwomIzQzOwl1MzIgc3QgPSAwOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CXJldCA9IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CXJldCA9IGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIHJlbGVhc2U7CiYjNDM7CXJldCA9IGFkdmFfeDFfY3BsZF9yZWFkX3N0YXR1cyhicCwgJmFtcDtzdCk7CiYjNDM7CWFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpOwomIzQzO3JlbGVhc2U6CiYjNDM7CWFkdmFfeDFfbWJsYXplX3JlbGVhc2UoYnApOwomIzQzO291dDoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CXJldHVybiByZXQgPyByZXQgOiBzeXNmc19lbWl0KGJ1ZiwgJiMzNDtkb25lPSV1IGJ1c3k9JXUgZmFpbGVkPSV1XG4mIzM0OywKJiM0MzsJCQkJICAgICAgISEoc3QgJmFtcDsgQ1BMRF9TVEFUVVNfRE9ORSksCiYjNDM7CQkJCSAgICAgICEhKHN0ICZhbXA7IENQTERfU1RBVFVTX0JVU1kpLAomIzQzOwkJCQkgICAgICAhIShzdCAmYW1wOyBDUExEX1NUQVRVU19GQUlMRUQpKTsKJiM0Mzt9CiYjNDM7c3RhdGljIERFVklDRV9BVFRSX1JPKGNwbGRfc3RhdHVzKTsKJiM0MzsKJiM0MzsvKgomIzQzOyAqIGFkdmFfeDEgQ1BMRCBmaXJtd2FyZS11cGxvYWQgY2FsbGJhY2tzLgomIzQzOyAqCiYjNDM7ICogVGhlIGtlcm5lbCBmaXJtd2FyZS11cGxvYWQgc3Vic3lzdGVtIChDT05GSUdfRldfVVBMT0FEKSBleHBvc2VzOgomIzQzOyAqICAgL3N5cy9jbGFzcy9maXJtd2FyZS9hZHZhLWNwbGQve2RhdGEsbG9hZGluZyxzdGF0dXMsZXJyb3IsLi4ufQomIzQzOyAqIFVzZXJzcGFjZSB3cml0ZXMgdGhlIHJhdyBiaW5hcnkgcGFnZSBkYXRhIGRpcmVjdGx5IOKAlCBubyAvbGliL2Zpcm13YXJlLwomIzQzOyAqIHN0YWdpbmcgZmlsZSBpcyBuZWVkZWQuCiYjNDM7ICoKJiM0MzsgKiBDYWxsYmFjayBzZXF1ZW5jZSBkcml2ZW4gYnkgdGhlIGZyYW1ld29yazoKJiM0MzsgKiAgIHByZXBhcmUoKSAgICAgIC0gdmFsaWRhdGUgc2l6ZSwgYWNxdWlyZSBidXMsIGVuYWJsZSBjb25maWcsIGVyYXNlIGZsYXNoCiYjNDM7ICogICB3cml0ZSgpICAgICAgICAtIHByb2dyYW0gb25lIDE2LWJ5dGUgcGFnZSBwZXIgY2FsbAomIzQzOyAqICAgcG9sbF9jb21wbGV0ZSgpLSBzZXQgRE9ORSwgUkVGUkVTSCwgd2FpdCBmb3IgQ1BMRCB0byByZWJvb3QKJiM0MzsgKiAgIGNhbmNlbCgpICAgICAgIC0gc2V0IGZsYWc7IGNoZWNrZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggY2FsbGJhY2sKJiM0MzsgKiAgIGNsZWFudXAoKSAgICAgIC0gcmVsZWFzZSBidXMgcmVzb3VyY2VzIChjYWxsZWQgb24gc3VjY2VzcyBvciBmYWlsdXJlKQomIzQzOyAqLwomIzQzO3N0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnIKJiM0MzthZHZhX2NwbGRfcHJlcGFyZShzdHJ1Y3QgZndfdXBsb2FkICpmd2wsIGNvbnN0IHU4ICpkYXRhLCB1MzIgc2l6ZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwdHBfb2NwICpicCA9IGZ3bC0mZ3Q7ZGRfaGFuZGxlOwomIzQzOwljb25zdCB1OCBlbl9hcmdzWzJdICA9IHsgMHgwOCwgMHgwMCB9OwomIzQzOwljb25zdCB1OCBlcmFfYXJnc1szXSA9IHsgMHgwNCwgMHgwMCwgMHgwMCB9OyAvKiBjZmcgc2VjdG9yIG9ubHkgKi8KJiM0MzsJY29uc3QgdTggemVybzNbM10gICAgPSB7IDAgfTsKJiM0MzsJY29uc3QgdTggZGlzX2FyZ3NbMl0gPSB7IDB4MDAsIDB4MDAgfTsKJiM0MzsJZW51bSBmd191cGxvYWRfZXJyIHJldCA9IEZXX1VQTE9BRF9FUlJfTk9ORTsKJiM0MzsKJiM0MzsJaWYgKCFzaXplIHx8IHNpemUgJSBDUExEX1BBR0VfU0laRSkKJiM0MzsJCXJldHVybiBGV19VUExPQURfRVJSX0lOVkFMSURfU0laRTsKJiM0MzsKJiM0MzsJYnAtJmd0O2NwbGRfY2FuY2VsCQk9IGZhbHNlOwomIzQzOwlicC0mZ3Q7Y3BsZF9pbl9jb25maWdfbW9kZQk9IGZhbHNlOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CiYjNDM7CWlmIChhZHZhX3gxX21ibGF6ZV9hY3F1aXJlKGJwKSkgewomIzQzOwkJcmV0ID0gRldfVVBMT0FEX0VSUl9USU1FT1VUOwomIzQzOwkJZ290byBlcnJfdW5sb2NrOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChhZHZhX3gxX211eF9zZWxlY3QoYnAsIEFEVkFfTVVYX0NIQU5ORUwpKSB7CiYjNDM7CQlyZXQgPSBGV19VUExPQURfRVJSX0hXX0VSUk9SOwomIzQzOwkJZ290byBlcnJfcmVsZWFzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9FTl9DRkdfVFAsIGVuX2FyZ3MsIDIpIHx8CiYjNDM7CSAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgNTAwMCkpIHsKJiM0MzsJCXJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7CiYjNDM7CQlnb3RvIGVycl9kZXNlbGVjdDsKJiM0MzsJfQomIzQzOwlicC0mZ3Q7Y3BsZF9pbl9jb25maWdfbW9kZSA9IHRydWU7CiYjNDM7CiYjNDM7CWlmIChicC0mZ3Q7Y3BsZF9jYW5jZWwpIHsKJiM0MzsJCXJldCA9IEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7CiYjNDM7CQlnb3RvIGVycl9kZXNlbGVjdDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9FUkFTRSwgZXJhX2FyZ3MsIDMpIHx8CiYjNDM7CSAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMTUwMDApKSB7CiYjNDM7CQlyZXQgPSBGV19VUExPQURfRVJSX0hXX0VSUk9SOwomIzQzOwkJZ290byBlcnJfZGVzZWxlY3Q7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGJwLSZndDtjcGxkX2NhbmNlbCkgewomIzQzOwkJcmV0ID0gRldfVVBMT0FEX0VSUl9DQU5DRUxFRDsKJiM0MzsJCWdvdG8gZXJyX2Rlc2VsZWN0OwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX1JFU0VUX0FERFIsIHplcm8zLCAzKSkgewomIzQzOwkJcmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjsKJiM0MzsJCWdvdG8gZXJyX2Rlc2VsZWN0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBGV19VUExPQURfRVJSX05PTkU7CS8qIGNsZWFudXAoKSB3aWxsIHVubG9jayBldmVyeXRoaW5nICovCiYjNDM7CiYjNDM7ZXJyX2Rlc2VsZWN0OgomIzQzOwlpZiAoYnAtJmd0O2NwbGRfaW5fY29uZmlnX21vZGUpIHsKJiM0MzsJCWFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfRElTX0NGRywgZGlzX2FyZ3MsIDIpOwomIzQzOwkJYnAtJmd0O2NwbGRfaW5fY29uZmlnX21vZGUgPSBmYWxzZTsKJiM0MzsJfQomIzQzOwlhZHZhX3gxX211eF9zZWxlY3QoYnAsIC0xKTsKJiM0MztlcnJfcmVsZWFzZToKJiM0MzsJYWR2YV94MV9tYmxhemVfcmVsZWFzZShicCk7CiYjNDM7ZXJyX3VubG9jazoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnIKJiM0MzthZHZhX2NwbGRfd3JpdGUoc3RydWN0IGZ3X3VwbG9hZCAqZndsLCBjb25zdCB1OCAqZGF0YSwKJiM0MzsJCXUzMiBvZmZzZXQsIHUzMiBzaXplLCB1MzIgKndyaXR0ZW4pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRwX29jcCAqYnAgPSBmd2wtJmd0O2RkX2hhbmRsZTsKJiM0MzsJdTggcGFnZV9hcmdzWzMgJiM0MzsgQ1BMRF9QQUdFX1NJWkVdOwomIzQzOwomIzQzOwlpZiAoYnAtJmd0O2NwbGRfY2FuY2VsKQomIzQzOwkJcmV0dXJuIEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7CiYjNDM7CiYjNDM7CWlmIChzaXplICZsdDsgQ1BMRF9QQUdFX1NJWkUpCiYjNDM7CQlyZXR1cm4gRldfVVBMT0FEX0VSUl9JTlZBTElEX1NJWkU7CiYjNDM7CiYjNDM7CXBhZ2VfYXJnc1swXSA9IDB4MDA7CiYjNDM7CXBhZ2VfYXJnc1sxXSA9IDB4MDA7CiYjNDM7CXBhZ2VfYXJnc1syXSA9IDB4MDE7CiYjNDM7CW1lbWNweSgmYW1wO3BhZ2VfYXJnc1szXSwgZGF0YSAmIzQzOyBvZmZzZXQsIENQTERfUEFHRV9TSVpFKTsKJiM0MzsKJiM0MzsJaWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfV1JJVEVfUEFHRSwKJiM0MzsJCQkgICAgICAgcGFnZV9hcmdzLCAzICYjNDM7IENQTERfUEFHRV9TSVpFKSB8fAomIzQzOwkgICAgYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDEwMCkpCiYjNDM7CQlyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjsKJiM0MzsKJiM0MzsJKndyaXR0ZW4gPSBDUExEX1BBR0VfU0laRTsKJiM0MzsJcmV0dXJuIEZXX1VQTE9BRF9FUlJfTk9ORTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGVudW0gZndfdXBsb2FkX2VycgomIzQzO2FkdmFfY3BsZF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBmd191cGxvYWQgKmZ3bCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwdHBfb2NwICpicCA9IGZ3bC0mZ3Q7ZGRfaGFuZGxlOwomIzQzOwljb25zdCB1OCB6ZXJvM1szXSAgICA9IHsgMCB9OwomIzQzOwljb25zdCB1OCByZWZfYXJnc1syXSA9IHsgMHgwMCwgMHgwMCB9OwomIzQzOwl1MzIgc3Q7CiYjNDM7CiYjNDM7CWlmIChicC0mZ3Q7Y3BsZF9jYW5jZWwpCiYjNDM7CQlyZXR1cm4gRldfVVBMT0FEX0VSUl9DQU5DRUxFRDsKJiM0MzsKJiM0MzsJaWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfU0VUX0RPTkUsIHplcm8zLCAzKSB8fAomIzQzOwkgICAgYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDEwMDApKQomIzQzOwkJcmV0dXJuIEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7CiYjNDM7CiYjNDM7CWlmIChhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsICZhbXA7c3QpIHx8ICEoc3QgJmFtcDsgQ1BMRF9TVEFUVVNfRE9ORSkpCiYjNDM7CQlyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjsKJiM0MzsKJiM0MzsJaWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfUkVGUkVTSCwgcmVmX2FyZ3MsIDIpKQomIzQzOwkJcmV0dXJuIEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7CiYjNDM7CiYjNDM7CS8qIENQTEQgcmVib290cyBhZnRlciBSRUZSRVNIOyByZS1zZWxlY3QgbXV4IG9uY2UgaXQgY29tZXMgYmFjayB1cCAqLwomIzQzOwltc2xlZXAoMTUwMCk7CiYjNDM7CWFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7CiYjNDM7CWlmIChhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMzAwMCkpCiYjNDM7CQlyZXR1cm4gRldfVVBMT0FEX0VSUl9USU1FT1VUOwomIzQzOwomIzQzOwlicC0mZ3Q7Y3BsZF9pbl9jb25maWdfbW9kZSA9IGZhbHNlOwomIzQzOwlyZXR1cm4gRldfVVBMT0FEX0VSUl9OT05FOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZAomIzQzO2FkdmFfY3BsZF9jYW5jZWwoc3RydWN0IGZ3X3VwbG9hZCAqZndsKQomIzQzO3sKJiM0MzsJc3RydWN0IHB0cF9vY3AgKmJwID0gZndsLSZndDtkZF9oYW5kbGU7CiYjNDM7CiYjNDM7CWJwLSZndDtjcGxkX2NhbmNlbCA9IHRydWU7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkCiYjNDM7YWR2YV9jcGxkX2NsZWFudXAoc3RydWN0IGZ3X3VwbG9hZCAqZndsKQomIzQzO3sKJiM0MzsJc3RydWN0IHB0cF9vY3AgKmJwID0gZndsLSZndDtkZF9oYW5kbGU7CiYjNDM7CWNvbnN0IHU4IGRpc19hcmdzWzJdID0geyAweDAwLCAweDAwIH07CiYjNDM7CiYjNDM7CWlmIChicC0mZ3Q7Y3BsZF9pbl9jb25maWdfbW9kZSkgewomIzQzOwkJYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9ESVNfQ0ZHLCBkaXNfYXJncywgMik7CiYjNDM7CQlicC0mZ3Q7Y3BsZF9pbl9jb25maWdfbW9kZSA9IGZhbHNlOwomIzQzOwl9CiYjNDM7CWFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpOwomIzQzOwlhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZndfdXBsb2FkX29wcyBhZHZhX2NwbGRfdXBsb2FkX29wcyA9IHsKJiM0MzsJLnByZXBhcmUJID0gYWR2YV9jcGxkX3ByZXBhcmUsCiYjNDM7CS53cml0ZQkJID0gYWR2YV9jcGxkX3dyaXRlLAomIzQzOwkucG9sbF9jb21wbGV0ZQkgPSBhZHZhX2NwbGRfcG9sbF9jb21wbGV0ZSwKJiM0MzsJLmNhbmNlbAkJID0gYWR2YV9jcGxkX2NhbmNlbCwKJiM0MzsJLmNsZWFudXAJID0gYWR2YV9jcGxkX2NsZWFudXAsCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphZHZhX3RpbWVjYXJkX2F0dHJzW10gPSB7CiAJJmFtcDtkZXZfYXR0cl9zZXJpYWxudW0uYXR0ciwKIAkmYW1wO2Rldl9hdHRyX2duc3Nfc3luYy5hdHRyLApAQCAtNDI3Miw2ICYjNDM7NDczOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphZHZhX3RpbWVjYXJkX3gxX2F0dHJzW10gPSB7CiAJJmFtcDtkZXZfYXR0cl90c193aW5kb3dfYWRqdXN0LmF0dHIsCiAJJmFtcDtkZXZfYXR0cl91dGNfdGFpX29mZnNldC5hdHRyLAogCSZhbXA7ZGV2X2F0dHJfdG9kX2NvcnJlY3Rpb24uYXR0ciwKJiM0MzsJJmFtcDtkZXZfYXR0cl9jcGxkX2RldmljZV9pZC5hdHRyLAomIzQzOwkmYW1wO2Rldl9hdHRyX2NwbGRfc3RhdHVzLmF0dHIsCiAJTlVMTCwKIH07CiAKQEAgLTQ5MDIsNiAmIzQzOzUzNzEsMTEgQEAgcHRwX29jcF9kZXRhY2goc3RydWN0IHB0cF9vY3AgKmJwKQogCQljbGtfaHdfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKGJwLSZndDtpMmNfY2xrKTsKIAlpZiAoYnAtJmd0O25faXJxcykKIAkJcGNpX2ZyZWVfaXJxX3ZlY3RvcnMoYnAtJmd0O3BkZXYpOwomIzQzOwlpZiAoYnAtJmd0O2NwbGRfZndfdXBsb2FkKSB7CiYjNDM7CQlmaXJtd2FyZV91cGxvYWRfdW5yZWdpc3RlcihicC0mZ3Q7Y3BsZF9md191cGxvYWQpOwomIzQzOwkJYnAtJmd0O2NwbGRfZndfdXBsb2FkID0gTlVMTDsKJiM0MzsJfQomIzQzOwltdXRleF9kZXN0cm95KCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiAJZGV2aWNlX3VucmVnaXN0ZXIoJmFtcDticC0mZ3Q7ZGV2KTsKIH0KIApAQCAtNTA3OCw2ICYjNDM7NTU1MiwxNyBAQCBwdHBfb2NwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpCiAJaWYgKGVycikKIAkJZ290byBvdXRfZGlzYWJsZTsKIAomIzQzOwkvKiBNdXN0IGJlIGJlZm9yZSB0aGUgZmlyc3QgZXJyb3IgcGF0aCB0aGF0IGNhbGxzIHB0cF9vY3BfZGV0YWNoKCksCiYjNDM7CSAqIHNvIG11dGV4X2Rlc3Ryb3koKSBhbHdheXMgcnVucyBvbiBhbiBpbml0aWFsaXNlZCBtdXRleC4KJiM0MzsJICogTXVzdCBhbHNvIGJlIGJlZm9yZSBwdHBfb2NwX3JlZ2lzdGVyX3Jlc291cmNlcygpOiB0aGUgSTJDIGJ1cwomIzQzOwkgKiBub3RpZmllciAocHRwX29jcF9pMmNfbm90aWZpZXJfY2FsbCkgZmlyZXMgd2hlbiB0aGUgYWRhcHRlcgomIzQzOwkgKiByZWdpc3RlcnMgYW5kIHN0b3JlcyB0aGUgYWRhcHRlciBudW1iZXIgaW4gY3BsZF9pMmNfYWRhcF9ucjsgdGhlCiYjNDM7CSAqIC0xIHNlbnRpbmVsIGJlbG93IG11c3QgYWxyZWFkeSBiZSB3cml0dGVuIHNvIHRoYXQgYSBub3RpZmllcgomIzQzOwkgKiBmaXJpbmcgZHVyaW5nIHJlZ2lzdHJhdGlvbiBpcyBuZXZlciBvdmVyd3JpdHRlbiBieSB0aGlzIGluaXQuCiYjNDM7CSAqLwomIzQzOwltdXRleF9pbml0KCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CWJwLSZndDtjcGxkX2kyY19hZGFwX25yID0gLTE7CiYjNDM7CiAJSU5JVF9ERUxBWUVEX1dPUksoJmFtcDticC0mZ3Q7c3luY193b3JrLCBwdHBfb2NwX3N5bmNfd29yayk7CiAKIAkvKiBjb21wYXQgbW9kZS4KQEAgLTUyMTcsMTEgJiM0Mzs1NzAyLDE2IEBAIHB0cF9vY3BfaTJjX25vdGlmaWVyX2NhbGwoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKIAogZm91bmQ6CiAJYnAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKLQlpZiAoYWRkKQomIzQzOwlpZiAoYWRkKSB7CiAJCXB0cF9vY3Bfc3ltbGluayhicCwgY2hpbGQsICYjMzQ7aTJjJiMzNDspOwotCWVsc2UKJiM0MzsJCS8qIENhY2hlIGFkYXB0ZXIgbnI7IHVzZWQgYnkgY3BsZF9kZXZpY2VfaWQvY3BsZF9zdGF0dXMvY3BsZF9wcm9ncmFtCiYjNDM7CQkgKiBmb3IgcmVmZXJlbmNlLWNvdW50ZWQgdW5iaW5kLXNhZmUgYWRhcHRlciBhY2Nlc3MuCiYjNDM7CQkgKi8KJiM0MzsJCVdSSVRFX09OQ0UoYnAtJmd0O2NwbGRfaTJjX2FkYXBfbnIsIGkyY192ZXJpZnlfYWRhcHRlcihjaGlsZCktJmd0O25yKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCVdSSVRFX09OQ0UoYnAtJmd0O2NwbGRfaTJjX2FkYXBfbnIsIC0xKTsgLyogaW52YWxpZGF0ZSBiZWZvcmUgZnJlZSAqLwogCQlzeXNmc19yZW1vdmVfbGluaygmYW1wO2JwLSZndDtkZXYua29iaiwgJiMzNDtpMmMmIzM0Oyk7Ci0KJiM0MzsJfQogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDA3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHB0cF9vY3BgIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgdGhlIGBwdHBfb2NwYCBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9wdHAvcHRwX29jcC5jYC4gSXQmIzM5O3MgYWRkaW5nIENQTEQgZmlybXdhcmUgdXBsb2FkIHN1cHBvcnQsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBtZW50aW9ucyB0aGUgYGZpcm13YXJlX3VwbG9hZGAgZnJhbWV3b3JrIGFuZCBhbHNvIGludHJvZHVjZXMgYGNwbGRfZGV2aWNlX2lkYCBhbmQgYGNwbGRfc3RhdHVzYCBzeXNmcyBhdHRyaWJ1dGVzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGU/JiMzNDsuCgpUaGUgZHJpdmVyIGlzIGEgUENJIGRyaXZlciwgYW5kIHRoZSBkZXZpY2UgSUQsIGFjY29yZGluZyB0byB0aGUgZG9jdW1lbnRhdGlvbiwgaXMgYDB4YWQ1YToweDA0MTBgLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBpbiB0aGUgY29kZSBpdHNlbGYuIE9rYXksIHRoZSBjb2RlIGRvZXMgY2hlY2sgZm9yIGBpbmZvLSZndDtoYXNfY3BsZGAsIGFuZCBpdOKAmXMgc2V0IHRvIGB0cnVlYCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgb2NwX2FkdmFfeDFfcmVzb3VyY2VgLiBTbyB0aGlzIGlzIGRlZmluaXRlbHkgYSBQQ0kgZGV2aWNlIGRyaXZlci4KClRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogQ2FuIHRoaXMgYmUgZnV6emVkPyBHaXZlbiB0aGF0IGl0JiMzOTtzIFBDSSwgU3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIGZ1enogaXQgdXNpbmcgaXRzIHBzZXVkby1QQ0kgc3Vic3lzdGVtLCBvciB2aGNpLCBvciBzb21lIG90aGVyIFBDSSBmdXp6aW5nIHN1cHBvcnQuIFN5emthbGxlciBoYXMgYmVlbiBtYWtpbmcgc3RyaWRlcyBpbiB0aGlzIGFyZWEuIEJ1dCB3YWl0Li4uIHRoaXMgcHJvbXB0IGlzIGEgYml0IG9taW5vdXMsIGl0IG1lbnRpb25zICYjMzQ7dmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4gSXMgdGhpcyBhIGNhc2U/IElzIGBwdHBfb2NwYCB2ZW5kb3Itc3BlY2lmaWM/CgpJdCYjMzk7cyB0aGUgJiMzNDtPcGVuIENvbXB1dGUgUHJvamVjdCB0aW1lIGNhcmQgZHJpdmVyJiMzNDsuLi4gdGhhdCBkb2VzbiYjMzk7dCBzb3VuZCBzcGVjaWZpY2FsbHkgdmVuZG9yLWxvY2tlZC4gSSBzaG91bGQgY2hlY2sgaG93IGl0JiMzOTtzIGhhbmRsZWQuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyBpdCBmdXp6ZWQgYWxyZWFkeSwgb3IgY2FuIGl0IGJlPyBIb2xkIG9uLCB0aGUgY29tbWl0IGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLiBOb3cgdGhhdCYjMzk7cyBpbnRlcmVzdGluZyEgU3l6a2FsbGVyIGlzIGVpdGhlciBmaW5kaW5nIHNvbWV0aGluZywgb3IgdGhpcyBpcyBhIHRlc3QgcGF0Y2guIFdhaXQsIHRoZSBjb21taXQgbWVzc2FnZSBzYXlzICYjMzQ7c3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3JiMzNDssIHdoaWNoIGlzIGdyZWF0LCBtZWFuaW5nIFN5emthbGxlciBoYWQgYSByb2xlIGluIHRoaXMsIHdoaWNoIGlzIGdvb2QgbmV3cyBmb3Igb3VyIGdvYWxzLgoKT2theSwgbGV0IG1lIGNvbmZpcm0gaWYgYHB0cF9vY3BgIGlzIGEgc3RhbmRhcmQgZHJpdmVyIG9yIG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlLiBCZWNhdXNlIHRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQgZm9yIG15IHdvcmsuIEl0JiMzOTtzIGEgUENJIGRyaXZlci4uLiBzbyBsZXQmIzM5O3MgZG8gYSBxdWljayBncmVwIHNlYXJjaCBmb3IgYHB0cF9vY3BgIGluIHRoZSBrZXJuZWwgdG8gc2VlIHRoZSBsYXJnZXIgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwdHBfb2NwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMDg3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL3B0cC9NYWtlZmlsZT0yMD1vYmotJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfVk1XKVx0JiM0Mzs9IHB0cF92bXcub1xuZHJpdmVycy9wdHAvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX09DUClcdCYjNDM7PSBwdHBfb2NwLm9cbmRyaXZlcnMvcHRwL01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19QVFBfREZMX1RPRClcdFx0JiM0Mzs9IHB0cF9kZmxfdG9kLm9cbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9NDk9c3RydWN0IG9jcF9yZWcge1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03My1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3NDpzdHJ1Y3QgcHRwX29jcF9zZXJ2b19jb25mIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03NS1cdHUzMlx0c2Vydm9fb2Zmc2V0X3A7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgyLSAqIENvbWJpbmVkIHNlcnZvICYjNDM7IGJvYXJkLXZhcmlhbnQgcGFyYW1ldGVycyBmb3IgQURWQSBib2FyZHMuXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODM6ICogRW1iZWRkZWQgaW4gdGhlIHJlc291cmNlIHRhYmxlIC5leHRyYSBzbyBhIHNpbmdsZSBwdHBfb2NwX2FkdmFfYm9hcmRfaW5pdCgpXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODQtICogY2FuIGhhbmRsZSBib3RoIEFEVkEgYW5kIEFEVkEtWDEgd2l0aG91dCBwZXItdmFyaWFudCBpbml0IGZ1bmN0aW9ucy5cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NS0gKi9cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NjpzdHJ1Y3QgcHRwX29jcF9hZHZhX2luZm8ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg3Olx0c3RydWN0IHB0cF9vY3Bfc2Vydm9fY29uZlx0c2Vydm87XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODgtXHR1MzJcdFx0XHRcdGZsYXNoX3N0YXJ0O1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz0yNDM9c3RydWN0IGJvYXJkX2NvbmZpZ19yZWcge1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNTEtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MjUyOnN0cnVjdCBwdHBfb2NwX2ZsYXNoX2luZm8ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI1My1cdGNvbnN0IGNoYXIgKm5hbWU7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI1OC1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyNTk6c3RydWN0IHB0cF9vY3BfZmlybXdhcmVfaGVhZGVyIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNjAtXHRjaGFyIG1hZ2ljWzRdO1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNjktXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MjcwOnN0cnVjdCBwdHBfb2NwX2kyY19pbmZvIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNzEtXHRjb25zdCBjaGFyICpuYW1lO1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNzYtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mjc3OnN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNzgtXHRpbnQgaW5kZXg7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI4Mi1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyODM6c3RydWN0IHB0cF9vY3BfZXh0X3NyYyB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjg0LVx0dm9pZCBfX2lvbWVtXHRcdCptZW07XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mjg1Olx0c3RydWN0IHB0cF9vY3BcdFx0KmJwO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjI4NjpcdHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvXHQqaW5mbztcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yODctXHRpbnRcdFx0XHRpcnFfdmVjO1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yODktXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MjkwOmVudW0gcHRwX29jcF9zbWFfbW9kZSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjkxLVx0U01BX01PREVfSU4sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI5NC1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyOTU6c3RhdGljIHN0cnVjdCBkcGxsX3Bpbl9mcmVxdWVuY3kgcHRwX29jcF9zbWFfZnJlcVtdID0ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI5Ni1cdERQTExfUElOX0ZSRVFVRU5DWV8xUFBTLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zMDEtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MzAyOnN0cnVjdCBwdHBfb2NwX3NtYV9jb25uZWN0b3Ige1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMwMzpcdGVudW1cdHB0cF9vY3Bfc21hX21vZGUgbW9kZTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zMDQtXHRib29sXHRmaXhlZF9mY247XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTMyND1zdHJ1Y3Qgb2NwX3NtYV9vcCB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzI1LVx0Y29uc3Qgc3RydWN0IG9jcF9zZWxlY3RvciAqdGJsWzJdO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMyNjpcdHZvaWQgKCppbml0KShzdHJ1Y3QgcHRwX29jcCAqYnApO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMyNzpcdHUzMiAoKmdldCkoc3RydWN0IHB0cF9vY3AgKmJwLCBpbnQgc21hX25yKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMjg6XHRpbnQgKCpzZXRfaW5wdXRzKShzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBzbWFfbnIsIHUzMiB2YWwpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMyOTpcdGludCAoKnNldF9vdXRwdXQpKHN0cnVjdCBwdHBfb2NwICpicCwgaW50IHNtYV9uciwgdTMyIHZhbCk7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzMwLX07XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTMzNS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMzY6c3RydWN0IHB0cF9vY3Bfc2lnbmFsIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zMzctXHRrdGltZV90XHRcdHBlcmlvZDtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzQ1LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM0NjpzdHJ1Y3QgcHRwX29jcF9zZXJpYWxfcG9ydCB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzQ3LVx0aW50IGxpbmU7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTM1Nz1lbnVtIHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzY1LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM2NjpzdHJ1Y3QgcHRwX29jcCB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzY3LVx0c3RydWN0IHBjaV9kZXZcdFx0KnBkZXY7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTM4My1cdHN0cnVjdCBmcmVxdWVuY3lfcmVnXHRfX2lvbWVtICpmcmVxX2luW09DUF9GUkVRX05VTV07XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mzg0Olx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1x0KnNpZ25hbF9vdXRbT0NQX1NJR05BTF9OVU1dO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM4NTpcdHN0cnVjdCBwdHBfb2NwX2V4dF9zcmNcdCpwcHM7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mzg2Olx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1x0KnRzMDtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozODc6XHRzdHJ1Y3QgcHRwX29jcF9leHRfc3JjXHQqdHMxO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM4ODpcdHN0cnVjdCBwdHBfb2NwX2V4dF9zcmNcdCp0czI7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mzg5Olx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1x0KnRzMztcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozOTA6XHRzdHJ1Y3QgcHRwX29jcF9leHRfc3JjXHQqdHM0O1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTM5MS1cdHN0cnVjdCBvY3BfYXJ0X2dwaW9fcmVnIF9faW9tZW0gKmFydF9zbWE7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTM5OS1cdGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKiphdHRyX2dyb3VwO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQwMDpcdGNvbnN0IHN0cnVjdCBwdHBfb2NwX2VlcHJvbV9tYXAgKmVlcHJvbV9tYXA7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDAxLVx0c3RydWN0IGRlbnRyeVx0XHQqZGVidWdfcm9vdDtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDA2LVx0aW50XHRcdFx0bl9pcnFzO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQwNzpcdHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0XHRwb3J0W19fUE9SVF9DT1VOVF07XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDA4LVx0Ym9vbFx0XHRcdGZ3X2xvYWRlcjtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDE4LVx0dTY0XHRcdFx0ZndfY2FwO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQxOTpcdHN0cnVjdCBwdHBfb2NwX3NpZ25hbFx0c2lnbmFsW09DUF9TSUdOQUxfTlVNXTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0MjA6XHRzdHJ1Y3QgcHRwX29jcF9zbWFfY29ubmVjdG9yIHNtYVtPQ1BfU01BX05VTV07XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDIxLVx0Y29uc3Qgc3RydWN0IG9jcF9zbWFfb3AgKnNtYV9vcDtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9NDM3PXN0cnVjdCBvY3BfcmVzb3VyY2Uge1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NDAtXHRpbnQgaXJxX3ZlYztcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NDE6XHRpbnQgKCpzZXR1cCkoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NDItXHR2b2lkICpleHRyYTtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDQ2LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ0NzpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfbWVtKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDQ4OnN0YXRpYyBpbnQgcHRwX29jcF9yZWdpc3Rlcl9pMmMoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NDk6c3RhdGljIGludCBwdHBfb2NwX3JlZ2lzdGVyX3NwaShzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1MDpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfc2VyaWFsKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDUxOnN0YXRpYyBpbnQgcHRwX29jcF9yZWdpc3Rlcl9leHQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTI6c3RhdGljIGludCBwdHBfb2NwX2ZiX2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTM6c3RhdGljIGlycXJldHVybl90IHB0cF9vY3BfdHNfaXJxKGludCBpcnEsIHZvaWQgKnByaXYpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1NDpzdGF0aWMgaXJxcmV0dXJuX3QgcHRwX29jcF9zaWduYWxfaXJxKGludCBpcnEsIHZvaWQgKnByaXYpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1NTpzdGF0aWMgaW50IHB0cF9vY3BfdHNfZW5hYmxlKHZvaWQgKnByaXYsIHUzMiByZXEsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTY6c3RhdGljIGludCBwdHBfb2NwX3NpZ25hbF9mcm9tX3Blcm91dChzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBnZW4sXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDU3LVx0XHRcdFx0ICAgICAgc3RydWN0IHB0cF9wZXJvdXRfcmVxdWVzdCAqcmVxKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTg6c3RhdGljIGludCBwdHBfb2NwX3NpZ25hbF9lbmFibGUodm9pZCAqcHJpdiwgdTMyIHJlcSwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1OTpzdGF0aWMgaW50IHB0cF9vY3Bfc21hX3N0b3JlKHN0cnVjdCBwdHBfb2NwICpicCwgY29uc3QgY2hhciAqYnVmLCBpbnQgc21hX25yKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NjAtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDYxOnN0YXRpYyBpbnQgcHRwX29jcF9hcnRfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ2Mi1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NjM6c3RhdGljIGludCBwdHBfb2NwX2FkdmFfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ2NC1cbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9NDc2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NwX2F0dHJfZ3JvdXAgYWR2YV90aW1lY2FyZF94MV9ncm91cHNbXTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NzctXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDc4OnN0cnVjdCBwdHBfb2NwX2VlcHJvbV9tYXAge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ3OS1cdHUxNlx0b2ZmO1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00ODYtXHQub2ZmID0gYWRkcixcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ4NzpcdC5sZW4gPSBzaXplb2ZfZmllbGQoc3RydWN0IHB0cF9vY3AsIG1lbWJlciksXHRcdFxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDg4Olx0LmJwX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBwdHBfb2NwLCBtZW1iZXIpXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDg5LVxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00OTMtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDk0OnN0YXRpYyBzdHJ1Y3QgcHRwX29jcF9lZXByb21fbWFwIGZiX2VlcHJvbV9tYXBbXSA9IHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00OTUtXHR7IEVFUFJPTV9FTlRSWSgweDQzLCBib2FyZF9pZCkgfSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDk5LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUwMDpzdGF0aWMgc3RydWN0IHB0cF9vY3BfZWVwcm9tX21hcCBhcnRfZWVwcm9tX21hcFtdID0ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUwMS1cdHsgRUVQUk9NX0VOVFJZKDB4MjAwICYjNDM7IDB4NDMsIGJvYXJkX2lkKSB9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MTEtI2RlZmluZSBPQ1BfUkVTX0xPQ0FUSU9OKG1lbWJlcikgXFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1MTI6XHQubmFtZSA9ICNtZW1iZXIsIC5icF9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX29jcCwgbWVtYmVyKVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUxMy1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MTQtI2RlZmluZSBPQ1BfTUVNX1JFU09VUkNFKG1lbWJlcikgXFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1MTU6XHRPQ1BfUkVTX0xPQ0FUSU9OKG1lbWJlciksIC5zZXR1cCA9IHB0cF9vY3BfcmVnaXN0ZXJfbWVtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTE2LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUxNy0jZGVmaW5lIE9DUF9TRVJJQUxfUkVTT1VSQ0UobWVtYmVyKSBcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUxODpcdE9DUF9SRVNfTE9DQVRJT04obWVtYmVyKSwgLnNldHVwID0gcHRwX29jcF9yZWdpc3Rlcl9zZXJpYWxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MTktXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTIwLSNkZWZpbmUgT0NQX0kyQ19SRVNPVVJDRShtZW1iZXIpIFxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTIxOlx0T0NQX1JFU19MT0NBVElPTihtZW1iZXIpLCAuc2V0dXAgPSBwdHBfb2NwX3JlZ2lzdGVyX2kyY1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUyMi1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MjMtI2RlZmluZSBPQ1BfU1BJX1JFU09VUkNFKG1lbWJlcikgXFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1MjQ6XHRPQ1BfUkVTX0xPQ0FUSU9OKG1lbWJlciksIC5zZXR1cCA9IHB0cF9vY3BfcmVnaXN0ZXJfc3BpXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTI1LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUyNi0jZGVmaW5lIE9DUF9FWFRfUkVTT1VSQ0UobWVtYmVyKSBcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUyNzpcdE9DUF9SRVNfTE9DQVRJT04obWVtYmVyKSwgLnNldHVwID0gcHRwX29jcF9yZWdpc3Rlcl9leHRcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MjgtXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTU1Nj1zdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfZmJfcmVzb3VyY2VbXSA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTYzLVx0XHQub2Zmc2V0ID0gMHgwMTAxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTY0Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01NjUtXHRcdFx0LmluZGV4ID0gMCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1NjY6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1Njc6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU2OC1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTcyLVx0XHQub2Zmc2V0ID0gMHgwMTAyMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTczOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01NzQtXHRcdFx0LmluZGV4ID0gMSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1NzU6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1NzY6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU3Ny1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTgxLVx0XHQub2Zmc2V0ID0gMHgwMTA2MDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDYsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTgyOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01ODMtXHRcdFx0LmluZGV4ID0gMixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1ODQ6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1ODU6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU4Ni1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTkwLVx0XHQub2Zmc2V0ID0gMHgwMTExMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDE1LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjU5MTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTkyLVx0XHRcdC5pbmRleCA9IDMsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTkzOlx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTk0Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01OTUtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU5OS1cdFx0Lm9mZnNldCA9IDB4MDExMjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxNixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MDA6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTYwMS1cdFx0XHQuaW5kZXggPSA0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYwMjpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYwMzpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjA0LVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MDktXHRcdC5vZmZzZXQgPSAweDAxMEMwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MTA6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTYxMS1cdFx0XHQuaW5kZXggPSA1LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYxMjpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYxMzpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjE0LVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MTgtXHRcdC5vZmZzZXQgPSAweDAxMEQwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjE5Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MjAtXHRcdFx0LmluZGV4ID0gMSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MjE6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjIyOlx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjIzLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MjctXHRcdC5vZmZzZXQgPSAweDAxMEUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjI4Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MjktXHRcdFx0LmluZGV4ID0gMixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MzA6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjMxOlx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjMyLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MzYtXHRcdC5vZmZzZXQgPSAweDAxMEYwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTMsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjM3Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MzgtXHRcdFx0LmluZGV4ID0gMyxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2Mzk6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjQwOlx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjQxLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02NDUtXHRcdC5vZmZzZXQgPSAweDAxMTAwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTQsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjQ2Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02NDctXHRcdFx0LmluZGV4ID0gNCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2NDg6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjQ5Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjUwLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MDItXHRcdC5vZmZzZXQgPSAweDAwMTUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gNyxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3MDM6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9pMmNfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTcwNC1cdFx0XHQubmFtZSA9IFwmIzM0O3hpaWMtaTJjXCYjMzQ7LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MTktXHRcdC5vZmZzZXQgPSAweDAwMTYwMDAwICYjNDM7IDB4MTAwMCwgLmlycV92ZWMgPSAzLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjcyMDpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzIxLVx0XHRcdC5iYXVkID0gMTE1MjAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MjYtXHRcdC5vZmZzZXQgPSAweDAwMTcwMDAwICYjNDM7IDB4MTAwMCwgLmlycV92ZWMgPSA0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjcyNzpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzI4LVx0XHRcdC5iYXVkID0gMTE1MjAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MzMtXHRcdC5vZmZzZXQgPSAweDAwMTgwMDAwICYjNDM7IDB4MTAwMCwgLmlycV92ZWMgPSA1LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjczNDpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzM1LVx0XHRcdC5iYXVkID0gNTc2MDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTc0NC1cdFx0Lm9mZnNldCA9IDB4MDAzMTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSA5LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjc0NTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2ZsYXNoX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03NDYtXHRcdFx0Lm5hbWUgPSBcJiMzNDt4aWxpbnhfc3BpXCYjMzQ7LCAucGNpX29mZnNldCA9IDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTc3NS1cdHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3NzY6XHRcdC5zZXR1cCA9IHB0cF9vY3BfZmJfYm9hcmRfaW5pdCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3Nzc6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9zZXJ2b19jb25mKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzc4LVx0XHRcdC5zZXJ2b19vZmZzZXRfcCA9IDB4MjAwMCxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9Nzk3PXN0YXRpYyBzdHJ1Y3Qgb2NwX3Jlc291cmNlIG9jcF9hcnRfcmVzb3VyY2VbXSA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODA0LVx0XHQub2Zmc2V0ID0gMHgwMDE2MDAwMCAmIzQzOyAweDEwMDAsIC5pcnFfdmVjID0gMyxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MDU6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9zZXJpYWxfcG9ydCkge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgwNi1cdFx0XHQuYmF1ZCA9IDExNTIwMCxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODE2LVx0XHQub2Zmc2V0ID0gMHgzNjAwMDAsIC5zaXplID0gMHgyMCwgLmlycV92ZWMgPSAxMixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MTc6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgxOC1cdFx0XHQuaW5kZXggPSAwLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgxOTpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgyMDpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODIxLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04MjUtXHRcdC5vZmZzZXQgPSAweDM4MDAwMCwgLnNpemUgPSAweDIwLCAuaXJxX3ZlYyA9IDgsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODI2Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04MjctXHRcdFx0LmluZGV4ID0gMSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4Mjg6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4Mjk6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgzMC1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODM0LVx0XHQub2Zmc2V0ID0gMHgzOTAwMDAsIC5zaXplID0gMHgyMCwgLmlycV92ZWMgPSAxMCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MzU6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgzNi1cdFx0XHQuaW5kZXggPSAyLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgzNzpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgzODpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODM5LVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NDMtXHRcdC5vZmZzZXQgPSAweDNBMDAwMCwgLnNpemUgPSAweDIwLCAuaXJxX3ZlYyA9IDE0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg0NDpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODQ1LVx0XHRcdC5pbmRleCA9IDMsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODQ2Olx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODQ3Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NDgtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg1Mi1cdFx0Lm9mZnNldCA9IDB4M0IwMDAwLCAuc2l6ZSA9IDB4MjAsIC5pcnFfdmVjID0gMTUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODUzOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NTQtXHRcdFx0LmluZGV4ID0gNCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NTU6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NTY6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg1Ny1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODYyLVx0XHQub2Zmc2V0ID0gMHgwMDMzMDAwMCwgLnNpemUgPSAweDIwLCAuaXJxX3ZlYyA9IDExLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg2MzpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODY0LVx0XHRcdC5pbmRleCA9IDUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODY1Olx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODY2Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NjctXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg3MS1cdFx0Lm9mZnNldCA9IDB4MDAzMTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSA5LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg3MjpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2ZsYXNoX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NzMtXHRcdFx0Lm5hbWUgPSBcJiMzNDtzcGlfYWx0ZXJhXCYjMzQ7LCAucGNpX29mZnNldCA9IDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg4Ni1cdFx0Lm9mZnNldCA9IDB4MzUwMDAwLCAuc2l6ZSA9IDB4MTAwLCAuaXJxX3ZlYyA9IDQsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODg3Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfaTJjX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04ODgtXHRcdFx0Lm5hbWUgPSBcJiMzNDtvY29yZXMtaTJjXCYjMzQ7LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MDMtXHRcdC5vZmZzZXQgPSAweDAwMTkwMDAwLCAuaXJxX3ZlYyA9IDcsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTA0Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnQpIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MDUtXHRcdFx0LmJhdWQgPSA5NjAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MTItXHR7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTEzOlx0XHQuc2V0dXAgPSBwdHBfb2NwX2FydF9ib2FyZF9pbml0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjkxNDpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcnZvX2NvbmYpIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MTUtXHRcdFx0LnNlcnZvX29mZnNldF9wID0gMHgyMDAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz05MjQ9c3RhdGljIHN0cnVjdCBvY3BfcmVzb3VyY2Ugb2NwX2FkdmFfcmVzb3VyY2VbXSA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTMxLVx0XHQub2Zmc2V0ID0gMHgwMTAxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTMyOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MzMtXHRcdFx0LmluZGV4ID0gMCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5MzQ6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5MzU6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTkzNi1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTQwLVx0XHQub2Zmc2V0ID0gMHgwMTAyMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTQxOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NDItXHRcdFx0LmluZGV4ID0gMSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NDM6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NDQ6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk0NS1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTQ5LVx0XHQub2Zmc2V0ID0gMHgwMTA2MDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDYsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTUwOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NTEtXHRcdFx0LmluZGV4ID0gMixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NTI6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NTM6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk1NC1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTU5LVx0XHQub2Zmc2V0ID0gMHgwMTBDMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDAsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTYwOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NjEtXHRcdFx0LmluZGV4ID0gNSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NjI6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NjM6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk2NC1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTY4LVx0XHQub2Zmc2V0ID0gMHgwMTBEMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDExLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk2OTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTcwLVx0XHRcdC5pbmRleCA9IDEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTcxOlx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF9zaWduYWxfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk3MjpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk3My1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTc3LVx0XHQub2Zmc2V0ID0gMHgwMTBFMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEyLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk3ODpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTc5LVx0XHRcdC5pbmRleCA9IDIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTgwOlx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF9zaWduYWxfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk4MTpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk4Mi1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTAxNC1cdFx0Lm9mZnNldCA9IDB4MDAxNjAwMDAgJiM0MzsgMHgxMDAwLCAuaXJxX3ZlYyA9IDMsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTAxNTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTAxNi1cdFx0XHQuYmF1ZCA9IDk2MDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMjEtXHRcdC5vZmZzZXQgPSAweDAwMTgwMDAwICYjNDM7IDB4MTAwMCwgLmlycV92ZWMgPSA1LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwMjI6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9zZXJpYWxfcG9ydCkge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMjMtXHRcdFx0LmJhdWQgPSAxMTUyMDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMzYtXHRcdC5vZmZzZXQgPSAweDAwMzEwNDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gOSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMDM3Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZmxhc2hfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMzgtXHRcdFx0Lm5hbWUgPSBcJiMzNDtzcGlfYWx0ZXJhXCYjMzQ7LCAucGNpX29mZnNldCA9IDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwNTEtXHRcdC5vZmZzZXQgPSAweDE1MDAwMCwgLnNpemUgPSAweDEwMCwgLmlycV92ZWMgPSA3LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwNTI6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9pMmNfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwNTMtXHRcdFx0Lm5hbWUgPSBcJiMzNDtvY29yZXMtaTJjXCYjMzQ7LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDcwLVx0e1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwNzE6XHRcdC5zZXR1cCA9IHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwNzI6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9hZHZhX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDczLVx0XHRcdC5zZXJ2byA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9MTA4OT1zdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfYWR2YV94MV9yZXNvdXJjZVtdID0ge1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDk2LVx0XHQub2Zmc2V0ID0gMHgwMTAxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTA5NzpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTA5OC1cdFx0XHQuaW5kZXggPSAwLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwOTk6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTAwOlx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTAxLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTA1LVx0XHQub2Zmc2V0ID0gMHgwMTAyMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEwNjpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEwNy1cdFx0XHQuaW5kZXggPSAxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMDg6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTA5Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTEwLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTE0LVx0XHQub2Zmc2V0ID0gMHgwMTA2MDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDYsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTExNTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTExNi1cdFx0XHQuaW5kZXggPSAyLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMTc6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTE4Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTE5LVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTIzLVx0XHQub2Zmc2V0ID0gMHgwMTExMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDE1LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMjQ6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExMjUtXHRcdFx0LmluZGV4ID0gMyxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTI2Olx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEyNzpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEyOC1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEzMi1cdFx0Lm9mZnNldCA9IDB4MDExMjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxNixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTMzOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTM0LVx0XHRcdC5pbmRleCA9IDQsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEzNTpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMzY6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExMzctXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNDItXHRcdC5vZmZzZXQgPSAweDAxMEMwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTQzOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTQ0LVx0XHRcdC5pbmRleCA9IDUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE0NTpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNDY6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNDctXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNTEtXHRcdC5vZmZzZXQgPSAweDAxMEQwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE1MjpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE1My1cdFx0XHQuaW5kZXggPSAxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNTQ6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE1NTpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNTYtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNjAtXHRcdC5vZmZzZXQgPSAweDAxMEUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE2MTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE2Mi1cdFx0XHQuaW5kZXggPSAyLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNjM6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE2NDpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNjUtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNjktXHRcdC5vZmZzZXQgPSAweDAxMEYwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTMsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE3MDpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE3MS1cdFx0XHQuaW5kZXggPSAzLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNzI6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE3MzpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNzQtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNzgtXHRcdC5vZmZzZXQgPSAweDAxMTAwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTQsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE3OTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE4MC1cdFx0XHQuaW5kZXggPSA0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExODE6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE4MjpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExODMtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMTUtXHRcdC5vZmZzZXQgPSAweDAwMTYwMDAwICYjNDM7IDB4MTAwMCwgLmlycV92ZWMgPSAzLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEyMTY6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9zZXJpYWxfcG9ydCkge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMTctXHRcdFx0LmJhdWQgPSA5NjAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjIyLVx0XHQub2Zmc2V0ID0gMHgwMDE4MDAwMCAmIzQzOyAweDEwMDAsIC5pcnFfdmVjID0gNSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMjIzOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnQpIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjI0LVx0XHRcdC5iYXVkID0gMTE1MjAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjQ1LVx0XHQub2Zmc2V0ID0gMHgwMDMxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDksXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTI0NjpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2ZsYXNoX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjQ3LVx0XHRcdC5uYW1lID0gXCYjMzQ7eGlsaW54X3NwaVwmIzM0OywgLnBjaV9vZmZzZXQgPSAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjYyLVx0XHQub2Zmc2V0ID0gMHgwMDE1MDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDcsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTI2MzpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2kyY19pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTI2NC1cdFx0XHQubmFtZSA9IFwmIzM0O3hpaWMtaTJjXCYjMzQ7LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjc3LVx0e1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEyNzg6XHRcdC5zZXR1cCA9IHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEyNzk6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9hZHZhX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjgwLVx0XHRcdC5zZXJ2byA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTI5Ni1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMjk3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwdHBfb2NwX3BjaWRldl9pZFtdID0ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyOTgtXHR7IFBDSV9ERVZJQ0VfREFUQShNRVRBLCBUSU1FQ0FSRCwgXHUwMDI2b2NwX2ZiX3Jlc291cmNlKSB9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMzA0LX07XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMwNTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgcHRwX29jcF9wY2lkZXZfaWQpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEzMDYtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMwNzpzdGF0aWMgREVGSU5FX01VVEVYKHB0cF9vY3BfbG9jayk7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMwODpzdGF0aWMgREVGSU5FX0lEUihwdHBfb2NwX2lkcik7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTMwOS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMzEwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NwX3NlbGVjdG9yIHB0cF9vY3BfY2xvY2tbXSA9IHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMzExLVx0eyAubmFtZSA9IFwmIzM0O05PTkVcJiMzNDssXHQudmFsdWUgPSAwIH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEzMjYtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMyNzpzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9zZWxlY3RvciBwdHBfb2NwX3NtYV9pbltdID0ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEzMjgtXHR7IC5uYW1lID0gXCYjMzQ7MTBNaHpcJiMzNDssICAudmFsdWUgPSAweDAwMDAsICAgICAgLmZyZXF1ZW5jeSA9IDEwMDAwMDAwIH0sXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk4MAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBUUCBPQ1AgVGltZSBDYXJkIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcHRwX29jcC5jYCBkcml2ZXIuIEl0JiMzOTtzIHRoZSAmIzM0O09wZW4gQ29tcHV0ZSBQcm9qZWN0IHRpbWUgY2FyZCBkcml2ZXImIzM0Oywgc28gaXQmIzM5O3MgYSBQQ0kgZGV2aWNlIGRyaXZlciwgd2hpY2ggaXMgdGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlLiBJdCYjMzk7cyByZWdpc3RlcmluZyBpdHNlbGYgYXMgc3VjaC4gVGhlIHBhdGNoIGFkZHMgZmlybXdhcmUgdXBsb2FkIGZ1bmN0aW9uYWxpdHkgdXNpbmcgdGhlIGBmaXJtd2FyZV91cGxvYWRgIGZyYW1ld29yay4gSW50ZXJlc3RpbmcuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/CgpSaWdodCwgaXQmIzM5O3MgYSBQQ0kgZHJpdmVyLiBJdCBiaW5kcyB0byBzcGVjaWZpYyBQQ0kgSURzOiBgUENJX0RFVklDRV9JRF9NRVRBX1RJTUVDQVJEYCAoMHgwNDAwKSwgYFBDSV9ERVZJQ0VfSURfT1JPTElBX0FSVF9USU1FQ0FSRGAgKDB4MDQwMCksIGFuZCBgUENJX0RFVklDRV9JRF9BRFZBX1RJTUVDQVJEYCAoMHgwNDEwKS4gU28sIGl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBhIGdlbmVyYWwtcHVycG9zZSBkcml2ZXI7IGl0JiMzOTtzIHNwZWNpZmljIGhhcmR3YXJlLgoKQnV0LCBoYW5nIG9uLi4uIGNhbiBzeXprYWxsZXIgZnV6eiB0aGlzPyBTeXprYWxsZXIgaGFzIHRoaXMgcHNldWRvLVBDSSBzdWJzeXN0ZW0sIGRvZXNuJiMzOTt0IGl0PyBJdCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIHdpdGggYXJiaXRyYXJ5IHZlbmRvci9kZXZpY2UgSURzIGlmIGl0IGhhcyBkZXNjcmlwdGlvbnMgZm9yIHRoZW0uIFRoYXQgY291bGQgb3BlbiB1cCBhbiBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhbnkgZGVzY3JpcHRpb25zIGZvciBgcHRwX29jcGA/IEkgbmVlZCB0byBjaGVjayB0aGUgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3B0cF9vY3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTU1MQoJCQkJCQkJb3V0cHV0OiAxMzIKCQkJCQkJCXRob3VnaHRzOiAxODUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZSBEZWNpc2lvbiAtIHB0cF9vY3AgRHJpdmVyIEFuYWx5c2lzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHJlc3RyaWN0aW9ucyDigJMgbm8gc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxscyBvciBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gR290IGl0LiBBbmQgSSBkb24mIzM5O3QgaGF2ZSB0aG9zZSBzcGVjaWFsIGBzeXotZ3JlcHBlcmAgb3IgYHJlYWQtc3l6LXNwZWNgIHRvb2xzLCBzbyBJJiMzOTtsbCB3b3JrIHdpdGggd2hhdCBJICpkbyogaGF2ZS4gIAoKTm93LCBhYm91dCB0aGlzIGBwdHBfb2NwYCBkcml2ZXIuIElzIGl0IHZlbmRvci1zcGVjaWZpYz8gSXTigJlzIGZvciB0aGUgT3BlbiBDb21wdXRlIFByb2plY3QgdGltZSBjYXJkLCBhIHNwZWNpZmljIFBDSWUgaGFyZHdhcmUgY2FyZC4gIERvZXMgaXQgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlPyBBaCwgdGhhdCYjMzk7cyB0aGUga2V5LiAgU3l6a2FsbGVyJiMzOTtzIHBzZXVkby1QQ0kgb25seSBlbXVsYXRlcyB0aGUgUENJIGNvbmZpZyBzcGFjZSBhbmQgYmFzaWMgQkFScywgbm90IHRoZSBhY3R1YWwgZGV2aWNlJiMzOTtzIGludGVybmFsIGxvZ2ljIGxpa2UgdGhlIENQTEQsIEkyQyBidXMsIGFuZCBNaWNyb0JsYXplIGZpcm13YXJlLiBUaGlzIHBhdGNoIGludGVyYWN0cyB3aXRoIGhhcmR3YXJlIHJlZ2lzdGVycy4KClRoaXMgcGF0Y2ggYWRkcyBJMkMgY29tbXVuaWNhdGlvbiB3aXRoIGEgQ1BMRC4gTG9va2luZyBhdCB0aGUgY29kZTogYGFkdmFfeDFfbWJsYXplX2FjcXVpcmVgIGV4cGVjdHMgc3BlY2lmaWMgcmVzcG9uc2VzIChgTUJMQVpFX0dSQU5URURgKS4gVGhpcyBjb2RlIHVzZXMgYGlvd3JpdGUzMmAgYW5kIGBpb3JlYWQzMmAgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIHdhaXRzIGZvciBhIHNwZWNpZmljIHJlc3BvbnNlLiAgSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgdGhvc2UgYGlvcmVhZDMyYCBjYWxscyB3aWxsIGxpa2VseSByZXR1cm4gemVybyBvciBgMHhmZmZmZmZmZmAsIHNvIGBhZHZhX3gxX21ibGF6ZV9hY3F1aXJlYCB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCB3aXRoIHRpbWVvdXQuIElmIGl0IGZhaWxzLCBhbGwgdGhlIHN1YnNlcXVlbnQgY29kZSwgSTJDIHRyYW5zZmVycywgQ1BMRCBjb21tYW5kcywgYW5kIGZpcm13YXJlIHVwbG9hZHMsIHdpbGwgYmUgY29tcGxldGVseSB1bnJlYWNoYWJsZS4gQW5kIHRoZSBgYWR2YV9jcGxkX3dyaXRlYCBjYWxscyBgYWR2YV94MV9pMmNfeGZlcmAuCgpUaGUgcHJvbXB0IGdpdmVzIGEgY291cGxlIG9mIHNwZWNpZmljIHJlYXNvbnMgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCBzYXlzOiAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LiBBbmQsICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VJiMzNDsuIFNpbmNlIGBwdHBfb2NwYCBpcyBhIGRyaXZlciBmb3IgdGhlIE9DUCBUaW1lY2FyZCwgd2hpY2ggaXMgYSAqcGh5c2ljYWwqIFBDSWUgY2FyZCwgYW5kIHRoZSBuZXcgY29kZSBkaXJlY3RseSBjb21tdW5pY2F0ZXMgd2l0aCB0aGlzIGhhcmR3YXJlIChNaWNyb0JsYXplLCBJMkMgbXV4LCBDUExEKSB0aGF0JiMzOTtzIG5vdCBlbXVsYXRlZCBpbiBRRU1VLCBpdCBmYWxscyBzcXVhcmVseSBpbnRvIHRoYXQgZmlyc3QgY2F0ZWdvcnkuIFRoaXMgY29kZSBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYmVjYXVzZSBpdCBleHBsaWNpdGx5IHdhaXRzIGZvciB0aGUgaGFyZHdhcmUgdG8gYmUgaW4gYSBjZXJ0YWluIHN0YXRlLCBhbmQgdGhhdCBzdGF0ZSBjYW4mIzM5O3QgYmUgYWNoaWV2ZWQgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLiAgCgpFdmVuIGlmIGl0IGdldHMgcGFzdCB0aGUgTWljcm9CbGF6ZSBncmFudCwgdGhlIGBpMmNfdHJhbnNmZXJgIHdpbGwgZmFpbCBiZWNhdXNlIHRoZSBoYXJkd2FyZSBJMkMgY29udHJvbGxlciBpcyBub3QgZW11bGF0ZWQgb3IgcG9zc2libHkgbm90IGV2ZW4gcmVnaXN0ZXJlZC4gU28sIHRoZXJlIGlzIG5vIHdheSB0byByZWFjaCB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVzZSBjaGFuZ2VzIGFyZSBjb250YWluZWQgd2l0aGluIHRoYXQgZHJpdmVyIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBnZW5lcmljIGtlcm5lbCBtb2RpZmljYXRpb25zLiBMb29rcyBsaWtlIEkmIzM5O20gZ29vZDogdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gYERvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdGltZWNhcmRgIGFuZCBgZHJpdmVycy9wdHAvcHRwX29jcC5jYC4gTm8gZ2VuZXJpYyBjaGFuZ2VzLgpPaywgSSB3aWxsIGZvcm11bGF0ZSB0aGUgcmVzcG9uc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIENQTEQgZmlybXdhcmUgdXBsb2FkIGFuZCBzeXNmcyBhdHRyaWJ1dGVzIGZvciB0aGUgQURWQSB4MSBPQ1AgVGltZWNhcmQsIHdoaWNoIGlzIGEgcGh5c2ljYWwgUENJZSBkZXZpY2UuIFRoZSBuZXcgY29kZSBoZWF2aWx5IHJlbGllcyBvbiBoYXJkd2FyZS1zcGVjaWZpYyBpbnRlcmFjdGlvbnMgKGUuZy4sIHBvbGxpbmcgTU1JTyByZWdpc3RlcnMgZm9yIE1pY3JvQmxhemUgZmlybXdhcmUgZ3JhbnRzLCBJMkMgY29tbXVuaWNhdGlvbiB3aXRoIGEgUENBOTU0OCBtdXggYW5kIExhdHRpY2UgQ1BMRCkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBjb3JlIGxvZ2ljIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBDUExEIGZpcm13YXJlIHVwbG9hZCBhbmQgc3lzZnMgYXR0cmlidXRlcyBmb3IgdGhlIEFEVkEgeDEgT0NQIFRpbWVjYXJkLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlLiBUaGUgbmV3IGNvZGUgaGVhdmlseSByZWxpZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgaW50ZXJhY3Rpb25zIChlLmcuLCBwb2xsaW5nIE1NSU8gcmVnaXN0ZXJzIGZvciBNaWNyb0JsYXplIGZpcm13YXJlIGdyYW50cywgSTJDIGNvbW11bmljYXRpb24gd2l0aCBhIFBDQTk1NDggbXV4IGFuZCBMYXR0aWNlIENQTEQpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgY29yZSBsb2dpYyBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo0MTowOS4wMDk3MzU5MjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODE3NjA3OTc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBDUExEIGZpcm13YXJlIHVwbG9hZCBhbmQgc3lzZnMgYXR0cmlidXRlcyBmb3IgdGhlIEFEVkEgeDEgT0NQIFRpbWVjYXJkLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlLiBUaGUgbmV3IGNvZGUgaGVhdmlseSByZWxpZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgaW50ZXJhY3Rpb25zIChlLmcuLCBwb2xsaW5nIE1NSU8gcmVnaXN0ZXJzIGZvciBNaWNyb0JsYXplIGZpcm13YXJlIGdyYW50cywgSTJDIGNvbW11bmljYXRpb24gd2l0aCBhIFBDQTk1NDggbXV4IGFuZCBMYXR0aWNlIENQTEQpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgY29yZSBsb2dpYyBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjQxOjA5LjAwOTc0MjM3NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI0MDAyMzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjFjNTM0NzZmNWVhMDM5YWMxYTM0NGQxYjk5MGRmOWE0Zjk1NzY2YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDE5OjQxOjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdGltZWNhcmQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkXFxuaW5kZXggM2FlNDFiNzYzNGFjOS4uZjdjOTk1NWFjYjBhOSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZFxcbkBAIC0xMSw2ICsxMSw0MCBAQCBDb250YWN0OlxcdEpvbmF0aGFuIExlbW9uIFxcdTAwM2Nqb25hdGhhbi5sZW1vbkBnbWFpbC5jb21cXHUwMDNlXFxuIERlc2NyaXB0aW9uOlxcdFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBOdGggdGltZWNhcmRcXG4gXFx0XFx0cmVnaXN0ZXJlZC5cXG4gXFxuK1doYXQ6XFx0XFx0L3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2NwbGRfZGV2aWNlX2lkXFxuK0RhdGU6XFx0XFx0SnVseSAyMDI2XFxuK0NvbnRhY3Q6XFx0U2FnaSBNYWltb24gXFx1MDAzY21haW1vbi5zYWdpQGdtYWlsLmNvbVxcdTAwM2VcXG4rRGVzY3JpcHRpb246XFx0KFJPKSBUaGUgMzItYml0IExhdHRpY2UgZGV2aWNlIElEIG9mIHRoZSBUQVAgQ1BMRCwgcmVwb3J0ZWQgYXNcXG4rXFx0XFx0YSBoZXggc3RyaW5nLCBlLmcuIFxcXCIweGUxMmJjMDQzXFxcIi5cXG4rXFxuK1xcdFxcdE9ubHkgcHJlc2VudCBvbiBBRFZBIHgxIFRBUCBib2FyZHMgKFBDSSBJRCAweGFkNWE6MHgwNDEwKS5cXG4rXFx0XFx0VGhlIExhdHRpY2UgTENNWE8zTEYtMjEwIHJlcG9ydHMgMHhlMTJiYzA0My5cXG4rXFxuK1xcdFxcdFRoZSBkcml2ZXIgYWNxdWlyZXMgdGhlIE1pY3JvQmxhemUgSTJDIGJ1cyBpbnRlcm5hbGx5IGJlZm9yZVxcbitcXHRcXHRpc3N1aW5nIHRoZSBSRUFEX0lEQ09ERSBjb21tYW5kOyBubyBidXMgYXJiaXRyYXRpb24gaXMgcmVxdWlyZWRcXG4rXFx0XFx0ZnJvbSB1c2Vyc3BhY2UuXFxuK1xcbitXaGF0OlxcdFxcdC9zeXMvY2xhc3MvdGltZWNhcmQvb2NwTi9jcGxkX3N0YXR1c1xcbitEYXRlOlxcdFxcdEp1bHkgMjAyNlxcbitDb250YWN0OlxcdFNhZ2kgTWFpbW9uIFxcdTAwM2NtYWltb24uc2FnaUBnbWFpbC5jb21cXHUwMDNlXFxuK0Rlc2NyaXB0aW9uOlxcdChSTykgVGhlIHN0YXR1cyByZWdpc3RlciBvZiB0aGUgVEFQIENQTEQsIGluIGh1bWFuLXJlYWRhYmxlXFxuK1xcdFxcdGZvcm06XFxuK1xcbitcXHRcXHQgIGRvbmU9XFx1MDAzYzB8MVxcdTAwM2UgYnVzeT1cXHUwMDNjMHwxXFx1MDAzZSBmYWlsZWQ9XFx1MDAzYzB8MVxcdTAwM2VcXG4rXFxuK1xcdFxcdE9ubHkgcHJlc2VudCBvbiBBRFZBIHgxIFRBUCBib2FyZHMgKFBDSSBJRCAweGFkNWE6MHgwNDEwKS5cXG4rXFxuK1xcdFxcdGRvbmU9MSBpbmRpY2F0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gZmxhc2ggd2FzIHN1Y2Nlc3NmdWxseVxcbitcXHRcXHRwcm9ncmFtbWVkIGFuZCBpcyBhY3RpdmUuICBidXN5PTEgbWVhbnMgYW4gaW50ZXJuYWwgb3BlcmF0aW9uXFxuK1xcdFxcdGlzIGluIHByb2dyZXNzLiAgZmFpbGVkPTEgbWVhbnMgdGhlIGxhc3QgSVNDIG9wZXJhdGlvbiBmYWlsZWQuXFxuK1xcbitcXHRcXHRUaGUgZHJpdmVyIGFjcXVpcmVzIHRoZSBNaWNyb0JsYXplIEkyQyBidXMgaW50ZXJuYWxseTsgbm8gYnVzXFxuK1xcdFxcdGFyYml0cmF0aW9uIGlzIHJlcXVpcmVkIGZyb20gdXNlcnNwYWNlLlxcbitcXG4rXFx0XFx0VG8gcHJvZ3JhbSBuZXcgQ1BMRCBmaXJtd2FyZSB1c2UgdGhlIHN0YW5kYXJkIGtlcm5lbFxcbitcXHRcXHRmaXJtd2FyZS11cGxvYWQgaW50ZXJmYWNlIHJlZ2lzdGVyZWQgYXQ6XFxuK1xcdFxcdC9zeXMvY2xhc3MvZmlybXdhcmUvYWR2YS1jcGxkL1xcbitcXG4gV2hhdDpcXHRcXHQvc3lzL2NsYXNzL3RpbWVjYXJkL29jcE4vYXZhaWxhYmxlX2Nsb2NrX3NvdXJjZXNcXG4gRGF0ZTpcXHRcXHRTZXB0ZW1iZXIgMjAyMVxcbiBDb250YWN0OlxcdEpvbmF0aGFuIExlbW9uIFxcdTAwM2Nqb25hdGhhbi5sZW1vbkBnbWFpbC5jb21cXHUwMDNlXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL3B0cF9vY3AuYyBiL2RyaXZlcnMvcHRwL3B0cF9vY3AuY1xcbmluZGV4IDM1ZTkxMWYxYWQ3OGMuLmRiOGFiMTYxZDRmMGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9wdHAvcHRwX29jcC5jXFxuKysrIGIvZHJpdmVycy9wdHAvcHRwX29jcC5jXFxuQEAgLTI0LDYgKzI0LDExIEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9udm1lbS1jb25zdW1lci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY3JjMTYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RwbGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlybXdhcmUuaFxcdTAwM2VcXG4gXFxuICNkZWZpbmUgUENJX0RFVklDRV9JRF9NRVRBX1RJTUVDQVJEXFx0XFx0MHgwNDAwXFxuIFxcbkBAIC04NSw2ICs5MCw3IEBAIHN0cnVjdCBwdHBfb2NwX2FkdmFfaW5mbyB7XFxuIFxcdHU4XFx0XFx0XFx0XFx0c2lnbmFsc19ucjtcXG4gXFx0dThcXHRcXHRcXHRcXHRmcmVxX2luX25yO1xcbiBcXHRjb25zdCBzdHJ1Y3Qgb2NwX2F0dHJfZ3JvdXBcXHQqYXR0cl9ncm91cHM7XFxuK1xcdGJvb2xcXHRcXHRcXHRcXHRoYXNfY3BsZDsgLyogeDE6IHN1cHBvcnRzIENQTEQgZmlybXdhcmUgdXBsb2FkICovXFxuIH07XFxuIFxcbiAjZGVmaW5lIE9DUF9DVFJMX0VOQUJMRVxcdFxcdEJJVCgwKVxcbkBAIC0xNjMsNyArMTY5LDggQEAgc3RydWN0IGdwaW9fcmVnIHtcXG4gXFx0dTMyXFx0Z3BpbzE7XFxuIFxcdHUzMlxcdF9fcGFkMDtcXG4gXFx0dTMyXFx0Z3BpbzI7XFxuLVxcdHUzMlxcdF9fcGFkMTtcXG4rXFx0LyogYWR2YV94MTogSTJDIGJ1cyBvd25lcnNoaXAgcmVnaXN0ZXI7IHJlc2VydmVkIG9uIG90aGVyIHZhcmlhbnRzICovXFxuK1xcdHUzMlxcdGkyY19idXNfY3RybDtcXG4gfTtcXG4gXFxuIHN0cnVjdCBpcmlnX21hc3Rlcl9yZWcge1xcbkBAIC00MTYsNiArNDIzLDEyIEBAIHN0cnVjdCBwdHBfb2NwIHtcXG4gXFx0ZHBsbF90cmFja2VyIHRyYWNrZXI7XFxuIFxcdGludCBzaWduYWxzX25yO1xcbiBcXHRpbnQgZnJlcV9pbl9ucjtcXG4rXFx0LyogYWR2YV94MSBDUExEIEkyQyAoaW50ZXJuYWwgdXNlIG9ubHkpICovXFxuK1xcdHN0cnVjdCBtdXRleFxcdFxcdGNwbGRfbG9jazsgICAgICAgICAgICAvKiBzZXJpYWxpc2VzIENQTEQgb3BlcmF0aW9ucyAqL1xcbitcXHRpbnRcXHRcXHRcXHRjcGxkX2kyY19hZGFwX25yOyAgICAgLyogSTJDIGFkYXB0ZXIgbnI7IC0xIGlmIGFic2VudCAqL1xcbitcXHRzdHJ1Y3QgZndfdXBsb2FkXFx0KmNwbGRfZndfdXBsb2FkOyAgICAgIC8qIGZpcm13YXJlIHVwbG9hZCBoYW5kbGU7IE5VTEwgaWYgYWJzZW50ICovXFxuK1xcdGJvb2xcXHRcXHRcXHRjcGxkX2NhbmNlbDsgICAgICAgICAgLyogY2FuY2VsbGF0aW9uIHJlcXVlc3RlZCAqL1xcbitcXHRib29sXFx0XFx0XFx0Y3BsZF9pbl9jb25maWdfbW9kZTsgIC8qIEVOX0NGR19UUCBpc3N1ZWQgYnV0IG5vdCB5ZXQgUkVGUkVTSCdkICovXFxuIH07XFxuIFxcbiAjZGVmaW5lIE9DUF9SRVFfVElNRVNUQU1QXFx0QklUKDApXFxuQEAgLTQ0OSw2ICs0NjIsOCBAQCBzdGF0aWMgaW50IHB0cF9vY3BfYXJ0X2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcXG4gXFxuIHN0YXRpYyBpbnQgcHRwX29jcF9hZHZhX2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcXG4gXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZndfdXBsb2FkX29wcyBhZHZhX2NwbGRfdXBsb2FkX29wcztcXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NwX3NtYV9vcCBvY3BfYWR2YV9zbWFfb3A7XFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NwX3NtYV9vcCBvY3BfYWR2YV94MV9zbWFfb3A7XFxuIFxcbkBAIC0xMjczLDYgKzEyODgsNyBAQCBzdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfYWR2YV94MV9yZXNvdXJjZVtdID0ge1xcbiBcXHRcXHRcXHQuc2lnbmFsc19uciAgID0gNCxcXG4gXFx0XFx0XFx0LmZyZXFfaW5fbnIgICA9IDQsXFxuIFxcdFxcdFxcdC5hdHRyX2dyb3VwcyAgPSBhZHZhX3RpbWVjYXJkX3gxX2dyb3VwcyxcXG4rXFx0XFx0XFx0Lmhhc19jcGxkICAgICA9IHRydWUsXFxuIFxcdFxcdH0sXFxuIFxcdH0sXFxuIFxcdHsgfVxcbkBAIC0zMTk3LDYgKzMyMTMsMjAgQEAgcHRwX29jcF9hZHZhX2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRwdHBfb2NwX3NtYV9pbml0KGJwKTtcXG4gXFxuK1xcdGlmIChpbmZvLVxcdTAwM2VoYXNfY3BsZCkge1xcbitcXHRcXHRzdHJ1Y3QgZndfdXBsb2FkICpmd2w7XFxuK1xcbitcXHRcXHRmd2wgPSBmaXJtd2FyZV91cGxvYWRfcmVnaXN0ZXIoVEhJU19NT0RVTEUsIFxcdTAwMjZicC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgXFxcImFkdmEtY3BsZFxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2YWR2YV9jcGxkX3VwbG9hZF9vcHMsIGJwKTtcXG4rXFx0XFx0aWYgKElTX0VSUihmd2wpKVxcbitcXHRcXHRcXHRkZXZfd2FybihcXHUwMDI2YnAtXFx1MDAzZXBkZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0IFxcXCJDUExEIGZpcm13YXJlIHVwbG9hZCB1bmF2YWlsYWJsZTogJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgZndsKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRicC1cXHUwMDNlY3BsZF9md191cGxvYWQgPSBmd2w7XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiBwdHBfb2NwX2luaXRfY2xvY2soYnAsIFxcdTAwMjZpbmZvLVxcdTAwM2VzZXJ2byk7XFxuIH1cXG4gXFxuQEAgLTQyMjQsNiArNDI1NCw0NDMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvY3BfYXR0cl9ncm91cCBhcnRfdGltZWNhcmRfZ3JvdXBzW10gPSB7XFxuIFxcdHsgfSxcXG4gfTtcXG4gXFxuKy8qXFxuKyAqIEludGVybmFsIGhlbHBlcnMgZm9yIHRoZSBhZHZhX3gxIFRBUCBDUExEIChMYXR0aWNlIExDTVhPM0xGLTIxMCkuXFxuKyAqXFxuKyAqIFRoZSBDUExEIHNpdHMgYXQgSTJDIGFkZHJlc3MgMHg0MCBiZWhpbmQgYSBQQ0E5NTQ4IG11eCAoMHg3NCkgb25cXG4rICogY2hhbm5lbCAwLiAgVGhlIEkyQyBidXMgaXMgc2hhcmVkIHdpdGggdGhlIE1pY3JvQmxhemUgZmlybXdhcmU7XFxuKyAqIGNwbGRfbG9jayArIG1ibGF6ZSBhY3F1aXJlL3JlbGVhc2UgcHJvdmlkZSBtdXR1YWwgZXhjbHVzaW9uIGZvciB0aGVcXG4rICogZnVsbCBkdXJhdGlvbiBvZiBhbnkgQ1BMRCBvcGVyYXRpb24uICBObyByYXcgSTJDIGFjY2VzcyBpcyBleHBvc2VkXFxuKyAqIHRvIHVzZXJzcGFjZTsgb25seSB0aGUgaGlnaC1sZXZlbCBhdHRyaWJ1dGVzIGJlbG93IGFyZS5cXG4rICovXFxuK1xcbisjZGVmaW5lIEFEVkFfTVVYX0FERFIgICAgIDB4NzRcXG4rI2RlZmluZSBBRFZBX0NQTERfQUREUiAgICAweDQwXFxuKyNkZWZpbmUgQURWQV9NVVhfQ0hBTk5FTCAgMFxcbitcXG4rI2RlZmluZSBNQkxBWkVfUkVRVUVTVCAgICAweDAwMDBhYWFhVVxcbisjZGVmaW5lIE1CTEFaRV9HUkFOVEVEICAgIDB4NTU1NWFhYWFVXFxuKyNkZWZpbmUgTUJMQVpFX1JFTEVBU0UgICAgMHg1NTU1MDAwMFVcXG4rI2RlZmluZSBNQkxBWkVfUkVUUklFUyAgICAyMDBcXG4rI2RlZmluZSBNQkxBWkVfUkVUUllfVVMgICAxMDAwMFxcbitcXG4rLyogTGF0dGljZSBMQ01YTzNMRiBJU0MgY29tbWFuZCBjb2RlcyAqL1xcbisjZGVmaW5lIENQTERfQ01EX1JFQURfSUQgICAgICAweEUwMDAwMDAwVUxcXG4rI2RlZmluZSBDUExEX0NNRF9SRUFEX1NUQVRVUyAgMHgzQzAwMDAwMFVMXFxuKyNkZWZpbmUgQ1BMRF9DTURfRU5fQ0ZHX1RQICAgIDB4NzQgICAvKiBlbmFibGUgY29uZmlnLCB0cmFuc3BhcmVudCBtb2RlICovXFxuKyNkZWZpbmUgQ1BMRF9DTURfRElTX0NGRyAgICAgIDB4MjZcXG4rI2RlZmluZSBDUExEX0NNRF9FUkFTRSAgICAgICAgMHgwRVxcbisjZGVmaW5lIENQTERfQ01EX1JFU0VUX0FERFIgICAweDQ2XFxuKyNkZWZpbmUgQ1BMRF9DTURfV1JJVEVfUEFHRSAgIDB4NzBcXG4rI2RlZmluZSBDUExEX0NNRF9TRVRfRE9ORSAgICAgMHg1RVxcbisjZGVmaW5lIENQTERfQ01EX1JFRlJFU0ggICAgICAweDc5XFxuKyNkZWZpbmUgQ1BMRF9QQUdFX1NJWkUgICAgICAgIDE2XFxuK1xcbisvKiBTdGF0dXMgcmVnaXN0ZXIgYml0IHBvc2l0aW9ucyAoTGF0dGljZSBMQ01YTzNMRiBkYXRhc2hlZXQpICovXFxuKyNkZWZpbmUgQ1BMRF9TVEFUVVNfRE9ORSAgIEJJVCg4KVxcbisjZGVmaW5lIENQTERfU1RBVFVTX0JVU1kgICBCSVQoMTIpXFxuKyNkZWZpbmUgQ1BMRF9TVEFUVVNfRkFJTEVEIEJJVCgxMylcXG4rXFxuKy8qXFxuKyAqIGFkdmFfeDFfaTJjX3hmZXIoKSAtIGlzc3VlIGEgc2luZ2xlIEkyQyB0cmFuc2FjdGlvbiBvbiB0aGUgQ1BMRCBidXMuXFxuKyAqXFxuKyAqIEFsbCBidWZmZXJzIGFyZSBoZWFwLWFsbG9jYXRlZCBpbnRlcm5hbGx5IHRvIGd1YXJhbnRlZSBETUEgc2FmZXR5IGZvclxcbisgKiB0aGUgWGlsaW54IEkyQyBjb250cm9sbGVyLiAgQ2FsbGVyIG11c3QgaG9sZCBicC1cXHUwMDNlY3BsZF9sb2NrLlxcbisgKi9cXG4rc3RhdGljIGludCBhZHZhX3gxX2kyY194ZmVyKHN0cnVjdCBwdHBfb2NwICpicCxcXG4rXFx0XFx0XFx0ICAgIHU4IGFkZHIsIGNvbnN0IHZvaWQgKndkYXRhLCB1OCB3bGVuLFxcbitcXHRcXHRcXHQgICAgdm9pZCAqcmRhdGEsIHU4IHJsZW4sIGJvb2wgbm9zdGFydClcXG4re1xcbitcXHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7XFxuK1xcdHN0cnVjdCBpMmNfbXNnIG1zZ3NbMl07XFxuK1xcdHU4ICp3YnVmID0gTlVMTCwgKnJidWYgPSBOVUxMO1xcbitcXHRpbnQgbm1zZ3MgPSAwLCByZXQ7XFxuK1xcbitcXHRhZGFwID0gaTJjX2dldF9hZGFwdGVyKFJFQURfT05DRShicC1cXHUwMDNlY3BsZF9pMmNfYWRhcF9ucikpO1xcbitcXHRpZiAoIWFkYXApXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0aWYgKHdsZW4pIHtcXG4rXFx0XFx0d2J1ZiA9IGttZW1kdXAod2RhdGEsIHdsZW4sIEdGUF9LRVJORUwpO1xcbitcXHRcXHRpZiAoIXdidWYpIHtcXG4rXFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0XFx0Z290byBwdXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0bXNnc1tubXNncysrXSA9IChzdHJ1Y3QgaTJjX21zZyl7XFxuK1xcdFxcdFxcdC5hZGRyICA9IGFkZHIsXFxuK1xcdFxcdFxcdC5mbGFncyA9IEkyQ19NX0RNQV9TQUZFLFxcbitcXHRcXHRcXHQubGVuICAgPSB3bGVuLFxcbitcXHRcXHRcXHQuYnVmICAgPSB3YnVmLFxcbitcXHRcXHR9O1xcbitcXHR9XFxuK1xcdGlmIChybGVuKSB7XFxuK1xcdFxcdHJidWYgPSBremFsbG9jKHJsZW4sIEdGUF9LRVJORUwpO1xcbitcXHRcXHRpZiAoIXJidWYpIHtcXG4rXFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0XFx0Z290byBwdXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0bXNnc1tubXNncysrXSA9IChzdHJ1Y3QgaTJjX21zZyl7XFxuK1xcdFxcdFxcdC5hZGRyICA9IGFkZHIsXFxuK1xcdFxcdFxcdC5mbGFncyA9IEkyQ19NX1JEIHwgSTJDX01fRE1BX1NBRkUgfFxcbitcXHRcXHRcXHRcXHQgKG5vc3RhcnQgPyBJMkNfTV9OT1NUQVJUIDogMCksXFxuK1xcdFxcdFxcdC5sZW4gICA9IHJsZW4sXFxuK1xcdFxcdFxcdC5idWYgICA9IHJidWYsXFxuK1xcdFxcdH07XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IGkyY190cmFuc2ZlcihhZGFwLCBtc2dzLCBubXNncyk7XFxuK1xcdGlmIChyZXQgPT0gbm1zZ3MpIHtcXG4rXFx0XFx0aWYgKHJkYXRhIFxcdTAwMjZcXHUwMDI2IHJsZW4pXFxuK1xcdFxcdFxcdG1lbWNweShyZGF0YSwgcmJ1Ziwgcmxlbik7XFxuK1xcdFxcdHJldCA9IDA7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHJldCA9IChyZXQgXFx1MDAzYyAwKSA/IHJldCA6IC1FSU87XFxuK1xcdH1cXG4rcHV0OlxcbitcXHRrZnJlZSh3YnVmKTtcXG4rXFx0a2ZyZWUocmJ1Zik7XFxuK1xcdGkyY19wdXRfYWRhcHRlcihhZGFwKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4rLyogQWNxdWlyZSB0aGUgc2hhcmVkIEkyQyBidXMgZnJvbSB0aGUgTWljcm9CbGF6ZSBmaXJtd2FyZS4gKi9cXG4rc3RhdGljIGludCBhZHZhX3gxX21ibGF6ZV9hY3F1aXJlKHN0cnVjdCBwdHBfb2NwICpicClcXG4re1xcbitcXHR1MzIgdmFsO1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdGlmICghYnAtXFx1MDAzZXBwc19zZWxlY3QpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0LyogUmVsZWFzZSBhbnkgc3RhbGUgZ3JhbnQgbGVmdCBieSBhIHByZXZpb3VzIGNyYXNoZWQgY2FsbGVyLiAqL1xcbitcXHRpb3dyaXRlMzIoMCwgXFx1MDAyNmJwLVxcdTAwM2VwcHNfc2VsZWN0LVxcdTAwM2VpMmNfYnVzX2N0cmwpO1xcbitcXHR2YWwgPSBpb3JlYWQzMihcXHUwMDI2YnAtXFx1MDAzZXBwc19zZWxlY3QtXFx1MDAzZWkyY19idXNfY3RybCk7XFxuK1xcdGlmICh2YWwgIT0gMClcXG4rXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4rXFxuK1xcdGlvd3JpdGUzMihNQkxBWkVfUkVRVUVTVCwgXFx1MDAyNmJwLVxcdTAwM2VwcHNfc2VsZWN0LVxcdTAwM2VpMmNfYnVzX2N0cmwpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUJMQVpFX1JFVFJJRVM7IGkrKykge1xcbitcXHRcXHR1c2xlZXBfcmFuZ2UoTUJMQVpFX1JFVFJZX1VTLCBNQkxBWkVfUkVUUllfVVMgKyAxMDAwKTtcXG4rXFx0XFx0dmFsID0gaW9yZWFkMzIoXFx1MDAyNmJwLVxcdTAwM2VwcHNfc2VsZWN0LVxcdTAwM2VpMmNfYnVzX2N0cmwpO1xcbitcXHRcXHRpZiAodmFsID09IE1CTEFaRV9HUkFOVEVEKVxcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYWR2YV94MV9tYmxhemVfcmVsZWFzZShzdHJ1Y3QgcHRwX29jcCAqYnApXFxuK3tcXG4rXFx0aWYgKGJwLVxcdTAwM2VwcHNfc2VsZWN0KVxcbitcXHRcXHRpb3dyaXRlMzIoTUJMQVpFX1JFTEVBU0UsIFxcdTAwMjZicC1cXHUwMDNlcHBzX3NlbGVjdC1cXHUwMDNlaTJjX2J1c19jdHJsKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBhZHZhX3gxX211eF9zZWxlY3Qoc3RydWN0IHB0cF9vY3AgKmJwLCBpbnQgY2gpXFxuK3tcXG4rXFx0dTggdmFsID0gKGNoIFxcdTAwM2U9IDApID8gQklUKGNoKSA6IDA7XFxuK1xcbitcXHRyZXR1cm4gYWR2YV94MV9pMmNfeGZlcihicCwgQURWQV9NVVhfQUREUiwgXFx1MDAyNnZhbCwgMSwgTlVMTCwgMCwgZmFsc2UpO1xcbit9XFxuK1xcbisvKiBTZW5kIDEtYnl0ZSBJU0MgY29tbWFuZCArIG9wdGlvbmFsIGFyZ3VtZW50cy4gKi9cXG4rc3RhdGljIGludCBhZHZhX3gxX2NwbGRfd3JpdGUoc3RydWN0IHB0cF9vY3AgKmJwLFxcbitcXHRcXHRcXHQgICAgICB1OCBjbWQsIGNvbnN0IHU4ICphcmdzLCB1OCBuYXJncylcXG4re1xcbitcXHR1OCBidWZbMSArIDY0XTtcXG4rXFxuK1xcdGlmIChuYXJncyBcXHUwMDNlIDY0KVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0YnVmWzBdID0gY21kO1xcbitcXHRpZiAobmFyZ3MpXFxuK1xcdFxcdG1lbWNweShcXHUwMDI2YnVmWzFdLCBhcmdzLCBuYXJncyk7XFxuK1xcdHJldHVybiBhZHZhX3gxX2kyY194ZmVyKGJwLCBBRFZBX0NQTERfQUREUiwgYnVmLCAxICsgbmFyZ3MsXFxuK1xcdFxcdFxcdFxcdCBOVUxMLCAwLCBmYWxzZSk7XFxuK31cXG4rXFxuKy8qXFxuKyAqIFNlbmQgYSA0LWJ5dGUgY29tbWFuZCB0aGVuIHJlYWQgZGF0YSBiYWNrIHdpdGhvdXQgYW4gaW50ZXJtZWRpYXRlIFNUT1BcXG4rICogKExhdHRpY2UgY29tYmluZWQgd3JpdGXihpJyZXBlYXRlZC1TVEFSVOKGknJlYWQpLlxcbisgKi9cXG4rc3RhdGljIGludCBhZHZhX3gxX2NwbGRfY21kX3JlYWQoc3RydWN0IHB0cF9vY3AgKmJwLFxcbitcXHRcXHRcXHRcXHQgdTMyIGNtZF9iZSwgdTggKm91dCwgdTggb3V0X2xlbilcXG4re1xcbitcXHRfX2JlMzIgY21kID0gY3B1X3RvX2JlMzIoY21kX2JlKTtcXG4rXFxuK1xcdHJldHVybiBhZHZhX3gxX2kyY194ZmVyKGJwLCBBRFZBX0NQTERfQUREUiwgXFx1MDAyNmNtZCwgNCwgb3V0LCBvdXRfbGVuLCB0cnVlKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoc3RydWN0IHB0cF9vY3AgKmJwLCB1MzIgKnN0YXR1cylcXG4re1xcbitcXHR1OCBidWZbNF07XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfU1RBVFVTLCBidWYsIDQpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHQqc3RhdHVzID0gZ2V0X3VuYWxpZ25lZF9iZTMyKGJ1Zik7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KHN0cnVjdCBwdHBfb2NwICpicCwgdW5zaWduZWQgaW50IG1heF9tcylcXG4re1xcbitcXHR1MzIgc3RhdHVzO1xcbitcXHR1bnNpZ25lZCBpbnQgZWxhcHNlZCA9IDA7XFxuK1xcbitcXHR3aGlsZSAoZWxhcHNlZCBcXHUwMDNjIG1heF9tcykge1xcbitcXHRcXHRpZiAoYWR2YV94MV9jcGxkX3JlYWRfc3RhdHVzKGJwLCBcXHUwMDI2c3RhdHVzKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdFxcdGlmIChzdGF0dXMgXFx1MDAyNiBDUExEX1NUQVRVU19GQUlMRUQpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRcXHRpZiAoIShzdGF0dXMgXFx1MDAyNiBDUExEX1NUQVRVU19CVVNZKSlcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcdFxcdHVzbGVlcF9yYW5nZSgxMDAwMDAsIDEwMTAwMCk7XFxuK1xcdFxcdGVsYXBzZWQgKz0gMTAwO1xcbitcXHR9XFxuK1xcdHJldHVybiAtRVRJTUVET1VUO1xcbit9XFxuK1xcbisvKlxcbisgKiBjcGxkX2RldmljZV9pZCAtIHNob3cgdGhlIExhdHRpY2UgZGV2aWNlIElEIG9mIHRoZSBUQVAgQ1BMRC5cXG4rICpcXG4rICogUmV0dXJucyB0aGUgMzItYml0IElEIGFzIGEgaGV4IHN0cmluZywgZS5nLiBcXFwiMHg2MTJiYzA0M1xcXFxuXFxcIi5cXG4rICogTGF0dGljZSBMQ01YTzNMRi0yMTAgcmVwb3J0cyAweDYxMkJDMDQzLlxcbisgKi9cXG4rc3RhdGljIHNzaXplX3RcXG4rY3BsZF9kZXZpY2VfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbitcXHRcXHQgICAgY2hhciAqYnVmKVxcbit7XFxuK1xcdHN0cnVjdCBwdHBfb2NwICpicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbitcXHR1OCBkYXRhWzRdO1xcbitcXHR1MzIgaWQgPSAwO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2YnAtXFx1MDAzZWNwbGRfbG9jayk7XFxuK1xcdHJldCA9IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0cmV0ID0gYWR2YV94MV9tdXhfc2VsZWN0KGJwLCBBRFZBX01VWF9DSEFOTkVMKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0Z290byByZWxlYXNlO1xcbitcXHRyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfSUQsIGRhdGEsIDQpO1xcbitcXHRpZiAoIXJldClcXG4rXFx0XFx0aWQgPSAoKHUzMilkYXRhWzBdIFxcdTAwM2NcXHUwMDNjIDI0KSB8ICgodTMyKWRhdGFbMV0gXFx1MDAzY1xcdTAwM2MgMTYpIHxcXG4rXFx0XFx0ICAgICAoKHUzMilkYXRhWzJdIFxcdTAwM2NcXHUwMDNjICA4KSB8ICAodTMyKWRhdGFbM107XFxuK1xcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xcbityZWxlYXNlOlxcbitcXHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcXG4rb3V0OlxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmJwLVxcdTAwM2VjcGxkX2xvY2spO1xcbitcXHRyZXR1cm4gcmV0ID8gcmV0IDogc3lzZnNfZW1pdChidWYsIFxcXCIweCUwOHhcXFxcblxcXCIsIGlkKTtcXG4rfVxcbitzdGF0aWMgREVWSUNFX0FUVFJfUk8oY3BsZF9kZXZpY2VfaWQpO1xcbitcXG4rLypcXG4rICogY3BsZF9zdGF0dXMgLSBzaG93IHRoZSBzdGF0dXMgcmVnaXN0ZXIgb2YgdGhlIFRBUCBDUExELlxcbisgKlxcbisgKiBSZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nOiBcXFwiZG9uZT1cXHUwMDNjMHwxXFx1MDAzZSBidXN5PVxcdTAwM2MwfDFcXHUwMDNlIGZhaWxlZD1cXHUwMDNjMHwxXFx1MDAzZVxcXFxuXFxcIlxcbisgKi9cXG4rc3RhdGljIHNzaXplX3RcXG4rY3BsZF9zdGF0dXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbitcXHRcXHQgY2hhciAqYnVmKVxcbit7XFxuK1xcdHN0cnVjdCBwdHBfb2NwICpicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbitcXHR1MzIgc3QgPSAwO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2YnAtXFx1MDAzZWNwbGRfbG9jayk7XFxuK1xcdHJldCA9IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0cmV0ID0gYWR2YV94MV9tdXhfc2VsZWN0KGJwLCBBRFZBX01VWF9DSEFOTkVMKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0Z290byByZWxlYXNlO1xcbitcXHRyZXQgPSBhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsIFxcdTAwMjZzdCk7XFxuK1xcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xcbityZWxlYXNlOlxcbitcXHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcXG4rb3V0OlxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmJwLVxcdTAwM2VjcGxkX2xvY2spO1xcbitcXHRyZXR1cm4gcmV0ID8gcmV0IDogc3lzZnNfZW1pdChidWYsIFxcXCJkb25lPSV1IGJ1c3k9JXUgZmFpbGVkPSV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICAhIShzdCBcXHUwMDI2IENQTERfU1RBVFVTX0RPTkUpLFxcbitcXHRcXHRcXHRcXHQgICAgICAhIShzdCBcXHUwMDI2IENQTERfU1RBVFVTX0JVU1kpLFxcbitcXHRcXHRcXHRcXHQgICAgICAhIShzdCBcXHUwMDI2IENQTERfU1RBVFVTX0ZBSUxFRCkpO1xcbit9XFxuK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhjcGxkX3N0YXR1cyk7XFxuK1xcbisvKlxcbisgKiBhZHZhX3gxIENQTEQgZmlybXdhcmUtdXBsb2FkIGNhbGxiYWNrcy5cXG4rICpcXG4rICogVGhlIGtlcm5lbCBmaXJtd2FyZS11cGxvYWQgc3Vic3lzdGVtIChDT05GSUdfRldfVVBMT0FEKSBleHBvc2VzOlxcbisgKiAgIC9zeXMvY2xhc3MvZmlybXdhcmUvYWR2YS1jcGxkL3tkYXRhLGxvYWRpbmcsc3RhdHVzLGVycm9yLC4uLn1cXG4rICogVXNlcnNwYWNlIHdyaXRlcyB0aGUgcmF3IGJpbmFyeSBwYWdlIGRhdGEgZGlyZWN0bHkg4oCUIG5vIC9saWIvZmlybXdhcmUvXFxuKyAqIHN0YWdpbmcgZmlsZSBpcyBuZWVkZWQuXFxuKyAqXFxuKyAqIENhbGxiYWNrIHNlcXVlbmNlIGRyaXZlbiBieSB0aGUgZnJhbWV3b3JrOlxcbisgKiAgIHByZXBhcmUoKSAgICAgIC0gdmFsaWRhdGUgc2l6ZSwgYWNxdWlyZSBidXMsIGVuYWJsZSBjb25maWcsIGVyYXNlIGZsYXNoXFxuKyAqICAgd3JpdGUoKSAgICAgICAgLSBwcm9ncmFtIG9uZSAxNi1ieXRlIHBhZ2UgcGVyIGNhbGxcXG4rICogICBwb2xsX2NvbXBsZXRlKCktIHNldCBET05FLCBSRUZSRVNILCB3YWl0IGZvciBDUExEIHRvIHJlYm9vdFxcbisgKiAgIGNhbmNlbCgpICAgICAgIC0gc2V0IGZsYWc7IGNoZWNrZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggY2FsbGJhY2tcXG4rICogICBjbGVhbnVwKCkgICAgICAtIHJlbGVhc2UgYnVzIHJlc291cmNlcyAoY2FsbGVkIG9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcXG4rICovXFxuK3N0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnJcXG4rYWR2YV9jcGxkX3ByZXBhcmUoc3RydWN0IGZ3X3VwbG9hZCAqZndsLCBjb25zdCB1OCAqZGF0YSwgdTMyIHNpemUpXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVxcdTAwM2VkZF9oYW5kbGU7XFxuK1xcdGNvbnN0IHU4IGVuX2FyZ3NbMl0gID0geyAweDA4LCAweDAwIH07XFxuK1xcdGNvbnN0IHU4IGVyYV9hcmdzWzNdID0geyAweDA0LCAweDAwLCAweDAwIH07IC8qIGNmZyBzZWN0b3Igb25seSAqL1xcbitcXHRjb25zdCB1OCB6ZXJvM1szXSAgICA9IHsgMCB9O1xcbitcXHRjb25zdCB1OCBkaXNfYXJnc1syXSA9IHsgMHgwMCwgMHgwMCB9O1xcbitcXHRlbnVtIGZ3X3VwbG9hZF9lcnIgcmV0ID0gRldfVVBMT0FEX0VSUl9OT05FO1xcbitcXG4rXFx0aWYgKCFzaXplIHx8IHNpemUgJSBDUExEX1BBR0VfU0laRSlcXG4rXFx0XFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSU5WQUxJRF9TSVpFO1xcbitcXG4rXFx0YnAtXFx1MDAzZWNwbGRfY2FuY2VsXFx0XFx0PSBmYWxzZTtcXG4rXFx0YnAtXFx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGVcXHQ9IGZhbHNlO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2YnAtXFx1MDAzZWNwbGRfbG9jayk7XFxuK1xcbitcXHRpZiAoYWR2YV94MV9tYmxhemVfYWNxdWlyZShicCkpIHtcXG4rXFx0XFx0cmV0ID0gRldfVVBMT0FEX0VSUl9USU1FT1VUO1xcbitcXHRcXHRnb3RvIGVycl91bmxvY2s7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChhZHZhX3gxX211eF9zZWxlY3QoYnAsIEFEVkFfTVVYX0NIQU5ORUwpKSB7XFxuK1xcdFxcdHJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XFxuK1xcdFxcdGdvdG8gZXJyX3JlbGVhc2U7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX0VOX0NGR19UUCwgZW5fYXJncywgMikgfHxcXG4rXFx0ICAgIGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KGJwLCA1MDAwKSkge1xcbitcXHRcXHRyZXQgPSBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xcbitcXHRcXHRnb3RvIGVycl9kZXNlbGVjdDtcXG4rXFx0fVxcbitcXHRicC1cXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSA9IHRydWU7XFxuK1xcbitcXHRpZiAoYnAtXFx1MDAzZWNwbGRfY2FuY2VsKSB7XFxuK1xcdFxcdHJldCA9IEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XFxuK1xcdFxcdGdvdG8gZXJyX2Rlc2VsZWN0O1xcbitcXHR9XFxuK1xcbitcXHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9FUkFTRSwgZXJhX2FyZ3MsIDMpIHx8XFxuK1xcdCAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMTUwMDApKSB7XFxuK1xcdFxcdHJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XFxuK1xcdFxcdGdvdG8gZXJyX2Rlc2VsZWN0O1xcbitcXHR9XFxuK1xcbitcXHRpZiAoYnAtXFx1MDAzZWNwbGRfY2FuY2VsKSB7XFxuK1xcdFxcdHJldCA9IEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XFxuK1xcdFxcdGdvdG8gZXJyX2Rlc2VsZWN0O1xcbitcXHR9XFxuK1xcbitcXHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9SRVNFVF9BRERSLCB6ZXJvMywgMykpIHtcXG4rXFx0XFx0cmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcXG4rXFx0XFx0Z290byBlcnJfZGVzZWxlY3Q7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBGV19VUExPQURfRVJSX05PTkU7XFx0LyogY2xlYW51cCgpIHdpbGwgdW5sb2NrIGV2ZXJ5dGhpbmcgKi9cXG4rXFxuK2Vycl9kZXNlbGVjdDpcXG4rXFx0aWYgKGJwLVxcdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlKSB7XFxuK1xcdFxcdGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfRElTX0NGRywgZGlzX2FyZ3MsIDIpO1xcbitcXHRcXHRicC1cXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSA9IGZhbHNlO1xcbitcXHR9XFxuK1xcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xcbitlcnJfcmVsZWFzZTpcXG4rXFx0YWR2YV94MV9tYmxhemVfcmVsZWFzZShicCk7XFxuK2Vycl91bmxvY2s6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2YnAtXFx1MDAzZWNwbGRfbG9jayk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnJcXG4rYWR2YV9jcGxkX3dyaXRlKHN0cnVjdCBmd191cGxvYWQgKmZ3bCwgY29uc3QgdTggKmRhdGEsXFxuK1xcdFxcdHUzMiBvZmZzZXQsIHUzMiBzaXplLCB1MzIgKndyaXR0ZW4pXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVxcdTAwM2VkZF9oYW5kbGU7XFxuK1xcdHU4IHBhZ2VfYXJnc1szICsgQ1BMRF9QQUdFX1NJWkVdO1xcbitcXG4rXFx0aWYgKGJwLVxcdTAwM2VjcGxkX2NhbmNlbClcXG4rXFx0XFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XFxuK1xcbitcXHRpZiAoc2l6ZSBcXHUwMDNjIENQTERfUEFHRV9TSVpFKVxcbitcXHRcXHRyZXR1cm4gRldfVVBMT0FEX0VSUl9JTlZBTElEX1NJWkU7XFxuK1xcbitcXHRwYWdlX2FyZ3NbMF0gPSAweDAwO1xcbitcXHRwYWdlX2FyZ3NbMV0gPSAweDAwO1xcbitcXHRwYWdlX2FyZ3NbMl0gPSAweDAxO1xcbitcXHRtZW1jcHkoXFx1MDAyNnBhZ2VfYXJnc1szXSwgZGF0YSArIG9mZnNldCwgQ1BMRF9QQUdFX1NJWkUpO1xcbitcXG4rXFx0aWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfV1JJVEVfUEFHRSxcXG4rXFx0XFx0XFx0ICAgICAgIHBhZ2VfYXJncywgMyArIENQTERfUEFHRV9TSVpFKSB8fFxcbitcXHQgICAgYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDEwMCkpXFxuK1xcdFxcdHJldHVybiBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xcbitcXG4rXFx0KndyaXR0ZW4gPSBDUExEX1BBR0VfU0laRTtcXG4rXFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfTk9ORTtcXG4rfVxcbitcXG4rc3RhdGljIGVudW0gZndfdXBsb2FkX2VyclxcbithZHZhX2NwbGRfcG9sbF9jb21wbGV0ZShzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVxcdTAwM2VkZF9oYW5kbGU7XFxuK1xcdGNvbnN0IHU4IHplcm8zWzNdICAgID0geyAwIH07XFxuK1xcdGNvbnN0IHU4IHJlZl9hcmdzWzJdID0geyAweDAwLCAweDAwIH07XFxuK1xcdHUzMiBzdDtcXG4rXFxuK1xcdGlmIChicC1cXHUwMDNlY3BsZF9jYW5jZWwpXFxuK1xcdFxcdHJldHVybiBGV19VUExPQURfRVJSX0NBTkNFTEVEO1xcbitcXG4rXFx0aWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfU0VUX0RPTkUsIHplcm8zLCAzKSB8fFxcbitcXHQgICAgYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDEwMDApKVxcbitcXHRcXHRyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcXG4rXFxuK1xcdGlmIChhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsIFxcdTAwMjZzdCkgfHwgIShzdCBcXHUwMDI2IENQTERfU1RBVFVTX0RPTkUpKVxcbitcXHRcXHRyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcXG4rXFxuK1xcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX1JFRlJFU0gsIHJlZl9hcmdzLCAyKSlcXG4rXFx0XFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XFxuK1xcbitcXHQvKiBDUExEIHJlYm9vdHMgYWZ0ZXIgUkVGUkVTSDsgcmUtc2VsZWN0IG11eCBvbmNlIGl0IGNvbWVzIGJhY2sgdXAgKi9cXG4rXFx0bXNsZWVwKDE1MDApO1xcbitcXHRhZHZhX3gxX211eF9zZWxlY3QoYnAsIEFEVkFfTVVYX0NIQU5ORUwpO1xcbitcXHRpZiAoYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDMwMDApKVxcbitcXHRcXHRyZXR1cm4gRldfVVBMT0FEX0VSUl9USU1FT1VUO1xcbitcXG4rXFx0YnAtXFx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUgPSBmYWxzZTtcXG4rXFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfTk9ORTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWRcXG4rYWR2YV9jcGxkX2NhbmNlbChzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVxcdTAwM2VkZF9oYW5kbGU7XFxuK1xcbitcXHRicC1cXHUwMDNlY3BsZF9jYW5jZWwgPSB0cnVlO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZFxcbithZHZhX2NwbGRfY2xlYW51cChzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVxcdTAwM2VkZF9oYW5kbGU7XFxuK1xcdGNvbnN0IHU4IGRpc19hcmdzWzJdID0geyAweDAwLCAweDAwIH07XFxuK1xcbitcXHRpZiAoYnAtXFx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUpIHtcXG4rXFx0XFx0YWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9ESVNfQ0ZHLCBkaXNfYXJncywgMik7XFxuK1xcdFxcdGJwLVxcdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlID0gZmFsc2U7XFxuK1xcdH1cXG4rXFx0YWR2YV94MV9tdXhfc2VsZWN0KGJwLCAtMSk7XFxuK1xcdGFkdmFfeDFfbWJsYXplX3JlbGVhc2UoYnApO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmJwLVxcdTAwM2VjcGxkX2xvY2spO1xcbit9XFxuK1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGZ3X3VwbG9hZF9vcHMgYWR2YV9jcGxkX3VwbG9hZF9vcHMgPSB7XFxuK1xcdC5wcmVwYXJlXFx0ID0gYWR2YV9jcGxkX3ByZXBhcmUsXFxuK1xcdC53cml0ZVxcdFxcdCA9IGFkdmFfY3BsZF93cml0ZSxcXG4rXFx0LnBvbGxfY29tcGxldGVcXHQgPSBhZHZhX2NwbGRfcG9sbF9jb21wbGV0ZSxcXG4rXFx0LmNhbmNlbFxcdFxcdCA9IGFkdmFfY3BsZF9jYW5jZWwsXFxuK1xcdC5jbGVhbnVwXFx0ID0gYWR2YV9jcGxkX2NsZWFudXAsXFxuK307XFxuK1xcbiBzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYWR2YV90aW1lY2FyZF9hdHRyc1tdID0ge1xcbiBcXHRcXHUwMDI2ZGV2X2F0dHJfc2VyaWFsbnVtLmF0dHIsXFxuIFxcdFxcdTAwMjZkZXZfYXR0cl9nbnNzX3N5bmMuYXR0cixcXG5AQCAtNDI3Miw2ICs0NzM5LDggQEAgc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkdmFfdGltZWNhcmRfeDFfYXR0cnNbXSA9IHtcXG4gXFx0XFx1MDAyNmRldl9hdHRyX3RzX3dpbmRvd19hZGp1c3QuYXR0cixcXG4gXFx0XFx1MDAyNmRldl9hdHRyX3V0Y190YWlfb2Zmc2V0LmF0dHIsXFxuIFxcdFxcdTAwMjZkZXZfYXR0cl90b2RfY29ycmVjdGlvbi5hdHRyLFxcbitcXHRcXHUwMDI2ZGV2X2F0dHJfY3BsZF9kZXZpY2VfaWQuYXR0cixcXG4rXFx0XFx1MDAyNmRldl9hdHRyX2NwbGRfc3RhdHVzLmF0dHIsXFxuIFxcdE5VTEwsXFxuIH07XFxuIFxcbkBAIC00OTAyLDYgKzUzNzEsMTEgQEAgcHRwX29jcF9kZXRhY2goc3RydWN0IHB0cF9vY3AgKmJwKVxcbiBcXHRcXHRjbGtfaHdfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKGJwLVxcdTAwM2VpMmNfY2xrKTtcXG4gXFx0aWYgKGJwLVxcdTAwM2VuX2lycXMpXFxuIFxcdFxcdHBjaV9mcmVlX2lycV92ZWN0b3JzKGJwLVxcdTAwM2VwZGV2KTtcXG4rXFx0aWYgKGJwLVxcdTAwM2VjcGxkX2Z3X3VwbG9hZCkge1xcbitcXHRcXHRmaXJtd2FyZV91cGxvYWRfdW5yZWdpc3RlcihicC1cXHUwMDNlY3BsZF9md191cGxvYWQpO1xcbitcXHRcXHRicC1cXHUwMDNlY3BsZF9md191cGxvYWQgPSBOVUxMO1xcbitcXHR9XFxuK1xcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmJwLVxcdTAwM2VjcGxkX2xvY2spO1xcbiBcXHRkZXZpY2VfdW5yZWdpc3RlcihcXHUwMDI2YnAtXFx1MDAzZWRldik7XFxuIH1cXG4gXFxuQEAgLTUwNzgsNiArNTU1MiwxNyBAQCBwdHBfb2NwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gb3V0X2Rpc2FibGU7XFxuIFxcbitcXHQvKiBNdXN0IGJlIGJlZm9yZSB0aGUgZmlyc3QgZXJyb3IgcGF0aCB0aGF0IGNhbGxzIHB0cF9vY3BfZGV0YWNoKCksXFxuK1xcdCAqIHNvIG11dGV4X2Rlc3Ryb3koKSBhbHdheXMgcnVucyBvbiBhbiBpbml0aWFsaXNlZCBtdXRleC5cXG4rXFx0ICogTXVzdCBhbHNvIGJlIGJlZm9yZSBwdHBfb2NwX3JlZ2lzdGVyX3Jlc291cmNlcygpOiB0aGUgSTJDIGJ1c1xcbitcXHQgKiBub3RpZmllciAocHRwX29jcF9pMmNfbm90aWZpZXJfY2FsbCkgZmlyZXMgd2hlbiB0aGUgYWRhcHRlclxcbitcXHQgKiByZWdpc3RlcnMgYW5kIHN0b3JlcyB0aGUgYWRhcHRlciBudW1iZXIgaW4gY3BsZF9pMmNfYWRhcF9ucjsgdGhlXFxuK1xcdCAqIC0xIHNlbnRpbmVsIGJlbG93IG11c3QgYWxyZWFkeSBiZSB3cml0dGVuIHNvIHRoYXQgYSBub3RpZmllclxcbitcXHQgKiBmaXJpbmcgZHVyaW5nIHJlZ2lzdHJhdGlvbiBpcyBuZXZlciBvdmVyd3JpdHRlbiBieSB0aGlzIGluaXQuXFxuK1xcdCAqL1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZicC1cXHUwMDNlY3BsZF9sb2NrKTtcXG4rXFx0YnAtXFx1MDAzZWNwbGRfaTJjX2FkYXBfbnIgPSAtMTtcXG4rXFxuIFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZicC1cXHUwMDNlc3luY193b3JrLCBwdHBfb2NwX3N5bmNfd29yayk7XFxuIFxcbiBcXHQvKiBjb21wYXQgbW9kZS5cXG5AQCAtNTIxNywxMSArNTcwMiwxNiBAQCBwdHBfb2NwX2kyY19ub3RpZmllcl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuIFxcbiBmb3VuZDpcXG4gXFx0YnAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG4tXFx0aWYgKGFkZClcXG4rXFx0aWYgKGFkZCkge1xcbiBcXHRcXHRwdHBfb2NwX3N5bWxpbmsoYnAsIGNoaWxkLCBcXFwiaTJjXFxcIik7XFxuLVxcdGVsc2VcXG4rXFx0XFx0LyogQ2FjaGUgYWRhcHRlciBucjsgdXNlZCBieSBjcGxkX2RldmljZV9pZC9jcGxkX3N0YXR1cy9jcGxkX3Byb2dyYW1cXG4rXFx0XFx0ICogZm9yIHJlZmVyZW5jZS1jb3VudGVkIHVuYmluZC1zYWZlIGFkYXB0ZXIgYWNjZXNzLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0V1JJVEVfT05DRShicC1cXHUwMDNlY3BsZF9pMmNfYWRhcF9uciwgaTJjX3ZlcmlmeV9hZGFwdGVyKGNoaWxkKS1cXHUwMDNlbnIpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRXUklURV9PTkNFKGJwLVxcdTAwM2VjcGxkX2kyY19hZGFwX25yLCAtMSk7IC8qIGludmFsaWRhdGUgYmVmb3JlIGZyZWUgKi9cXG4gXFx0XFx0c3lzZnNfcmVtb3ZlX2xpbmsoXFx1MDAyNmJwLVxcdTAwM2VkZXYua29iaiwgXFxcImkyY1xcXCIpO1xcbi1cXG4rXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6NDE6MDkuMzM0NDU4NzE0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjc4NTEzNTI0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgQ1BMRCBmaXJtd2FyZSB1cGxvYWQgYW5kIHN5c2ZzIGF0dHJpYnV0ZXMgZm9yIHRoZSBBRFZBIHgxIE9DUCBUaW1lY2FyZCwgd2hpY2ggaXMgYSBwaHlzaWNhbCBQQ0llIGRldmljZS4gVGhlIG5ldyBjb2RlIGhlYXZpbHkgcmVsaWVzIG9uIGhhcmR3YXJlLXNwZWNpZmljIGludGVyYWN0aW9ucyAoZS5nLiwgcG9sbGluZyBNTUlPIHJlZ2lzdGVycyBmb3IgTWljcm9CbGF6ZSBmaXJtd2FyZSBncmFudHMsIEkyQyBjb21tdW5pY2F0aW9uIHdpdGggYSBQQ0E5NTQ4IG11eCBhbmQgTGF0dGljZSBDUExEKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIENvbnNlcXVlbnRseSwgdGhlIGNvcmUgbG9naWMgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMWM1MzQ3NmY1ZWEwMzlhYzFhMzQ0ZDFiOTkwZGY5YTRmOTU3NjZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxOTo0MTowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdGltZWNhcmQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkXG5pbmRleCAzYWU0MWI3NjM0YWM5Li5mN2M5OTU1YWNiMGE5IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZFxuKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZFxuQEAgLTExLDYgKzExLDQwIEBAIENvbnRhY3Q6XHRKb25hdGhhbiBMZW1vbiBcdTAwM2Nqb25hdGhhbi5sZW1vbkBnbWFpbC5jb21cdTAwM2VcbiBEZXNjcmlwdGlvbjpcdFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBOdGggdGltZWNhcmRcbiBcdFx0cmVnaXN0ZXJlZC5cbiBcbitXaGF0Olx0XHQvc3lzL2NsYXNzL3RpbWVjYXJkL29jcE4vY3BsZF9kZXZpY2VfaWRcbitEYXRlOlx0XHRKdWx5IDIwMjZcbitDb250YWN0Olx0U2FnaSBNYWltb24gXHUwMDNjbWFpbW9uLnNhZ2lAZ21haWwuY29tXHUwMDNlXG4rRGVzY3JpcHRpb246XHQoUk8pIFRoZSAzMi1iaXQgTGF0dGljZSBkZXZpY2UgSUQgb2YgdGhlIFRBUCBDUExELCByZXBvcnRlZCBhc1xuK1x0XHRhIGhleCBzdHJpbmcsIGUuZy4gXCIweGUxMmJjMDQzXCIuXG4rXG4rXHRcdE9ubHkgcHJlc2VudCBvbiBBRFZBIHgxIFRBUCBib2FyZHMgKFBDSSBJRCAweGFkNWE6MHgwNDEwKS5cbitcdFx0VGhlIExhdHRpY2UgTENNWE8zTEYtMjEwIHJlcG9ydHMgMHhlMTJiYzA0My5cbitcbitcdFx0VGhlIGRyaXZlciBhY3F1aXJlcyB0aGUgTWljcm9CbGF6ZSBJMkMgYnVzIGludGVybmFsbHkgYmVmb3JlXG4rXHRcdGlzc3VpbmcgdGhlIFJFQURfSURDT0RFIGNvbW1hbmQ7IG5vIGJ1cyBhcmJpdHJhdGlvbiBpcyByZXF1aXJlZFxuK1x0XHRmcm9tIHVzZXJzcGFjZS5cbitcbitXaGF0Olx0XHQvc3lzL2NsYXNzL3RpbWVjYXJkL29jcE4vY3BsZF9zdGF0dXNcbitEYXRlOlx0XHRKdWx5IDIwMjZcbitDb250YWN0Olx0U2FnaSBNYWltb24gXHUwMDNjbWFpbW9uLnNhZ2lAZ21haWwuY29tXHUwMDNlXG4rRGVzY3JpcHRpb246XHQoUk8pIFRoZSBzdGF0dXMgcmVnaXN0ZXIgb2YgdGhlIFRBUCBDUExELCBpbiBodW1hbi1yZWFkYWJsZVxuK1x0XHRmb3JtOlxuK1xuK1x0XHQgIGRvbmU9XHUwMDNjMHwxXHUwMDNlIGJ1c3k9XHUwMDNjMHwxXHUwMDNlIGZhaWxlZD1cdTAwM2MwfDFcdTAwM2VcbitcbitcdFx0T25seSBwcmVzZW50IG9uIEFEVkEgeDEgVEFQIGJvYXJkcyAoUENJIElEIDB4YWQ1YToweDA0MTApLlxuK1xuK1x0XHRkb25lPTEgaW5kaWNhdGVzIHRoZSBjb25maWd1cmF0aW9uIGZsYXNoIHdhcyBzdWNjZXNzZnVsbHlcbitcdFx0cHJvZ3JhbW1lZCBhbmQgaXMgYWN0aXZlLiAgYnVzeT0xIG1lYW5zIGFuIGludGVybmFsIG9wZXJhdGlvblxuK1x0XHRpcyBpbiBwcm9ncmVzcy4gIGZhaWxlZD0xIG1lYW5zIHRoZSBsYXN0IElTQyBvcGVyYXRpb24gZmFpbGVkLlxuK1xuK1x0XHRUaGUgZHJpdmVyIGFjcXVpcmVzIHRoZSBNaWNyb0JsYXplIEkyQyBidXMgaW50ZXJuYWxseTsgbm8gYnVzXG4rXHRcdGFyYml0cmF0aW9uIGlzIHJlcXVpcmVkIGZyb20gdXNlcnNwYWNlLlxuK1xuK1x0XHRUbyBwcm9ncmFtIG5ldyBDUExEIGZpcm13YXJlIHVzZSB0aGUgc3RhbmRhcmQga2VybmVsXG4rXHRcdGZpcm13YXJlLXVwbG9hZCBpbnRlcmZhY2UgcmVnaXN0ZXJlZCBhdDpcbitcdFx0L3N5cy9jbGFzcy9maXJtd2FyZS9hZHZhLWNwbGQvXG4rXG4gV2hhdDpcdFx0L3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2F2YWlsYWJsZV9jbG9ja19zb3VyY2VzXG4gRGF0ZTpcdFx0U2VwdGVtYmVyIDIwMjFcbiBDb250YWN0Olx0Sm9uYXRoYW4gTGVtb24gXHUwMDNjam9uYXRoYW4ubGVtb25AZ21haWwuY29tXHUwMDNlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvcHRwX29jcC5jIGIvZHJpdmVycy9wdHAvcHRwX29jcC5jXG5pbmRleCAzNWU5MTFmMWFkNzhjLi5kYjhhYjE2MWQ0ZjBmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvcHRwX29jcC5jXG4rKysgYi9kcml2ZXJzL3B0cC9wdHBfb2NwLmNcbkBAIC0yNCw2ICsyNCwxMSBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L252bWVtLWNvbnN1bWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcmMxNi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZHBsbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZmlybXdhcmUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FVEFfVElNRUNBUkRcdFx0MHgwNDAwXG4gXG5AQCAtODUsNiArOTAsNyBAQCBzdHJ1Y3QgcHRwX29jcF9hZHZhX2luZm8ge1xuIFx0dThcdFx0XHRcdHNpZ25hbHNfbnI7XG4gXHR1OFx0XHRcdFx0ZnJlcV9pbl9ucjtcbiBcdGNvbnN0IHN0cnVjdCBvY3BfYXR0cl9ncm91cFx0KmF0dHJfZ3JvdXBzO1xuK1x0Ym9vbFx0XHRcdFx0aGFzX2NwbGQ7IC8qIHgxOiBzdXBwb3J0cyBDUExEIGZpcm13YXJlIHVwbG9hZCAqL1xuIH07XG4gXG4gI2RlZmluZSBPQ1BfQ1RSTF9FTkFCTEVcdFx0QklUKDApXG5AQCAtMTYzLDcgKzE2OSw4IEBAIHN0cnVjdCBncGlvX3JlZyB7XG4gXHR1MzJcdGdwaW8xO1xuIFx0dTMyXHRfX3BhZDA7XG4gXHR1MzJcdGdwaW8yO1xuLVx0dTMyXHRfX3BhZDE7XG4rXHQvKiBhZHZhX3gxOiBJMkMgYnVzIG93bmVyc2hpcCByZWdpc3RlcjsgcmVzZXJ2ZWQgb24gb3RoZXIgdmFyaWFudHMgKi9cbitcdHUzMlx0aTJjX2J1c19jdHJsO1xuIH07XG4gXG4gc3RydWN0IGlyaWdfbWFzdGVyX3JlZyB7XG5AQCAtNDE2LDYgKzQyMywxMiBAQCBzdHJ1Y3QgcHRwX29jcCB7XG4gXHRkcGxsX3RyYWNrZXIgdHJhY2tlcjtcbiBcdGludCBzaWduYWxzX25yO1xuIFx0aW50IGZyZXFfaW5fbnI7XG4rXHQvKiBhZHZhX3gxIENQTEQgSTJDIChpbnRlcm5hbCB1c2Ugb25seSkgKi9cbitcdHN0cnVjdCBtdXRleFx0XHRjcGxkX2xvY2s7ICAgICAgICAgICAgLyogc2VyaWFsaXNlcyBDUExEIG9wZXJhdGlvbnMgKi9cbitcdGludFx0XHRcdGNwbGRfaTJjX2FkYXBfbnI7ICAgICAvKiBJMkMgYWRhcHRlciBucjsgLTEgaWYgYWJzZW50ICovXG4rXHRzdHJ1Y3QgZndfdXBsb2FkXHQqY3BsZF9md191cGxvYWQ7ICAgICAgLyogZmlybXdhcmUgdXBsb2FkIGhhbmRsZTsgTlVMTCBpZiBhYnNlbnQgKi9cbitcdGJvb2xcdFx0XHRjcGxkX2NhbmNlbDsgICAgICAgICAgLyogY2FuY2VsbGF0aW9uIHJlcXVlc3RlZCAqL1xuK1x0Ym9vbFx0XHRcdGNwbGRfaW5fY29uZmlnX21vZGU7ICAvKiBFTl9DRkdfVFAgaXNzdWVkIGJ1dCBub3QgeWV0IFJFRlJFU0gnZCAqL1xuIH07XG4gXG4gI2RlZmluZSBPQ1BfUkVRX1RJTUVTVEFNUFx0QklUKDApXG5AQCAtNDQ5LDYgKzQ2Miw4IEBAIHN0YXRpYyBpbnQgcHRwX29jcF9hcnRfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xuIFxuIHN0YXRpYyBpbnQgcHRwX29jcF9hZHZhX2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IGZ3X3VwbG9hZF9vcHMgYWR2YV9jcGxkX3VwbG9hZF9vcHM7XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvY3Bfc21hX29wIG9jcF9hZHZhX3NtYV9vcDtcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9zbWFfb3Agb2NwX2FkdmFfeDFfc21hX29wO1xuIFxuQEAgLTEyNzMsNiArMTI4OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgb2NwX3Jlc291cmNlIG9jcF9hZHZhX3gxX3Jlc291cmNlW10gPSB7XG4gXHRcdFx0LnNpZ25hbHNfbnIgICA9IDQsXG4gXHRcdFx0LmZyZXFfaW5fbnIgICA9IDQsXG4gXHRcdFx0LmF0dHJfZ3JvdXBzICA9IGFkdmFfdGltZWNhcmRfeDFfZ3JvdXBzLFxuK1x0XHRcdC5oYXNfY3BsZCAgICAgPSB0cnVlLFxuIFx0XHR9LFxuIFx0fSxcbiBcdHsgfVxuQEAgLTMxOTcsNiArMzIxMywyMCBAQCBwdHBfb2NwX2FkdmFfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXHRwdHBfb2NwX3NtYV9pbml0KGJwKTtcbiBcbitcdGlmIChpbmZvLVx1MDAzZWhhc19jcGxkKSB7XG4rXHRcdHN0cnVjdCBmd191cGxvYWQgKmZ3bDtcbitcbitcdFx0ZndsID0gZmlybXdhcmVfdXBsb2FkX3JlZ2lzdGVyKFRISVNfTU9EVUxFLCBcdTAwMjZicC1cdTAwM2VwZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdFx0ICAgICAgIFwiYWR2YS1jcGxkXCIsXG4rXHRcdFx0XHRcdCAgICAgICBcdTAwMjZhZHZhX2NwbGRfdXBsb2FkX29wcywgYnApO1xuK1x0XHRpZiAoSVNfRVJSKGZ3bCkpXG4rXHRcdFx0ZGV2X3dhcm4oXHUwMDI2YnAtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHQgXCJDUExEIGZpcm13YXJlIHVwbG9hZCB1bmF2YWlsYWJsZTogJXBlXFxuXCIsXG4rXHRcdFx0XHQgZndsKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGJwLVx1MDAzZWNwbGRfZndfdXBsb2FkID0gZndsO1xuK1x0fVxuK1xuIFx0cmV0dXJuIHB0cF9vY3BfaW5pdF9jbG9jayhicCwgXHUwMDI2aW5mby1cdTAwM2VzZXJ2byk7XG4gfVxuIFxuQEAgLTQyMjQsNiArNDI1NCw0NDMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvY3BfYXR0cl9ncm91cCBhcnRfdGltZWNhcmRfZ3JvdXBzW10gPSB7XG4gXHR7IH0sXG4gfTtcbiBcbisvKlxuKyAqIEludGVybmFsIGhlbHBlcnMgZm9yIHRoZSBhZHZhX3gxIFRBUCBDUExEIChMYXR0aWNlIExDTVhPM0xGLTIxMCkuXG4rICpcbisgKiBUaGUgQ1BMRCBzaXRzIGF0IEkyQyBhZGRyZXNzIDB4NDAgYmVoaW5kIGEgUENBOTU0OCBtdXggKDB4NzQpIG9uXG4rICogY2hhbm5lbCAwLiAgVGhlIEkyQyBidXMgaXMgc2hhcmVkIHdpdGggdGhlIE1pY3JvQmxhemUgZmlybXdhcmU7XG4rICogY3BsZF9sb2NrICsgbWJsYXplIGFjcXVpcmUvcmVsZWFzZSBwcm92aWRlIG11dHVhbCBleGNsdXNpb24gZm9yIHRoZVxuKyAqIGZ1bGwgZHVyYXRpb24gb2YgYW55IENQTEQgb3BlcmF0aW9uLiAgTm8gcmF3IEkyQyBhY2Nlc3MgaXMgZXhwb3NlZFxuKyAqIHRvIHVzZXJzcGFjZTsgb25seSB0aGUgaGlnaC1sZXZlbCBhdHRyaWJ1dGVzIGJlbG93IGFyZS5cbisgKi9cbitcbisjZGVmaW5lIEFEVkFfTVVYX0FERFIgICAgIDB4NzRcbisjZGVmaW5lIEFEVkFfQ1BMRF9BRERSICAgIDB4NDBcbisjZGVmaW5lIEFEVkFfTVVYX0NIQU5ORUwgIDBcbitcbisjZGVmaW5lIE1CTEFaRV9SRVFVRVNUICAgIDB4MDAwMGFhYWFVXG4rI2RlZmluZSBNQkxBWkVfR1JBTlRFRCAgICAweDU1NTVhYWFhVVxuKyNkZWZpbmUgTUJMQVpFX1JFTEVBU0UgICAgMHg1NTU1MDAwMFVcbisjZGVmaW5lIE1CTEFaRV9SRVRSSUVTICAgIDIwMFxuKyNkZWZpbmUgTUJMQVpFX1JFVFJZX1VTICAgMTAwMDBcbitcbisvKiBMYXR0aWNlIExDTVhPM0xGIElTQyBjb21tYW5kIGNvZGVzICovXG4rI2RlZmluZSBDUExEX0NNRF9SRUFEX0lEICAgICAgMHhFMDAwMDAwMFVMXG4rI2RlZmluZSBDUExEX0NNRF9SRUFEX1NUQVRVUyAgMHgzQzAwMDAwMFVMXG4rI2RlZmluZSBDUExEX0NNRF9FTl9DRkdfVFAgICAgMHg3NCAgIC8qIGVuYWJsZSBjb25maWcsIHRyYW5zcGFyZW50IG1vZGUgKi9cbisjZGVmaW5lIENQTERfQ01EX0RJU19DRkcgICAgICAweDI2XG4rI2RlZmluZSBDUExEX0NNRF9FUkFTRSAgICAgICAgMHgwRVxuKyNkZWZpbmUgQ1BMRF9DTURfUkVTRVRfQUREUiAgIDB4NDZcbisjZGVmaW5lIENQTERfQ01EX1dSSVRFX1BBR0UgICAweDcwXG4rI2RlZmluZSBDUExEX0NNRF9TRVRfRE9ORSAgICAgMHg1RVxuKyNkZWZpbmUgQ1BMRF9DTURfUkVGUkVTSCAgICAgIDB4NzlcbisjZGVmaW5lIENQTERfUEFHRV9TSVpFICAgICAgICAxNlxuK1xuKy8qIFN0YXR1cyByZWdpc3RlciBiaXQgcG9zaXRpb25zIChMYXR0aWNlIExDTVhPM0xGIGRhdGFzaGVldCkgKi9cbisjZGVmaW5lIENQTERfU1RBVFVTX0RPTkUgICBCSVQoOClcbisjZGVmaW5lIENQTERfU1RBVFVTX0JVU1kgICBCSVQoMTIpXG4rI2RlZmluZSBDUExEX1NUQVRVU19GQUlMRUQgQklUKDEzKVxuK1xuKy8qXG4rICogYWR2YV94MV9pMmNfeGZlcigpIC0gaXNzdWUgYSBzaW5nbGUgSTJDIHRyYW5zYWN0aW9uIG9uIHRoZSBDUExEIGJ1cy5cbisgKlxuKyAqIEFsbCBidWZmZXJzIGFyZSBoZWFwLWFsbG9jYXRlZCBpbnRlcm5hbGx5IHRvIGd1YXJhbnRlZSBETUEgc2FmZXR5IGZvclxuKyAqIHRoZSBYaWxpbnggSTJDIGNvbnRyb2xsZXIuICBDYWxsZXIgbXVzdCBob2xkIGJwLVx1MDAzZWNwbGRfbG9jay5cbisgKi9cbitzdGF0aWMgaW50IGFkdmFfeDFfaTJjX3hmZXIoc3RydWN0IHB0cF9vY3AgKmJwLFxuK1x0XHRcdCAgICB1OCBhZGRyLCBjb25zdCB2b2lkICp3ZGF0YSwgdTggd2xlbixcbitcdFx0XHQgICAgdm9pZCAqcmRhdGEsIHU4IHJsZW4sIGJvb2wgbm9zdGFydClcbit7XG4rXHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7XG4rXHRzdHJ1Y3QgaTJjX21zZyBtc2dzWzJdO1xuK1x0dTggKndidWYgPSBOVUxMLCAqcmJ1ZiA9IE5VTEw7XG4rXHRpbnQgbm1zZ3MgPSAwLCByZXQ7XG4rXG4rXHRhZGFwID0gaTJjX2dldF9hZGFwdGVyKFJFQURfT05DRShicC1cdTAwM2VjcGxkX2kyY19hZGFwX25yKSk7XG4rXHRpZiAoIWFkYXApXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0aWYgKHdsZW4pIHtcbitcdFx0d2J1ZiA9IGttZW1kdXAod2RhdGEsIHdsZW4sIEdGUF9LRVJORUwpO1xuK1x0XHRpZiAoIXdidWYpIHtcbitcdFx0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRcdGdvdG8gcHV0O1xuK1x0XHR9XG4rXHRcdG1zZ3Nbbm1zZ3MrK10gPSAoc3RydWN0IGkyY19tc2cpe1xuK1x0XHRcdC5hZGRyICA9IGFkZHIsXG4rXHRcdFx0LmZsYWdzID0gSTJDX01fRE1BX1NBRkUsXG4rXHRcdFx0LmxlbiAgID0gd2xlbixcbitcdFx0XHQuYnVmICAgPSB3YnVmLFxuK1x0XHR9O1xuK1x0fVxuK1x0aWYgKHJsZW4pIHtcbitcdFx0cmJ1ZiA9IGt6YWxsb2MocmxlbiwgR0ZQX0tFUk5FTCk7XG4rXHRcdGlmICghcmJ1Zikge1xuK1x0XHRcdHJldCA9IC1FTk9NRU07XG4rXHRcdFx0Z290byBwdXQ7XG4rXHRcdH1cbitcdFx0bXNnc1tubXNncysrXSA9IChzdHJ1Y3QgaTJjX21zZyl7XG4rXHRcdFx0LmFkZHIgID0gYWRkcixcbitcdFx0XHQuZmxhZ3MgPSBJMkNfTV9SRCB8IEkyQ19NX0RNQV9TQUZFIHxcbitcdFx0XHRcdCAobm9zdGFydCA/IEkyQ19NX05PU1RBUlQgOiAwKSxcbitcdFx0XHQubGVuICAgPSBybGVuLFxuK1x0XHRcdC5idWYgICA9IHJidWYsXG4rXHRcdH07XG4rXHR9XG4rXG4rXHRyZXQgPSBpMmNfdHJhbnNmZXIoYWRhcCwgbXNncywgbm1zZ3MpO1xuK1x0aWYgKHJldCA9PSBubXNncykge1xuK1x0XHRpZiAocmRhdGEgXHUwMDI2XHUwMDI2IHJsZW4pXG4rXHRcdFx0bWVtY3B5KHJkYXRhLCByYnVmLCBybGVuKTtcbitcdFx0cmV0ID0gMDtcbitcdH0gZWxzZSB7XG4rXHRcdHJldCA9IChyZXQgXHUwMDNjIDApID8gcmV0IDogLUVJTztcbitcdH1cbitwdXQ6XG4rXHRrZnJlZSh3YnVmKTtcbitcdGtmcmVlKHJidWYpO1xuK1x0aTJjX3B1dF9hZGFwdGVyKGFkYXApO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rLyogQWNxdWlyZSB0aGUgc2hhcmVkIEkyQyBidXMgZnJvbSB0aGUgTWljcm9CbGF6ZSBmaXJtd2FyZS4gKi9cbitzdGF0aWMgaW50IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoc3RydWN0IHB0cF9vY3AgKmJwKVxuK3tcbitcdHUzMiB2YWw7XG4rXHRpbnQgaTtcbitcbitcdGlmICghYnAtXHUwMDNlcHBzX3NlbGVjdClcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4rXHQvKiBSZWxlYXNlIGFueSBzdGFsZSBncmFudCBsZWZ0IGJ5IGEgcHJldmlvdXMgY3Jhc2hlZCBjYWxsZXIuICovXG4rXHRpb3dyaXRlMzIoMCwgXHUwMDI2YnAtXHUwMDNlcHBzX3NlbGVjdC1cdTAwM2VpMmNfYnVzX2N0cmwpO1xuK1x0dmFsID0gaW9yZWFkMzIoXHUwMDI2YnAtXHUwMDNlcHBzX3NlbGVjdC1cdTAwM2VpMmNfYnVzX2N0cmwpO1xuK1x0aWYgKHZhbCAhPSAwKVxuK1x0XHRyZXR1cm4gLUVCVVNZO1xuK1xuK1x0aW93cml0ZTMyKE1CTEFaRV9SRVFVRVNULCBcdTAwMjZicC1cdTAwM2VwcHNfc2VsZWN0LVx1MDAzZWkyY19idXNfY3RybCk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQkxBWkVfUkVUUklFUzsgaSsrKSB7XG4rXHRcdHVzbGVlcF9yYW5nZShNQkxBWkVfUkVUUllfVVMsIE1CTEFaRV9SRVRSWV9VUyArIDEwMDApO1xuK1x0XHR2YWwgPSBpb3JlYWQzMihcdTAwMjZicC1cdTAwM2VwcHNfc2VsZWN0LVx1MDAzZWkyY19idXNfY3RybCk7XG4rXHRcdGlmICh2YWwgPT0gTUJMQVpFX0dSQU5URUQpXG4rXHRcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXHRyZXR1cm4gLUVUSU1FRE9VVDtcbit9XG4rXG4rc3RhdGljIHZvaWQgYWR2YV94MV9tYmxhemVfcmVsZWFzZShzdHJ1Y3QgcHRwX29jcCAqYnApXG4re1xuK1x0aWYgKGJwLVx1MDAzZXBwc19zZWxlY3QpXG4rXHRcdGlvd3JpdGUzMihNQkxBWkVfUkVMRUFTRSwgXHUwMDI2YnAtXHUwMDNlcHBzX3NlbGVjdC1cdTAwM2VpMmNfYnVzX2N0cmwpO1xuK31cbitcbitzdGF0aWMgaW50IGFkdmFfeDFfbXV4X3NlbGVjdChzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBjaClcbit7XG4rXHR1OCB2YWwgPSAoY2ggXHUwMDNlPSAwKSA/IEJJVChjaCkgOiAwO1xuK1xuK1x0cmV0dXJuIGFkdmFfeDFfaTJjX3hmZXIoYnAsIEFEVkFfTVVYX0FERFIsIFx1MDAyNnZhbCwgMSwgTlVMTCwgMCwgZmFsc2UpO1xuK31cbitcbisvKiBTZW5kIDEtYnl0ZSBJU0MgY29tbWFuZCArIG9wdGlvbmFsIGFyZ3VtZW50cy4gKi9cbitzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF93cml0ZShzdHJ1Y3QgcHRwX29jcCAqYnAsXG4rXHRcdFx0ICAgICAgdTggY21kLCBjb25zdCB1OCAqYXJncywgdTggbmFyZ3MpXG4re1xuK1x0dTggYnVmWzEgKyA2NF07XG4rXG4rXHRpZiAobmFyZ3MgXHUwMDNlIDY0KVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdGJ1ZlswXSA9IGNtZDtcbitcdGlmIChuYXJncylcbitcdFx0bWVtY3B5KFx1MDAyNmJ1ZlsxXSwgYXJncywgbmFyZ3MpO1xuK1x0cmV0dXJuIGFkdmFfeDFfaTJjX3hmZXIoYnAsIEFEVkFfQ1BMRF9BRERSLCBidWYsIDEgKyBuYXJncyxcbitcdFx0XHRcdCBOVUxMLCAwLCBmYWxzZSk7XG4rfVxuK1xuKy8qXG4rICogU2VuZCBhIDQtYnl0ZSBjb21tYW5kIHRoZW4gcmVhZCBkYXRhIGJhY2sgd2l0aG91dCBhbiBpbnRlcm1lZGlhdGUgU1RPUFxuKyAqIChMYXR0aWNlIGNvbWJpbmVkIHdyaXRl4oaScmVwZWF0ZWQtU1RBUlTihpJyZWFkKS5cbisgKi9cbitzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF9jbWRfcmVhZChzdHJ1Y3QgcHRwX29jcCAqYnAsXG4rXHRcdFx0XHQgdTMyIGNtZF9iZSwgdTggKm91dCwgdTggb3V0X2xlbilcbit7XG4rXHRfX2JlMzIgY21kID0gY3B1X3RvX2JlMzIoY21kX2JlKTtcbitcbitcdHJldHVybiBhZHZhX3gxX2kyY194ZmVyKGJwLCBBRFZBX0NQTERfQUREUiwgXHUwMDI2Y21kLCA0LCBvdXQsIG91dF9sZW4sIHRydWUpO1xuK31cbitcbitzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcHRwX29jcCAqYnAsIHUzMiAqc3RhdHVzKVxuK3tcbitcdHU4IGJ1Zls0XTtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfU1RBVFVTLCBidWYsIDQpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcdCpzdGF0dXMgPSBnZXRfdW5hbGlnbmVkX2JlMzIoYnVmKTtcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KHN0cnVjdCBwdHBfb2NwICpicCwgdW5zaWduZWQgaW50IG1heF9tcylcbit7XG4rXHR1MzIgc3RhdHVzO1xuK1x0dW5zaWduZWQgaW50IGVsYXBzZWQgPSAwO1xuK1xuK1x0d2hpbGUgKGVsYXBzZWQgXHUwMDNjIG1heF9tcykge1xuK1x0XHRpZiAoYWR2YV94MV9jcGxkX3JlYWRfc3RhdHVzKGJwLCBcdTAwMjZzdGF0dXMpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1x0XHRpZiAoc3RhdHVzIFx1MDAyNiBDUExEX1NUQVRVU19GQUlMRUQpXG4rXHRcdFx0cmV0dXJuIC1FSU87XG4rXHRcdGlmICghKHN0YXR1cyBcdTAwMjYgQ1BMRF9TVEFUVVNfQlVTWSkpXG4rXHRcdFx0cmV0dXJuIDA7XG4rXHRcdHVzbGVlcF9yYW5nZSgxMDAwMDAsIDEwMTAwMCk7XG4rXHRcdGVsYXBzZWQgKz0gMTAwO1xuK1x0fVxuK1x0cmV0dXJuIC1FVElNRURPVVQ7XG4rfVxuK1xuKy8qXG4rICogY3BsZF9kZXZpY2VfaWQgLSBzaG93IHRoZSBMYXR0aWNlIGRldmljZSBJRCBvZiB0aGUgVEFQIENQTEQuXG4rICpcbisgKiBSZXR1cm5zIHRoZSAzMi1iaXQgSUQgYXMgYSBoZXggc3RyaW5nLCBlLmcuIFwiMHg2MTJiYzA0M1xcblwiLlxuKyAqIExhdHRpY2UgTENNWE8zTEYtMjEwIHJlcG9ydHMgMHg2MTJCQzA0My5cbisgKi9cbitzdGF0aWMgc3NpemVfdFxuK2NwbGRfZGV2aWNlX2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbitcdFx0ICAgIGNoYXIgKmJ1Zilcbit7XG4rXHRzdHJ1Y3QgcHRwX29jcCAqYnAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbitcdHU4IGRhdGFbNF07XG4rXHR1MzIgaWQgPSAwO1xuK1x0aW50IHJldDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbitcdHJldCA9IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBvdXQ7XG4rXHRyZXQgPSBhZHZhX3gxX211eF9zZWxlY3QoYnAsIEFEVkFfTVVYX0NIQU5ORUwpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byByZWxlYXNlO1xuK1x0cmV0ID0gYWR2YV94MV9jcGxkX2NtZF9yZWFkKGJwLCBDUExEX0NNRF9SRUFEX0lELCBkYXRhLCA0KTtcbitcdGlmICghcmV0KVxuK1x0XHRpZCA9ICgodTMyKWRhdGFbMF0gXHUwMDNjXHUwMDNjIDI0KSB8ICgodTMyKWRhdGFbMV0gXHUwMDNjXHUwMDNjIDE2KSB8XG4rXHRcdCAgICAgKCh1MzIpZGF0YVsyXSBcdTAwM2NcdTAwM2MgIDgpIHwgICh1MzIpZGF0YVszXTtcbitcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xuK3JlbGVhc2U6XG4rXHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcbitvdXQ6XG4rXHRtdXRleF91bmxvY2soXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbitcdHJldHVybiByZXQgPyByZXQgOiBzeXNmc19lbWl0KGJ1ZiwgXCIweCUwOHhcXG5cIiwgaWQpO1xuK31cbitzdGF0aWMgREVWSUNFX0FUVFJfUk8oY3BsZF9kZXZpY2VfaWQpO1xuK1xuKy8qXG4rICogY3BsZF9zdGF0dXMgLSBzaG93IHRoZSBzdGF0dXMgcmVnaXN0ZXIgb2YgdGhlIFRBUCBDUExELlxuKyAqXG4rICogUmV0dXJucyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZzogXCJkb25lPVx1MDAzYzB8MVx1MDAzZSBidXN5PVx1MDAzYzB8MVx1MDAzZSBmYWlsZWQ9XHUwMDNjMHwxXHUwMDNlXFxuXCJcbisgKi9cbitzdGF0aWMgc3NpemVfdFxuK2NwbGRfc3RhdHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbitcdFx0IGNoYXIgKmJ1Zilcbit7XG4rXHRzdHJ1Y3QgcHRwX29jcCAqYnAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbitcdHUzMiBzdCA9IDA7XG4rXHRpbnQgcmV0O1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuK1x0cmV0ID0gYWR2YV94MV9tYmxhemVfYWNxdWlyZShicCk7XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIG91dDtcbitcdHJldCA9IGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIHJlbGVhc2U7XG4rXHRyZXQgPSBhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsIFx1MDAyNnN0KTtcbitcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xuK3JlbGVhc2U6XG4rXHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcbitvdXQ6XG4rXHRtdXRleF91bmxvY2soXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbitcdHJldHVybiByZXQgPyByZXQgOiBzeXNmc19lbWl0KGJ1ZiwgXCJkb25lPSV1IGJ1c3k9JXUgZmFpbGVkPSV1XFxuXCIsXG4rXHRcdFx0XHQgICAgICAhIShzdCBcdTAwMjYgQ1BMRF9TVEFUVVNfRE9ORSksXG4rXHRcdFx0XHQgICAgICAhIShzdCBcdTAwMjYgQ1BMRF9TVEFUVVNfQlVTWSksXG4rXHRcdFx0XHQgICAgICAhIShzdCBcdTAwMjYgQ1BMRF9TVEFUVVNfRkFJTEVEKSk7XG4rfVxuK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhjcGxkX3N0YXR1cyk7XG4rXG4rLypcbisgKiBhZHZhX3gxIENQTEQgZmlybXdhcmUtdXBsb2FkIGNhbGxiYWNrcy5cbisgKlxuKyAqIFRoZSBrZXJuZWwgZmlybXdhcmUtdXBsb2FkIHN1YnN5c3RlbSAoQ09ORklHX0ZXX1VQTE9BRCkgZXhwb3NlczpcbisgKiAgIC9zeXMvY2xhc3MvZmlybXdhcmUvYWR2YS1jcGxkL3tkYXRhLGxvYWRpbmcsc3RhdHVzLGVycm9yLC4uLn1cbisgKiBVc2Vyc3BhY2Ugd3JpdGVzIHRoZSByYXcgYmluYXJ5IHBhZ2UgZGF0YSBkaXJlY3RseSDigJQgbm8gL2xpYi9maXJtd2FyZS9cbisgKiBzdGFnaW5nIGZpbGUgaXMgbmVlZGVkLlxuKyAqXG4rICogQ2FsbGJhY2sgc2VxdWVuY2UgZHJpdmVuIGJ5IHRoZSBmcmFtZXdvcms6XG4rICogICBwcmVwYXJlKCkgICAgICAtIHZhbGlkYXRlIHNpemUsIGFjcXVpcmUgYnVzLCBlbmFibGUgY29uZmlnLCBlcmFzZSBmbGFzaFxuKyAqICAgd3JpdGUoKSAgICAgICAgLSBwcm9ncmFtIG9uZSAxNi1ieXRlIHBhZ2UgcGVyIGNhbGxcbisgKiAgIHBvbGxfY29tcGxldGUoKS0gc2V0IERPTkUsIFJFRlJFU0gsIHdhaXQgZm9yIENQTEQgdG8gcmVib290XG4rICogICBjYW5jZWwoKSAgICAgICAtIHNldCBmbGFnOyBjaGVja2VkIGF0IHRoZSBzdGFydCBvZiBlYWNoIGNhbGxiYWNrXG4rICogICBjbGVhbnVwKCkgICAgICAtIHJlbGVhc2UgYnVzIHJlc291cmNlcyAoY2FsbGVkIG9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcbisgKi9cbitzdGF0aWMgZW51bSBmd191cGxvYWRfZXJyXG4rYWR2YV9jcGxkX3ByZXBhcmUoc3RydWN0IGZ3X3VwbG9hZCAqZndsLCBjb25zdCB1OCAqZGF0YSwgdTMyIHNpemUpXG4re1xuK1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbitcdGNvbnN0IHU4IGVuX2FyZ3NbMl0gID0geyAweDA4LCAweDAwIH07XG4rXHRjb25zdCB1OCBlcmFfYXJnc1szXSA9IHsgMHgwNCwgMHgwMCwgMHgwMCB9OyAvKiBjZmcgc2VjdG9yIG9ubHkgKi9cbitcdGNvbnN0IHU4IHplcm8zWzNdICAgID0geyAwIH07XG4rXHRjb25zdCB1OCBkaXNfYXJnc1syXSA9IHsgMHgwMCwgMHgwMCB9O1xuK1x0ZW51bSBmd191cGxvYWRfZXJyIHJldCA9IEZXX1VQTE9BRF9FUlJfTk9ORTtcbitcbitcdGlmICghc2l6ZSB8fCBzaXplICUgQ1BMRF9QQUdFX1NJWkUpXG4rXHRcdHJldHVybiBGV19VUExPQURfRVJSX0lOVkFMSURfU0laRTtcbitcbitcdGJwLVx1MDAzZWNwbGRfY2FuY2VsXHRcdD0gZmFsc2U7XG4rXHRicC1cdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlXHQ9IGZhbHNlO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuK1xuK1x0aWYgKGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApKSB7XG4rXHRcdHJldCA9IEZXX1VQTE9BRF9FUlJfVElNRU9VVDtcbitcdFx0Z290byBlcnJfdW5sb2NrO1xuK1x0fVxuK1xuK1x0aWYgKGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCkpIHtcbitcdFx0cmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbitcdFx0Z290byBlcnJfcmVsZWFzZTtcbitcdH1cbitcbitcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX0VOX0NGR19UUCwgZW5fYXJncywgMikgfHxcbitcdCAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgNTAwMCkpIHtcbitcdFx0cmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbitcdFx0Z290byBlcnJfZGVzZWxlY3Q7XG4rXHR9XG4rXHRicC1cdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlID0gdHJ1ZTtcbitcbitcdGlmIChicC1cdTAwM2VjcGxkX2NhbmNlbCkge1xuK1x0XHRyZXQgPSBGV19VUExPQURfRVJSX0NBTkNFTEVEO1xuK1x0XHRnb3RvIGVycl9kZXNlbGVjdDtcbitcdH1cbitcbitcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX0VSQVNFLCBlcmFfYXJncywgMykgfHxcbitcdCAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMTUwMDApKSB7XG4rXHRcdHJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XG4rXHRcdGdvdG8gZXJyX2Rlc2VsZWN0O1xuK1x0fVxuK1xuK1x0aWYgKGJwLVx1MDAzZWNwbGRfY2FuY2VsKSB7XG4rXHRcdHJldCA9IEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XG4rXHRcdGdvdG8gZXJyX2Rlc2VsZWN0O1xuK1x0fVxuK1xuK1x0aWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfUkVTRVRfQUREUiwgemVybzMsIDMpKSB7XG4rXHRcdHJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XG4rXHRcdGdvdG8gZXJyX2Rlc2VsZWN0O1xuK1x0fVxuK1xuK1x0cmV0dXJuIEZXX1VQTE9BRF9FUlJfTk9ORTtcdC8qIGNsZWFudXAoKSB3aWxsIHVubG9jayBldmVyeXRoaW5nICovXG4rXG4rZXJyX2Rlc2VsZWN0OlxuK1x0aWYgKGJwLVx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUpIHtcbitcdFx0YWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9ESVNfQ0ZHLCBkaXNfYXJncywgMik7XG4rXHRcdGJwLVx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUgPSBmYWxzZTtcbitcdH1cbitcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xuK2Vycl9yZWxlYXNlOlxuK1x0YWR2YV94MV9tYmxhemVfcmVsZWFzZShicCk7XG4rZXJyX3VubG9jazpcbitcdG11dGV4X3VubG9jayhcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGVudW0gZndfdXBsb2FkX2VyclxuK2FkdmFfY3BsZF93cml0ZShzdHJ1Y3QgZndfdXBsb2FkICpmd2wsIGNvbnN0IHU4ICpkYXRhLFxuK1x0XHR1MzIgb2Zmc2V0LCB1MzIgc2l6ZSwgdTMyICp3cml0dGVuKVxuK3tcbitcdHN0cnVjdCBwdHBfb2NwICpicCA9IGZ3bC1cdTAwM2VkZF9oYW5kbGU7XG4rXHR1OCBwYWdlX2FyZ3NbMyArIENQTERfUEFHRV9TSVpFXTtcbitcbitcdGlmIChicC1cdTAwM2VjcGxkX2NhbmNlbClcbitcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XG4rXG4rXHRpZiAoc2l6ZSBcdTAwM2MgQ1BMRF9QQUdFX1NJWkUpXG4rXHRcdHJldHVybiBGV19VUExPQURfRVJSX0lOVkFMSURfU0laRTtcbitcbitcdHBhZ2VfYXJnc1swXSA9IDB4MDA7XG4rXHRwYWdlX2FyZ3NbMV0gPSAweDAwO1xuK1x0cGFnZV9hcmdzWzJdID0gMHgwMTtcbitcdG1lbWNweShcdTAwMjZwYWdlX2FyZ3NbM10sIGRhdGEgKyBvZmZzZXQsIENQTERfUEFHRV9TSVpFKTtcbitcbitcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX1dSSVRFX1BBR0UsXG4rXHRcdFx0ICAgICAgIHBhZ2VfYXJncywgMyArIENQTERfUEFHRV9TSVpFKSB8fFxuK1x0ICAgIGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KGJwLCAxMDApKVxuK1x0XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbitcbitcdCp3cml0dGVuID0gQ1BMRF9QQUdFX1NJWkU7XG4rXHRyZXR1cm4gRldfVVBMT0FEX0VSUl9OT05FO1xuK31cbitcbitzdGF0aWMgZW51bSBmd191cGxvYWRfZXJyXG4rYWR2YV9jcGxkX3BvbGxfY29tcGxldGUoc3RydWN0IGZ3X3VwbG9hZCAqZndsKVxuK3tcbitcdHN0cnVjdCBwdHBfb2NwICpicCA9IGZ3bC1cdTAwM2VkZF9oYW5kbGU7XG4rXHRjb25zdCB1OCB6ZXJvM1szXSAgICA9IHsgMCB9O1xuK1x0Y29uc3QgdTggcmVmX2FyZ3NbMl0gPSB7IDB4MDAsIDB4MDAgfTtcbitcdHUzMiBzdDtcbitcbitcdGlmIChicC1cdTAwM2VjcGxkX2NhbmNlbClcbitcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XG4rXG4rXHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9TRVRfRE9ORSwgemVybzMsIDMpIHx8XG4rXHQgICAgYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDEwMDApKVxuK1x0XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbitcbitcdGlmIChhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsIFx1MDAyNnN0KSB8fCAhKHN0IFx1MDAyNiBDUExEX1NUQVRVU19ET05FKSlcbitcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XG4rXG4rXHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9SRUZSRVNILCByZWZfYXJncywgMikpXG4rXHRcdHJldHVybiBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xuK1xuK1x0LyogQ1BMRCByZWJvb3RzIGFmdGVyIFJFRlJFU0g7IHJlLXNlbGVjdCBtdXggb25jZSBpdCBjb21lcyBiYWNrIHVwICovXG4rXHRtc2xlZXAoMTUwMCk7XG4rXHRhZHZhX3gxX211eF9zZWxlY3QoYnAsIEFEVkFfTVVYX0NIQU5ORUwpO1xuK1x0aWYgKGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KGJwLCAzMDAwKSlcbitcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfVElNRU9VVDtcbitcbitcdGJwLVx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUgPSBmYWxzZTtcbitcdHJldHVybiBGV19VUExPQURfRVJSX05PTkU7XG4rfVxuK1xuK3N0YXRpYyB2b2lkXG4rYWR2YV9jcGxkX2NhbmNlbChzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXG4re1xuK1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbitcbitcdGJwLVx1MDAzZWNwbGRfY2FuY2VsID0gdHJ1ZTtcbit9XG4rXG4rc3RhdGljIHZvaWRcbithZHZhX2NwbGRfY2xlYW51cChzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXG4re1xuK1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbitcdGNvbnN0IHU4IGRpc19hcmdzWzJdID0geyAweDAwLCAweDAwIH07XG4rXG4rXHRpZiAoYnAtXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSkge1xuK1x0XHRhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX0RJU19DRkcsIGRpc19hcmdzLCAyKTtcbitcdFx0YnAtXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSA9IGZhbHNlO1xuK1x0fVxuK1x0YWR2YV94MV9tdXhfc2VsZWN0KGJwLCAtMSk7XG4rXHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IGZ3X3VwbG9hZF9vcHMgYWR2YV9jcGxkX3VwbG9hZF9vcHMgPSB7XG4rXHQucHJlcGFyZVx0ID0gYWR2YV9jcGxkX3ByZXBhcmUsXG4rXHQud3JpdGVcdFx0ID0gYWR2YV9jcGxkX3dyaXRlLFxuK1x0LnBvbGxfY29tcGxldGVcdCA9IGFkdmFfY3BsZF9wb2xsX2NvbXBsZXRlLFxuK1x0LmNhbmNlbFx0XHQgPSBhZHZhX2NwbGRfY2FuY2VsLFxuK1x0LmNsZWFudXBcdCA9IGFkdmFfY3BsZF9jbGVhbnVwLFxuK307XG4rXG4gc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkdmFfdGltZWNhcmRfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRldl9hdHRyX3NlcmlhbG51bS5hdHRyLFxuIFx0XHUwMDI2ZGV2X2F0dHJfZ25zc19zeW5jLmF0dHIsXG5AQCAtNDI3Miw2ICs0NzM5LDggQEAgc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkdmFfdGltZWNhcmRfeDFfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRldl9hdHRyX3RzX3dpbmRvd19hZGp1c3QuYXR0cixcbiBcdFx1MDAyNmRldl9hdHRyX3V0Y190YWlfb2Zmc2V0LmF0dHIsXG4gXHRcdTAwMjZkZXZfYXR0cl90b2RfY29ycmVjdGlvbi5hdHRyLFxuK1x0XHUwMDI2ZGV2X2F0dHJfY3BsZF9kZXZpY2VfaWQuYXR0cixcbitcdFx1MDAyNmRldl9hdHRyX2NwbGRfc3RhdHVzLmF0dHIsXG4gXHROVUxMLFxuIH07XG4gXG5AQCAtNDkwMiw2ICs1MzcxLDExIEBAIHB0cF9vY3BfZGV0YWNoKHN0cnVjdCBwdHBfb2NwICpicClcbiBcdFx0Y2xrX2h3X3VucmVnaXN0ZXJfZml4ZWRfcmF0ZShicC1cdTAwM2VpMmNfY2xrKTtcbiBcdGlmIChicC1cdTAwM2VuX2lycXMpXG4gXHRcdHBjaV9mcmVlX2lycV92ZWN0b3JzKGJwLVx1MDAzZXBkZXYpO1xuK1x0aWYgKGJwLVx1MDAzZWNwbGRfZndfdXBsb2FkKSB7XG4rXHRcdGZpcm13YXJlX3VwbG9hZF91bnJlZ2lzdGVyKGJwLVx1MDAzZWNwbGRfZndfdXBsb2FkKTtcbitcdFx0YnAtXHUwMDNlY3BsZF9md191cGxvYWQgPSBOVUxMO1xuK1x0fVxuK1x0bXV0ZXhfZGVzdHJveShcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuIFx0ZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2YnAtXHUwMDNlZGV2KTtcbiB9XG4gXG5AQCAtNTA3OCw2ICs1NTUyLDE3IEBAIHB0cF9vY3BfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gb3V0X2Rpc2FibGU7XG4gXG4rXHQvKiBNdXN0IGJlIGJlZm9yZSB0aGUgZmlyc3QgZXJyb3IgcGF0aCB0aGF0IGNhbGxzIHB0cF9vY3BfZGV0YWNoKCksXG4rXHQgKiBzbyBtdXRleF9kZXN0cm95KCkgYWx3YXlzIHJ1bnMgb24gYW4gaW5pdGlhbGlzZWQgbXV0ZXguXG4rXHQgKiBNdXN0IGFsc28gYmUgYmVmb3JlIHB0cF9vY3BfcmVnaXN0ZXJfcmVzb3VyY2VzKCk6IHRoZSBJMkMgYnVzXG4rXHQgKiBub3RpZmllciAocHRwX29jcF9pMmNfbm90aWZpZXJfY2FsbCkgZmlyZXMgd2hlbiB0aGUgYWRhcHRlclxuK1x0ICogcmVnaXN0ZXJzIGFuZCBzdG9yZXMgdGhlIGFkYXB0ZXIgbnVtYmVyIGluIGNwbGRfaTJjX2FkYXBfbnI7IHRoZVxuK1x0ICogLTEgc2VudGluZWwgYmVsb3cgbXVzdCBhbHJlYWR5IGJlIHdyaXR0ZW4gc28gdGhhdCBhIG5vdGlmaWVyXG4rXHQgKiBmaXJpbmcgZHVyaW5nIHJlZ2lzdHJhdGlvbiBpcyBuZXZlciBvdmVyd3JpdHRlbiBieSB0aGlzIGluaXQuXG4rXHQgKi9cbitcdG11dGV4X2luaXQoXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbitcdGJwLVx1MDAzZWNwbGRfaTJjX2FkYXBfbnIgPSAtMTtcbitcbiBcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmJwLVx1MDAzZXN5bmNfd29yaywgcHRwX29jcF9zeW5jX3dvcmspO1xuIFxuIFx0LyogY29tcGF0IG1vZGUuXG5AQCAtNTIxNywxMSArNTcwMiwxNiBAQCBwdHBfb2NwX2kyY19ub3RpZmllcl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4gXG4gZm91bmQ6XG4gXHRicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuLVx0aWYgKGFkZClcbitcdGlmIChhZGQpIHtcbiBcdFx0cHRwX29jcF9zeW1saW5rKGJwLCBjaGlsZCwgXCJpMmNcIik7XG4tXHRlbHNlXG4rXHRcdC8qIENhY2hlIGFkYXB0ZXIgbnI7IHVzZWQgYnkgY3BsZF9kZXZpY2VfaWQvY3BsZF9zdGF0dXMvY3BsZF9wcm9ncmFtXG4rXHRcdCAqIGZvciByZWZlcmVuY2UtY291bnRlZCB1bmJpbmQtc2FmZSBhZGFwdGVyIGFjY2Vzcy5cbitcdFx0ICovXG4rXHRcdFdSSVRFX09OQ0UoYnAtXHUwMDNlY3BsZF9pMmNfYWRhcF9uciwgaTJjX3ZlcmlmeV9hZGFwdGVyKGNoaWxkKS1cdTAwM2Vucik7XG4rXHR9IGVsc2Uge1xuK1x0XHRXUklURV9PTkNFKGJwLVx1MDAzZWNwbGRfaTJjX2FkYXBfbnIsIC0xKTsgLyogaW52YWxpZGF0ZSBiZWZvcmUgZnJlZSAqL1xuIFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZicC1cdTAwM2VkZXYua29iaiwgXCJpMmNcIik7XG4tXG4rXHR9XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo0MTowOS4zMzQ0NjAwMTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODg4MTE3OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHB0cF9vY3BgIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgcHRwX29jcGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvcHRwL3B0cF9vY3AuY2AuIEl0J3MgYWRkaW5nIENQTEQgZmlybXdhcmUgdXBsb2FkIHN1cHBvcnQsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBtZW50aW9ucyB0aGUgYGZpcm13YXJlX3VwbG9hZGAgZnJhbWV3b3JrIGFuZCBhbHNvIGludHJvZHVjZXMgYGNwbGRfZGV2aWNlX2lkYCBhbmQgYGNwbGRfc3RhdHVzYCBzeXNmcyBhdHRyaWJ1dGVzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJJcyB0aGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGU/XCIuXG5cblRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyLCBhbmQgdGhlIGRldmljZSBJRCwgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uLCBpcyBgMHhhZDVhOjB4MDQxMGAuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGluIHRoZSBjb2RlIGl0c2VsZi4gT2theSwgdGhlIGNvZGUgZG9lcyBjaGVjayBmb3IgYGluZm8tXHUwMDNlaGFzX2NwbGRgLCBhbmQgaXTigJlzIHNldCB0byBgdHJ1ZWAgc3BlY2lmaWNhbGx5IGZvciB0aGUgYG9jcF9hZHZhX3gxX3Jlc291cmNlYC4gU28gdGhpcyBpcyBkZWZpbml0ZWx5IGEgUENJIGRldmljZSBkcml2ZXIuXG5cblRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogQ2FuIHRoaXMgYmUgZnV6emVkPyBHaXZlbiB0aGF0IGl0J3MgUENJLCBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZnV6eiBpdCB1c2luZyBpdHMgcHNldWRvLVBDSSBzdWJzeXN0ZW0sIG9yIHZoY2ksIG9yIHNvbWUgb3RoZXIgUENJIGZ1enppbmcgc3VwcG9ydC4gU3l6a2FsbGVyIGhhcyBiZWVuIG1ha2luZyBzdHJpZGVzIGluIHRoaXMgYXJlYS4gQnV0IHdhaXQuLi4gdGhpcyBwcm9tcHQgaXMgYSBiaXQgb21pbm91cywgaXQgbWVudGlvbnMgXCJ2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVVwiLiBJcyB0aGlzIGEgY2FzZT8gSXMgYHB0cF9vY3BgIHZlbmRvci1zcGVjaWZpYz9cblxuSXQncyB0aGUgXCJPcGVuIENvbXB1dGUgUHJvamVjdCB0aW1lIGNhcmQgZHJpdmVyXCIuLi4gdGhhdCBkb2Vzbid0IHNvdW5kIHNwZWNpZmljYWxseSB2ZW5kb3ItbG9ja2VkLiBJIHNob3VsZCBjaGVjayBob3cgaXQncyBoYW5kbGVkLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogaXMgaXQgZnV6emVkIGFscmVhZHksIG9yIGNhbiBpdCBiZT8gSG9sZCBvbiwgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAuIE5vdyB0aGF0J3MgaW50ZXJlc3RpbmchIFN5emthbGxlciBpcyBlaXRoZXIgZmluZGluZyBzb21ldGhpbmcsIG9yIHRoaXMgaXMgYSB0ZXN0IHBhdGNoLiBXYWl0LCB0aGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLCB3aGljaCBpcyBncmVhdCwgbWVhbmluZyBTeXprYWxsZXIgaGFkIGEgcm9sZSBpbiB0aGlzLCB3aGljaCBpcyBnb29kIG5ld3MgZm9yIG91ciBnb2Fscy5cblxuT2theSwgbGV0IG1lIGNvbmZpcm0gaWYgYHB0cF9vY3BgIGlzIGEgc3RhbmRhcmQgZHJpdmVyIG9yIG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlLiBCZWNhdXNlIHRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQgZm9yIG15IHdvcmsuIEl0J3MgYSBQQ0kgZHJpdmVyLi4uIHNvIGxldCdzIGRvIGEgcXVpY2sgZ3JlcCBzZWFyY2ggZm9yIGBwdHBfb2NwYCBpbiB0aGUga2VybmVsIHRvIHNlZSB0aGUgbGFyZ2VyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDA3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6NDE6MTYuMjIyNTgxMDg3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTcxMTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInB0cF9vY3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjA4NyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9wdHAvTWFrZWZpbGU9MjA9b2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX1ZNVylcXHQrPSBwdHBfdm13Lm9cXG5kcml2ZXJzL3B0cC9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfT0NQKVxcdCs9IHB0cF9vY3Aub1xcbmRyaXZlcnMvcHRwL01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19QVFBfREZMX1RPRClcXHRcXHQrPSBwdHBfZGZsX3RvZC5vXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9NDk9c3RydWN0IG9jcF9yZWcge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTczLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3NDpzdHJ1Y3QgcHRwX29jcF9zZXJ2b19jb25mIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzUtXFx0dTMyXFx0c2Vydm9fb2Zmc2V0X3A7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODItICogQ29tYmluZWQgc2Vydm8gKyBib2FyZC12YXJpYW50IHBhcmFtZXRlcnMgZm9yIEFEVkEgYm9hcmRzLlxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MzogKiBFbWJlZGRlZCBpbiB0aGUgcmVzb3VyY2UgdGFibGUgLmV4dHJhIHNvIGEgc2luZ2xlIHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0KClcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODQtICogY2FuIGhhbmRsZSBib3RoIEFEVkEgYW5kIEFEVkEtWDEgd2l0aG91dCBwZXItdmFyaWFudCBpbml0IGZ1bmN0aW9ucy5cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODUtICovXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg2OnN0cnVjdCBwdHBfb2NwX2FkdmFfaW5mbyB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg3OlxcdHN0cnVjdCBwdHBfb2NwX3NlcnZvX2NvbmZcXHRzZXJ2bztcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODgtXFx0dTMyXFx0XFx0XFx0XFx0Zmxhc2hfc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9MjQzPXN0cnVjdCBib2FyZF9jb25maWdfcmVnIHtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNTEtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjI1MjpzdHJ1Y3QgcHRwX29jcF9mbGFzaF9pbmZvIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjUzLVxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjU4LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyNTk6c3RydWN0IHB0cF9vY3BfZmlybXdhcmVfaGVhZGVyIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjYwLVxcdGNoYXIgbWFnaWNbNF07XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjY5LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyNzA6c3RydWN0IHB0cF9vY3BfaTJjX2luZm8ge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNzEtXFx0Y29uc3QgY2hhciAqbmFtZTtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNzYtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjI3NzpzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbyB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI3OC1cXHRpbnQgaW5kZXg7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjgyLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyODM6c3RydWN0IHB0cF9vY3BfZXh0X3NyYyB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI4NC1cXHR2b2lkIF9faW9tZW1cXHRcXHQqbWVtO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyODU6XFx0c3RydWN0IHB0cF9vY3BcXHRcXHQqYnA7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjI4NjpcXHRzdHJ1Y3QgcHRwX29jcF9leHRfaW5mb1xcdCppbmZvO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yODctXFx0aW50XFx0XFx0XFx0aXJxX3ZlYztcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yODktXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjI5MDplbnVtIHB0cF9vY3Bfc21hX21vZGUge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yOTEtXFx0U01BX01PREVfSU4sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjk0LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyOTU6c3RhdGljIHN0cnVjdCBkcGxsX3Bpbl9mcmVxdWVuY3kgcHRwX29jcF9zbWFfZnJlcVtdID0ge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yOTYtXFx0RFBMTF9QSU5fRlJFUVVFTkNZXzFQUFMsXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzAxLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMDI6c3RydWN0IHB0cF9vY3Bfc21hX2Nvbm5lY3RvciB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMwMzpcXHRlbnVtXFx0cHRwX29jcF9zbWFfbW9kZSBtb2RlO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zMDQtXFx0Ym9vbFxcdGZpeGVkX2ZjbjtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz0zMjQ9c3RydWN0IG9jcF9zbWFfb3Age1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zMjUtXFx0Y29uc3Qgc3RydWN0IG9jcF9zZWxlY3RvciAqdGJsWzJdO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMjY6XFx0dm9pZCAoKmluaXQpKHN0cnVjdCBwdHBfb2NwICpicCk7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMyNzpcXHR1MzIgKCpnZXQpKHN0cnVjdCBwdHBfb2NwICpicCwgaW50IHNtYV9ucik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMyODpcXHRpbnQgKCpzZXRfaW5wdXRzKShzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBzbWFfbnIsIHUzMiB2YWwpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMjk6XFx0aW50ICgqc2V0X291dHB1dCkoc3RydWN0IHB0cF9vY3AgKmJwLCBpbnQgc21hX25yLCB1MzIgdmFsKTtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzMwLX07XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzM1LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMzY6c3RydWN0IHB0cF9vY3Bfc2lnbmFsIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzM3LVxcdGt0aW1lX3RcXHRcXHRwZXJpb2Q7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzQ1LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozNDY6c3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnQge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zNDctXFx0aW50IGxpbmU7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9MzU3PWVudW0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTM2NS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MzY2OnN0cnVjdCBwdHBfb2NwIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzY3LVxcdHN0cnVjdCBwY2lfZGV2XFx0XFx0KnBkZXY7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzgzLVxcdHN0cnVjdCBmcmVxdWVuY3lfcmVnXFx0X19pb21lbSAqZnJlcV9pbltPQ1BfRlJFUV9OVU1dO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozODQ6XFx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1xcdCpzaWduYWxfb3V0W09DUF9TSUdOQUxfTlVNXTtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mzg1OlxcdHN0cnVjdCBwdHBfb2NwX2V4dF9zcmNcXHQqcHBzO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozODY6XFx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1xcdCp0czA7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM4NzpcXHRzdHJ1Y3QgcHRwX29jcF9leHRfc3JjXFx0KnRzMTtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mzg4OlxcdHN0cnVjdCBwdHBfb2NwX2V4dF9zcmNcXHQqdHMyO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozODk6XFx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1xcdCp0czM7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM5MDpcXHRzdHJ1Y3QgcHRwX29jcF9leHRfc3JjXFx0KnRzNDtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzkxLVxcdHN0cnVjdCBvY3BfYXJ0X2dwaW9fcmVnIF9faW9tZW0gKmFydF9zbWE7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzk5LVxcdGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKiphdHRyX2dyb3VwO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0MDA6XFx0Y29uc3Qgc3RydWN0IHB0cF9vY3BfZWVwcm9tX21hcCAqZWVwcm9tX21hcDtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDAxLVxcdHN0cnVjdCBkZW50cnlcXHRcXHQqZGVidWdfcm9vdDtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00MDYtXFx0aW50XFx0XFx0XFx0bl9pcnFzO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0MDc6XFx0c3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnRcXHRwb3J0W19fUE9SVF9DT1VOVF07XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQwOC1cXHRib29sXFx0XFx0XFx0ZndfbG9hZGVyO1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQxOC1cXHR1NjRcXHRcXHRcXHRmd19jYXA7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQxOTpcXHRzdHJ1Y3QgcHRwX29jcF9zaWduYWxcXHRzaWduYWxbT0NQX1NJR05BTF9OVU1dO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0MjA6XFx0c3RydWN0IHB0cF9vY3Bfc21hX2Nvbm5lY3RvciBzbWFbT0NQX1NNQV9OVU1dO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00MjEtXFx0Y29uc3Qgc3RydWN0IG9jcF9zbWFfb3AgKnNtYV9vcDtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz00Mzc9c3RydWN0IG9jcF9yZXNvdXJjZSB7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDQwLVxcdGludCBpcnFfdmVjO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NDE6XFx0aW50ICgqc2V0dXApKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ0Mi1cXHR2b2lkICpleHRyYTtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NDYtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ0NzpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfbWVtKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ0ODpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfaTJjKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ0OTpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfc3BpKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1MDpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfc2VyaWFsKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1MTpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfZXh0KHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1MjpzdGF0aWMgaW50IHB0cF9vY3BfZmJfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTM6c3RhdGljIGlycXJldHVybl90IHB0cF9vY3BfdHNfaXJxKGludCBpcnEsIHZvaWQgKnByaXYpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTQ6c3RhdGljIGlycXJldHVybl90IHB0cF9vY3Bfc2lnbmFsX2lycShpbnQgaXJxLCB2b2lkICpwcml2KTtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDU1OnN0YXRpYyBpbnQgcHRwX29jcF90c19lbmFibGUodm9pZCAqcHJpdiwgdTMyIHJlcSwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTY6c3RhdGljIGludCBwdHBfb2NwX3NpZ25hbF9mcm9tX3Blcm91dChzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBnZW4sXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ1Ny1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcHRwX3Blcm91dF9yZXF1ZXN0ICpyZXEpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTg6c3RhdGljIGludCBwdHBfb2NwX3NpZ25hbF9lbmFibGUodm9pZCAqcHJpdiwgdTMyIHJlcSwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTk6c3RhdGljIGludCBwdHBfb2NwX3NtYV9zdG9yZShzdHJ1Y3QgcHRwX29jcCAqYnAsIGNvbnN0IGNoYXIgKmJ1ZiwgaW50IHNtYV9ucik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ2MC1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDYxOnN0YXRpYyBpbnQgcHRwX29jcF9hcnRfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NjItXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ2MzpzdGF0aWMgaW50IHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0KHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ2NC1cXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz00NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvY3BfYXR0cl9ncm91cCBhZHZhX3RpbWVjYXJkX3gxX2dyb3Vwc1tdO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NzctXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ3ODpzdHJ1Y3QgcHRwX29jcF9lZXByb21fbWFwIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDc5LVxcdHUxNlxcdG9mZjtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00ODYtXFx0Lm9mZiA9IGFkZHIsXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0ODc6XFx0LmxlbiA9IHNpemVvZl9maWVsZChzdHJ1Y3QgcHRwX29jcCwgbWVtYmVyKSxcXHRcXHRcXFxcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ4ODpcXHQuYnBfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9vY3AsIG1lbWJlcilcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDg5LVxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ5My1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDk0OnN0YXRpYyBzdHJ1Y3QgcHRwX29jcF9lZXByb21fbWFwIGZiX2VlcHJvbV9tYXBbXSA9IHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDk1LVxcdHsgRUVQUk9NX0VOVFJZKDB4NDMsIGJvYXJkX2lkKSB9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ5OS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTAwOnN0YXRpYyBzdHJ1Y3QgcHRwX29jcF9lZXByb21fbWFwIGFydF9lZXByb21fbWFwW10gPSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUwMS1cXHR7IEVFUFJPTV9FTlRSWSgweDIwMCArIDB4NDMsIGJvYXJkX2lkKSB9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUxMS0jZGVmaW5lIE9DUF9SRVNfTE9DQVRJT04obWVtYmVyKSBcXFxcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUxMjpcXHQubmFtZSA9ICNtZW1iZXIsIC5icF9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX29jcCwgbWVtYmVyKVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MTMtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUxNC0jZGVmaW5lIE9DUF9NRU1fUkVTT1VSQ0UobWVtYmVyKSBcXFxcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUxNTpcXHRPQ1BfUkVTX0xPQ0FUSU9OKG1lbWJlciksIC5zZXR1cCA9IHB0cF9vY3BfcmVnaXN0ZXJfbWVtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUxNi1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTE3LSNkZWZpbmUgT0NQX1NFUklBTF9SRVNPVVJDRShtZW1iZXIpIFxcXFxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTE4OlxcdE9DUF9SRVNfTE9DQVRJT04obWVtYmVyKSwgLnNldHVwID0gcHRwX29jcF9yZWdpc3Rlcl9zZXJpYWxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTE5LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MjAtI2RlZmluZSBPQ1BfSTJDX1JFU09VUkNFKG1lbWJlcikgXFxcXFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1MjE6XFx0T0NQX1JFU19MT0NBVElPTihtZW1iZXIpLCAuc2V0dXAgPSBwdHBfb2NwX3JlZ2lzdGVyX2kyY1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MjItXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUyMy0jZGVmaW5lIE9DUF9TUElfUkVTT1VSQ0UobWVtYmVyKSBcXFxcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUyNDpcXHRPQ1BfUkVTX0xPQ0FUSU9OKG1lbWJlciksIC5zZXR1cCA9IHB0cF9vY3BfcmVnaXN0ZXJfc3BpXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUyNS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTI2LSNkZWZpbmUgT0NQX0VYVF9SRVNPVVJDRShtZW1iZXIpIFxcXFxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTI3OlxcdE9DUF9SRVNfTE9DQVRJT04obWVtYmVyKSwgLnNldHVwID0gcHRwX29jcF9yZWdpc3Rlcl9leHRcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTI4LVxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTU1Nj1zdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfZmJfcmVzb3VyY2VbXSA9IHtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01NjMtXFx0XFx0Lm9mZnNldCA9IDB4MDEwMTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1NjQ6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01NjUtXFx0XFx0XFx0LmluZGV4ID0gMCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTY2OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjU2NzpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU2OC1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU3Mi1cXHRcXHQub2Zmc2V0ID0gMHgwMTAyMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDIsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjU3MzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU3NC1cXHRcXHRcXHQuaW5kZXggPSAxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1NzU6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTc2OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTc3LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTgxLVxcdFxcdC5vZmZzZXQgPSAweDAxMDYwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gNixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTgyOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTgzLVxcdFxcdFxcdC5pbmRleCA9IDIsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjU4NDpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1ODU6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01ODYtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01OTAtXFx0XFx0Lm9mZnNldCA9IDB4MDExMTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxNSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTkxOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTkyLVxcdFxcdFxcdC5pbmRleCA9IDMsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjU5MzpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1OTQ6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01OTUtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01OTktXFx0XFx0Lm9mZnNldCA9IDB4MDExMjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxNixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjAwOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjAxLVxcdFxcdFxcdC5pbmRleCA9IDQsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYwMjpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MDM6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MDQtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MDktXFx0XFx0Lm9mZnNldCA9IDB4MDEwQzAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAwLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MTA6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MTEtXFx0XFx0XFx0LmluZGV4ID0gNSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjEyOlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYxMzpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTYxNC1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTYxOC1cXHRcXHQub2Zmc2V0ID0gMHgwMTBEMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDExLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MTk6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MjAtXFx0XFx0XFx0LmluZGV4ID0gMSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjIxOlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF9zaWduYWxfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MjI6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3Bfc2lnbmFsX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjIzLVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjI3LVxcdFxcdC5vZmZzZXQgPSAweDAxMEUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTIsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYyODpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTYyOS1cXHRcXHRcXHQuaW5kZXggPSAyLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MzA6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYzMTpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MzItXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MzYtXFx0XFx0Lm9mZnNldCA9IDB4MDEwRjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxMyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjM3OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjM4LVxcdFxcdFxcdC5pbmRleCA9IDMsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYzOTpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3Bfc2lnbmFsX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjQwOlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTY0MS1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTY0NS1cXHRcXHQub2Zmc2V0ID0gMHgwMTEwMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDE0LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2NDY6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02NDctXFx0XFx0XFx0LmluZGV4ID0gNCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjQ4OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF9zaWduYWxfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2NDk6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3Bfc2lnbmFsX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjUwLVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzAyLVxcdFxcdC5vZmZzZXQgPSAweDAwMTUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gNyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NzAzOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfaTJjX2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzA0LVxcdFxcdFxcdC5uYW1lID0gXFxcInhpaWMtaTJjXFxcIixcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MTktXFx0XFx0Lm9mZnNldCA9IDB4MDAxNjAwMDAgKyAweDEwMDAsIC5pcnFfdmVjID0gMyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NzIwOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnQpIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzIxLVxcdFxcdFxcdC5iYXVkID0gMTE1MjAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTcyNi1cXHRcXHQub2Zmc2V0ID0gMHgwMDE3MDAwMCArIDB4MTAwMCwgLmlycV92ZWMgPSA0LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3Mjc6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9zZXJpYWxfcG9ydCkge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MjgtXFx0XFx0XFx0LmJhdWQgPSAxMTUyMDAsXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzMzLVxcdFxcdC5vZmZzZXQgPSAweDAwMTgwMDAwICsgMHgxMDAwLCAuaXJxX3ZlYyA9IDUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjczNDpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTczNS1cXHRcXHRcXHQuYmF1ZCA9IDU3NjAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTc0NC1cXHRcXHQub2Zmc2V0ID0gMHgwMDMxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDksXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjc0NTpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2ZsYXNoX2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzQ2LVxcdFxcdFxcdC5uYW1lID0gXFxcInhpbGlueF9zcGlcXFwiLCAucGNpX29mZnNldCA9IDAsXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzc1LVxcdHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Nzc2OlxcdFxcdC5zZXR1cCA9IHB0cF9vY3BfZmJfYm9hcmRfaW5pdCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Nzc3OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2Vydm9fY29uZikge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03NzgtXFx0XFx0XFx0LnNlcnZvX29mZnNldF9wID0gMHgyMDAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTc5Nz1zdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfYXJ0X3Jlc291cmNlW10gPSB7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODA0LVxcdFxcdC5vZmZzZXQgPSAweDAwMTYwMDAwICsgMHgxMDAwLCAuaXJxX3ZlYyA9IDMsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgwNTpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgwNi1cXHRcXHRcXHQuYmF1ZCA9IDExNTIwMCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04MTYtXFx0XFx0Lm9mZnNldCA9IDB4MzYwMDAwLCAuc2l6ZSA9IDB4MjAsIC5pcnFfdmVjID0gMTIsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgxNzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgxOC1cXHRcXHRcXHQuaW5kZXggPSAwLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MTk6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODIwOlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODIxLVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODI1LVxcdFxcdC5vZmZzZXQgPSAweDM4MDAwMCwgLnNpemUgPSAweDIwLCAuaXJxX3ZlYyA9IDgsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgyNjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgyNy1cXHRcXHRcXHQuaW5kZXggPSAxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4Mjg6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODI5OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODMwLVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODM0LVxcdFxcdC5vZmZzZXQgPSAweDM5MDAwMCwgLnNpemUgPSAweDIwLCAuaXJxX3ZlYyA9IDEwLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MzU6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04MzYtXFx0XFx0XFx0LmluZGV4ID0gMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODM3OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgzODpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgzOS1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg0My1cXHRcXHQub2Zmc2V0ID0gMHgzQTAwMDAsIC5zaXplID0gMHgyMCwgLmlycV92ZWMgPSAxNCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODQ0OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODQ1LVxcdFxcdFxcdC5pbmRleCA9IDMsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg0NjpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NDc6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NDgtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NTItXFx0XFx0Lm9mZnNldCA9IDB4M0IwMDAwLCAuc2l6ZSA9IDB4MjAsIC5pcnFfdmVjID0gMTUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg1MzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg1NC1cXHRcXHRcXHQuaW5kZXggPSA0LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NTU6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODU2OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODU3LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODYyLVxcdFxcdC5vZmZzZXQgPSAweDAwMzMwMDAwLCAuc2l6ZSA9IDB4MjAsIC5pcnFfdmVjID0gMTEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg2MzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg2NC1cXHRcXHRcXHQuaW5kZXggPSA1LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NjU6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODY2OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODY3LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODcxLVxcdFxcdC5vZmZzZXQgPSAweDAwMzEwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gOSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODcyOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZmxhc2hfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NzMtXFx0XFx0XFx0Lm5hbWUgPSBcXFwic3BpX2FsdGVyYVxcXCIsIC5wY2lfb2Zmc2V0ID0gMCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04ODYtXFx0XFx0Lm9mZnNldCA9IDB4MzUwMDAwLCAuc2l6ZSA9IDB4MTAwLCAuaXJxX3ZlYyA9IDQsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg4NzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2kyY19pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg4OC1cXHRcXHRcXHQubmFtZSA9IFxcXCJvY29yZXMtaTJjXFxcIixcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MDMtXFx0XFx0Lm9mZnNldCA9IDB4MDAxOTAwMDAsIC5pcnFfdmVjID0gNyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTA0OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnQpIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTA1LVxcdFxcdFxcdC5iYXVkID0gOTYwMCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MTItXFx0e1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5MTM6XFx0XFx0LnNldHVwID0gcHRwX29jcF9hcnRfYm9hcmRfaW5pdCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTE0OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2Vydm9fY29uZikge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MTUtXFx0XFx0XFx0LnNlcnZvX29mZnNldF9wID0gMHgyMDAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTkyND1zdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfYWR2YV9yZXNvdXJjZVtdID0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTkzMS1cXHRcXHQub2Zmc2V0ID0gMHgwMTAxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjkzMjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTkzMy1cXHRcXHRcXHQuaW5kZXggPSAwLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5MzQ6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTM1OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTM2LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTQwLVxcdFxcdC5vZmZzZXQgPSAweDAxMDIwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTQxOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTQyLVxcdFxcdFxcdC5pbmRleCA9IDEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk0MzpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NDQ6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NDUtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NDktXFx0XFx0Lm9mZnNldCA9IDB4MDEwNjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSA2LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NTA6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NTEtXFx0XFx0XFx0LmluZGV4ID0gMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTUyOlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk1MzpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk1NC1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk1OS1cXHRcXHQub2Zmc2V0ID0gMHgwMTBDMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDAsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk2MDpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk2MS1cXHRcXHRcXHQuaW5kZXggPSA1LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NjI6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTYzOlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTY0LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTY4LVxcdFxcdC5vZmZzZXQgPSAweDAxMEQwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk2OTpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk3MC1cXHRcXHRcXHQuaW5kZXggPSAxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NzE6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk3MjpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NzMtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NzctXFx0XFx0Lm9mZnNldCA9IDB4MDEwRTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTc4OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTc5LVxcdFxcdFxcdC5pbmRleCA9IDIsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk4MDpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3Bfc2lnbmFsX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTgxOlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk4Mi1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMTQtXFx0XFx0Lm9mZnNldCA9IDB4MDAxNjAwMDAgKyAweDEwMDAsIC5pcnFfdmVjID0gMyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTAxNTpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMTYtXFx0XFx0XFx0LmJhdWQgPSA5NjAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMjEtXFx0XFx0Lm9mZnNldCA9IDB4MDAxODAwMDAgKyAweDEwMDAsIC5pcnFfdmVjID0gNSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTAyMjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMjMtXFx0XFx0XFx0LmJhdWQgPSAxMTUyMDAsXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTAzNi1cXHRcXHQub2Zmc2V0ID0gMHgwMDMxMDQwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDksXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwMzc6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9mbGFzaF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMzgtXFx0XFx0XFx0Lm5hbWUgPSBcXFwic3BpX2FsdGVyYVxcXCIsIC5wY2lfb2Zmc2V0ID0gMCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDUxLVxcdFxcdC5vZmZzZXQgPSAweDE1MDAwMCwgLnNpemUgPSAweDEwMCwgLmlycV92ZWMgPSA3LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMDUyOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfaTJjX2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTA1My1cXHRcXHRcXHQubmFtZSA9IFxcXCJvY29yZXMtaTJjXFxcIixcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDcwLVxcdHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTA3MTpcXHRcXHQuc2V0dXAgPSBwdHBfb2NwX2FkdmFfYm9hcmRfaW5pdCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTA3MjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2FkdmFfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDczLVxcdFxcdFxcdC5zZXJ2byA9IHtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz0xMDg5PXN0YXRpYyBzdHJ1Y3Qgb2NwX3Jlc291cmNlIG9jcF9hZHZhX3gxX3Jlc291cmNlW10gPSB7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTA5Ni1cXHRcXHQub2Zmc2V0ID0gMHgwMTAxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwOTc6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDk4LVxcdFxcdFxcdC5pbmRleCA9IDAsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwOTk6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEwMDpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExMDEtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTA1LVxcdFxcdC5vZmZzZXQgPSAweDAxMDIwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEwNjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExMDctXFx0XFx0XFx0LmluZGV4ID0gMSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEwODpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTA5OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTExMC1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExMTQtXFx0XFx0Lm9mZnNldCA9IDB4MDEwNjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSA2LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTE1OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTExNi1cXHRcXHRcXHQuaW5kZXggPSAyLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTE3OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMTg6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTE5LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEyMy1cXHRcXHQub2Zmc2V0ID0gMHgwMTExMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDE1LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTI0OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEyNS1cXHRcXHRcXHQuaW5kZXggPSAzLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTI2OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMjc6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTI4LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEzMi1cXHRcXHQub2Zmc2V0ID0gMHgwMTEyMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDE2LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTMzOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEzNC1cXHRcXHRcXHQuaW5kZXggPSA0LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTM1OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMzY6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTM3LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE0Mi1cXHRcXHQub2Zmc2V0ID0gMHgwMTBDMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDAsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNDM6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTQ0LVxcdFxcdFxcdC5pbmRleCA9IDUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNDU6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE0NjpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNDctXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTUxLVxcdFxcdC5vZmZzZXQgPSAweDAxMEQwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNTI6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTUzLVxcdFxcdFxcdC5pbmRleCA9IDEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNTQ6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNTU6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3Bfc2lnbmFsX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE1Ni1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNjAtXFx0XFx0Lm9mZnNldCA9IDB4MDEwRTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE2MTpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNjItXFx0XFx0XFx0LmluZGV4ID0gMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE2MzpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3Bfc2lnbmFsX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE2NDpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTY1LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE2OS1cXHRcXHQub2Zmc2V0ID0gMHgwMTBGMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEzLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTcwOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE3MS1cXHRcXHRcXHQuaW5kZXggPSAzLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTcyOlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF9zaWduYWxfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTczOlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNzQtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTc4LVxcdFxcdC5vZmZzZXQgPSAweDAxMTAwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTQsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNzk6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTgwLVxcdFxcdFxcdC5pbmRleCA9IDQsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExODE6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExODI6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3Bfc2lnbmFsX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE4My1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMTUtXFx0XFx0Lm9mZnNldCA9IDB4MDAxNjAwMDAgKyAweDEwMDAsIC5pcnFfdmVjID0gMyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTIxNjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMTctXFx0XFx0XFx0LmJhdWQgPSA5NjAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMjItXFx0XFx0Lm9mZnNldCA9IDB4MDAxODAwMDAgKyAweDEwMDAsIC5pcnFfdmVjID0gNSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTIyMzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMjQtXFx0XFx0XFx0LmJhdWQgPSAxMTUyMDAsXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTI0NS1cXHRcXHQub2Zmc2V0ID0gMHgwMDMxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDksXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEyNDY6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9mbGFzaF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyNDctXFx0XFx0XFx0Lm5hbWUgPSBcXFwieGlsaW54X3NwaVxcXCIsIC5wY2lfb2Zmc2V0ID0gMCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjYyLVxcdFxcdC5vZmZzZXQgPSAweDAwMTUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gNyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTI2MzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2kyY19pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyNjQtXFx0XFx0XFx0Lm5hbWUgPSBcXFwieGlpYy1pMmNcXFwiLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyNzctXFx0e1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMjc4OlxcdFxcdC5zZXR1cCA9IHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMjc5OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfYWR2YV9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyODAtXFx0XFx0XFx0LnNlcnZvID0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyOTYtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEyOTc6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHB0cF9vY3BfcGNpZGV2X2lkW10gPSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyOTgtXFx0eyBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgVElNRUNBUkQsIFxcdTAwMjZvY3BfZmJfcmVzb3VyY2UpIH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTMwNC19O1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMzA1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBwdHBfb2NwX3BjaWRldl9pZCk7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEzMDYtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEzMDc6c3RhdGljIERFRklORV9NVVRFWChwdHBfb2NwX2xvY2spO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMzA4OnN0YXRpYyBERUZJTkVfSURSKHB0cF9vY3BfaWRyKTtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTMwOS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMxMDpzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9zZWxlY3RvciBwdHBfb2NwX2Nsb2NrW10gPSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEzMTEtXFx0eyAubmFtZSA9IFxcXCJOT05FXFxcIixcXHQudmFsdWUgPSAwIH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTMyNi1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMyNzpzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9zZWxlY3RvciBwdHBfb2NwX3NtYV9pbltdID0ge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMzI4LVxcdHsgLm5hbWUgPSBcXFwiMTBNaHpcXFwiLCAgLnZhbHVlID0gMHgwMDAwLCAgICAgIC5mcmVxdWVuY3kgPSAxMDAwMDAwMCB9LFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo0MToxNi4yNzE1NTc5NDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDAwMTgyNzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUFRQIE9DUCBUaW1lIENhcmQgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcHRwX29jcC5jYCBkcml2ZXIuIEl0J3MgdGhlIFwiT3BlbiBDb21wdXRlIFByb2plY3QgdGltZSBjYXJkIGRyaXZlclwiLCBzbyBpdCdzIGEgUENJIGRldmljZSBkcml2ZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCB0aGluZyBJIG5vdGljZS4gSXQncyByZWdpc3RlcmluZyBpdHNlbGYgYXMgc3VjaC4gVGhlIHBhdGNoIGFkZHMgZmlybXdhcmUgdXBsb2FkIGZ1bmN0aW9uYWxpdHkgdXNpbmcgdGhlIGBmaXJtd2FyZV91cGxvYWRgIGZyYW1ld29yay4gSW50ZXJlc3RpbmcuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/XG5cblJpZ2h0LCBpdCdzIGEgUENJIGRyaXZlci4gSXQgYmluZHMgdG8gc3BlY2lmaWMgUENJIElEczogYFBDSV9ERVZJQ0VfSURfTUVUQV9USU1FQ0FSRGAgKDB4MDQwMCksIGBQQ0lfREVWSUNFX0lEX09ST0xJQV9BUlRfVElNRUNBUkRgICgweDA0MDApLCBhbmQgYFBDSV9ERVZJQ0VfSURfQURWQV9USU1FQ0FSRGAgKDB4MDQxMCkuIFNvLCBpdCdzIG5vdCBnb2luZyB0byBiZSBhIGdlbmVyYWwtcHVycG9zZSBkcml2ZXI7IGl0J3Mgc3BlY2lmaWMgaGFyZHdhcmUuXG5cbkJ1dCwgaGFuZyBvbi4uLiBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gU3l6a2FsbGVyIGhhcyB0aGlzIHBzZXVkby1QQ0kgc3Vic3lzdGVtLCBkb2Vzbid0IGl0PyBJdCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIHdpdGggYXJiaXRyYXJ5IHZlbmRvci9kZXZpY2UgSURzIGlmIGl0IGhhcyBkZXNjcmlwdGlvbnMgZm9yIHRoZW0uIFRoYXQgY291bGQgb3BlbiB1cCBhbiBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhbnkgZGVzY3JpcHRpb25zIGZvciBgcHRwX29jcGA/IEkgbmVlZCB0byBjaGVjayB0aGUgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5ODAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6NDE6MjEuMjcxNzQyNzE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODUwNDc3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdHBfb2NwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInN5cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjQxOjIxLjMxNjYwNDg3NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1ODY5MTgwMDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZz1mYWxzZSBEZWNpc2lvbiAtIHB0cF9vY3AgRHJpdmVyIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSByZXN0cmljdGlvbnMg4oCTIG5vIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbHMgb3Igc3l6bGFuZyBkZXNjcmlwdGlvbnMuIEdvdCBpdC4gQW5kIEkgZG9uJ3QgaGF2ZSB0aG9zZSBzcGVjaWFsIGBzeXotZ3JlcHBlcmAgb3IgYHJlYWQtc3l6LXNwZWNgIHRvb2xzLCBzbyBJJ2xsIHdvcmsgd2l0aCB3aGF0IEkgKmRvKiBoYXZlLiAgXG5cbk5vdywgYWJvdXQgdGhpcyBgcHRwX29jcGAgZHJpdmVyLiBJcyBpdCB2ZW5kb3Itc3BlY2lmaWM/IEl04oCZcyBmb3IgdGhlIE9wZW4gQ29tcHV0ZSBQcm9qZWN0IHRpbWUgY2FyZCwgYSBzcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGNhcmQuICBEb2VzIGl0ICpyZXF1aXJlKiBwaHlzaWNhbCBoYXJkd2FyZT8gQWgsIHRoYXQncyB0aGUga2V5LiAgU3l6a2FsbGVyJ3MgcHNldWRvLVBDSSBvbmx5IGVtdWxhdGVzIHRoZSBQQ0kgY29uZmlnIHNwYWNlIGFuZCBiYXNpYyBCQVJzLCBub3QgdGhlIGFjdHVhbCBkZXZpY2UncyBpbnRlcm5hbCBsb2dpYyBsaWtlIHRoZSBDUExELCBJMkMgYnVzLCBhbmQgTWljcm9CbGF6ZSBmaXJtd2FyZS4gVGhpcyBwYXRjaCBpbnRlcmFjdHMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMuXG5cblRoaXMgcGF0Y2ggYWRkcyBJMkMgY29tbXVuaWNhdGlvbiB3aXRoIGEgQ1BMRC4gTG9va2luZyBhdCB0aGUgY29kZTogYGFkdmFfeDFfbWJsYXplX2FjcXVpcmVgIGV4cGVjdHMgc3BlY2lmaWMgcmVzcG9uc2VzIChgTUJMQVpFX0dSQU5URURgKS4gVGhpcyBjb2RlIHVzZXMgYGlvd3JpdGUzMmAgYW5kIGBpb3JlYWQzMmAgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIHdhaXRzIGZvciBhIHNwZWNpZmljIHJlc3BvbnNlLiAgSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgdGhvc2UgYGlvcmVhZDMyYCBjYWxscyB3aWxsIGxpa2VseSByZXR1cm4gemVybyBvciBgMHhmZmZmZmZmZmAsIHNvIGBhZHZhX3gxX21ibGF6ZV9hY3F1aXJlYCB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCB3aXRoIHRpbWVvdXQuIElmIGl0IGZhaWxzLCBhbGwgdGhlIHN1YnNlcXVlbnQgY29kZSwgSTJDIHRyYW5zZmVycywgQ1BMRCBjb21tYW5kcywgYW5kIGZpcm13YXJlIHVwbG9hZHMsIHdpbGwgYmUgY29tcGxldGVseSB1bnJlYWNoYWJsZS4gQW5kIHRoZSBgYWR2YV9jcGxkX3dyaXRlYCBjYWxscyBgYWR2YV94MV9pMmNfeGZlcmAuXG5cblRoZSBwcm9tcHQgZ2l2ZXMgYSBjb3VwbGUgb2Ygc3BlY2lmaWMgcmVhc29ucyBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0IHNheXM6IFwiQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VXCIuIEFuZCwgXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVVcIi4gU2luY2UgYHB0cF9vY3BgIGlzIGEgZHJpdmVyIGZvciB0aGUgT0NQIFRpbWVjYXJkLCB3aGljaCBpcyBhICpwaHlzaWNhbCogUENJZSBjYXJkLCBhbmQgdGhlIG5ldyBjb2RlIGRpcmVjdGx5IGNvbW11bmljYXRlcyB3aXRoIHRoaXMgaGFyZHdhcmUgKE1pY3JvQmxhemUsIEkyQyBtdXgsIENQTEQpIHRoYXQncyBub3QgZW11bGF0ZWQgaW4gUUVNVSwgaXQgZmFsbHMgc3F1YXJlbHkgaW50byB0aGF0IGZpcnN0IGNhdGVnb3J5LiBUaGlzIGNvZGUgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJlY2F1c2UgaXQgZXhwbGljaXRseSB3YWl0cyBmb3IgdGhlIGhhcmR3YXJlIHRvIGJlIGluIGEgY2VydGFpbiBzdGF0ZSwgYW5kIHRoYXQgc3RhdGUgY2FuJ3QgYmUgYWNoaWV2ZWQgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLiAgXG5cbkV2ZW4gaWYgaXQgZ2V0cyBwYXN0IHRoZSBNaWNyb0JsYXplIGdyYW50LCB0aGUgYGkyY190cmFuc2ZlcmAgd2lsbCBmYWlsIGJlY2F1c2UgdGhlIGhhcmR3YXJlIEkyQyBjb250cm9sbGVyIGlzIG5vdCBlbXVsYXRlZCBvciBwb3NzaWJseSBub3QgZXZlbiByZWdpc3RlcmVkLiBTbywgdGhlcmUgaXMgbm8gd2F5IHRvIHJlYWNoIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmcgPSBmYWxzZWAuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGF0IGRyaXZlciBhbmQgZG9uJ3QgaW50cm9kdWNlIGFueSBnZW5lcmljIGtlcm5lbCBtb2RpZmljYXRpb25zLiBMb29rcyBsaWtlIEknbSBnb29kOiB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBgRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZGAgYW5kIGBkcml2ZXJzL3B0cC9wdHBfb2NwLmNgLiBObyBnZW5lcmljIGNoYW5nZXMuXG5PaywgSSB3aWxsIGZvcm11bGF0ZSB0aGUgcmVzcG9uc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTUxLCJPdXRwdXRUb2tlbnMiOjEzMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6NDE6MzcuMTg1Nzg3MTU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIENQTEQgZmlybXdhcmUgdXBsb2FkIGFuZCBzeXNmcyBhdHRyaWJ1dGVzIGZvciB0aGUgQURWQSB4MSBPQ1AgVGltZWNhcmQsIHdoaWNoIGlzIGEgcGh5c2ljYWwgUENJZSBkZXZpY2UuIFRoZSBuZXcgY29kZSBoZWF2aWx5IHJlbGllcyBvbiBoYXJkd2FyZS1zcGVjaWZpYyBpbnRlcmFjdGlvbnMgKGUuZy4sIHBvbGxpbmcgTU1JTyByZWdpc3RlcnMgZm9yIE1pY3JvQmxhemUgZmlybXdhcmUgZ3JhbnRzLCBJMkMgY29tbXVuaWNhdGlvbiB3aXRoIGEgUENBOTU0OCBtdXggYW5kIExhdHRpY2UgQ1BMRCkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBjb3JlIGxvZ2ljIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBDUExEIGZpcm13YXJlIHVwbG9hZCBhbmQgc3lzZnMgYXR0cmlidXRlcyBmb3IgdGhlIEFEVkEgeDEgT0NQIFRpbWVjYXJkLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlLiBUaGUgbmV3IGNvZGUgaGVhdmlseSByZWxpZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgaW50ZXJhY3Rpb25zIChlLmcuLCBwb2xsaW5nIE1NSU8gcmVnaXN0ZXJzIGZvciBNaWNyb0JsYXplIGZpcm13YXJlIGdyYW50cywgSTJDIGNvbW11bmljYXRpb24gd2l0aCBhIFBDQTk1NDggbXV4IGFuZCBMYXR0aWNlIENQTEQpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgY29yZSBsb2dpYyBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2b4qm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 19:19:55 +0000 UTC FinishedAt: 2026-08-03 19:41:38 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgQ1BMRCBmaXJtd2FyZSB1cGxvYWQgYW5kIHN5c2ZzIGF0dHJpYnV0ZXMgZm9yIHRoZSBBRFZBIHgxIE9DUCBUaW1lY2FyZCwgd2hpY2ggaXMgYSBwaHlzaWNhbCBQQ0llIGRldmljZS4gVGhlIG5ldyBjb2RlIGhlYXZpbHkgcmVsaWVzIG9uIGhhcmR3YXJlLXNwZWNpZmljIGludGVyYWN0aW9ucyAoZS5nLiwgcG9sbGluZyBNTUlPIHJlZ2lzdGVycyBmb3IgTWljcm9CbGF6ZSBmaXJtd2FyZSBncmFudHMsIEkyQyBjb21tdW5pY2F0aW9uIHdpdGggYSBQQ0E5NTQ4IG11eCBhbmQgTGF0dGljZSBDUExEKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIENvbnNlcXVlbnRseSwgdGhlIGNvcmUgbG9naWMgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjFjNTM0NzZmNWVhMDM5YWMxYTM0NGQxYjk5MGRmOWE0Zjk1NzY2YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMTk6NDE6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdGltZWNhcmRcbmluZGV4IDNhZTQxYjc2MzRhYzkuLmY3Yzk5NTVhY2IwYTkgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkXG5AQCAtMTEsNiAmIzQzOzExLDQwIEBAIENvbnRhY3Q6XHRKb25hdGhhbiBMZW1vbiBcdTAwM2Nqb25hdGhhbi5sZW1vbkBnbWFpbC5jb21cdTAwM2VcbiBEZXNjcmlwdGlvbjpcdFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBOdGggdGltZWNhcmRcbiBcdFx0cmVnaXN0ZXJlZC5cbiBcbiYjNDM7V2hhdDpcdFx0L3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2NwbGRfZGV2aWNlX2lkXG4mIzQzO0RhdGU6XHRcdEp1bHkgMjAyNlxuJiM0MztDb250YWN0Olx0U2FnaSBNYWltb24gXHUwMDNjbWFpbW9uLnNhZ2lAZ21haWwuY29tXHUwMDNlXG4mIzQzO0Rlc2NyaXB0aW9uOlx0KFJPKSBUaGUgMzItYml0IExhdHRpY2UgZGV2aWNlIElEIG9mIHRoZSBUQVAgQ1BMRCwgcmVwb3J0ZWQgYXNcbiYjNDM7XHRcdGEgaGV4IHN0cmluZywgZS5nLiBcJiMzNDsweGUxMmJjMDQzXCYjMzQ7LlxuJiM0MztcbiYjNDM7XHRcdE9ubHkgcHJlc2VudCBvbiBBRFZBIHgxIFRBUCBib2FyZHMgKFBDSSBJRCAweGFkNWE6MHgwNDEwKS5cbiYjNDM7XHRcdFRoZSBMYXR0aWNlIExDTVhPM0xGLTIxMCByZXBvcnRzIDB4ZTEyYmMwNDMuXG4mIzQzO1xuJiM0MztcdFx0VGhlIGRyaXZlciBhY3F1aXJlcyB0aGUgTWljcm9CbGF6ZSBJMkMgYnVzIGludGVybmFsbHkgYmVmb3JlXG4mIzQzO1x0XHRpc3N1aW5nIHRoZSBSRUFEX0lEQ09ERSBjb21tYW5kOyBubyBidXMgYXJiaXRyYXRpb24gaXMgcmVxdWlyZWRcbiYjNDM7XHRcdGZyb20gdXNlcnNwYWNlLlxuJiM0MztcbiYjNDM7V2hhdDpcdFx0L3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2NwbGRfc3RhdHVzXG4mIzQzO0RhdGU6XHRcdEp1bHkgMjAyNlxuJiM0MztDb250YWN0Olx0U2FnaSBNYWltb24gXHUwMDNjbWFpbW9uLnNhZ2lAZ21haWwuY29tXHUwMDNlXG4mIzQzO0Rlc2NyaXB0aW9uOlx0KFJPKSBUaGUgc3RhdHVzIHJlZ2lzdGVyIG9mIHRoZSBUQVAgQ1BMRCwgaW4gaHVtYW4tcmVhZGFibGVcbiYjNDM7XHRcdGZvcm06XG4mIzQzO1xuJiM0MztcdFx0ICBkb25lPVx1MDAzYzB8MVx1MDAzZSBidXN5PVx1MDAzYzB8MVx1MDAzZSBmYWlsZWQ9XHUwMDNjMHwxXHUwMDNlXG4mIzQzO1xuJiM0MztcdFx0T25seSBwcmVzZW50IG9uIEFEVkEgeDEgVEFQIGJvYXJkcyAoUENJIElEIDB4YWQ1YToweDA0MTApLlxuJiM0MztcbiYjNDM7XHRcdGRvbmU9MSBpbmRpY2F0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gZmxhc2ggd2FzIHN1Y2Nlc3NmdWxseVxuJiM0MztcdFx0cHJvZ3JhbW1lZCBhbmQgaXMgYWN0aXZlLiAgYnVzeT0xIG1lYW5zIGFuIGludGVybmFsIG9wZXJhdGlvblxuJiM0MztcdFx0aXMgaW4gcHJvZ3Jlc3MuICBmYWlsZWQ9MSBtZWFucyB0aGUgbGFzdCBJU0Mgb3BlcmF0aW9uIGZhaWxlZC5cbiYjNDM7XG4mIzQzO1x0XHRUaGUgZHJpdmVyIGFjcXVpcmVzIHRoZSBNaWNyb0JsYXplIEkyQyBidXMgaW50ZXJuYWxseTsgbm8gYnVzXG4mIzQzO1x0XHRhcmJpdHJhdGlvbiBpcyByZXF1aXJlZCBmcm9tIHVzZXJzcGFjZS5cbiYjNDM7XG4mIzQzO1x0XHRUbyBwcm9ncmFtIG5ldyBDUExEIGZpcm13YXJlIHVzZSB0aGUgc3RhbmRhcmQga2VybmVsXG4mIzQzO1x0XHRmaXJtd2FyZS11cGxvYWQgaW50ZXJmYWNlIHJlZ2lzdGVyZWQgYXQ6XG4mIzQzO1x0XHQvc3lzL2NsYXNzL2Zpcm13YXJlL2FkdmEtY3BsZC9cbiYjNDM7XG4gV2hhdDpcdFx0L3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2F2YWlsYWJsZV9jbG9ja19zb3VyY2VzXG4gRGF0ZTpcdFx0U2VwdGVtYmVyIDIwMjFcbiBDb250YWN0Olx0Sm9uYXRoYW4gTGVtb24gXHUwMDNjam9uYXRoYW4ubGVtb25AZ21haWwuY29tXHUwMDNlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvcHRwX29jcC5jIGIvZHJpdmVycy9wdHAvcHRwX29jcC5jXG5pbmRleCAzNWU5MTFmMWFkNzhjLi5kYjhhYjE2MWQ0ZjBmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvcHRwX29jcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9wdHBfb2NwLmNcbkBAIC0yNCw2ICYjNDM7MjQsMTEgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9udm1lbS1jb25zdW1lci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY3JjMTYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RwbGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FVEFfVElNRUNBUkRcdFx0MHgwNDAwXG4gXG5AQCAtODUsNiAmIzQzOzkwLDcgQEAgc3RydWN0IHB0cF9vY3BfYWR2YV9pbmZvIHtcbiBcdHU4XHRcdFx0XHRzaWduYWxzX25yO1xuIFx0dThcdFx0XHRcdGZyZXFfaW5fbnI7XG4gXHRjb25zdCBzdHJ1Y3Qgb2NwX2F0dHJfZ3JvdXBcdCphdHRyX2dyb3VwcztcbiYjNDM7XHRib29sXHRcdFx0XHRoYXNfY3BsZDsgLyogeDE6IHN1cHBvcnRzIENQTEQgZmlybXdhcmUgdXBsb2FkICovXG4gfTtcbiBcbiAjZGVmaW5lIE9DUF9DVFJMX0VOQUJMRVx0XHRCSVQoMClcbkBAIC0xNjMsNyAmIzQzOzE2OSw4IEBAIHN0cnVjdCBncGlvX3JlZyB7XG4gXHR1MzJcdGdwaW8xO1xuIFx0dTMyXHRfX3BhZDA7XG4gXHR1MzJcdGdwaW8yO1xuLVx0dTMyXHRfX3BhZDE7XG4mIzQzO1x0LyogYWR2YV94MTogSTJDIGJ1cyBvd25lcnNoaXAgcmVnaXN0ZXI7IHJlc2VydmVkIG9uIG90aGVyIHZhcmlhbnRzICovXG4mIzQzO1x0dTMyXHRpMmNfYnVzX2N0cmw7XG4gfTtcbiBcbiBzdHJ1Y3QgaXJpZ19tYXN0ZXJfcmVnIHtcbkBAIC00MTYsNiAmIzQzOzQyMywxMiBAQCBzdHJ1Y3QgcHRwX29jcCB7XG4gXHRkcGxsX3RyYWNrZXIgdHJhY2tlcjtcbiBcdGludCBzaWduYWxzX25yO1xuIFx0aW50IGZyZXFfaW5fbnI7XG4mIzQzO1x0LyogYWR2YV94MSBDUExEIEkyQyAoaW50ZXJuYWwgdXNlIG9ubHkpICovXG4mIzQzO1x0c3RydWN0IG11dGV4XHRcdGNwbGRfbG9jazsgICAgICAgICAgICAvKiBzZXJpYWxpc2VzIENQTEQgb3BlcmF0aW9ucyAqL1xuJiM0MztcdGludFx0XHRcdGNwbGRfaTJjX2FkYXBfbnI7ICAgICAvKiBJMkMgYWRhcHRlciBucjsgLTEgaWYgYWJzZW50ICovXG4mIzQzO1x0c3RydWN0IGZ3X3VwbG9hZFx0KmNwbGRfZndfdXBsb2FkOyAgICAgIC8qIGZpcm13YXJlIHVwbG9hZCBoYW5kbGU7IE5VTEwgaWYgYWJzZW50ICovXG4mIzQzO1x0Ym9vbFx0XHRcdGNwbGRfY2FuY2VsOyAgICAgICAgICAvKiBjYW5jZWxsYXRpb24gcmVxdWVzdGVkICovXG4mIzQzO1x0Ym9vbFx0XHRcdGNwbGRfaW5fY29uZmlnX21vZGU7ICAvKiBFTl9DRkdfVFAgaXNzdWVkIGJ1dCBub3QgeWV0IFJFRlJFU0gmIzM5O2QgKi9cbiB9O1xuIFxuICNkZWZpbmUgT0NQX1JFUV9USU1FU1RBTVBcdEJJVCgwKVxuQEAgLTQ0OSw2ICYjNDM7NDYyLDggQEAgc3RhdGljIGludCBwdHBfb2NwX2FydF9ib2FyZF9pbml0KHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XG4gXG4gc3RhdGljIGludCBwdHBfb2NwX2FkdmFfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xuIFxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGZ3X3VwbG9hZF9vcHMgYWR2YV9jcGxkX3VwbG9hZF9vcHM7XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NwX3NtYV9vcCBvY3BfYWR2YV9zbWFfb3A7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvY3Bfc21hX29wIG9jcF9hZHZhX3gxX3NtYV9vcDtcbiBcbkBAIC0xMjczLDYgJiM0MzsxMjg4LDcgQEAgc3RhdGljIHN0cnVjdCBvY3BfcmVzb3VyY2Ugb2NwX2FkdmFfeDFfcmVzb3VyY2VbXSA9IHtcbiBcdFx0XHQuc2lnbmFsc19uciAgID0gNCxcbiBcdFx0XHQuZnJlcV9pbl9uciAgID0gNCxcbiBcdFx0XHQuYXR0cl9ncm91cHMgID0gYWR2YV90aW1lY2FyZF94MV9ncm91cHMsXG4mIzQzO1x0XHRcdC5oYXNfY3BsZCAgICAgPSB0cnVlLFxuIFx0XHR9LFxuIFx0fSxcbiBcdHsgfVxuQEAgLTMxOTcsNiAmIzQzOzMyMTMsMjAgQEAgcHRwX29jcF9hZHZhX2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0cHRwX29jcF9zbWFfaW5pdChicCk7XG4gXG4mIzQzO1x0aWYgKGluZm8tXHUwMDNlaGFzX2NwbGQpIHtcbiYjNDM7XHRcdHN0cnVjdCBmd191cGxvYWQgKmZ3bDtcbiYjNDM7XG4mIzQzO1x0XHRmd2wgPSBmaXJtd2FyZV91cGxvYWRfcmVnaXN0ZXIoVEhJU19NT0RVTEUsIFx1MDAyNmJwLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIFwmIzM0O2FkdmEtY3BsZFwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBcdTAwMjZhZHZhX2NwbGRfdXBsb2FkX29wcywgYnApO1xuJiM0MztcdFx0aWYgKElTX0VSUihmd2wpKVxuJiM0MztcdFx0XHRkZXZfd2FybihcdTAwMjZicC1cdTAwM2VwZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XHQgXCYjMzQ7Q1BMRCBmaXJtd2FyZSB1cGxvYWQgdW5hdmFpbGFibGU6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgZndsKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0YnAtXHUwMDNlY3BsZF9md191cGxvYWQgPSBmd2w7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiBwdHBfb2NwX2luaXRfY2xvY2soYnAsIFx1MDAyNmluZm8tXHUwMDNlc2Vydm8pO1xuIH1cbiBcbkBAIC00MjI0LDYgJiM0Mzs0MjU0LDQ0MyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9hdHRyX2dyb3VwIGFydF90aW1lY2FyZF9ncm91cHNbXSA9IHtcbiBcdHsgfSxcbiB9O1xuIFxuJiM0MzsvKlxuJiM0MzsgKiBJbnRlcm5hbCBoZWxwZXJzIGZvciB0aGUgYWR2YV94MSBUQVAgQ1BMRCAoTGF0dGljZSBMQ01YTzNMRi0yMTApLlxuJiM0MzsgKlxuJiM0MzsgKiBUaGUgQ1BMRCBzaXRzIGF0IEkyQyBhZGRyZXNzIDB4NDAgYmVoaW5kIGEgUENBOTU0OCBtdXggKDB4NzQpIG9uXG4mIzQzOyAqIGNoYW5uZWwgMC4gIFRoZSBJMkMgYnVzIGlzIHNoYXJlZCB3aXRoIHRoZSBNaWNyb0JsYXplIGZpcm13YXJlO1xuJiM0MzsgKiBjcGxkX2xvY2sgJiM0MzsgbWJsYXplIGFjcXVpcmUvcmVsZWFzZSBwcm92aWRlIG11dHVhbCBleGNsdXNpb24gZm9yIHRoZVxuJiM0MzsgKiBmdWxsIGR1cmF0aW9uIG9mIGFueSBDUExEIG9wZXJhdGlvbi4gIE5vIHJhdyBJMkMgYWNjZXNzIGlzIGV4cG9zZWRcbiYjNDM7ICogdG8gdXNlcnNwYWNlOyBvbmx5IHRoZSBoaWdoLWxldmVsIGF0dHJpYnV0ZXMgYmVsb3cgYXJlLlxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNkZWZpbmUgQURWQV9NVVhfQUREUiAgICAgMHg3NFxuJiM0MzsjZGVmaW5lIEFEVkFfQ1BMRF9BRERSICAgIDB4NDBcbiYjNDM7I2RlZmluZSBBRFZBX01VWF9DSEFOTkVMICAwXG4mIzQzO1xuJiM0MzsjZGVmaW5lIE1CTEFaRV9SRVFVRVNUICAgIDB4MDAwMGFhYWFVXG4mIzQzOyNkZWZpbmUgTUJMQVpFX0dSQU5URUQgICAgMHg1NTU1YWFhYVVcbiYjNDM7I2RlZmluZSBNQkxBWkVfUkVMRUFTRSAgICAweDU1NTUwMDAwVVxuJiM0MzsjZGVmaW5lIE1CTEFaRV9SRVRSSUVTICAgIDIwMFxuJiM0MzsjZGVmaW5lIE1CTEFaRV9SRVRSWV9VUyAgIDEwMDAwXG4mIzQzO1xuJiM0MzsvKiBMYXR0aWNlIExDTVhPM0xGIElTQyBjb21tYW5kIGNvZGVzICovXG4mIzQzOyNkZWZpbmUgQ1BMRF9DTURfUkVBRF9JRCAgICAgIDB4RTAwMDAwMDBVTFxuJiM0MzsjZGVmaW5lIENQTERfQ01EX1JFQURfU1RBVFVTICAweDNDMDAwMDAwVUxcbiYjNDM7I2RlZmluZSBDUExEX0NNRF9FTl9DRkdfVFAgICAgMHg3NCAgIC8qIGVuYWJsZSBjb25maWcsIHRyYW5zcGFyZW50IG1vZGUgKi9cbiYjNDM7I2RlZmluZSBDUExEX0NNRF9ESVNfQ0ZHICAgICAgMHgyNlxuJiM0MzsjZGVmaW5lIENQTERfQ01EX0VSQVNFICAgICAgICAweDBFXG4mIzQzOyNkZWZpbmUgQ1BMRF9DTURfUkVTRVRfQUREUiAgIDB4NDZcbiYjNDM7I2RlZmluZSBDUExEX0NNRF9XUklURV9QQUdFICAgMHg3MFxuJiM0MzsjZGVmaW5lIENQTERfQ01EX1NFVF9ET05FICAgICAweDVFXG4mIzQzOyNkZWZpbmUgQ1BMRF9DTURfUkVGUkVTSCAgICAgIDB4NzlcbiYjNDM7I2RlZmluZSBDUExEX1BBR0VfU0laRSAgICAgICAgMTZcbiYjNDM7XG4mIzQzOy8qIFN0YXR1cyByZWdpc3RlciBiaXQgcG9zaXRpb25zIChMYXR0aWNlIExDTVhPM0xGIGRhdGFzaGVldCkgKi9cbiYjNDM7I2RlZmluZSBDUExEX1NUQVRVU19ET05FICAgQklUKDgpXG4mIzQzOyNkZWZpbmUgQ1BMRF9TVEFUVVNfQlVTWSAgIEJJVCgxMilcbiYjNDM7I2RlZmluZSBDUExEX1NUQVRVU19GQUlMRUQgQklUKDEzKVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogYWR2YV94MV9pMmNfeGZlcigpIC0gaXNzdWUgYSBzaW5nbGUgSTJDIHRyYW5zYWN0aW9uIG9uIHRoZSBDUExEIGJ1cy5cbiYjNDM7ICpcbiYjNDM7ICogQWxsIGJ1ZmZlcnMgYXJlIGhlYXAtYWxsb2NhdGVkIGludGVybmFsbHkgdG8gZ3VhcmFudGVlIERNQSBzYWZldHkgZm9yXG4mIzQzOyAqIHRoZSBYaWxpbnggSTJDIGNvbnRyb2xsZXIuICBDYWxsZXIgbXVzdCBob2xkIGJwLVx1MDAzZWNwbGRfbG9jay5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgYWR2YV94MV9pMmNfeGZlcihzdHJ1Y3QgcHRwX29jcCAqYnAsXG4mIzQzO1x0XHRcdCAgICB1OCBhZGRyLCBjb25zdCB2b2lkICp3ZGF0YSwgdTggd2xlbixcbiYjNDM7XHRcdFx0ICAgIHZvaWQgKnJkYXRhLCB1OCBybGVuLCBib29sIG5vc3RhcnQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7XG4mIzQzO1x0c3RydWN0IGkyY19tc2cgbXNnc1syXTtcbiYjNDM7XHR1OCAqd2J1ZiA9IE5VTEwsICpyYnVmID0gTlVMTDtcbiYjNDM7XHRpbnQgbm1zZ3MgPSAwLCByZXQ7XG4mIzQzO1xuJiM0MztcdGFkYXAgPSBpMmNfZ2V0X2FkYXB0ZXIoUkVBRF9PTkNFKGJwLVx1MDAzZWNwbGRfaTJjX2FkYXBfbnIpKTtcbiYjNDM7XHRpZiAoIWFkYXApXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0aWYgKHdsZW4pIHtcbiYjNDM7XHRcdHdidWYgPSBrbWVtZHVwKHdkYXRhLCB3bGVuLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGlmICghd2J1Zikge1xuJiM0MztcdFx0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0XHRnb3RvIHB1dDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdG1zZ3Nbbm1zZ3MmIzQzOyYjNDM7XSA9IChzdHJ1Y3QgaTJjX21zZyl7XG4mIzQzO1x0XHRcdC5hZGRyICA9IGFkZHIsXG4mIzQzO1x0XHRcdC5mbGFncyA9IEkyQ19NX0RNQV9TQUZFLFxuJiM0MztcdFx0XHQubGVuICAgPSB3bGVuLFxuJiM0MztcdFx0XHQuYnVmICAgPSB3YnVmLFxuJiM0MztcdFx0fTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKHJsZW4pIHtcbiYjNDM7XHRcdHJidWYgPSBremFsbG9jKHJsZW4sIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0aWYgKCFyYnVmKSB7XG4mIzQzO1x0XHRcdHJldCA9IC1FTk9NRU07XG4mIzQzO1x0XHRcdGdvdG8gcHV0O1xuJiM0MztcdFx0fVxuJiM0MztcdFx0bXNnc1tubXNncyYjNDM7JiM0MztdID0gKHN0cnVjdCBpMmNfbXNnKXtcbiYjNDM7XHRcdFx0LmFkZHIgID0gYWRkcixcbiYjNDM7XHRcdFx0LmZsYWdzID0gSTJDX01fUkQgfCBJMkNfTV9ETUFfU0FGRSB8XG4mIzQzO1x0XHRcdFx0IChub3N0YXJ0ID8gSTJDX01fTk9TVEFSVCA6IDApLFxuJiM0MztcdFx0XHQubGVuICAgPSBybGVuLFxuJiM0MztcdFx0XHQuYnVmICAgPSByYnVmLFxuJiM0MztcdFx0fTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldCA9IGkyY190cmFuc2ZlcihhZGFwLCBtc2dzLCBubXNncyk7XG4mIzQzO1x0aWYgKHJldCA9PSBubXNncykge1xuJiM0MztcdFx0aWYgKHJkYXRhIFx1MDAyNlx1MDAyNiBybGVuKVxuJiM0MztcdFx0XHRtZW1jcHkocmRhdGEsIHJidWYsIHJsZW4pO1xuJiM0MztcdFx0cmV0ID0gMDtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cmV0ID0gKHJldCBcdTAwM2MgMCkgPyByZXQgOiAtRUlPO1xuJiM0MztcdH1cbiYjNDM7cHV0OlxuJiM0MztcdGtmcmVlKHdidWYpO1xuJiM0MztcdGtmcmVlKHJidWYpO1xuJiM0MztcdGkyY19wdXRfYWRhcHRlcihhZGFwKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBBY3F1aXJlIHRoZSBzaGFyZWQgSTJDIGJ1cyBmcm9tIHRoZSBNaWNyb0JsYXplIGZpcm13YXJlLiAqL1xuJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoc3RydWN0IHB0cF9vY3AgKmJwKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIHZhbDtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFicC1cdTAwM2VwcHNfc2VsZWN0KVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdC8qIFJlbGVhc2UgYW55IHN0YWxlIGdyYW50IGxlZnQgYnkgYSBwcmV2aW91cyBjcmFzaGVkIGNhbGxlci4gKi9cbiYjNDM7XHRpb3dyaXRlMzIoMCwgXHUwMDI2YnAtXHUwMDNlcHBzX3NlbGVjdC1cdTAwM2VpMmNfYnVzX2N0cmwpO1xuJiM0MztcdHZhbCA9IGlvcmVhZDMyKFx1MDAyNmJwLVx1MDAzZXBwc19zZWxlY3QtXHUwMDNlaTJjX2J1c19jdHJsKTtcbiYjNDM7XHRpZiAodmFsICE9IDApXG4mIzQzO1x0XHRyZXR1cm4gLUVCVVNZO1xuJiM0MztcbiYjNDM7XHRpb3dyaXRlMzIoTUJMQVpFX1JFUVVFU1QsIFx1MDAyNmJwLVx1MDAzZXBwc19zZWxlY3QtXHUwMDNlaTJjX2J1c19jdHJsKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQkxBWkVfUkVUUklFUzsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHVzbGVlcF9yYW5nZShNQkxBWkVfUkVUUllfVVMsIE1CTEFaRV9SRVRSWV9VUyAmIzQzOyAxMDAwKTtcbiYjNDM7XHRcdHZhbCA9IGlvcmVhZDMyKFx1MDAyNmJwLVx1MDAzZXBwc19zZWxlY3QtXHUwMDNlaTJjX2J1c19jdHJsKTtcbiYjNDM7XHRcdGlmICh2YWwgPT0gTUJMQVpFX0dSQU5URUQpXG4mIzQzO1x0XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYWR2YV94MV9tYmxhemVfcmVsZWFzZShzdHJ1Y3QgcHRwX29jcCAqYnApXG4mIzQzO3tcbiYjNDM7XHRpZiAoYnAtXHUwMDNlcHBzX3NlbGVjdClcbiYjNDM7XHRcdGlvd3JpdGUzMihNQkxBWkVfUkVMRUFTRSwgXHUwMDI2YnAtXHUwMDNlcHBzX3NlbGVjdC1cdTAwM2VpMmNfYnVzX2N0cmwpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfbXV4X3NlbGVjdChzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBjaClcbiYjNDM7e1xuJiM0MztcdHU4IHZhbCA9IChjaCBcdTAwM2U9IDApID8gQklUKGNoKSA6IDA7XG4mIzQzO1xuJiM0MztcdHJldHVybiBhZHZhX3gxX2kyY194ZmVyKGJwLCBBRFZBX01VWF9BRERSLCBcdTAwMjZ2YWwsIDEsIE5VTEwsIDAsIGZhbHNlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogU2VuZCAxLWJ5dGUgSVNDIGNvbW1hbmQgJiM0Mzsgb3B0aW9uYWwgYXJndW1lbnRzLiAqL1xuJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF93cml0ZShzdHJ1Y3QgcHRwX29jcCAqYnAsXG4mIzQzO1x0XHRcdCAgICAgIHU4IGNtZCwgY29uc3QgdTggKmFyZ3MsIHU4IG5hcmdzKVxuJiM0Mzt7XG4mIzQzO1x0dTggYnVmWzEgJiM0MzsgNjRdO1xuJiM0MztcbiYjNDM7XHRpZiAobmFyZ3MgXHUwMDNlIDY0KVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0YnVmWzBdID0gY21kO1xuJiM0MztcdGlmIChuYXJncylcbiYjNDM7XHRcdG1lbWNweShcdTAwMjZidWZbMV0sIGFyZ3MsIG5hcmdzKTtcbiYjNDM7XHRyZXR1cm4gYWR2YV94MV9pMmNfeGZlcihicCwgQURWQV9DUExEX0FERFIsIGJ1ZiwgMSAmIzQzOyBuYXJncyxcbiYjNDM7XHRcdFx0XHQgTlVMTCwgMCwgZmFsc2UpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBTZW5kIGEgNC1ieXRlIGNvbW1hbmQgdGhlbiByZWFkIGRhdGEgYmFjayB3aXRob3V0IGFuIGludGVybWVkaWF0ZSBTVE9QXG4mIzQzOyAqIChMYXR0aWNlIGNvbWJpbmVkIHdyaXRl4oaScmVwZWF0ZWQtU1RBUlTihpJyZWFkKS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgYWR2YV94MV9jcGxkX2NtZF9yZWFkKHN0cnVjdCBwdHBfb2NwICpicCxcbiYjNDM7XHRcdFx0XHQgdTMyIGNtZF9iZSwgdTggKm91dCwgdTggb3V0X2xlbilcbiYjNDM7e1xuJiM0MztcdF9fYmUzMiBjbWQgPSBjcHVfdG9fYmUzMihjbWRfYmUpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gYWR2YV94MV9pMmNfeGZlcihicCwgQURWQV9DUExEX0FERFIsIFx1MDAyNmNtZCwgNCwgb3V0LCBvdXRfbGVuLCB0cnVlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoc3RydWN0IHB0cF9vY3AgKmJwLCB1MzIgKnN0YXR1cylcbiYjNDM7e1xuJiM0MztcdHU4IGJ1Zls0XTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfU1RBVFVTLCBidWYsIDQpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdCpzdGF0dXMgPSBnZXRfdW5hbGlnbmVkX2JlMzIoYnVmKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShzdHJ1Y3QgcHRwX29jcCAqYnAsIHVuc2lnbmVkIGludCBtYXhfbXMpXG4mIzQzO3tcbiYjNDM7XHR1MzIgc3RhdHVzO1xuJiM0MztcdHVuc2lnbmVkIGludCBlbGFwc2VkID0gMDtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKGVsYXBzZWQgXHUwMDNjIG1heF9tcykge1xuJiM0MztcdFx0aWYgKGFkdmFfeDFfY3BsZF9yZWFkX3N0YXR1cyhicCwgXHUwMDI2c3RhdHVzKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0XHRpZiAoc3RhdHVzIFx1MDAyNiBDUExEX1NUQVRVU19GQUlMRUQpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0aWYgKCEoc3RhdHVzIFx1MDAyNiBDUExEX1NUQVRVU19CVVNZKSlcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR1c2xlZXBfcmFuZ2UoMTAwMDAwLCAxMDEwMDApO1xuJiM0MztcdFx0ZWxhcHNlZCAmIzQzOz0gMTAwO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogY3BsZF9kZXZpY2VfaWQgLSBzaG93IHRoZSBMYXR0aWNlIGRldmljZSBJRCBvZiB0aGUgVEFQIENQTEQuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnMgdGhlIDMyLWJpdCBJRCBhcyBhIGhleCBzdHJpbmcsIGUuZy4gXCYjMzQ7MHg2MTJiYzA0M1xcblwmIzM0Oy5cbiYjNDM7ICogTGF0dGljZSBMQ01YTzNMRi0yMTAgcmVwb3J0cyAweDYxMkJDMDQzLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHNzaXplX3RcbiYjNDM7Y3BsZF9kZXZpY2VfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiM0MztcdFx0ICAgIGNoYXIgKmJ1ZilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwdHBfb2NwICpicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuJiM0MztcdHU4IGRhdGFbNF07XG4mIzQzO1x0dTMyIGlkID0gMDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmJwLVx1MDAzZWNwbGRfbG9jayk7XG4mIzQzO1x0cmV0ID0gYWR2YV94MV9tYmxhemVfYWNxdWlyZShicCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdHJldCA9IGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gcmVsZWFzZTtcbiYjNDM7XHRyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfSUQsIGRhdGEsIDQpO1xuJiM0MztcdGlmICghcmV0KVxuJiM0MztcdFx0aWQgPSAoKHUzMilkYXRhWzBdIFx1MDAzY1x1MDAzYyAyNCkgfCAoKHUzMilkYXRhWzFdIFx1MDAzY1x1MDAzYyAxNikgfFxuJiM0MztcdFx0ICAgICAoKHUzMilkYXRhWzJdIFx1MDAzY1x1MDAzYyAgOCkgfCAgKHUzMilkYXRhWzNdO1xuJiM0MztcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xuJiM0MztyZWxlYXNlOlxuJiM0MztcdGFkdmFfeDFfbWJsYXplX3JlbGVhc2UoYnApO1xuJiM0MztvdXQ6XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmJwLVx1MDAzZWNwbGRfbG9jayk7XG4mIzQzO1x0cmV0dXJuIHJldCA/IHJldCA6IHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsweCUwOHhcXG5cJiMzNDssIGlkKTtcbiYjNDM7fVxuJiM0MztzdGF0aWMgREVWSUNFX0FUVFJfUk8oY3BsZF9kZXZpY2VfaWQpO1xuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogY3BsZF9zdGF0dXMgLSBzaG93IHRoZSBzdGF0dXMgcmVnaXN0ZXIgb2YgdGhlIFRBUCBDUExELlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nOiBcJiMzNDtkb25lPVx1MDAzYzB8MVx1MDAzZSBidXN5PVx1MDAzYzB8MVx1MDAzZSBmYWlsZWQ9XHUwMDNjMHwxXHUwMDNlXFxuXCYjMzQ7XG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgc3NpemVfdFxuJiM0MztjcGxkX3N0YXR1c19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4mIzQzO1x0XHQgY2hhciAqYnVmKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4mIzQzO1x0dTMyIHN0ID0gMDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmJwLVx1MDAzZWNwbGRfbG9jayk7XG4mIzQzO1x0cmV0ID0gYWR2YV94MV9tYmxhemVfYWNxdWlyZShicCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdHJldCA9IGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gcmVsZWFzZTtcbiYjNDM7XHRyZXQgPSBhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsIFx1MDAyNnN0KTtcbiYjNDM7XHRhZHZhX3gxX211eF9zZWxlY3QoYnAsIC0xKTtcbiYjNDM7cmVsZWFzZTpcbiYjNDM7XHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcbiYjNDM7b3V0OlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuJiM0MztcdHJldHVybiByZXQgPyByZXQgOiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7ZG9uZT0ldSBidXN5PSV1IGZhaWxlZD0ldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgICAhIShzdCBcdTAwMjYgQ1BMRF9TVEFUVVNfRE9ORSksXG4mIzQzO1x0XHRcdFx0ICAgICAgISEoc3QgXHUwMDI2IENQTERfU1RBVFVTX0JVU1kpLFxuJiM0MztcdFx0XHRcdCAgICAgICEhKHN0IFx1MDAyNiBDUExEX1NUQVRVU19GQUlMRUQpKTtcbiYjNDM7fVxuJiM0MztzdGF0aWMgREVWSUNFX0FUVFJfUk8oY3BsZF9zdGF0dXMpO1xuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogYWR2YV94MSBDUExEIGZpcm13YXJlLXVwbG9hZCBjYWxsYmFja3MuXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSBrZXJuZWwgZmlybXdhcmUtdXBsb2FkIHN1YnN5c3RlbSAoQ09ORklHX0ZXX1VQTE9BRCkgZXhwb3NlczpcbiYjNDM7ICogICAvc3lzL2NsYXNzL2Zpcm13YXJlL2FkdmEtY3BsZC97ZGF0YSxsb2FkaW5nLHN0YXR1cyxlcnJvciwuLi59XG4mIzQzOyAqIFVzZXJzcGFjZSB3cml0ZXMgdGhlIHJhdyBiaW5hcnkgcGFnZSBkYXRhIGRpcmVjdGx5IOKAlCBubyAvbGliL2Zpcm13YXJlL1xuJiM0MzsgKiBzdGFnaW5nIGZpbGUgaXMgbmVlZGVkLlxuJiM0MzsgKlxuJiM0MzsgKiBDYWxsYmFjayBzZXF1ZW5jZSBkcml2ZW4gYnkgdGhlIGZyYW1ld29yazpcbiYjNDM7ICogICBwcmVwYXJlKCkgICAgICAtIHZhbGlkYXRlIHNpemUsIGFjcXVpcmUgYnVzLCBlbmFibGUgY29uZmlnLCBlcmFzZSBmbGFzaFxuJiM0MzsgKiAgIHdyaXRlKCkgICAgICAgIC0gcHJvZ3JhbSBvbmUgMTYtYnl0ZSBwYWdlIHBlciBjYWxsXG4mIzQzOyAqICAgcG9sbF9jb21wbGV0ZSgpLSBzZXQgRE9ORSwgUkVGUkVTSCwgd2FpdCBmb3IgQ1BMRCB0byByZWJvb3RcbiYjNDM7ICogICBjYW5jZWwoKSAgICAgICAtIHNldCBmbGFnOyBjaGVja2VkIGF0IHRoZSBzdGFydCBvZiBlYWNoIGNhbGxiYWNrXG4mIzQzOyAqICAgY2xlYW51cCgpICAgICAgLSByZWxlYXNlIGJ1cyByZXNvdXJjZXMgKGNhbGxlZCBvbiBzdWNjZXNzIG9yIGZhaWx1cmUpXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgZW51bSBmd191cGxvYWRfZXJyXG4mIzQzO2FkdmFfY3BsZF9wcmVwYXJlKHN0cnVjdCBmd191cGxvYWQgKmZ3bCwgY29uc3QgdTggKmRhdGEsIHUzMiBzaXplKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbiYjNDM7XHRjb25zdCB1OCBlbl9hcmdzWzJdICA9IHsgMHgwOCwgMHgwMCB9O1xuJiM0MztcdGNvbnN0IHU4IGVyYV9hcmdzWzNdID0geyAweDA0LCAweDAwLCAweDAwIH07IC8qIGNmZyBzZWN0b3Igb25seSAqL1xuJiM0MztcdGNvbnN0IHU4IHplcm8zWzNdICAgID0geyAwIH07XG4mIzQzO1x0Y29uc3QgdTggZGlzX2FyZ3NbMl0gPSB7IDB4MDAsIDB4MDAgfTtcbiYjNDM7XHRlbnVtIGZ3X3VwbG9hZF9lcnIgcmV0ID0gRldfVVBMT0FEX0VSUl9OT05FO1xuJiM0MztcbiYjNDM7XHRpZiAoIXNpemUgfHwgc2l6ZSAlIENQTERfUEFHRV9TSVpFKVxuJiM0MztcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSU5WQUxJRF9TSVpFO1xuJiM0MztcbiYjNDM7XHRicC1cdTAwM2VjcGxkX2NhbmNlbFx0XHQ9IGZhbHNlO1xuJiM0MztcdGJwLVx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGVcdD0gZmFsc2U7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApKSB7XG4mIzQzO1x0XHRyZXQgPSBGV19VUExPQURfRVJSX1RJTUVPVVQ7XG4mIzQzO1x0XHRnb3RvIGVycl91bmxvY2s7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoYWR2YV94MV9tdXhfc2VsZWN0KGJwLCBBRFZBX01VWF9DSEFOTkVMKSkge1xuJiM0MztcdFx0cmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbiYjNDM7XHRcdGdvdG8gZXJyX3JlbGVhc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9FTl9DRkdfVFAsIGVuX2FyZ3MsIDIpIHx8XG4mIzQzO1x0ICAgIGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KGJwLCA1MDAwKSkge1xuJiM0MztcdFx0cmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbiYjNDM7XHRcdGdvdG8gZXJyX2Rlc2VsZWN0O1xuJiM0MztcdH1cbiYjNDM7XHRicC1cdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlID0gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKGJwLVx1MDAzZWNwbGRfY2FuY2VsKSB7XG4mIzQzO1x0XHRyZXQgPSBGV19VUExPQURfRVJSX0NBTkNFTEVEO1xuJiM0MztcdFx0Z290byBlcnJfZGVzZWxlY3Q7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9FUkFTRSwgZXJhX2FyZ3MsIDMpIHx8XG4mIzQzO1x0ICAgIGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KGJwLCAxNTAwMCkpIHtcbiYjNDM7XHRcdHJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XG4mIzQzO1x0XHRnb3RvIGVycl9kZXNlbGVjdDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChicC1cdTAwM2VjcGxkX2NhbmNlbCkge1xuJiM0MztcdFx0cmV0ID0gRldfVVBMT0FEX0VSUl9DQU5DRUxFRDtcbiYjNDM7XHRcdGdvdG8gZXJyX2Rlc2VsZWN0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfUkVTRVRfQUREUiwgemVybzMsIDMpKSB7XG4mIzQzO1x0XHRyZXQgPSBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xuJiM0MztcdFx0Z290byBlcnJfZGVzZWxlY3Q7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9OT05FO1x0LyogY2xlYW51cCgpIHdpbGwgdW5sb2NrIGV2ZXJ5dGhpbmcgKi9cbiYjNDM7XG4mIzQzO2Vycl9kZXNlbGVjdDpcbiYjNDM7XHRpZiAoYnAtXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSkge1xuJiM0MztcdFx0YWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9ESVNfQ0ZHLCBkaXNfYXJncywgMik7XG4mIzQzO1x0XHRicC1cdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlID0gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xuJiM0MztlcnJfcmVsZWFzZTpcbiYjNDM7XHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcbiYjNDM7ZXJyX3VubG9jazpcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgZW51bSBmd191cGxvYWRfZXJyXG4mIzQzO2FkdmFfY3BsZF93cml0ZShzdHJ1Y3QgZndfdXBsb2FkICpmd2wsIGNvbnN0IHU4ICpkYXRhLFxuJiM0MztcdFx0dTMyIG9mZnNldCwgdTMyIHNpemUsIHUzMiAqd3JpdHRlbilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwdHBfb2NwICpicCA9IGZ3bC1cdTAwM2VkZF9oYW5kbGU7XG4mIzQzO1x0dTggcGFnZV9hcmdzWzMgJiM0MzsgQ1BMRF9QQUdFX1NJWkVdO1xuJiM0MztcbiYjNDM7XHRpZiAoYnAtXHUwMDNlY3BsZF9jYW5jZWwpXG4mIzQzO1x0XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9DQU5DRUxFRDtcbiYjNDM7XG4mIzQzO1x0aWYgKHNpemUgXHUwMDNjIENQTERfUEFHRV9TSVpFKVxuJiM0MztcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSU5WQUxJRF9TSVpFO1xuJiM0MztcbiYjNDM7XHRwYWdlX2FyZ3NbMF0gPSAweDAwO1xuJiM0MztcdHBhZ2VfYXJnc1sxXSA9IDB4MDA7XG4mIzQzO1x0cGFnZV9hcmdzWzJdID0gMHgwMTtcbiYjNDM7XHRtZW1jcHkoXHUwMDI2cGFnZV9hcmdzWzNdLCBkYXRhICYjNDM7IG9mZnNldCwgQ1BMRF9QQUdFX1NJWkUpO1xuJiM0MztcbiYjNDM7XHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9XUklURV9QQUdFLFxuJiM0MztcdFx0XHQgICAgICAgcGFnZV9hcmdzLCAzICYjNDM7IENQTERfUEFHRV9TSVpFKSB8fFxuJiM0MztcdCAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMTAwKSlcbiYjNDM7XHRcdHJldHVybiBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xuJiM0MztcbiYjNDM7XHQqd3JpdHRlbiA9IENQTERfUEFHRV9TSVpFO1xuJiM0MztcdHJldHVybiBGV19VUExPQURfRVJSX05PTkU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnJcbiYjNDM7YWR2YV9jcGxkX3BvbGxfY29tcGxldGUoc3RydWN0IGZ3X3VwbG9hZCAqZndsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbiYjNDM7XHRjb25zdCB1OCB6ZXJvM1szXSAgICA9IHsgMCB9O1xuJiM0MztcdGNvbnN0IHU4IHJlZl9hcmdzWzJdID0geyAweDAwLCAweDAwIH07XG4mIzQzO1x0dTMyIHN0O1xuJiM0MztcbiYjNDM7XHRpZiAoYnAtXHUwMDNlY3BsZF9jYW5jZWwpXG4mIzQzO1x0XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9DQU5DRUxFRDtcbiYjNDM7XG4mIzQzO1x0aWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfU0VUX0RPTkUsIHplcm8zLCAzKSB8fFxuJiM0MztcdCAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMTAwMCkpXG4mIzQzO1x0XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbiYjNDM7XG4mIzQzO1x0aWYgKGFkdmFfeDFfY3BsZF9yZWFkX3N0YXR1cyhicCwgXHUwMDI2c3QpIHx8ICEoc3QgXHUwMDI2IENQTERfU1RBVFVTX0RPTkUpKVxuJiM0MztcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XG4mIzQzO1xuJiM0MztcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX1JFRlJFU0gsIHJlZl9hcmdzLCAyKSlcbiYjNDM7XHRcdHJldHVybiBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xuJiM0MztcbiYjNDM7XHQvKiBDUExEIHJlYm9vdHMgYWZ0ZXIgUkVGUkVTSDsgcmUtc2VsZWN0IG11eCBvbmNlIGl0IGNvbWVzIGJhY2sgdXAgKi9cbiYjNDM7XHRtc2xlZXAoMTUwMCk7XG4mIzQzO1x0YWR2YV94MV9tdXhfc2VsZWN0KGJwLCBBRFZBX01VWF9DSEFOTkVMKTtcbiYjNDM7XHRpZiAoYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDMwMDApKVxuJiM0MztcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfVElNRU9VVDtcbiYjNDM7XG4mIzQzO1x0YnAtXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSA9IGZhbHNlO1xuJiM0MztcdHJldHVybiBGV19VUExPQURfRVJSX05PTkU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkXG4mIzQzO2FkdmFfY3BsZF9jYW5jZWwoc3RydWN0IGZ3X3VwbG9hZCAqZndsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbiYjNDM7XG4mIzQzO1x0YnAtXHUwMDNlY3BsZF9jYW5jZWwgPSB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZFxuJiM0MzthZHZhX2NwbGRfY2xlYW51cChzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcHRwX29jcCAqYnAgPSBmd2wtXHUwMDNlZGRfaGFuZGxlO1xuJiM0MztcdGNvbnN0IHU4IGRpc19hcmdzWzJdID0geyAweDAwLCAweDAwIH07XG4mIzQzO1xuJiM0MztcdGlmIChicC1cdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlKSB7XG4mIzQzO1x0XHRhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX0RJU19DRkcsIGRpc19hcmdzLCAyKTtcbiYjNDM7XHRcdGJwLVx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUgPSBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1x0YWR2YV94MV9tdXhfc2VsZWN0KGJwLCAtMSk7XG4mIzQzO1x0YWR2YV94MV9tYmxhemVfcmVsZWFzZShicCk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmJwLVx1MDAzZWNwbGRfbG9jayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZndfdXBsb2FkX29wcyBhZHZhX2NwbGRfdXBsb2FkX29wcyA9IHtcbiYjNDM7XHQucHJlcGFyZVx0ID0gYWR2YV9jcGxkX3ByZXBhcmUsXG4mIzQzO1x0LndyaXRlXHRcdCA9IGFkdmFfY3BsZF93cml0ZSxcbiYjNDM7XHQucG9sbF9jb21wbGV0ZVx0ID0gYWR2YV9jcGxkX3BvbGxfY29tcGxldGUsXG4mIzQzO1x0LmNhbmNlbFx0XHQgPSBhZHZhX2NwbGRfY2FuY2VsLFxuJiM0MztcdC5jbGVhbnVwXHQgPSBhZHZhX2NwbGRfY2xlYW51cCxcbiYjNDM7fTtcbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkdmFfdGltZWNhcmRfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRldl9hdHRyX3NlcmlhbG51bS5hdHRyLFxuIFx0XHUwMDI2ZGV2X2F0dHJfZ25zc19zeW5jLmF0dHIsXG5AQCAtNDI3Miw2ICYjNDM7NDczOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphZHZhX3RpbWVjYXJkX3gxX2F0dHJzW10gPSB7XG4gXHRcdTAwMjZkZXZfYXR0cl90c193aW5kb3dfYWRqdXN0LmF0dHIsXG4gXHRcdTAwMjZkZXZfYXR0cl91dGNfdGFpX29mZnNldC5hdHRyLFxuIFx0XHUwMDI2ZGV2X2F0dHJfdG9kX2NvcnJlY3Rpb24uYXR0cixcbiYjNDM7XHRcdTAwMjZkZXZfYXR0cl9jcGxkX2RldmljZV9pZC5hdHRyLFxuJiM0MztcdFx1MDAyNmRldl9hdHRyX2NwbGRfc3RhdHVzLmF0dHIsXG4gXHROVUxMLFxuIH07XG4gXG5AQCAtNDkwMiw2ICYjNDM7NTM3MSwxMSBAQCBwdHBfb2NwX2RldGFjaChzdHJ1Y3QgcHRwX29jcCAqYnApXG4gXHRcdGNsa19od191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUoYnAtXHUwMDNlaTJjX2Nsayk7XG4gXHRpZiAoYnAtXHUwMDNlbl9pcnFzKVxuIFx0XHRwY2lfZnJlZV9pcnFfdmVjdG9ycyhicC1cdTAwM2VwZGV2KTtcbiYjNDM7XHRpZiAoYnAtXHUwMDNlY3BsZF9md191cGxvYWQpIHtcbiYjNDM7XHRcdGZpcm13YXJlX3VwbG9hZF91bnJlZ2lzdGVyKGJwLVx1MDAzZWNwbGRfZndfdXBsb2FkKTtcbiYjNDM7XHRcdGJwLVx1MDAzZWNwbGRfZndfdXBsb2FkID0gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1x0bXV0ZXhfZGVzdHJveShcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuIFx0ZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2YnAtXHUwMDNlZGV2KTtcbiB9XG4gXG5AQCAtNTA3OCw2ICYjNDM7NTU1MiwxNyBAQCBwdHBfb2NwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIG91dF9kaXNhYmxlO1xuIFxuJiM0MztcdC8qIE11c3QgYmUgYmVmb3JlIHRoZSBmaXJzdCBlcnJvciBwYXRoIHRoYXQgY2FsbHMgcHRwX29jcF9kZXRhY2goKSxcbiYjNDM7XHQgKiBzbyBtdXRleF9kZXN0cm95KCkgYWx3YXlzIHJ1bnMgb24gYW4gaW5pdGlhbGlzZWQgbXV0ZXguXG4mIzQzO1x0ICogTXVzdCBhbHNvIGJlIGJlZm9yZSBwdHBfb2NwX3JlZ2lzdGVyX3Jlc291cmNlcygpOiB0aGUgSTJDIGJ1c1xuJiM0MztcdCAqIG5vdGlmaWVyIChwdHBfb2NwX2kyY19ub3RpZmllcl9jYWxsKSBmaXJlcyB3aGVuIHRoZSBhZGFwdGVyXG4mIzQzO1x0ICogcmVnaXN0ZXJzIGFuZCBzdG9yZXMgdGhlIGFkYXB0ZXIgbnVtYmVyIGluIGNwbGRfaTJjX2FkYXBfbnI7IHRoZVxuJiM0MztcdCAqIC0xIHNlbnRpbmVsIGJlbG93IG11c3QgYWxyZWFkeSBiZSB3cml0dGVuIHNvIHRoYXQgYSBub3RpZmllclxuJiM0MztcdCAqIGZpcmluZyBkdXJpbmcgcmVnaXN0cmF0aW9uIGlzIG5ldmVyIG92ZXJ3cml0dGVuIGJ5IHRoaXMgaW5pdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNmJwLVx1MDAzZWNwbGRfbG9jayk7XG4mIzQzO1x0YnAtXHUwMDNlY3BsZF9pMmNfYWRhcF9uciA9IC0xO1xuJiM0MztcbiBcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmJwLVx1MDAzZXN5bmNfd29yaywgcHRwX29jcF9zeW5jX3dvcmspO1xuIFxuIFx0LyogY29tcGF0IG1vZGUuXG5AQCAtNTIxNywxMSAmIzQzOzU3MDIsMTYgQEAgcHRwX29jcF9pMmNfbm90aWZpZXJfY2FsbChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxuIFxuIGZvdW5kOlxuIFx0YnAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbi1cdGlmIChhZGQpXG4mIzQzO1x0aWYgKGFkZCkge1xuIFx0XHRwdHBfb2NwX3N5bWxpbmsoYnAsIGNoaWxkLCBcJiMzNDtpMmNcJiMzNDspO1xuLVx0ZWxzZVxuJiM0MztcdFx0LyogQ2FjaGUgYWRhcHRlciBucjsgdXNlZCBieSBjcGxkX2RldmljZV9pZC9jcGxkX3N0YXR1cy9jcGxkX3Byb2dyYW1cbiYjNDM7XHRcdCAqIGZvciByZWZlcmVuY2UtY291bnRlZCB1bmJpbmQtc2FmZSBhZGFwdGVyIGFjY2Vzcy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0V1JJVEVfT05DRShicC1cdTAwM2VjcGxkX2kyY19hZGFwX25yLCBpMmNfdmVyaWZ5X2FkYXB0ZXIoY2hpbGQpLVx1MDAzZW5yKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0V1JJVEVfT05DRShicC1cdTAwM2VjcGxkX2kyY19hZGFwX25yLCAtMSk7IC8qIGludmFsaWRhdGUgYmVmb3JlIGZyZWUgKi9cbiBcdFx0c3lzZnNfcmVtb3ZlX2xpbmsoXHUwMDI2YnAtXHUwMDNlZGV2LmtvYmosIFwmIzM0O2kyY1wmIzM0Oyk7XG4tXG4mIzQzO1x0fVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIENQTEQgZmlybXdhcmUgdXBsb2FkIGFuZCBzeXNmcyBhdHRyaWJ1dGVzIGZvciB0aGUgQURWQSB4MSBPQ1AgVGltZWNhcmQsIHdoaWNoIGlzIGEgcGh5c2ljYWwgUENJZSBkZXZpY2UuIFRoZSBuZXcgY29kZSBoZWF2aWx5IHJlbGllcyBvbiBoYXJkd2FyZS1zcGVjaWZpYyBpbnRlcmFjdGlvbnMgKGUuZy4sIHBvbGxpbmcgTU1JTyByZWdpc3RlcnMgZm9yIE1pY3JvQmxhemUgZmlybXdhcmUgZ3JhbnRzLCBJMkMgY29tbXVuaWNhdGlvbiB3aXRoIGEgUENBOTU0OCBtdXggYW5kIExhdHRpY2UgQ1BMRCkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBjb3JlIGxvZ2ljIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGIxYzUzNDc2ZjVlYTAzOWFjMWEzNDRkMWI5OTBkZjlhNGY5NTc2NmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzIDE5OjQxOjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdGltZWNhcmQKaW5kZXggM2FlNDFiNzYzNGFjOS4uZjdjOTk1NWFjYjBhOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkCkBAIC0xMSw2ICYjNDM7MTEsNDAgQEAgQ29udGFjdDoJSm9uYXRoYW4gTGVtb24gJmx0O2pvbmF0aGFuLmxlbW9uQGdtYWlsLmNvbSZndDsKIERlc2NyaXB0aW9uOglUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgYXR0cmlidXRlcyBvZiB0aGUgTnRoIHRpbWVjYXJkCiAJCXJlZ2lzdGVyZWQuCiAKJiM0MztXaGF0OgkJL3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2NwbGRfZGV2aWNlX2lkCiYjNDM7RGF0ZToJCUp1bHkgMjAyNgomIzQzO0NvbnRhY3Q6CVNhZ2kgTWFpbW9uICZsdDttYWltb24uc2FnaUBnbWFpbC5jb20mZ3Q7CiYjNDM7RGVzY3JpcHRpb246CShSTykgVGhlIDMyLWJpdCBMYXR0aWNlIGRldmljZSBJRCBvZiB0aGUgVEFQIENQTEQsIHJlcG9ydGVkIGFzCiYjNDM7CQlhIGhleCBzdHJpbmcsIGUuZy4gJiMzNDsweGUxMmJjMDQzJiMzNDsuCiYjNDM7CiYjNDM7CQlPbmx5IHByZXNlbnQgb24gQURWQSB4MSBUQVAgYm9hcmRzIChQQ0kgSUQgMHhhZDVhOjB4MDQxMCkuCiYjNDM7CQlUaGUgTGF0dGljZSBMQ01YTzNMRi0yMTAgcmVwb3J0cyAweGUxMmJjMDQzLgomIzQzOwomIzQzOwkJVGhlIGRyaXZlciBhY3F1aXJlcyB0aGUgTWljcm9CbGF6ZSBJMkMgYnVzIGludGVybmFsbHkgYmVmb3JlCiYjNDM7CQlpc3N1aW5nIHRoZSBSRUFEX0lEQ09ERSBjb21tYW5kOyBubyBidXMgYXJiaXRyYXRpb24gaXMgcmVxdWlyZWQKJiM0MzsJCWZyb20gdXNlcnNwYWNlLgomIzQzOwomIzQzO1doYXQ6CQkvc3lzL2NsYXNzL3RpbWVjYXJkL29jcE4vY3BsZF9zdGF0dXMKJiM0MztEYXRlOgkJSnVseSAyMDI2CiYjNDM7Q29udGFjdDoJU2FnaSBNYWltb24gJmx0O21haW1vbi5zYWdpQGdtYWlsLmNvbSZndDsKJiM0MztEZXNjcmlwdGlvbjoJKFJPKSBUaGUgc3RhdHVzIHJlZ2lzdGVyIG9mIHRoZSBUQVAgQ1BMRCwgaW4gaHVtYW4tcmVhZGFibGUKJiM0MzsJCWZvcm06CiYjNDM7CiYjNDM7CQkgIGRvbmU9Jmx0OzB8MSZndDsgYnVzeT0mbHQ7MHwxJmd0OyBmYWlsZWQ9Jmx0OzB8MSZndDsKJiM0MzsKJiM0MzsJCU9ubHkgcHJlc2VudCBvbiBBRFZBIHgxIFRBUCBib2FyZHMgKFBDSSBJRCAweGFkNWE6MHgwNDEwKS4KJiM0MzsKJiM0MzsJCWRvbmU9MSBpbmRpY2F0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gZmxhc2ggd2FzIHN1Y2Nlc3NmdWxseQomIzQzOwkJcHJvZ3JhbW1lZCBhbmQgaXMgYWN0aXZlLiAgYnVzeT0xIG1lYW5zIGFuIGludGVybmFsIG9wZXJhdGlvbgomIzQzOwkJaXMgaW4gcHJvZ3Jlc3MuICBmYWlsZWQ9MSBtZWFucyB0aGUgbGFzdCBJU0Mgb3BlcmF0aW9uIGZhaWxlZC4KJiM0MzsKJiM0MzsJCVRoZSBkcml2ZXIgYWNxdWlyZXMgdGhlIE1pY3JvQmxhemUgSTJDIGJ1cyBpbnRlcm5hbGx5OyBubyBidXMKJiM0MzsJCWFyYml0cmF0aW9uIGlzIHJlcXVpcmVkIGZyb20gdXNlcnNwYWNlLgomIzQzOwomIzQzOwkJVG8gcHJvZ3JhbSBuZXcgQ1BMRCBmaXJtd2FyZSB1c2UgdGhlIHN0YW5kYXJkIGtlcm5lbAomIzQzOwkJZmlybXdhcmUtdXBsb2FkIGludGVyZmFjZSByZWdpc3RlcmVkIGF0OgomIzQzOwkJL3N5cy9jbGFzcy9maXJtd2FyZS9hZHZhLWNwbGQvCiYjNDM7CiBXaGF0OgkJL3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2F2YWlsYWJsZV9jbG9ja19zb3VyY2VzCiBEYXRlOgkJU2VwdGVtYmVyIDIwMjEKIENvbnRhY3Q6CUpvbmF0aGFuIExlbW9uICZsdDtqb25hdGhhbi5sZW1vbkBnbWFpbC5jb20mZ3Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9wdHBfb2NwLmMgYi9kcml2ZXJzL3B0cC9wdHBfb2NwLmMKaW5kZXggMzVlOTExZjFhZDc4Yy4uZGI4YWIxNjFkNGYwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wdHAvcHRwX29jcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL3B0cF9vY3AuYwpAQCAtMjQsNiAmIzQzOzI0LDExIEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbnZtZW0tY29uc3VtZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jcmMxNi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2RwbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2Zpcm13YXJlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2Zpcm13YXJlLmgmZ3Q7CiAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9NRVRBX1RJTUVDQVJECQkweDA0MDAKIApAQCAtODUsNiAmIzQzOzkwLDcgQEAgc3RydWN0IHB0cF9vY3BfYWR2YV9pbmZvIHsKIAl1OAkJCQlzaWduYWxzX25yOwogCXU4CQkJCWZyZXFfaW5fbnI7CiAJY29uc3Qgc3RydWN0IG9jcF9hdHRyX2dyb3VwCSphdHRyX2dyb3VwczsKJiM0MzsJYm9vbAkJCQloYXNfY3BsZDsgLyogeDE6IHN1cHBvcnRzIENQTEQgZmlybXdhcmUgdXBsb2FkICovCiB9OwogCiAjZGVmaW5lIE9DUF9DVFJMX0VOQUJMRQkJQklUKDApCkBAIC0xNjMsNyAmIzQzOzE2OSw4IEBAIHN0cnVjdCBncGlvX3JlZyB7CiAJdTMyCWdwaW8xOwogCXUzMglfX3BhZDA7CiAJdTMyCWdwaW8yOwotCXUzMglfX3BhZDE7CiYjNDM7CS8qIGFkdmFfeDE6IEkyQyBidXMgb3duZXJzaGlwIHJlZ2lzdGVyOyByZXNlcnZlZCBvbiBvdGhlciB2YXJpYW50cyAqLwomIzQzOwl1MzIJaTJjX2J1c19jdHJsOwogfTsKIAogc3RydWN0IGlyaWdfbWFzdGVyX3JlZyB7CkBAIC00MTYsNiAmIzQzOzQyMywxMiBAQCBzdHJ1Y3QgcHRwX29jcCB7CiAJZHBsbF90cmFja2VyIHRyYWNrZXI7CiAJaW50IHNpZ25hbHNfbnI7CiAJaW50IGZyZXFfaW5fbnI7CiYjNDM7CS8qIGFkdmFfeDEgQ1BMRCBJMkMgKGludGVybmFsIHVzZSBvbmx5KSAqLwomIzQzOwlzdHJ1Y3QgbXV0ZXgJCWNwbGRfbG9jazsgICAgICAgICAgICAvKiBzZXJpYWxpc2VzIENQTEQgb3BlcmF0aW9ucyAqLwomIzQzOwlpbnQJCQljcGxkX2kyY19hZGFwX25yOyAgICAgLyogSTJDIGFkYXB0ZXIgbnI7IC0xIGlmIGFic2VudCAqLwomIzQzOwlzdHJ1Y3QgZndfdXBsb2FkCSpjcGxkX2Z3X3VwbG9hZDsgICAgICAvKiBmaXJtd2FyZSB1cGxvYWQgaGFuZGxlOyBOVUxMIGlmIGFic2VudCAqLwomIzQzOwlib29sCQkJY3BsZF9jYW5jZWw7ICAgICAgICAgIC8qIGNhbmNlbGxhdGlvbiByZXF1ZXN0ZWQgKi8KJiM0MzsJYm9vbAkJCWNwbGRfaW5fY29uZmlnX21vZGU7ICAvKiBFTl9DRkdfVFAgaXNzdWVkIGJ1dCBub3QgeWV0IFJFRlJFU0gmIzM5O2QgKi8KIH07CiAKICNkZWZpbmUgT0NQX1JFUV9USU1FU1RBTVAJQklUKDApCkBAIC00NDksNiAmIzQzOzQ2Miw4IEBAIHN0YXRpYyBpbnQgcHRwX29jcF9hcnRfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpOwogCiBzdGF0aWMgaW50IHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0KHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGZ3X3VwbG9hZF9vcHMgYWR2YV9jcGxkX3VwbG9hZF9vcHM7CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9zbWFfb3Agb2NwX2FkdmFfc21hX29wOwogc3RhdGljIGNvbnN0IHN0cnVjdCBvY3Bfc21hX29wIG9jcF9hZHZhX3gxX3NtYV9vcDsKIApAQCAtMTI3Myw2ICYjNDM7MTI4OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgb2NwX3Jlc291cmNlIG9jcF9hZHZhX3gxX3Jlc291cmNlW10gPSB7CiAJCQkuc2lnbmFsc19uciAgID0gNCwKIAkJCS5mcmVxX2luX25yICAgPSA0LAogCQkJLmF0dHJfZ3JvdXBzICA9IGFkdmFfdGltZWNhcmRfeDFfZ3JvdXBzLAomIzQzOwkJCS5oYXNfY3BsZCAgICAgPSB0cnVlLAogCQl9LAogCX0sCiAJeyB9CkBAIC0zMTk3LDYgJiM0MzszMjEzLDIwIEBAIHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0KHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcikKIAkJcmV0dXJuIGVycjsKIAlwdHBfb2NwX3NtYV9pbml0KGJwKTsKIAomIzQzOwlpZiAoaW5mby0mZ3Q7aGFzX2NwbGQpIHsKJiM0MzsJCXN0cnVjdCBmd191cGxvYWQgKmZ3bDsKJiM0MzsKJiM0MzsJCWZ3bCA9IGZpcm13YXJlX3VwbG9hZF9yZWdpc3RlcihUSElTX01PRFVMRSwgJmFtcDticC0mZ3Q7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCQkJICAgICAgICYjMzQ7YWR2YS1jcGxkJiMzNDssCiYjNDM7CQkJCQkgICAgICAgJmFtcDthZHZhX2NwbGRfdXBsb2FkX29wcywgYnApOwomIzQzOwkJaWYgKElTX0VSUihmd2wpKQomIzQzOwkJCWRldl93YXJuKCZhbXA7YnAtJmd0O3BkZXYtJmd0O2RldiwKJiM0MzsJCQkJICYjMzQ7Q1BMRCBmaXJtd2FyZSB1cGxvYWQgdW5hdmFpbGFibGU6ICVwZVxuJiMzNDssCiYjNDM7CQkJCSBmd2wpOwomIzQzOwkJZWxzZQomIzQzOwkJCWJwLSZndDtjcGxkX2Z3X3VwbG9hZCA9IGZ3bDsKJiM0MzsJfQomIzQzOwogCXJldHVybiBwdHBfb2NwX2luaXRfY2xvY2soYnAsICZhbXA7aW5mby0mZ3Q7c2Vydm8pOwogfQogCkBAIC00MjI0LDYgJiM0Mzs0MjU0LDQ0MyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9hdHRyX2dyb3VwIGFydF90aW1lY2FyZF9ncm91cHNbXSA9IHsKIAl7IH0sCiB9OwogCiYjNDM7LyoKJiM0MzsgKiBJbnRlcm5hbCBoZWxwZXJzIGZvciB0aGUgYWR2YV94MSBUQVAgQ1BMRCAoTGF0dGljZSBMQ01YTzNMRi0yMTApLgomIzQzOyAqCiYjNDM7ICogVGhlIENQTEQgc2l0cyBhdCBJMkMgYWRkcmVzcyAweDQwIGJlaGluZCBhIFBDQTk1NDggbXV4ICgweDc0KSBvbgomIzQzOyAqIGNoYW5uZWwgMC4gIFRoZSBJMkMgYnVzIGlzIHNoYXJlZCB3aXRoIHRoZSBNaWNyb0JsYXplIGZpcm13YXJlOwomIzQzOyAqIGNwbGRfbG9jayAmIzQzOyBtYmxhemUgYWNxdWlyZS9yZWxlYXNlIHByb3ZpZGUgbXV0dWFsIGV4Y2x1c2lvbiBmb3IgdGhlCiYjNDM7ICogZnVsbCBkdXJhdGlvbiBvZiBhbnkgQ1BMRCBvcGVyYXRpb24uICBObyByYXcgSTJDIGFjY2VzcyBpcyBleHBvc2VkCiYjNDM7ICogdG8gdXNlcnNwYWNlOyBvbmx5IHRoZSBoaWdoLWxldmVsIGF0dHJpYnV0ZXMgYmVsb3cgYXJlLgomIzQzOyAqLwomIzQzOwomIzQzOyNkZWZpbmUgQURWQV9NVVhfQUREUiAgICAgMHg3NAomIzQzOyNkZWZpbmUgQURWQV9DUExEX0FERFIgICAgMHg0MAomIzQzOyNkZWZpbmUgQURWQV9NVVhfQ0hBTk5FTCAgMAomIzQzOwomIzQzOyNkZWZpbmUgTUJMQVpFX1JFUVVFU1QgICAgMHgwMDAwYWFhYVUKJiM0MzsjZGVmaW5lIE1CTEFaRV9HUkFOVEVEICAgIDB4NTU1NWFhYWFVCiYjNDM7I2RlZmluZSBNQkxBWkVfUkVMRUFTRSAgICAweDU1NTUwMDAwVQomIzQzOyNkZWZpbmUgTUJMQVpFX1JFVFJJRVMgICAgMjAwCiYjNDM7I2RlZmluZSBNQkxBWkVfUkVUUllfVVMgICAxMDAwMAomIzQzOwomIzQzOy8qIExhdHRpY2UgTENNWE8zTEYgSVNDIGNvbW1hbmQgY29kZXMgKi8KJiM0MzsjZGVmaW5lIENQTERfQ01EX1JFQURfSUQgICAgICAweEUwMDAwMDAwVUwKJiM0MzsjZGVmaW5lIENQTERfQ01EX1JFQURfU1RBVFVTICAweDNDMDAwMDAwVUwKJiM0MzsjZGVmaW5lIENQTERfQ01EX0VOX0NGR19UUCAgICAweDc0ICAgLyogZW5hYmxlIGNvbmZpZywgdHJhbnNwYXJlbnQgbW9kZSAqLwomIzQzOyNkZWZpbmUgQ1BMRF9DTURfRElTX0NGRyAgICAgIDB4MjYKJiM0MzsjZGVmaW5lIENQTERfQ01EX0VSQVNFICAgICAgICAweDBFCiYjNDM7I2RlZmluZSBDUExEX0NNRF9SRVNFVF9BRERSICAgMHg0NgomIzQzOyNkZWZpbmUgQ1BMRF9DTURfV1JJVEVfUEFHRSAgIDB4NzAKJiM0MzsjZGVmaW5lIENQTERfQ01EX1NFVF9ET05FICAgICAweDVFCiYjNDM7I2RlZmluZSBDUExEX0NNRF9SRUZSRVNIICAgICAgMHg3OQomIzQzOyNkZWZpbmUgQ1BMRF9QQUdFX1NJWkUgICAgICAgIDE2CiYjNDM7CiYjNDM7LyogU3RhdHVzIHJlZ2lzdGVyIGJpdCBwb3NpdGlvbnMgKExhdHRpY2UgTENNWE8zTEYgZGF0YXNoZWV0KSAqLwomIzQzOyNkZWZpbmUgQ1BMRF9TVEFUVVNfRE9ORSAgIEJJVCg4KQomIzQzOyNkZWZpbmUgQ1BMRF9TVEFUVVNfQlVTWSAgIEJJVCgxMikKJiM0MzsjZGVmaW5lIENQTERfU1RBVFVTX0ZBSUxFRCBCSVQoMTMpCiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBhZHZhX3gxX2kyY194ZmVyKCkgLSBpc3N1ZSBhIHNpbmdsZSBJMkMgdHJhbnNhY3Rpb24gb24gdGhlIENQTEQgYnVzLgomIzQzOyAqCiYjNDM7ICogQWxsIGJ1ZmZlcnMgYXJlIGhlYXAtYWxsb2NhdGVkIGludGVybmFsbHkgdG8gZ3VhcmFudGVlIERNQSBzYWZldHkgZm9yCiYjNDM7ICogdGhlIFhpbGlueCBJMkMgY29udHJvbGxlci4gIENhbGxlciBtdXN0IGhvbGQgYnAtJmd0O2NwbGRfbG9jay4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfaTJjX3hmZXIoc3RydWN0IHB0cF9vY3AgKmJwLAomIzQzOwkJCSAgICB1OCBhZGRyLCBjb25zdCB2b2lkICp3ZGF0YSwgdTggd2xlbiwKJiM0MzsJCQkgICAgdm9pZCAqcmRhdGEsIHU4IHJsZW4sIGJvb2wgbm9zdGFydCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcDsKJiM0MzsJc3RydWN0IGkyY19tc2cgbXNnc1syXTsKJiM0MzsJdTggKndidWYgPSBOVUxMLCAqcmJ1ZiA9IE5VTEw7CiYjNDM7CWludCBubXNncyA9IDAsIHJldDsKJiM0MzsKJiM0MzsJYWRhcCA9IGkyY19nZXRfYWRhcHRlcihSRUFEX09OQ0UoYnAtJmd0O2NwbGRfaTJjX2FkYXBfbnIpKTsKJiM0MzsJaWYgKCFhZGFwKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWlmICh3bGVuKSB7CiYjNDM7CQl3YnVmID0ga21lbWR1cCh3ZGF0YSwgd2xlbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CQlpZiAoIXdidWYpIHsKJiM0MzsJCQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJCWdvdG8gcHV0OwomIzQzOwkJfQomIzQzOwkJbXNnc1tubXNncyYjNDM7JiM0MztdID0gKHN0cnVjdCBpMmNfbXNnKXsKJiM0MzsJCQkuYWRkciAgPSBhZGRyLAomIzQzOwkJCS5mbGFncyA9IEkyQ19NX0RNQV9TQUZFLAomIzQzOwkJCS5sZW4gICA9IHdsZW4sCiYjNDM7CQkJLmJ1ZiAgID0gd2J1ZiwKJiM0MzsJCX07CiYjNDM7CX0KJiM0MzsJaWYgKHJsZW4pIHsKJiM0MzsJCXJidWYgPSBremFsbG9jKHJsZW4sIEdGUF9LRVJORUwpOwomIzQzOwkJaWYgKCFyYnVmKSB7CiYjNDM7CQkJcmV0ID0gLUVOT01FTTsKJiM0MzsJCQlnb3RvIHB1dDsKJiM0MzsJCX0KJiM0MzsJCW1zZ3Nbbm1zZ3MmIzQzOyYjNDM7XSA9IChzdHJ1Y3QgaTJjX21zZyl7CiYjNDM7CQkJLmFkZHIgID0gYWRkciwKJiM0MzsJCQkuZmxhZ3MgPSBJMkNfTV9SRCB8IEkyQ19NX0RNQV9TQUZFIHwKJiM0MzsJCQkJIChub3N0YXJ0ID8gSTJDX01fTk9TVEFSVCA6IDApLAomIzQzOwkJCS5sZW4gICA9IHJsZW4sCiYjNDM7CQkJLmJ1ZiAgID0gcmJ1ZiwKJiM0MzsJCX07CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gaTJjX3RyYW5zZmVyKGFkYXAsIG1zZ3MsIG5tc2dzKTsKJiM0MzsJaWYgKHJldCA9PSBubXNncykgewomIzQzOwkJaWYgKHJkYXRhICZhbXA7JmFtcDsgcmxlbikKJiM0MzsJCQltZW1jcHkocmRhdGEsIHJidWYsIHJsZW4pOwomIzQzOwkJcmV0ID0gMDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJldCA9IChyZXQgJmx0OyAwKSA/IHJldCA6IC1FSU87CiYjNDM7CX0KJiM0MztwdXQ6CiYjNDM7CWtmcmVlKHdidWYpOwomIzQzOwlrZnJlZShyYnVmKTsKJiM0MzsJaTJjX3B1dF9hZGFwdGVyKGFkYXApOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MzsvKiBBY3F1aXJlIHRoZSBzaGFyZWQgSTJDIGJ1cyBmcm9tIHRoZSBNaWNyb0JsYXplIGZpcm13YXJlLiAqLwomIzQzO3N0YXRpYyBpbnQgYWR2YV94MV9tYmxhemVfYWNxdWlyZShzdHJ1Y3QgcHRwX29jcCAqYnApCiYjNDM7ewomIzQzOwl1MzIgdmFsOwomIzQzOwlpbnQgaTsKJiM0MzsKJiM0MzsJaWYgKCFicC0mZ3Q7cHBzX3NlbGVjdCkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwkvKiBSZWxlYXNlIGFueSBzdGFsZSBncmFudCBsZWZ0IGJ5IGEgcHJldmlvdXMgY3Jhc2hlZCBjYWxsZXIuICovCiYjNDM7CWlvd3JpdGUzMigwLCAmYW1wO2JwLSZndDtwcHNfc2VsZWN0LSZndDtpMmNfYnVzX2N0cmwpOwomIzQzOwl2YWwgPSBpb3JlYWQzMigmYW1wO2JwLSZndDtwcHNfc2VsZWN0LSZndDtpMmNfYnVzX2N0cmwpOwomIzQzOwlpZiAodmFsICE9IDApCiYjNDM7CQlyZXR1cm4gLUVCVVNZOwomIzQzOwomIzQzOwlpb3dyaXRlMzIoTUJMQVpFX1JFUVVFU1QsICZhbXA7YnAtJmd0O3Bwc19zZWxlY3QtJmd0O2kyY19idXNfY3RybCk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBNQkxBWkVfUkVUUklFUzsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXVzbGVlcF9yYW5nZShNQkxBWkVfUkVUUllfVVMsIE1CTEFaRV9SRVRSWV9VUyAmIzQzOyAxMDAwKTsKJiM0MzsJCXZhbCA9IGlvcmVhZDMyKCZhbXA7YnAtJmd0O3Bwc19zZWxlY3QtJmd0O2kyY19idXNfY3RybCk7CiYjNDM7CQlpZiAodmFsID09IE1CTEFaRV9HUkFOVEVEKQomIzQzOwkJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CXJldHVybiAtRVRJTUVET1VUOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKHN0cnVjdCBwdHBfb2NwICpicCkKJiM0Mzt7CiYjNDM7CWlmIChicC0mZ3Q7cHBzX3NlbGVjdCkKJiM0MzsJCWlvd3JpdGUzMihNQkxBWkVfUkVMRUFTRSwgJmFtcDticC0mZ3Q7cHBzX3NlbGVjdC0mZ3Q7aTJjX2J1c19jdHJsKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBhZHZhX3gxX211eF9zZWxlY3Qoc3RydWN0IHB0cF9vY3AgKmJwLCBpbnQgY2gpCiYjNDM7ewomIzQzOwl1OCB2YWwgPSAoY2ggJmd0Oz0gMCkgPyBCSVQoY2gpIDogMDsKJiM0MzsKJiM0MzsJcmV0dXJuIGFkdmFfeDFfaTJjX3hmZXIoYnAsIEFEVkFfTVVYX0FERFIsICZhbXA7dmFsLCAxLCBOVUxMLCAwLCBmYWxzZSk7CiYjNDM7fQomIzQzOwomIzQzOy8qIFNlbmQgMS1ieXRlIElTQyBjb21tYW5kICYjNDM7IG9wdGlvbmFsIGFyZ3VtZW50cy4gKi8KJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF93cml0ZShzdHJ1Y3QgcHRwX29jcCAqYnAsCiYjNDM7CQkJICAgICAgdTggY21kLCBjb25zdCB1OCAqYXJncywgdTggbmFyZ3MpCiYjNDM7ewomIzQzOwl1OCBidWZbMSAmIzQzOyA2NF07CiYjNDM7CiYjNDM7CWlmIChuYXJncyAmZ3Q7IDY0KQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CWJ1ZlswXSA9IGNtZDsKJiM0MzsJaWYgKG5hcmdzKQomIzQzOwkJbWVtY3B5KCZhbXA7YnVmWzFdLCBhcmdzLCBuYXJncyk7CiYjNDM7CXJldHVybiBhZHZhX3gxX2kyY194ZmVyKGJwLCBBRFZBX0NQTERfQUREUiwgYnVmLCAxICYjNDM7IG5hcmdzLAomIzQzOwkJCQkgTlVMTCwgMCwgZmFsc2UpOwomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFNlbmQgYSA0LWJ5dGUgY29tbWFuZCB0aGVuIHJlYWQgZGF0YSBiYWNrIHdpdGhvdXQgYW4gaW50ZXJtZWRpYXRlIFNUT1AKJiM0MzsgKiAoTGF0dGljZSBjb21iaW5lZCB3cml0ZeKGknJlcGVhdGVkLVNUQVJU4oaScmVhZCkuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBhZHZhX3gxX2NwbGRfY21kX3JlYWQoc3RydWN0IHB0cF9vY3AgKmJwLAomIzQzOwkJCQkgdTMyIGNtZF9iZSwgdTggKm91dCwgdTggb3V0X2xlbikKJiM0Mzt7CiYjNDM7CV9fYmUzMiBjbWQgPSBjcHVfdG9fYmUzMihjbWRfYmUpOwomIzQzOwomIzQzOwlyZXR1cm4gYWR2YV94MV9pMmNfeGZlcihicCwgQURWQV9DUExEX0FERFIsICZhbXA7Y21kLCA0LCBvdXQsIG91dF9sZW4sIHRydWUpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcHRwX29jcCAqYnAsIHUzMiAqc3RhdHVzKQomIzQzO3sKJiM0MzsJdTggYnVmWzRdOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfU1RBVFVTLCBidWYsIDQpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJKnN0YXR1cyA9IGdldF91bmFsaWduZWRfYmUzMihidWYpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShzdHJ1Y3QgcHRwX29jcCAqYnAsIHVuc2lnbmVkIGludCBtYXhfbXMpCiYjNDM7ewomIzQzOwl1MzIgc3RhdHVzOwomIzQzOwl1bnNpZ25lZCBpbnQgZWxhcHNlZCA9IDA7CiYjNDM7CiYjNDM7CXdoaWxlIChlbGFwc2VkICZsdDsgbWF4X21zKSB7CiYjNDM7CQlpZiAoYWR2YV94MV9jcGxkX3JlYWRfc3RhdHVzKGJwLCAmYW1wO3N0YXR1cykpCiYjNDM7CQkJcmV0dXJuIC1FSU87CiYjNDM7CQlpZiAoc3RhdHVzICZhbXA7IENQTERfU1RBVFVTX0ZBSUxFRCkKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCWlmICghKHN0YXR1cyAmYW1wOyBDUExEX1NUQVRVU19CVVNZKSkKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJCXVzbGVlcF9yYW5nZSgxMDAwMDAsIDEwMTAwMCk7CiYjNDM7CQllbGFwc2VkICYjNDM7PSAxMDA7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogY3BsZF9kZXZpY2VfaWQgLSBzaG93IHRoZSBMYXR0aWNlIGRldmljZSBJRCBvZiB0aGUgVEFQIENQTEQuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zIHRoZSAzMi1iaXQgSUQgYXMgYSBoZXggc3RyaW5nLCBlLmcuICYjMzQ7MHg2MTJiYzA0M1xuJiMzNDsuCiYjNDM7ICogTGF0dGljZSBMQ01YTzNMRi0yMTAgcmVwb3J0cyAweDYxMkJDMDQzLgomIzQzOyAqLwomIzQzO3N0YXRpYyBzc2l6ZV90CiYjNDM7Y3BsZF9kZXZpY2VfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAomIzQzOwkJICAgIGNoYXIgKmJ1ZikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwdHBfb2NwICpicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwomIzQzOwl1OCBkYXRhWzRdOwomIzQzOwl1MzIgaWQgPSAwOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CXJldCA9IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CXJldCA9IGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIHJlbGVhc2U7CiYjNDM7CXJldCA9IGFkdmFfeDFfY3BsZF9jbWRfcmVhZChicCwgQ1BMRF9DTURfUkVBRF9JRCwgZGF0YSwgNCk7CiYjNDM7CWlmICghcmV0KQomIzQzOwkJaWQgPSAoKHUzMilkYXRhWzBdICZsdDsmbHQ7IDI0KSB8ICgodTMyKWRhdGFbMV0gJmx0OyZsdDsgMTYpIHwKJiM0MzsJCSAgICAgKCh1MzIpZGF0YVsyXSAmbHQ7Jmx0OyAgOCkgfCAgKHUzMilkYXRhWzNdOwomIzQzOwlhZHZhX3gxX211eF9zZWxlY3QoYnAsIC0xKTsKJiM0MztyZWxlYXNlOgomIzQzOwlhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTsKJiM0MztvdXQ6CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2JwLSZndDtjcGxkX2xvY2spOwomIzQzOwlyZXR1cm4gcmV0ID8gcmV0IDogc3lzZnNfZW1pdChidWYsICYjMzQ7MHglMDh4XG4mIzM0OywgaWQpOwomIzQzO30KJiM0MztzdGF0aWMgREVWSUNFX0FUVFJfUk8oY3BsZF9kZXZpY2VfaWQpOwomIzQzOwomIzQzOy8qCiYjNDM7ICogY3BsZF9zdGF0dXMgLSBzaG93IHRoZSBzdGF0dXMgcmVnaXN0ZXIgb2YgdGhlIFRBUCBDUExELgomIzQzOyAqCiYjNDM7ICogUmV0dXJucyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZzogJiMzNDtkb25lPSZsdDswfDEmZ3Q7IGJ1c3k9Jmx0OzB8MSZndDsgZmFpbGVkPSZsdDswfDEmZ3Q7XG4mIzM0OwomIzQzOyAqLwomIzQzO3N0YXRpYyBzc2l6ZV90CiYjNDM7Y3BsZF9zdGF0dXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAomIzQzOwkJIGNoYXIgKmJ1ZikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwdHBfb2NwICpicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwomIzQzOwl1MzIgc3QgPSAwOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CXJldCA9IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CXJldCA9IGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIHJlbGVhc2U7CiYjNDM7CXJldCA9IGFkdmFfeDFfY3BsZF9yZWFkX3N0YXR1cyhicCwgJmFtcDtzdCk7CiYjNDM7CWFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpOwomIzQzO3JlbGVhc2U6CiYjNDM7CWFkdmFfeDFfbWJsYXplX3JlbGVhc2UoYnApOwomIzQzO291dDoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CXJldHVybiByZXQgPyByZXQgOiBzeXNmc19lbWl0KGJ1ZiwgJiMzNDtkb25lPSV1IGJ1c3k9JXUgZmFpbGVkPSV1XG4mIzM0OywKJiM0MzsJCQkJICAgICAgISEoc3QgJmFtcDsgQ1BMRF9TVEFUVVNfRE9ORSksCiYjNDM7CQkJCSAgICAgICEhKHN0ICZhbXA7IENQTERfU1RBVFVTX0JVU1kpLAomIzQzOwkJCQkgICAgICAhIShzdCAmYW1wOyBDUExEX1NUQVRVU19GQUlMRUQpKTsKJiM0Mzt9CiYjNDM7c3RhdGljIERFVklDRV9BVFRSX1JPKGNwbGRfc3RhdHVzKTsKJiM0MzsKJiM0MzsvKgomIzQzOyAqIGFkdmFfeDEgQ1BMRCBmaXJtd2FyZS11cGxvYWQgY2FsbGJhY2tzLgomIzQzOyAqCiYjNDM7ICogVGhlIGtlcm5lbCBmaXJtd2FyZS11cGxvYWQgc3Vic3lzdGVtIChDT05GSUdfRldfVVBMT0FEKSBleHBvc2VzOgomIzQzOyAqICAgL3N5cy9jbGFzcy9maXJtd2FyZS9hZHZhLWNwbGQve2RhdGEsbG9hZGluZyxzdGF0dXMsZXJyb3IsLi4ufQomIzQzOyAqIFVzZXJzcGFjZSB3cml0ZXMgdGhlIHJhdyBiaW5hcnkgcGFnZSBkYXRhIGRpcmVjdGx5IOKAlCBubyAvbGliL2Zpcm13YXJlLwomIzQzOyAqIHN0YWdpbmcgZmlsZSBpcyBuZWVkZWQuCiYjNDM7ICoKJiM0MzsgKiBDYWxsYmFjayBzZXF1ZW5jZSBkcml2ZW4gYnkgdGhlIGZyYW1ld29yazoKJiM0MzsgKiAgIHByZXBhcmUoKSAgICAgIC0gdmFsaWRhdGUgc2l6ZSwgYWNxdWlyZSBidXMsIGVuYWJsZSBjb25maWcsIGVyYXNlIGZsYXNoCiYjNDM7ICogICB3cml0ZSgpICAgICAgICAtIHByb2dyYW0gb25lIDE2LWJ5dGUgcGFnZSBwZXIgY2FsbAomIzQzOyAqICAgcG9sbF9jb21wbGV0ZSgpLSBzZXQgRE9ORSwgUkVGUkVTSCwgd2FpdCBmb3IgQ1BMRCB0byByZWJvb3QKJiM0MzsgKiAgIGNhbmNlbCgpICAgICAgIC0gc2V0IGZsYWc7IGNoZWNrZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggY2FsbGJhY2sKJiM0MzsgKiAgIGNsZWFudXAoKSAgICAgIC0gcmVsZWFzZSBidXMgcmVzb3VyY2VzIChjYWxsZWQgb24gc3VjY2VzcyBvciBmYWlsdXJlKQomIzQzOyAqLwomIzQzO3N0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnIKJiM0MzthZHZhX2NwbGRfcHJlcGFyZShzdHJ1Y3QgZndfdXBsb2FkICpmd2wsIGNvbnN0IHU4ICpkYXRhLCB1MzIgc2l6ZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwdHBfb2NwICpicCA9IGZ3bC0mZ3Q7ZGRfaGFuZGxlOwomIzQzOwljb25zdCB1OCBlbl9hcmdzWzJdICA9IHsgMHgwOCwgMHgwMCB9OwomIzQzOwljb25zdCB1OCBlcmFfYXJnc1szXSA9IHsgMHgwNCwgMHgwMCwgMHgwMCB9OyAvKiBjZmcgc2VjdG9yIG9ubHkgKi8KJiM0MzsJY29uc3QgdTggemVybzNbM10gICAgPSB7IDAgfTsKJiM0MzsJY29uc3QgdTggZGlzX2FyZ3NbMl0gPSB7IDB4MDAsIDB4MDAgfTsKJiM0MzsJZW51bSBmd191cGxvYWRfZXJyIHJldCA9IEZXX1VQTE9BRF9FUlJfTk9ORTsKJiM0MzsKJiM0MzsJaWYgKCFzaXplIHx8IHNpemUgJSBDUExEX1BBR0VfU0laRSkKJiM0MzsJCXJldHVybiBGV19VUExPQURfRVJSX0lOVkFMSURfU0laRTsKJiM0MzsKJiM0MzsJYnAtJmd0O2NwbGRfY2FuY2VsCQk9IGZhbHNlOwomIzQzOwlicC0mZ3Q7Y3BsZF9pbl9jb25maWdfbW9kZQk9IGZhbHNlOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CiYjNDM7CWlmIChhZHZhX3gxX21ibGF6ZV9hY3F1aXJlKGJwKSkgewomIzQzOwkJcmV0ID0gRldfVVBMT0FEX0VSUl9USU1FT1VUOwomIzQzOwkJZ290byBlcnJfdW5sb2NrOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChhZHZhX3gxX211eF9zZWxlY3QoYnAsIEFEVkFfTVVYX0NIQU5ORUwpKSB7CiYjNDM7CQlyZXQgPSBGV19VUExPQURfRVJSX0hXX0VSUk9SOwomIzQzOwkJZ290byBlcnJfcmVsZWFzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9FTl9DRkdfVFAsIGVuX2FyZ3MsIDIpIHx8CiYjNDM7CSAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgNTAwMCkpIHsKJiM0MzsJCXJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7CiYjNDM7CQlnb3RvIGVycl9kZXNlbGVjdDsKJiM0MzsJfQomIzQzOwlicC0mZ3Q7Y3BsZF9pbl9jb25maWdfbW9kZSA9IHRydWU7CiYjNDM7CiYjNDM7CWlmIChicC0mZ3Q7Y3BsZF9jYW5jZWwpIHsKJiM0MzsJCXJldCA9IEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7CiYjNDM7CQlnb3RvIGVycl9kZXNlbGVjdDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9FUkFTRSwgZXJhX2FyZ3MsIDMpIHx8CiYjNDM7CSAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMTUwMDApKSB7CiYjNDM7CQlyZXQgPSBGV19VUExPQURfRVJSX0hXX0VSUk9SOwomIzQzOwkJZ290byBlcnJfZGVzZWxlY3Q7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGJwLSZndDtjcGxkX2NhbmNlbCkgewomIzQzOwkJcmV0ID0gRldfVVBMT0FEX0VSUl9DQU5DRUxFRDsKJiM0MzsJCWdvdG8gZXJyX2Rlc2VsZWN0OwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX1JFU0VUX0FERFIsIHplcm8zLCAzKSkgewomIzQzOwkJcmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjsKJiM0MzsJCWdvdG8gZXJyX2Rlc2VsZWN0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBGV19VUExPQURfRVJSX05PTkU7CS8qIGNsZWFudXAoKSB3aWxsIHVubG9jayBldmVyeXRoaW5nICovCiYjNDM7CiYjNDM7ZXJyX2Rlc2VsZWN0OgomIzQzOwlpZiAoYnAtJmd0O2NwbGRfaW5fY29uZmlnX21vZGUpIHsKJiM0MzsJCWFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfRElTX0NGRywgZGlzX2FyZ3MsIDIpOwomIzQzOwkJYnAtJmd0O2NwbGRfaW5fY29uZmlnX21vZGUgPSBmYWxzZTsKJiM0MzsJfQomIzQzOwlhZHZhX3gxX211eF9zZWxlY3QoYnAsIC0xKTsKJiM0MztlcnJfcmVsZWFzZToKJiM0MzsJYWR2YV94MV9tYmxhemVfcmVsZWFzZShicCk7CiYjNDM7ZXJyX3VubG9jazoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnIKJiM0MzthZHZhX2NwbGRfd3JpdGUoc3RydWN0IGZ3X3VwbG9hZCAqZndsLCBjb25zdCB1OCAqZGF0YSwKJiM0MzsJCXUzMiBvZmZzZXQsIHUzMiBzaXplLCB1MzIgKndyaXR0ZW4pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRwX29jcCAqYnAgPSBmd2wtJmd0O2RkX2hhbmRsZTsKJiM0MzsJdTggcGFnZV9hcmdzWzMgJiM0MzsgQ1BMRF9QQUdFX1NJWkVdOwomIzQzOwomIzQzOwlpZiAoYnAtJmd0O2NwbGRfY2FuY2VsKQomIzQzOwkJcmV0dXJuIEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7CiYjNDM7CiYjNDM7CWlmIChzaXplICZsdDsgQ1BMRF9QQUdFX1NJWkUpCiYjNDM7CQlyZXR1cm4gRldfVVBMT0FEX0VSUl9JTlZBTElEX1NJWkU7CiYjNDM7CiYjNDM7CXBhZ2VfYXJnc1swXSA9IDB4MDA7CiYjNDM7CXBhZ2VfYXJnc1sxXSA9IDB4MDA7CiYjNDM7CXBhZ2VfYXJnc1syXSA9IDB4MDE7CiYjNDM7CW1lbWNweSgmYW1wO3BhZ2VfYXJnc1szXSwgZGF0YSAmIzQzOyBvZmZzZXQsIENQTERfUEFHRV9TSVpFKTsKJiM0MzsKJiM0MzsJaWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfV1JJVEVfUEFHRSwKJiM0MzsJCQkgICAgICAgcGFnZV9hcmdzLCAzICYjNDM7IENQTERfUEFHRV9TSVpFKSB8fAomIzQzOwkgICAgYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDEwMCkpCiYjNDM7CQlyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjsKJiM0MzsKJiM0MzsJKndyaXR0ZW4gPSBDUExEX1BBR0VfU0laRTsKJiM0MzsJcmV0dXJuIEZXX1VQTE9BRF9FUlJfTk9ORTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGVudW0gZndfdXBsb2FkX2VycgomIzQzO2FkdmFfY3BsZF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBmd191cGxvYWQgKmZ3bCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwdHBfb2NwICpicCA9IGZ3bC0mZ3Q7ZGRfaGFuZGxlOwomIzQzOwljb25zdCB1OCB6ZXJvM1szXSAgICA9IHsgMCB9OwomIzQzOwljb25zdCB1OCByZWZfYXJnc1syXSA9IHsgMHgwMCwgMHgwMCB9OwomIzQzOwl1MzIgc3Q7CiYjNDM7CiYjNDM7CWlmIChicC0mZ3Q7Y3BsZF9jYW5jZWwpCiYjNDM7CQlyZXR1cm4gRldfVVBMT0FEX0VSUl9DQU5DRUxFRDsKJiM0MzsKJiM0MzsJaWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfU0VUX0RPTkUsIHplcm8zLCAzKSB8fAomIzQzOwkgICAgYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDEwMDApKQomIzQzOwkJcmV0dXJuIEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7CiYjNDM7CiYjNDM7CWlmIChhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsICZhbXA7c3QpIHx8ICEoc3QgJmFtcDsgQ1BMRF9TVEFUVVNfRE9ORSkpCiYjNDM7CQlyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjsKJiM0MzsKJiM0MzsJaWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfUkVGUkVTSCwgcmVmX2FyZ3MsIDIpKQomIzQzOwkJcmV0dXJuIEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7CiYjNDM7CiYjNDM7CS8qIENQTEQgcmVib290cyBhZnRlciBSRUZSRVNIOyByZS1zZWxlY3QgbXV4IG9uY2UgaXQgY29tZXMgYmFjayB1cCAqLwomIzQzOwltc2xlZXAoMTUwMCk7CiYjNDM7CWFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7CiYjNDM7CWlmIChhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMzAwMCkpCiYjNDM7CQlyZXR1cm4gRldfVVBMT0FEX0VSUl9USU1FT1VUOwomIzQzOwomIzQzOwlicC0mZ3Q7Y3BsZF9pbl9jb25maWdfbW9kZSA9IGZhbHNlOwomIzQzOwlyZXR1cm4gRldfVVBMT0FEX0VSUl9OT05FOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZAomIzQzO2FkdmFfY3BsZF9jYW5jZWwoc3RydWN0IGZ3X3VwbG9hZCAqZndsKQomIzQzO3sKJiM0MzsJc3RydWN0IHB0cF9vY3AgKmJwID0gZndsLSZndDtkZF9oYW5kbGU7CiYjNDM7CiYjNDM7CWJwLSZndDtjcGxkX2NhbmNlbCA9IHRydWU7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkCiYjNDM7YWR2YV9jcGxkX2NsZWFudXAoc3RydWN0IGZ3X3VwbG9hZCAqZndsKQomIzQzO3sKJiM0MzsJc3RydWN0IHB0cF9vY3AgKmJwID0gZndsLSZndDtkZF9oYW5kbGU7CiYjNDM7CWNvbnN0IHU4IGRpc19hcmdzWzJdID0geyAweDAwLCAweDAwIH07CiYjNDM7CiYjNDM7CWlmIChicC0mZ3Q7Y3BsZF9pbl9jb25maWdfbW9kZSkgewomIzQzOwkJYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9ESVNfQ0ZHLCBkaXNfYXJncywgMik7CiYjNDM7CQlicC0mZ3Q7Y3BsZF9pbl9jb25maWdfbW9kZSA9IGZhbHNlOwomIzQzOwl9CiYjNDM7CWFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpOwomIzQzOwlhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZndfdXBsb2FkX29wcyBhZHZhX2NwbGRfdXBsb2FkX29wcyA9IHsKJiM0MzsJLnByZXBhcmUJID0gYWR2YV9jcGxkX3ByZXBhcmUsCiYjNDM7CS53cml0ZQkJID0gYWR2YV9jcGxkX3dyaXRlLAomIzQzOwkucG9sbF9jb21wbGV0ZQkgPSBhZHZhX2NwbGRfcG9sbF9jb21wbGV0ZSwKJiM0MzsJLmNhbmNlbAkJID0gYWR2YV9jcGxkX2NhbmNlbCwKJiM0MzsJLmNsZWFudXAJID0gYWR2YV9jcGxkX2NsZWFudXAsCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphZHZhX3RpbWVjYXJkX2F0dHJzW10gPSB7CiAJJmFtcDtkZXZfYXR0cl9zZXJpYWxudW0uYXR0ciwKIAkmYW1wO2Rldl9hdHRyX2duc3Nfc3luYy5hdHRyLApAQCAtNDI3Miw2ICYjNDM7NDczOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphZHZhX3RpbWVjYXJkX3gxX2F0dHJzW10gPSB7CiAJJmFtcDtkZXZfYXR0cl90c193aW5kb3dfYWRqdXN0LmF0dHIsCiAJJmFtcDtkZXZfYXR0cl91dGNfdGFpX29mZnNldC5hdHRyLAogCSZhbXA7ZGV2X2F0dHJfdG9kX2NvcnJlY3Rpb24uYXR0ciwKJiM0MzsJJmFtcDtkZXZfYXR0cl9jcGxkX2RldmljZV9pZC5hdHRyLAomIzQzOwkmYW1wO2Rldl9hdHRyX2NwbGRfc3RhdHVzLmF0dHIsCiAJTlVMTCwKIH07CiAKQEAgLTQ5MDIsNiAmIzQzOzUzNzEsMTEgQEAgcHRwX29jcF9kZXRhY2goc3RydWN0IHB0cF9vY3AgKmJwKQogCQljbGtfaHdfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKGJwLSZndDtpMmNfY2xrKTsKIAlpZiAoYnAtJmd0O25faXJxcykKIAkJcGNpX2ZyZWVfaXJxX3ZlY3RvcnMoYnAtJmd0O3BkZXYpOwomIzQzOwlpZiAoYnAtJmd0O2NwbGRfZndfdXBsb2FkKSB7CiYjNDM7CQlmaXJtd2FyZV91cGxvYWRfdW5yZWdpc3RlcihicC0mZ3Q7Y3BsZF9md191cGxvYWQpOwomIzQzOwkJYnAtJmd0O2NwbGRfZndfdXBsb2FkID0gTlVMTDsKJiM0MzsJfQomIzQzOwltdXRleF9kZXN0cm95KCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiAJZGV2aWNlX3VucmVnaXN0ZXIoJmFtcDticC0mZ3Q7ZGV2KTsKIH0KIApAQCAtNTA3OCw2ICYjNDM7NTU1MiwxNyBAQCBwdHBfb2NwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpCiAJaWYgKGVycikKIAkJZ290byBvdXRfZGlzYWJsZTsKIAomIzQzOwkvKiBNdXN0IGJlIGJlZm9yZSB0aGUgZmlyc3QgZXJyb3IgcGF0aCB0aGF0IGNhbGxzIHB0cF9vY3BfZGV0YWNoKCksCiYjNDM7CSAqIHNvIG11dGV4X2Rlc3Ryb3koKSBhbHdheXMgcnVucyBvbiBhbiBpbml0aWFsaXNlZCBtdXRleC4KJiM0MzsJICogTXVzdCBhbHNvIGJlIGJlZm9yZSBwdHBfb2NwX3JlZ2lzdGVyX3Jlc291cmNlcygpOiB0aGUgSTJDIGJ1cwomIzQzOwkgKiBub3RpZmllciAocHRwX29jcF9pMmNfbm90aWZpZXJfY2FsbCkgZmlyZXMgd2hlbiB0aGUgYWRhcHRlcgomIzQzOwkgKiByZWdpc3RlcnMgYW5kIHN0b3JlcyB0aGUgYWRhcHRlciBudW1iZXIgaW4gY3BsZF9pMmNfYWRhcF9ucjsgdGhlCiYjNDM7CSAqIC0xIHNlbnRpbmVsIGJlbG93IG11c3QgYWxyZWFkeSBiZSB3cml0dGVuIHNvIHRoYXQgYSBub3RpZmllcgomIzQzOwkgKiBmaXJpbmcgZHVyaW5nIHJlZ2lzdHJhdGlvbiBpcyBuZXZlciBvdmVyd3JpdHRlbiBieSB0aGlzIGluaXQuCiYjNDM7CSAqLwomIzQzOwltdXRleF9pbml0KCZhbXA7YnAtJmd0O2NwbGRfbG9jayk7CiYjNDM7CWJwLSZndDtjcGxkX2kyY19hZGFwX25yID0gLTE7CiYjNDM7CiAJSU5JVF9ERUxBWUVEX1dPUksoJmFtcDticC0mZ3Q7c3luY193b3JrLCBwdHBfb2NwX3N5bmNfd29yayk7CiAKIAkvKiBjb21wYXQgbW9kZS4KQEAgLTUyMTcsMTEgJiM0Mzs1NzAyLDE2IEBAIHB0cF9vY3BfaTJjX25vdGlmaWVyX2NhbGwoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKIAogZm91bmQ6CiAJYnAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKLQlpZiAoYWRkKQomIzQzOwlpZiAoYWRkKSB7CiAJCXB0cF9vY3Bfc3ltbGluayhicCwgY2hpbGQsICYjMzQ7aTJjJiMzNDspOwotCWVsc2UKJiM0MzsJCS8qIENhY2hlIGFkYXB0ZXIgbnI7IHVzZWQgYnkgY3BsZF9kZXZpY2VfaWQvY3BsZF9zdGF0dXMvY3BsZF9wcm9ncmFtCiYjNDM7CQkgKiBmb3IgcmVmZXJlbmNlLWNvdW50ZWQgdW5iaW5kLXNhZmUgYWRhcHRlciBhY2Nlc3MuCiYjNDM7CQkgKi8KJiM0MzsJCVdSSVRFX09OQ0UoYnAtJmd0O2NwbGRfaTJjX2FkYXBfbnIsIGkyY192ZXJpZnlfYWRhcHRlcihjaGlsZCktJmd0O25yKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCVdSSVRFX09OQ0UoYnAtJmd0O2NwbGRfaTJjX2FkYXBfbnIsIC0xKTsgLyogaW52YWxpZGF0ZSBiZWZvcmUgZnJlZSAqLwogCQlzeXNmc19yZW1vdmVfbGluaygmYW1wO2JwLSZndDtkZXYua29iaiwgJiMzNDtpMmMmIzM0Oyk7Ci0KJiM0MzsJfQogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDA3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHB0cF9vY3BgIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgdGhlIGBwdHBfb2NwYCBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9wdHAvcHRwX29jcC5jYC4gSXQmIzM5O3MgYWRkaW5nIENQTEQgZmlybXdhcmUgdXBsb2FkIHN1cHBvcnQsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBtZW50aW9ucyB0aGUgYGZpcm13YXJlX3VwbG9hZGAgZnJhbWV3b3JrIGFuZCBhbHNvIGludHJvZHVjZXMgYGNwbGRfZGV2aWNlX2lkYCBhbmQgYGNwbGRfc3RhdHVzYCBzeXNmcyBhdHRyaWJ1dGVzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGU/JiMzNDsuCgpUaGUgZHJpdmVyIGlzIGEgUENJIGRyaXZlciwgYW5kIHRoZSBkZXZpY2UgSUQsIGFjY29yZGluZyB0byB0aGUgZG9jdW1lbnRhdGlvbiwgaXMgYDB4YWQ1YToweDA0MTBgLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBpbiB0aGUgY29kZSBpdHNlbGYuIE9rYXksIHRoZSBjb2RlIGRvZXMgY2hlY2sgZm9yIGBpbmZvLSZndDtoYXNfY3BsZGAsIGFuZCBpdOKAmXMgc2V0IHRvIGB0cnVlYCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgb2NwX2FkdmFfeDFfcmVzb3VyY2VgLiBTbyB0aGlzIGlzIGRlZmluaXRlbHkgYSBQQ0kgZGV2aWNlIGRyaXZlci4KClRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogQ2FuIHRoaXMgYmUgZnV6emVkPyBHaXZlbiB0aGF0IGl0JiMzOTtzIFBDSSwgU3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIGZ1enogaXQgdXNpbmcgaXRzIHBzZXVkby1QQ0kgc3Vic3lzdGVtLCBvciB2aGNpLCBvciBzb21lIG90aGVyIFBDSSBmdXp6aW5nIHN1cHBvcnQuIFN5emthbGxlciBoYXMgYmVlbiBtYWtpbmcgc3RyaWRlcyBpbiB0aGlzIGFyZWEuIEJ1dCB3YWl0Li4uIHRoaXMgcHJvbXB0IGlzIGEgYml0IG9taW5vdXMsIGl0IG1lbnRpb25zICYjMzQ7dmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4gSXMgdGhpcyBhIGNhc2U/IElzIGBwdHBfb2NwYCB2ZW5kb3Itc3BlY2lmaWM/CgpJdCYjMzk7cyB0aGUgJiMzNDtPcGVuIENvbXB1dGUgUHJvamVjdCB0aW1lIGNhcmQgZHJpdmVyJiMzNDsuLi4gdGhhdCBkb2VzbiYjMzk7dCBzb3VuZCBzcGVjaWZpY2FsbHkgdmVuZG9yLWxvY2tlZC4gSSBzaG91bGQgY2hlY2sgaG93IGl0JiMzOTtzIGhhbmRsZWQuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyBpdCBmdXp6ZWQgYWxyZWFkeSwgb3IgY2FuIGl0IGJlPyBIb2xkIG9uLCB0aGUgY29tbWl0IGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLiBOb3cgdGhhdCYjMzk7cyBpbnRlcmVzdGluZyEgU3l6a2FsbGVyIGlzIGVpdGhlciBmaW5kaW5nIHNvbWV0aGluZywgb3IgdGhpcyBpcyBhIHRlc3QgcGF0Y2guIFdhaXQsIHRoZSBjb21taXQgbWVzc2FnZSBzYXlzICYjMzQ7c3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3JiMzNDssIHdoaWNoIGlzIGdyZWF0LCBtZWFuaW5nIFN5emthbGxlciBoYWQgYSByb2xlIGluIHRoaXMsIHdoaWNoIGlzIGdvb2QgbmV3cyBmb3Igb3VyIGdvYWxzLgoKT2theSwgbGV0IG1lIGNvbmZpcm0gaWYgYHB0cF9vY3BgIGlzIGEgc3RhbmRhcmQgZHJpdmVyIG9yIG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlLiBCZWNhdXNlIHRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQgZm9yIG15IHdvcmsuIEl0JiMzOTtzIGEgUENJIGRyaXZlci4uLiBzbyBsZXQmIzM5O3MgZG8gYSBxdWljayBncmVwIHNlYXJjaCBmb3IgYHB0cF9vY3BgIGluIHRoZSBrZXJuZWwgdG8gc2VlIHRoZSBsYXJnZXIgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwdHBfb2NwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMDg3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL3B0cC9NYWtlZmlsZT0yMD1vYmotJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfVk1XKVx0JiM0Mzs9IHB0cF92bXcub1xuZHJpdmVycy9wdHAvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX09DUClcdCYjNDM7PSBwdHBfb2NwLm9cbmRyaXZlcnMvcHRwL01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19QVFBfREZMX1RPRClcdFx0JiM0Mzs9IHB0cF9kZmxfdG9kLm9cbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9NDk9c3RydWN0IG9jcF9yZWcge1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03My1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3NDpzdHJ1Y3QgcHRwX29jcF9zZXJ2b19jb25mIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03NS1cdHUzMlx0c2Vydm9fb2Zmc2V0X3A7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgyLSAqIENvbWJpbmVkIHNlcnZvICYjNDM7IGJvYXJkLXZhcmlhbnQgcGFyYW1ldGVycyBmb3IgQURWQSBib2FyZHMuXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODM6ICogRW1iZWRkZWQgaW4gdGhlIHJlc291cmNlIHRhYmxlIC5leHRyYSBzbyBhIHNpbmdsZSBwdHBfb2NwX2FkdmFfYm9hcmRfaW5pdCgpXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODQtICogY2FuIGhhbmRsZSBib3RoIEFEVkEgYW5kIEFEVkEtWDEgd2l0aG91dCBwZXItdmFyaWFudCBpbml0IGZ1bmN0aW9ucy5cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NS0gKi9cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NjpzdHJ1Y3QgcHRwX29jcF9hZHZhX2luZm8ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg3Olx0c3RydWN0IHB0cF9vY3Bfc2Vydm9fY29uZlx0c2Vydm87XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODgtXHR1MzJcdFx0XHRcdGZsYXNoX3N0YXJ0O1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz0yNDM9c3RydWN0IGJvYXJkX2NvbmZpZ19yZWcge1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNTEtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MjUyOnN0cnVjdCBwdHBfb2NwX2ZsYXNoX2luZm8ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI1My1cdGNvbnN0IGNoYXIgKm5hbWU7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI1OC1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyNTk6c3RydWN0IHB0cF9vY3BfZmlybXdhcmVfaGVhZGVyIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNjAtXHRjaGFyIG1hZ2ljWzRdO1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNjktXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MjcwOnN0cnVjdCBwdHBfb2NwX2kyY19pbmZvIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNzEtXHRjb25zdCBjaGFyICpuYW1lO1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNzYtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mjc3OnN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNzgtXHRpbnQgaW5kZXg7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI4Mi1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyODM6c3RydWN0IHB0cF9vY3BfZXh0X3NyYyB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjg0LVx0dm9pZCBfX2lvbWVtXHRcdCptZW07XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mjg1Olx0c3RydWN0IHB0cF9vY3BcdFx0KmJwO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjI4NjpcdHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvXHQqaW5mbztcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yODctXHRpbnRcdFx0XHRpcnFfdmVjO1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yODktXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MjkwOmVudW0gcHRwX29jcF9zbWFfbW9kZSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjkxLVx0U01BX01PREVfSU4sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI5NC1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyOTU6c3RhdGljIHN0cnVjdCBkcGxsX3Bpbl9mcmVxdWVuY3kgcHRwX29jcF9zbWFfZnJlcVtdID0ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI5Ni1cdERQTExfUElOX0ZSRVFVRU5DWV8xUFBTLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zMDEtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MzAyOnN0cnVjdCBwdHBfb2NwX3NtYV9jb25uZWN0b3Ige1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMwMzpcdGVudW1cdHB0cF9vY3Bfc21hX21vZGUgbW9kZTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zMDQtXHRib29sXHRmaXhlZF9mY247XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTMyND1zdHJ1Y3Qgb2NwX3NtYV9vcCB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzI1LVx0Y29uc3Qgc3RydWN0IG9jcF9zZWxlY3RvciAqdGJsWzJdO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMyNjpcdHZvaWQgKCppbml0KShzdHJ1Y3QgcHRwX29jcCAqYnApO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMyNzpcdHUzMiAoKmdldCkoc3RydWN0IHB0cF9vY3AgKmJwLCBpbnQgc21hX25yKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMjg6XHRpbnQgKCpzZXRfaW5wdXRzKShzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBzbWFfbnIsIHUzMiB2YWwpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMyOTpcdGludCAoKnNldF9vdXRwdXQpKHN0cnVjdCBwdHBfb2NwICpicCwgaW50IHNtYV9uciwgdTMyIHZhbCk7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzMwLX07XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTMzNS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMzY6c3RydWN0IHB0cF9vY3Bfc2lnbmFsIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zMzctXHRrdGltZV90XHRcdHBlcmlvZDtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzQ1LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM0NjpzdHJ1Y3QgcHRwX29jcF9zZXJpYWxfcG9ydCB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzQ3LVx0aW50IGxpbmU7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTM1Nz1lbnVtIHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzY1LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM2NjpzdHJ1Y3QgcHRwX29jcCB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzY3LVx0c3RydWN0IHBjaV9kZXZcdFx0KnBkZXY7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTM4My1cdHN0cnVjdCBmcmVxdWVuY3lfcmVnXHRfX2lvbWVtICpmcmVxX2luW09DUF9GUkVRX05VTV07XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mzg0Olx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1x0KnNpZ25hbF9vdXRbT0NQX1NJR05BTF9OVU1dO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM4NTpcdHN0cnVjdCBwdHBfb2NwX2V4dF9zcmNcdCpwcHM7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mzg2Olx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1x0KnRzMDtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozODc6XHRzdHJ1Y3QgcHRwX29jcF9leHRfc3JjXHQqdHMxO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM4ODpcdHN0cnVjdCBwdHBfb2NwX2V4dF9zcmNcdCp0czI7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mzg5Olx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1x0KnRzMztcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozOTA6XHRzdHJ1Y3QgcHRwX29jcF9leHRfc3JjXHQqdHM0O1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTM5MS1cdHN0cnVjdCBvY3BfYXJ0X2dwaW9fcmVnIF9faW9tZW0gKmFydF9zbWE7XG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTM5OS1cdGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKiphdHRyX2dyb3VwO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQwMDpcdGNvbnN0IHN0cnVjdCBwdHBfb2NwX2VlcHJvbV9tYXAgKmVlcHJvbV9tYXA7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDAxLVx0c3RydWN0IGRlbnRyeVx0XHQqZGVidWdfcm9vdDtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDA2LVx0aW50XHRcdFx0bl9pcnFzO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQwNzpcdHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0XHRwb3J0W19fUE9SVF9DT1VOVF07XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDA4LVx0Ym9vbFx0XHRcdGZ3X2xvYWRlcjtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDE4LVx0dTY0XHRcdFx0ZndfY2FwO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQxOTpcdHN0cnVjdCBwdHBfb2NwX3NpZ25hbFx0c2lnbmFsW09DUF9TSUdOQUxfTlVNXTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0MjA6XHRzdHJ1Y3QgcHRwX29jcF9zbWFfY29ubmVjdG9yIHNtYVtPQ1BfU01BX05VTV07XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDIxLVx0Y29uc3Qgc3RydWN0IG9jcF9zbWFfb3AgKnNtYV9vcDtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9NDM3PXN0cnVjdCBvY3BfcmVzb3VyY2Uge1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NDAtXHRpbnQgaXJxX3ZlYztcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NDE6XHRpbnQgKCpzZXR1cCkoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NDItXHR2b2lkICpleHRyYTtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDQ2LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ0NzpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfbWVtKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDQ4OnN0YXRpYyBpbnQgcHRwX29jcF9yZWdpc3Rlcl9pMmMoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NDk6c3RhdGljIGludCBwdHBfb2NwX3JlZ2lzdGVyX3NwaShzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1MDpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfc2VyaWFsKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDUxOnN0YXRpYyBpbnQgcHRwX29jcF9yZWdpc3Rlcl9leHQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTI6c3RhdGljIGludCBwdHBfb2NwX2ZiX2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTM6c3RhdGljIGlycXJldHVybl90IHB0cF9vY3BfdHNfaXJxKGludCBpcnEsIHZvaWQgKnByaXYpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1NDpzdGF0aWMgaXJxcmV0dXJuX3QgcHRwX29jcF9zaWduYWxfaXJxKGludCBpcnEsIHZvaWQgKnByaXYpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1NTpzdGF0aWMgaW50IHB0cF9vY3BfdHNfZW5hYmxlKHZvaWQgKnByaXYsIHUzMiByZXEsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTY6c3RhdGljIGludCBwdHBfb2NwX3NpZ25hbF9mcm9tX3Blcm91dChzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBnZW4sXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDU3LVx0XHRcdFx0ICAgICAgc3RydWN0IHB0cF9wZXJvdXRfcmVxdWVzdCAqcmVxKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTg6c3RhdGljIGludCBwdHBfb2NwX3NpZ25hbF9lbmFibGUodm9pZCAqcHJpdiwgdTMyIHJlcSwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1OTpzdGF0aWMgaW50IHB0cF9vY3Bfc21hX3N0b3JlKHN0cnVjdCBwdHBfb2NwICpicCwgY29uc3QgY2hhciAqYnVmLCBpbnQgc21hX25yKTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NjAtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDYxOnN0YXRpYyBpbnQgcHRwX29jcF9hcnRfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ2Mi1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NjM6c3RhdGljIGludCBwdHBfb2NwX2FkdmFfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ2NC1cbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9NDc2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NwX2F0dHJfZ3JvdXAgYWR2YV90aW1lY2FyZF94MV9ncm91cHNbXTtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NzctXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDc4OnN0cnVjdCBwdHBfb2NwX2VlcHJvbV9tYXAge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ3OS1cdHUxNlx0b2ZmO1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00ODYtXHQub2ZmID0gYWRkcixcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ4NzpcdC5sZW4gPSBzaXplb2ZfZmllbGQoc3RydWN0IHB0cF9vY3AsIG1lbWJlciksXHRcdFxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDg4Olx0LmJwX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBwdHBfb2NwLCBtZW1iZXIpXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDg5LVxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00OTMtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDk0OnN0YXRpYyBzdHJ1Y3QgcHRwX29jcF9lZXByb21fbWFwIGZiX2VlcHJvbV9tYXBbXSA9IHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00OTUtXHR7IEVFUFJPTV9FTlRSWSgweDQzLCBib2FyZF9pZCkgfSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDk5LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUwMDpzdGF0aWMgc3RydWN0IHB0cF9vY3BfZWVwcm9tX21hcCBhcnRfZWVwcm9tX21hcFtdID0ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUwMS1cdHsgRUVQUk9NX0VOVFJZKDB4MjAwICYjNDM7IDB4NDMsIGJvYXJkX2lkKSB9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MTEtI2RlZmluZSBPQ1BfUkVTX0xPQ0FUSU9OKG1lbWJlcikgXFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1MTI6XHQubmFtZSA9ICNtZW1iZXIsIC5icF9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX29jcCwgbWVtYmVyKVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUxMy1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MTQtI2RlZmluZSBPQ1BfTUVNX1JFU09VUkNFKG1lbWJlcikgXFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1MTU6XHRPQ1BfUkVTX0xPQ0FUSU9OKG1lbWJlciksIC5zZXR1cCA9IHB0cF9vY3BfcmVnaXN0ZXJfbWVtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTE2LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUxNy0jZGVmaW5lIE9DUF9TRVJJQUxfUkVTT1VSQ0UobWVtYmVyKSBcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUxODpcdE9DUF9SRVNfTE9DQVRJT04obWVtYmVyKSwgLnNldHVwID0gcHRwX29jcF9yZWdpc3Rlcl9zZXJpYWxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MTktXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTIwLSNkZWZpbmUgT0NQX0kyQ19SRVNPVVJDRShtZW1iZXIpIFxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTIxOlx0T0NQX1JFU19MT0NBVElPTihtZW1iZXIpLCAuc2V0dXAgPSBwdHBfb2NwX3JlZ2lzdGVyX2kyY1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUyMi1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MjMtI2RlZmluZSBPQ1BfU1BJX1JFU09VUkNFKG1lbWJlcikgXFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1MjQ6XHRPQ1BfUkVTX0xPQ0FUSU9OKG1lbWJlciksIC5zZXR1cCA9IHB0cF9vY3BfcmVnaXN0ZXJfc3BpXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTI1LVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUyNi0jZGVmaW5lIE9DUF9FWFRfUkVTT1VSQ0UobWVtYmVyKSBcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUyNzpcdE9DUF9SRVNfTE9DQVRJT04obWVtYmVyKSwgLnNldHVwID0gcHRwX29jcF9yZWdpc3Rlcl9leHRcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MjgtXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTU1Nj1zdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfZmJfcmVzb3VyY2VbXSA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTYzLVx0XHQub2Zmc2V0ID0gMHgwMTAxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTY0Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01NjUtXHRcdFx0LmluZGV4ID0gMCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1NjY6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1Njc6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU2OC1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTcyLVx0XHQub2Zmc2V0ID0gMHgwMTAyMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTczOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01NzQtXHRcdFx0LmluZGV4ID0gMSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1NzU6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1NzY6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU3Ny1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTgxLVx0XHQub2Zmc2V0ID0gMHgwMTA2MDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDYsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTgyOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01ODMtXHRcdFx0LmluZGV4ID0gMixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1ODQ6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1ODU6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU4Ni1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTkwLVx0XHQub2Zmc2V0ID0gMHgwMTExMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDE1LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjU5MTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTkyLVx0XHRcdC5pbmRleCA9IDMsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTkzOlx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTk0Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01OTUtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU5OS1cdFx0Lm9mZnNldCA9IDB4MDExMjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxNixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MDA6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTYwMS1cdFx0XHQuaW5kZXggPSA0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYwMjpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYwMzpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjA0LVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MDktXHRcdC5vZmZzZXQgPSAweDAxMEMwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MTA6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTYxMS1cdFx0XHQuaW5kZXggPSA1LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYxMjpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYxMzpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjE0LVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MTgtXHRcdC5vZmZzZXQgPSAweDAxMEQwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjE5Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MjAtXHRcdFx0LmluZGV4ID0gMSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MjE6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjIyOlx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjIzLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MjctXHRcdC5vZmZzZXQgPSAweDAxMEUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjI4Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MjktXHRcdFx0LmluZGV4ID0gMixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MzA6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjMxOlx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjMyLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MzYtXHRcdC5vZmZzZXQgPSAweDAxMEYwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTMsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjM3Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MzgtXHRcdFx0LmluZGV4ID0gMyxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2Mzk6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjQwOlx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjQxLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02NDUtXHRcdC5vZmZzZXQgPSAweDAxMTAwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTQsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjQ2Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02NDctXHRcdFx0LmluZGV4ID0gNCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2NDg6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjQ5Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjUwLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MDItXHRcdC5vZmZzZXQgPSAweDAwMTUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gNyxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3MDM6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9pMmNfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTcwNC1cdFx0XHQubmFtZSA9IFwmIzM0O3hpaWMtaTJjXCYjMzQ7LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MTktXHRcdC5vZmZzZXQgPSAweDAwMTYwMDAwICYjNDM7IDB4MTAwMCwgLmlycV92ZWMgPSAzLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjcyMDpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzIxLVx0XHRcdC5iYXVkID0gMTE1MjAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MjYtXHRcdC5vZmZzZXQgPSAweDAwMTcwMDAwICYjNDM7IDB4MTAwMCwgLmlycV92ZWMgPSA0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjcyNzpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzI4LVx0XHRcdC5iYXVkID0gMTE1MjAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MzMtXHRcdC5vZmZzZXQgPSAweDAwMTgwMDAwICYjNDM7IDB4MTAwMCwgLmlycV92ZWMgPSA1LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjczNDpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzM1LVx0XHRcdC5iYXVkID0gNTc2MDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTc0NC1cdFx0Lm9mZnNldCA9IDB4MDAzMTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSA5LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjc0NTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2ZsYXNoX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03NDYtXHRcdFx0Lm5hbWUgPSBcJiMzNDt4aWxpbnhfc3BpXCYjMzQ7LCAucGNpX29mZnNldCA9IDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTc3NS1cdHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3NzY6XHRcdC5zZXR1cCA9IHB0cF9vY3BfZmJfYm9hcmRfaW5pdCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3Nzc6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9zZXJ2b19jb25mKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzc4LVx0XHRcdC5zZXJ2b19vZmZzZXRfcCA9IDB4MjAwMCxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9Nzk3PXN0YXRpYyBzdHJ1Y3Qgb2NwX3Jlc291cmNlIG9jcF9hcnRfcmVzb3VyY2VbXSA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODA0LVx0XHQub2Zmc2V0ID0gMHgwMDE2MDAwMCAmIzQzOyAweDEwMDAsIC5pcnFfdmVjID0gMyxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MDU6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9zZXJpYWxfcG9ydCkge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgwNi1cdFx0XHQuYmF1ZCA9IDExNTIwMCxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODE2LVx0XHQub2Zmc2V0ID0gMHgzNjAwMDAsIC5zaXplID0gMHgyMCwgLmlycV92ZWMgPSAxMixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MTc6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgxOC1cdFx0XHQuaW5kZXggPSAwLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgxOTpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgyMDpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODIxLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04MjUtXHRcdC5vZmZzZXQgPSAweDM4MDAwMCwgLnNpemUgPSAweDIwLCAuaXJxX3ZlYyA9IDgsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODI2Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04MjctXHRcdFx0LmluZGV4ID0gMSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4Mjg6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4Mjk6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgzMC1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODM0LVx0XHQub2Zmc2V0ID0gMHgzOTAwMDAsIC5zaXplID0gMHgyMCwgLmlycV92ZWMgPSAxMCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MzU6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgzNi1cdFx0XHQuaW5kZXggPSAyLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgzNzpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgzODpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODM5LVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NDMtXHRcdC5vZmZzZXQgPSAweDNBMDAwMCwgLnNpemUgPSAweDIwLCAuaXJxX3ZlYyA9IDE0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg0NDpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODQ1LVx0XHRcdC5pbmRleCA9IDMsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODQ2Olx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODQ3Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NDgtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg1Mi1cdFx0Lm9mZnNldCA9IDB4M0IwMDAwLCAuc2l6ZSA9IDB4MjAsIC5pcnFfdmVjID0gMTUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODUzOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NTQtXHRcdFx0LmluZGV4ID0gNCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NTU6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NTY6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg1Ny1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODYyLVx0XHQub2Zmc2V0ID0gMHgwMDMzMDAwMCwgLnNpemUgPSAweDIwLCAuaXJxX3ZlYyA9IDExLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg2MzpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODY0LVx0XHRcdC5pbmRleCA9IDUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODY1Olx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODY2Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NjctXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg3MS1cdFx0Lm9mZnNldCA9IDB4MDAzMTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSA5LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg3MjpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2ZsYXNoX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NzMtXHRcdFx0Lm5hbWUgPSBcJiMzNDtzcGlfYWx0ZXJhXCYjMzQ7LCAucGNpX29mZnNldCA9IDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg4Ni1cdFx0Lm9mZnNldCA9IDB4MzUwMDAwLCAuc2l6ZSA9IDB4MTAwLCAuaXJxX3ZlYyA9IDQsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODg3Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfaTJjX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04ODgtXHRcdFx0Lm5hbWUgPSBcJiMzNDtvY29yZXMtaTJjXCYjMzQ7LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MDMtXHRcdC5vZmZzZXQgPSAweDAwMTkwMDAwLCAuaXJxX3ZlYyA9IDcsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTA0Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnQpIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MDUtXHRcdFx0LmJhdWQgPSA5NjAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MTItXHR7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTEzOlx0XHQuc2V0dXAgPSBwdHBfb2NwX2FydF9ib2FyZF9pbml0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjkxNDpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcnZvX2NvbmYpIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MTUtXHRcdFx0LnNlcnZvX29mZnNldF9wID0gMHgyMDAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz05MjQ9c3RhdGljIHN0cnVjdCBvY3BfcmVzb3VyY2Ugb2NwX2FkdmFfcmVzb3VyY2VbXSA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTMxLVx0XHQub2Zmc2V0ID0gMHgwMTAxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTMyOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MzMtXHRcdFx0LmluZGV4ID0gMCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5MzQ6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5MzU6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTkzNi1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTQwLVx0XHQub2Zmc2V0ID0gMHgwMTAyMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTQxOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NDItXHRcdFx0LmluZGV4ID0gMSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NDM6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NDQ6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk0NS1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTQ5LVx0XHQub2Zmc2V0ID0gMHgwMTA2MDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDYsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTUwOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NTEtXHRcdFx0LmluZGV4ID0gMixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NTI6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NTM6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk1NC1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTU5LVx0XHQub2Zmc2V0ID0gMHgwMTBDMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDAsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTYwOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NjEtXHRcdFx0LmluZGV4ID0gNSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NjI6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NjM6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk2NC1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTY4LVx0XHQub2Zmc2V0ID0gMHgwMTBEMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDExLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk2OTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTcwLVx0XHRcdC5pbmRleCA9IDEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTcxOlx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF9zaWduYWxfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk3MjpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk3My1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTc3LVx0XHQub2Zmc2V0ID0gMHgwMTBFMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEyLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk3ODpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTc5LVx0XHRcdC5pbmRleCA9IDIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTgwOlx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF9zaWduYWxfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk4MTpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk4Mi1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTAxNC1cdFx0Lm9mZnNldCA9IDB4MDAxNjAwMDAgJiM0MzsgMHgxMDAwLCAuaXJxX3ZlYyA9IDMsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTAxNTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTAxNi1cdFx0XHQuYmF1ZCA9IDk2MDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMjEtXHRcdC5vZmZzZXQgPSAweDAwMTgwMDAwICYjNDM7IDB4MTAwMCwgLmlycV92ZWMgPSA1LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwMjI6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9zZXJpYWxfcG9ydCkge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMjMtXHRcdFx0LmJhdWQgPSAxMTUyMDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMzYtXHRcdC5vZmZzZXQgPSAweDAwMzEwNDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gOSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMDM3Olx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZmxhc2hfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMzgtXHRcdFx0Lm5hbWUgPSBcJiMzNDtzcGlfYWx0ZXJhXCYjMzQ7LCAucGNpX29mZnNldCA9IDAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwNTEtXHRcdC5vZmZzZXQgPSAweDE1MDAwMCwgLnNpemUgPSAweDEwMCwgLmlycV92ZWMgPSA3LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwNTI6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9pMmNfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwNTMtXHRcdFx0Lm5hbWUgPSBcJiMzNDtvY29yZXMtaTJjXCYjMzQ7LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDcwLVx0e1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwNzE6XHRcdC5zZXR1cCA9IHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwNzI6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9hZHZhX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDczLVx0XHRcdC5zZXJ2byA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9MTA4OT1zdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfYWR2YV94MV9yZXNvdXJjZVtdID0ge1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDk2LVx0XHQub2Zmc2V0ID0gMHgwMTAxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTA5NzpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTA5OC1cdFx0XHQuaW5kZXggPSAwLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwOTk6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTAwOlx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTAxLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTA1LVx0XHQub2Zmc2V0ID0gMHgwMTAyMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEwNjpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEwNy1cdFx0XHQuaW5kZXggPSAxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMDg6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTA5Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTEwLVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTE0LVx0XHQub2Zmc2V0ID0gMHgwMTA2MDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDYsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTExNTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTExNi1cdFx0XHQuaW5kZXggPSAyLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMTc6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTE4Olx0XHRcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTE5LVx0XHR9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTIzLVx0XHQub2Zmc2V0ID0gMHgwMTExMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDE1LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMjQ6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExMjUtXHRcdFx0LmluZGV4ID0gMyxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTI2Olx0XHRcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEyNzpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEyOC1cdFx0fSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEzMi1cdFx0Lm9mZnNldCA9IDB4MDExMjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxNixcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTMzOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTM0LVx0XHRcdC5pbmRleCA9IDQsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEzNTpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMzY6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExMzctXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNDItXHRcdC5vZmZzZXQgPSAweDAxMEMwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMCxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTQzOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTQ0LVx0XHRcdC5pbmRleCA9IDUsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE0NTpcdFx0XHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNDY6XHRcdFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNDctXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNTEtXHRcdC5vZmZzZXQgPSAweDAxMEQwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE1MjpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE1My1cdFx0XHQuaW5kZXggPSAxLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNTQ6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE1NTpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNTYtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNjAtXHRcdC5vZmZzZXQgPSAweDAxMEUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTIsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE2MTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE2Mi1cdFx0XHQuaW5kZXggPSAyLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNjM6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE2NDpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNjUtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNjktXHRcdC5vZmZzZXQgPSAweDAxMEYwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTMsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE3MDpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE3MS1cdFx0XHQuaW5kZXggPSAzLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNzI6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE3MzpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNzQtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNzgtXHRcdC5vZmZzZXQgPSAweDAxMTAwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTQsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE3OTpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE4MC1cdFx0XHQuaW5kZXggPSA0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExODE6XHRcdFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE4MjpcdFx0XHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExODMtXHRcdH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMTUtXHRcdC5vZmZzZXQgPSAweDAwMTYwMDAwICYjNDM7IDB4MTAwMCwgLmlycV92ZWMgPSAzLFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEyMTY6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9zZXJpYWxfcG9ydCkge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMTctXHRcdFx0LmJhdWQgPSA5NjAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjIyLVx0XHQub2Zmc2V0ID0gMHgwMDE4MDAwMCAmIzQzOyAweDEwMDAsIC5pcnFfdmVjID0gNSxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMjIzOlx0XHQuZXh0cmEgPSBcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnQpIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjI0LVx0XHRcdC5iYXVkID0gMTE1MjAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjQ1LVx0XHQub2Zmc2V0ID0gMHgwMDMxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDksXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTI0NjpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2ZsYXNoX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjQ3LVx0XHRcdC5uYW1lID0gXCYjMzQ7eGlsaW54X3NwaVwmIzM0OywgLnBjaV9vZmZzZXQgPSAwLFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjYyLVx0XHQub2Zmc2V0ID0gMHgwMDE1MDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDcsXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTI2MzpcdFx0LmV4dHJhID0gXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2kyY19pbmZvKSB7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTI2NC1cdFx0XHQubmFtZSA9IFwmIzM0O3hpaWMtaTJjXCYjMzQ7LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjc3LVx0e1xuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEyNzg6XHRcdC5zZXR1cCA9IHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0LFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEyNzk6XHRcdC5leHRyYSA9IFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9hZHZhX2luZm8pIHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjgwLVx0XHRcdC5zZXJ2byA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTI5Ni1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMjk3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwdHBfb2NwX3BjaWRldl9pZFtdID0ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyOTgtXHR7IFBDSV9ERVZJQ0VfREFUQShNRVRBLCBUSU1FQ0FSRCwgXHUwMDI2b2NwX2ZiX3Jlc291cmNlKSB9LFxuLS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMzA0LX07XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMwNTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgcHRwX29jcF9wY2lkZXZfaWQpO1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEzMDYtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMwNzpzdGF0aWMgREVGSU5FX01VVEVYKHB0cF9vY3BfbG9jayk7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMwODpzdGF0aWMgREVGSU5FX0lEUihwdHBfb2NwX2lkcik7XG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTMwOS1cbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMzEwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NwX3NlbGVjdG9yIHB0cF9vY3BfY2xvY2tbXSA9IHtcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMzExLVx0eyAubmFtZSA9IFwmIzM0O05PTkVcJiMzNDssXHQudmFsdWUgPSAwIH0sXG4tLVxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEzMjYtXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMyNzpzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9zZWxlY3RvciBwdHBfb2NwX3NtYV9pbltdID0ge1xuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEzMjgtXHR7IC5uYW1lID0gXCYjMzQ7MTBNaHpcJiMzNDssICAudmFsdWUgPSAweDAwMDAsICAgICAgLmZyZXF1ZW5jeSA9IDEwMDAwMDAwIH0sXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk4MAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBUUCBPQ1AgVGltZSBDYXJkIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcHRwX29jcC5jYCBkcml2ZXIuIEl0JiMzOTtzIHRoZSAmIzM0O09wZW4gQ29tcHV0ZSBQcm9qZWN0IHRpbWUgY2FyZCBkcml2ZXImIzM0Oywgc28gaXQmIzM5O3MgYSBQQ0kgZGV2aWNlIGRyaXZlciwgd2hpY2ggaXMgdGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlLiBJdCYjMzk7cyByZWdpc3RlcmluZyBpdHNlbGYgYXMgc3VjaC4gVGhlIHBhdGNoIGFkZHMgZmlybXdhcmUgdXBsb2FkIGZ1bmN0aW9uYWxpdHkgdXNpbmcgdGhlIGBmaXJtd2FyZV91cGxvYWRgIGZyYW1ld29yay4gSW50ZXJlc3RpbmcuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/CgpSaWdodCwgaXQmIzM5O3MgYSBQQ0kgZHJpdmVyLiBJdCBiaW5kcyB0byBzcGVjaWZpYyBQQ0kgSURzOiBgUENJX0RFVklDRV9JRF9NRVRBX1RJTUVDQVJEYCAoMHgwNDAwKSwgYFBDSV9ERVZJQ0VfSURfT1JPTElBX0FSVF9USU1FQ0FSRGAgKDB4MDQwMCksIGFuZCBgUENJX0RFVklDRV9JRF9BRFZBX1RJTUVDQVJEYCAoMHgwNDEwKS4gU28sIGl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBhIGdlbmVyYWwtcHVycG9zZSBkcml2ZXI7IGl0JiMzOTtzIHNwZWNpZmljIGhhcmR3YXJlLgoKQnV0LCBoYW5nIG9uLi4uIGNhbiBzeXprYWxsZXIgZnV6eiB0aGlzPyBTeXprYWxsZXIgaGFzIHRoaXMgcHNldWRvLVBDSSBzdWJzeXN0ZW0sIGRvZXNuJiMzOTt0IGl0PyBJdCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIHdpdGggYXJiaXRyYXJ5IHZlbmRvci9kZXZpY2UgSURzIGlmIGl0IGhhcyBkZXNjcmlwdGlvbnMgZm9yIHRoZW0uIFRoYXQgY291bGQgb3BlbiB1cCBhbiBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhbnkgZGVzY3JpcHRpb25zIGZvciBgcHRwX29jcGA/IEkgbmVlZCB0byBjaGVjayB0aGUgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3B0cF9vY3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTU1MQoJCQkJCQkJb3V0cHV0OiAxMzIKCQkJCQkJCXRob3VnaHRzOiAxODUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZSBEZWNpc2lvbiAtIHB0cF9vY3AgRHJpdmVyIEFuYWx5c2lzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHJlc3RyaWN0aW9ucyDigJMgbm8gc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxscyBvciBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gR290IGl0LiBBbmQgSSBkb24mIzM5O3QgaGF2ZSB0aG9zZSBzcGVjaWFsIGBzeXotZ3JlcHBlcmAgb3IgYHJlYWQtc3l6LXNwZWNgIHRvb2xzLCBzbyBJJiMzOTtsbCB3b3JrIHdpdGggd2hhdCBJICpkbyogaGF2ZS4gIAoKTm93LCBhYm91dCB0aGlzIGBwdHBfb2NwYCBkcml2ZXIuIElzIGl0IHZlbmRvci1zcGVjaWZpYz8gSXTigJlzIGZvciB0aGUgT3BlbiBDb21wdXRlIFByb2plY3QgdGltZSBjYXJkLCBhIHNwZWNpZmljIFBDSWUgaGFyZHdhcmUgY2FyZC4gIERvZXMgaXQgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlPyBBaCwgdGhhdCYjMzk7cyB0aGUga2V5LiAgU3l6a2FsbGVyJiMzOTtzIHBzZXVkby1QQ0kgb25seSBlbXVsYXRlcyB0aGUgUENJIGNvbmZpZyBzcGFjZSBhbmQgYmFzaWMgQkFScywgbm90IHRoZSBhY3R1YWwgZGV2aWNlJiMzOTtzIGludGVybmFsIGxvZ2ljIGxpa2UgdGhlIENQTEQsIEkyQyBidXMsIGFuZCBNaWNyb0JsYXplIGZpcm13YXJlLiBUaGlzIHBhdGNoIGludGVyYWN0cyB3aXRoIGhhcmR3YXJlIHJlZ2lzdGVycy4KClRoaXMgcGF0Y2ggYWRkcyBJMkMgY29tbXVuaWNhdGlvbiB3aXRoIGEgQ1BMRC4gTG9va2luZyBhdCB0aGUgY29kZTogYGFkdmFfeDFfbWJsYXplX2FjcXVpcmVgIGV4cGVjdHMgc3BlY2lmaWMgcmVzcG9uc2VzIChgTUJMQVpFX0dSQU5URURgKS4gVGhpcyBjb2RlIHVzZXMgYGlvd3JpdGUzMmAgYW5kIGBpb3JlYWQzMmAgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIHdhaXRzIGZvciBhIHNwZWNpZmljIHJlc3BvbnNlLiAgSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgdGhvc2UgYGlvcmVhZDMyYCBjYWxscyB3aWxsIGxpa2VseSByZXR1cm4gemVybyBvciBgMHhmZmZmZmZmZmAsIHNvIGBhZHZhX3gxX21ibGF6ZV9hY3F1aXJlYCB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCB3aXRoIHRpbWVvdXQuIElmIGl0IGZhaWxzLCBhbGwgdGhlIHN1YnNlcXVlbnQgY29kZSwgSTJDIHRyYW5zZmVycywgQ1BMRCBjb21tYW5kcywgYW5kIGZpcm13YXJlIHVwbG9hZHMsIHdpbGwgYmUgY29tcGxldGVseSB1bnJlYWNoYWJsZS4gQW5kIHRoZSBgYWR2YV9jcGxkX3dyaXRlYCBjYWxscyBgYWR2YV94MV9pMmNfeGZlcmAuCgpUaGUgcHJvbXB0IGdpdmVzIGEgY291cGxlIG9mIHNwZWNpZmljIHJlYXNvbnMgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCBzYXlzOiAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LiBBbmQsICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VJiMzNDsuIFNpbmNlIGBwdHBfb2NwYCBpcyBhIGRyaXZlciBmb3IgdGhlIE9DUCBUaW1lY2FyZCwgd2hpY2ggaXMgYSAqcGh5c2ljYWwqIFBDSWUgY2FyZCwgYW5kIHRoZSBuZXcgY29kZSBkaXJlY3RseSBjb21tdW5pY2F0ZXMgd2l0aCB0aGlzIGhhcmR3YXJlIChNaWNyb0JsYXplLCBJMkMgbXV4LCBDUExEKSB0aGF0JiMzOTtzIG5vdCBlbXVsYXRlZCBpbiBRRU1VLCBpdCBmYWxscyBzcXVhcmVseSBpbnRvIHRoYXQgZmlyc3QgY2F0ZWdvcnkuIFRoaXMgY29kZSBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYmVjYXVzZSBpdCBleHBsaWNpdGx5IHdhaXRzIGZvciB0aGUgaGFyZHdhcmUgdG8gYmUgaW4gYSBjZXJ0YWluIHN0YXRlLCBhbmQgdGhhdCBzdGF0ZSBjYW4mIzM5O3QgYmUgYWNoaWV2ZWQgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLiAgCgpFdmVuIGlmIGl0IGdldHMgcGFzdCB0aGUgTWljcm9CbGF6ZSBncmFudCwgdGhlIGBpMmNfdHJhbnNmZXJgIHdpbGwgZmFpbCBiZWNhdXNlIHRoZSBoYXJkd2FyZSBJMkMgY29udHJvbGxlciBpcyBub3QgZW11bGF0ZWQgb3IgcG9zc2libHkgbm90IGV2ZW4gcmVnaXN0ZXJlZC4gU28sIHRoZXJlIGlzIG5vIHdheSB0byByZWFjaCB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVzZSBjaGFuZ2VzIGFyZSBjb250YWluZWQgd2l0aGluIHRoYXQgZHJpdmVyIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBnZW5lcmljIGtlcm5lbCBtb2RpZmljYXRpb25zLiBMb29rcyBsaWtlIEkmIzM5O20gZ29vZDogdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gYERvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdGltZWNhcmRgIGFuZCBgZHJpdmVycy9wdHAvcHRwX29jcC5jYC4gTm8gZ2VuZXJpYyBjaGFuZ2VzLgpPaywgSSB3aWxsIGZvcm11bGF0ZSB0aGUgcmVzcG9uc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIENQTEQgZmlybXdhcmUgdXBsb2FkIGFuZCBzeXNmcyBhdHRyaWJ1dGVzIGZvciB0aGUgQURWQSB4MSBPQ1AgVGltZWNhcmQsIHdoaWNoIGlzIGEgcGh5c2ljYWwgUENJZSBkZXZpY2UuIFRoZSBuZXcgY29kZSBoZWF2aWx5IHJlbGllcyBvbiBoYXJkd2FyZS1zcGVjaWZpYyBpbnRlcmFjdGlvbnMgKGUuZy4sIHBvbGxpbmcgTU1JTyByZWdpc3RlcnMgZm9yIE1pY3JvQmxhemUgZmlybXdhcmUgZ3JhbnRzLCBJMkMgY29tbXVuaWNhdGlvbiB3aXRoIGEgUENBOTU0OCBtdXggYW5kIExhdHRpY2UgQ1BMRCkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBjb3JlIGxvZ2ljIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBDUExEIGZpcm13YXJlIHVwbG9hZCBhbmQgc3lzZnMgYXR0cmlidXRlcyBmb3IgdGhlIEFEVkEgeDEgT0NQIFRpbWVjYXJkLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlLiBUaGUgbmV3IGNvZGUgaGVhdmlseSByZWxpZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgaW50ZXJhY3Rpb25zIChlLmcuLCBwb2xsaW5nIE1NSU8gcmVnaXN0ZXJzIGZvciBNaWNyb0JsYXplIGZpcm13YXJlIGdyYW50cywgSTJDIGNvbW11bmljYXRpb24gd2l0aCBhIFBDQTk1NDggbXV4IGFuZCBMYXR0aWNlIENQTEQpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgY29yZSBsb2dpYyBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo0MTowOS4wMDk3MzU5MjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODE3NjA3OTc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBDUExEIGZpcm13YXJlIHVwbG9hZCBhbmQgc3lzZnMgYXR0cmlidXRlcyBmb3IgdGhlIEFEVkEgeDEgT0NQIFRpbWVjYXJkLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlLiBUaGUgbmV3IGNvZGUgaGVhdmlseSByZWxpZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgaW50ZXJhY3Rpb25zIChlLmcuLCBwb2xsaW5nIE1NSU8gcmVnaXN0ZXJzIGZvciBNaWNyb0JsYXplIGZpcm13YXJlIGdyYW50cywgSTJDIGNvbW11bmljYXRpb24gd2l0aCBhIFBDQTk1NDggbXV4IGFuZCBMYXR0aWNlIENQTEQpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgY29yZSBsb2dpYyBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjQxOjA5LjAwOTc0MjM3NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI0MDAyMzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjFjNTM0NzZmNWVhMDM5YWMxYTM0NGQxYjk5MGRmOWE0Zjk1NzY2YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDE5OjQxOjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdGltZWNhcmQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkXFxuaW5kZXggM2FlNDFiNzYzNGFjOS4uZjdjOTk1NWFjYjBhOSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZFxcbkBAIC0xMSw2ICsxMSw0MCBAQCBDb250YWN0OlxcdEpvbmF0aGFuIExlbW9uIFxcdTAwM2Nqb25hdGhhbi5sZW1vbkBnbWFpbC5jb21cXHUwMDNlXFxuIERlc2NyaXB0aW9uOlxcdFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBOdGggdGltZWNhcmRcXG4gXFx0XFx0cmVnaXN0ZXJlZC5cXG4gXFxuK1doYXQ6XFx0XFx0L3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2NwbGRfZGV2aWNlX2lkXFxuK0RhdGU6XFx0XFx0SnVseSAyMDI2XFxuK0NvbnRhY3Q6XFx0U2FnaSBNYWltb24gXFx1MDAzY21haW1vbi5zYWdpQGdtYWlsLmNvbVxcdTAwM2VcXG4rRGVzY3JpcHRpb246XFx0KFJPKSBUaGUgMzItYml0IExhdHRpY2UgZGV2aWNlIElEIG9mIHRoZSBUQVAgQ1BMRCwgcmVwb3J0ZWQgYXNcXG4rXFx0XFx0YSBoZXggc3RyaW5nLCBlLmcuIFxcXCIweGUxMmJjMDQzXFxcIi5cXG4rXFxuK1xcdFxcdE9ubHkgcHJlc2VudCBvbiBBRFZBIHgxIFRBUCBib2FyZHMgKFBDSSBJRCAweGFkNWE6MHgwNDEwKS5cXG4rXFx0XFx0VGhlIExhdHRpY2UgTENNWE8zTEYtMjEwIHJlcG9ydHMgMHhlMTJiYzA0My5cXG4rXFxuK1xcdFxcdFRoZSBkcml2ZXIgYWNxdWlyZXMgdGhlIE1pY3JvQmxhemUgSTJDIGJ1cyBpbnRlcm5hbGx5IGJlZm9yZVxcbitcXHRcXHRpc3N1aW5nIHRoZSBSRUFEX0lEQ09ERSBjb21tYW5kOyBubyBidXMgYXJiaXRyYXRpb24gaXMgcmVxdWlyZWRcXG4rXFx0XFx0ZnJvbSB1c2Vyc3BhY2UuXFxuK1xcbitXaGF0OlxcdFxcdC9zeXMvY2xhc3MvdGltZWNhcmQvb2NwTi9jcGxkX3N0YXR1c1xcbitEYXRlOlxcdFxcdEp1bHkgMjAyNlxcbitDb250YWN0OlxcdFNhZ2kgTWFpbW9uIFxcdTAwM2NtYWltb24uc2FnaUBnbWFpbC5jb21cXHUwMDNlXFxuK0Rlc2NyaXB0aW9uOlxcdChSTykgVGhlIHN0YXR1cyByZWdpc3RlciBvZiB0aGUgVEFQIENQTEQsIGluIGh1bWFuLXJlYWRhYmxlXFxuK1xcdFxcdGZvcm06XFxuK1xcbitcXHRcXHQgIGRvbmU9XFx1MDAzYzB8MVxcdTAwM2UgYnVzeT1cXHUwMDNjMHwxXFx1MDAzZSBmYWlsZWQ9XFx1MDAzYzB8MVxcdTAwM2VcXG4rXFxuK1xcdFxcdE9ubHkgcHJlc2VudCBvbiBBRFZBIHgxIFRBUCBib2FyZHMgKFBDSSBJRCAweGFkNWE6MHgwNDEwKS5cXG4rXFxuK1xcdFxcdGRvbmU9MSBpbmRpY2F0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gZmxhc2ggd2FzIHN1Y2Nlc3NmdWxseVxcbitcXHRcXHRwcm9ncmFtbWVkIGFuZCBpcyBhY3RpdmUuICBidXN5PTEgbWVhbnMgYW4gaW50ZXJuYWwgb3BlcmF0aW9uXFxuK1xcdFxcdGlzIGluIHByb2dyZXNzLiAgZmFpbGVkPTEgbWVhbnMgdGhlIGxhc3QgSVNDIG9wZXJhdGlvbiBmYWlsZWQuXFxuK1xcbitcXHRcXHRUaGUgZHJpdmVyIGFjcXVpcmVzIHRoZSBNaWNyb0JsYXplIEkyQyBidXMgaW50ZXJuYWxseTsgbm8gYnVzXFxuK1xcdFxcdGFyYml0cmF0aW9uIGlzIHJlcXVpcmVkIGZyb20gdXNlcnNwYWNlLlxcbitcXG4rXFx0XFx0VG8gcHJvZ3JhbSBuZXcgQ1BMRCBmaXJtd2FyZSB1c2UgdGhlIHN0YW5kYXJkIGtlcm5lbFxcbitcXHRcXHRmaXJtd2FyZS11cGxvYWQgaW50ZXJmYWNlIHJlZ2lzdGVyZWQgYXQ6XFxuK1xcdFxcdC9zeXMvY2xhc3MvZmlybXdhcmUvYWR2YS1jcGxkL1xcbitcXG4gV2hhdDpcXHRcXHQvc3lzL2NsYXNzL3RpbWVjYXJkL29jcE4vYXZhaWxhYmxlX2Nsb2NrX3NvdXJjZXNcXG4gRGF0ZTpcXHRcXHRTZXB0ZW1iZXIgMjAyMVxcbiBDb250YWN0OlxcdEpvbmF0aGFuIExlbW9uIFxcdTAwM2Nqb25hdGhhbi5sZW1vbkBnbWFpbC5jb21cXHUwMDNlXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL3B0cF9vY3AuYyBiL2RyaXZlcnMvcHRwL3B0cF9vY3AuY1xcbmluZGV4IDM1ZTkxMWYxYWQ3OGMuLmRiOGFiMTYxZDRmMGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9wdHAvcHRwX29jcC5jXFxuKysrIGIvZHJpdmVycy9wdHAvcHRwX29jcC5jXFxuQEAgLTI0LDYgKzI0LDExIEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9udm1lbS1jb25zdW1lci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY3JjMTYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RwbGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlybXdhcmUuaFxcdTAwM2VcXG4gXFxuICNkZWZpbmUgUENJX0RFVklDRV9JRF9NRVRBX1RJTUVDQVJEXFx0XFx0MHgwNDAwXFxuIFxcbkBAIC04NSw2ICs5MCw3IEBAIHN0cnVjdCBwdHBfb2NwX2FkdmFfaW5mbyB7XFxuIFxcdHU4XFx0XFx0XFx0XFx0c2lnbmFsc19ucjtcXG4gXFx0dThcXHRcXHRcXHRcXHRmcmVxX2luX25yO1xcbiBcXHRjb25zdCBzdHJ1Y3Qgb2NwX2F0dHJfZ3JvdXBcXHQqYXR0cl9ncm91cHM7XFxuK1xcdGJvb2xcXHRcXHRcXHRcXHRoYXNfY3BsZDsgLyogeDE6IHN1cHBvcnRzIENQTEQgZmlybXdhcmUgdXBsb2FkICovXFxuIH07XFxuIFxcbiAjZGVmaW5lIE9DUF9DVFJMX0VOQUJMRVxcdFxcdEJJVCgwKVxcbkBAIC0xNjMsNyArMTY5LDggQEAgc3RydWN0IGdwaW9fcmVnIHtcXG4gXFx0dTMyXFx0Z3BpbzE7XFxuIFxcdHUzMlxcdF9fcGFkMDtcXG4gXFx0dTMyXFx0Z3BpbzI7XFxuLVxcdHUzMlxcdF9fcGFkMTtcXG4rXFx0LyogYWR2YV94MTogSTJDIGJ1cyBvd25lcnNoaXAgcmVnaXN0ZXI7IHJlc2VydmVkIG9uIG90aGVyIHZhcmlhbnRzICovXFxuK1xcdHUzMlxcdGkyY19idXNfY3RybDtcXG4gfTtcXG4gXFxuIHN0cnVjdCBpcmlnX21hc3Rlcl9yZWcge1xcbkBAIC00MTYsNiArNDIzLDEyIEBAIHN0cnVjdCBwdHBfb2NwIHtcXG4gXFx0ZHBsbF90cmFja2VyIHRyYWNrZXI7XFxuIFxcdGludCBzaWduYWxzX25yO1xcbiBcXHRpbnQgZnJlcV9pbl9ucjtcXG4rXFx0LyogYWR2YV94MSBDUExEIEkyQyAoaW50ZXJuYWwgdXNlIG9ubHkpICovXFxuK1xcdHN0cnVjdCBtdXRleFxcdFxcdGNwbGRfbG9jazsgICAgICAgICAgICAvKiBzZXJpYWxpc2VzIENQTEQgb3BlcmF0aW9ucyAqL1xcbitcXHRpbnRcXHRcXHRcXHRjcGxkX2kyY19hZGFwX25yOyAgICAgLyogSTJDIGFkYXB0ZXIgbnI7IC0xIGlmIGFic2VudCAqL1xcbitcXHRzdHJ1Y3QgZndfdXBsb2FkXFx0KmNwbGRfZndfdXBsb2FkOyAgICAgIC8qIGZpcm13YXJlIHVwbG9hZCBoYW5kbGU7IE5VTEwgaWYgYWJzZW50ICovXFxuK1xcdGJvb2xcXHRcXHRcXHRjcGxkX2NhbmNlbDsgICAgICAgICAgLyogY2FuY2VsbGF0aW9uIHJlcXVlc3RlZCAqL1xcbitcXHRib29sXFx0XFx0XFx0Y3BsZF9pbl9jb25maWdfbW9kZTsgIC8qIEVOX0NGR19UUCBpc3N1ZWQgYnV0IG5vdCB5ZXQgUkVGUkVTSCdkICovXFxuIH07XFxuIFxcbiAjZGVmaW5lIE9DUF9SRVFfVElNRVNUQU1QXFx0QklUKDApXFxuQEAgLTQ0OSw2ICs0NjIsOCBAQCBzdGF0aWMgaW50IHB0cF9vY3BfYXJ0X2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcXG4gXFxuIHN0YXRpYyBpbnQgcHRwX29jcF9hZHZhX2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcXG4gXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZndfdXBsb2FkX29wcyBhZHZhX2NwbGRfdXBsb2FkX29wcztcXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NwX3NtYV9vcCBvY3BfYWR2YV9zbWFfb3A7XFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NwX3NtYV9vcCBvY3BfYWR2YV94MV9zbWFfb3A7XFxuIFxcbkBAIC0xMjczLDYgKzEyODgsNyBAQCBzdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfYWR2YV94MV9yZXNvdXJjZVtdID0ge1xcbiBcXHRcXHRcXHQuc2lnbmFsc19uciAgID0gNCxcXG4gXFx0XFx0XFx0LmZyZXFfaW5fbnIgICA9IDQsXFxuIFxcdFxcdFxcdC5hdHRyX2dyb3VwcyAgPSBhZHZhX3RpbWVjYXJkX3gxX2dyb3VwcyxcXG4rXFx0XFx0XFx0Lmhhc19jcGxkICAgICA9IHRydWUsXFxuIFxcdFxcdH0sXFxuIFxcdH0sXFxuIFxcdHsgfVxcbkBAIC0zMTk3LDYgKzMyMTMsMjAgQEAgcHRwX29jcF9hZHZhX2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRwdHBfb2NwX3NtYV9pbml0KGJwKTtcXG4gXFxuK1xcdGlmIChpbmZvLVxcdTAwM2VoYXNfY3BsZCkge1xcbitcXHRcXHRzdHJ1Y3QgZndfdXBsb2FkICpmd2w7XFxuK1xcbitcXHRcXHRmd2wgPSBmaXJtd2FyZV91cGxvYWRfcmVnaXN0ZXIoVEhJU19NT0RVTEUsIFxcdTAwMjZicC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgXFxcImFkdmEtY3BsZFxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2YWR2YV9jcGxkX3VwbG9hZF9vcHMsIGJwKTtcXG4rXFx0XFx0aWYgKElTX0VSUihmd2wpKVxcbitcXHRcXHRcXHRkZXZfd2FybihcXHUwMDI2YnAtXFx1MDAzZXBkZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0IFxcXCJDUExEIGZpcm13YXJlIHVwbG9hZCB1bmF2YWlsYWJsZTogJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgZndsKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRicC1cXHUwMDNlY3BsZF9md191cGxvYWQgPSBmd2w7XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiBwdHBfb2NwX2luaXRfY2xvY2soYnAsIFxcdTAwMjZpbmZvLVxcdTAwM2VzZXJ2byk7XFxuIH1cXG4gXFxuQEAgLTQyMjQsNiArNDI1NCw0NDMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvY3BfYXR0cl9ncm91cCBhcnRfdGltZWNhcmRfZ3JvdXBzW10gPSB7XFxuIFxcdHsgfSxcXG4gfTtcXG4gXFxuKy8qXFxuKyAqIEludGVybmFsIGhlbHBlcnMgZm9yIHRoZSBhZHZhX3gxIFRBUCBDUExEIChMYXR0aWNlIExDTVhPM0xGLTIxMCkuXFxuKyAqXFxuKyAqIFRoZSBDUExEIHNpdHMgYXQgSTJDIGFkZHJlc3MgMHg0MCBiZWhpbmQgYSBQQ0E5NTQ4IG11eCAoMHg3NCkgb25cXG4rICogY2hhbm5lbCAwLiAgVGhlIEkyQyBidXMgaXMgc2hhcmVkIHdpdGggdGhlIE1pY3JvQmxhemUgZmlybXdhcmU7XFxuKyAqIGNwbGRfbG9jayArIG1ibGF6ZSBhY3F1aXJlL3JlbGVhc2UgcHJvdmlkZSBtdXR1YWwgZXhjbHVzaW9uIGZvciB0aGVcXG4rICogZnVsbCBkdXJhdGlvbiBvZiBhbnkgQ1BMRCBvcGVyYXRpb24uICBObyByYXcgSTJDIGFjY2VzcyBpcyBleHBvc2VkXFxuKyAqIHRvIHVzZXJzcGFjZTsgb25seSB0aGUgaGlnaC1sZXZlbCBhdHRyaWJ1dGVzIGJlbG93IGFyZS5cXG4rICovXFxuK1xcbisjZGVmaW5lIEFEVkFfTVVYX0FERFIgICAgIDB4NzRcXG4rI2RlZmluZSBBRFZBX0NQTERfQUREUiAgICAweDQwXFxuKyNkZWZpbmUgQURWQV9NVVhfQ0hBTk5FTCAgMFxcbitcXG4rI2RlZmluZSBNQkxBWkVfUkVRVUVTVCAgICAweDAwMDBhYWFhVVxcbisjZGVmaW5lIE1CTEFaRV9HUkFOVEVEICAgIDB4NTU1NWFhYWFVXFxuKyNkZWZpbmUgTUJMQVpFX1JFTEVBU0UgICAgMHg1NTU1MDAwMFVcXG4rI2RlZmluZSBNQkxBWkVfUkVUUklFUyAgICAyMDBcXG4rI2RlZmluZSBNQkxBWkVfUkVUUllfVVMgICAxMDAwMFxcbitcXG4rLyogTGF0dGljZSBMQ01YTzNMRiBJU0MgY29tbWFuZCBjb2RlcyAqL1xcbisjZGVmaW5lIENQTERfQ01EX1JFQURfSUQgICAgICAweEUwMDAwMDAwVUxcXG4rI2RlZmluZSBDUExEX0NNRF9SRUFEX1NUQVRVUyAgMHgzQzAwMDAwMFVMXFxuKyNkZWZpbmUgQ1BMRF9DTURfRU5fQ0ZHX1RQICAgIDB4NzQgICAvKiBlbmFibGUgY29uZmlnLCB0cmFuc3BhcmVudCBtb2RlICovXFxuKyNkZWZpbmUgQ1BMRF9DTURfRElTX0NGRyAgICAgIDB4MjZcXG4rI2RlZmluZSBDUExEX0NNRF9FUkFTRSAgICAgICAgMHgwRVxcbisjZGVmaW5lIENQTERfQ01EX1JFU0VUX0FERFIgICAweDQ2XFxuKyNkZWZpbmUgQ1BMRF9DTURfV1JJVEVfUEFHRSAgIDB4NzBcXG4rI2RlZmluZSBDUExEX0NNRF9TRVRfRE9ORSAgICAgMHg1RVxcbisjZGVmaW5lIENQTERfQ01EX1JFRlJFU0ggICAgICAweDc5XFxuKyNkZWZpbmUgQ1BMRF9QQUdFX1NJWkUgICAgICAgIDE2XFxuK1xcbisvKiBTdGF0dXMgcmVnaXN0ZXIgYml0IHBvc2l0aW9ucyAoTGF0dGljZSBMQ01YTzNMRiBkYXRhc2hlZXQpICovXFxuKyNkZWZpbmUgQ1BMRF9TVEFUVVNfRE9ORSAgIEJJVCg4KVxcbisjZGVmaW5lIENQTERfU1RBVFVTX0JVU1kgICBCSVQoMTIpXFxuKyNkZWZpbmUgQ1BMRF9TVEFUVVNfRkFJTEVEIEJJVCgxMylcXG4rXFxuKy8qXFxuKyAqIGFkdmFfeDFfaTJjX3hmZXIoKSAtIGlzc3VlIGEgc2luZ2xlIEkyQyB0cmFuc2FjdGlvbiBvbiB0aGUgQ1BMRCBidXMuXFxuKyAqXFxuKyAqIEFsbCBidWZmZXJzIGFyZSBoZWFwLWFsbG9jYXRlZCBpbnRlcm5hbGx5IHRvIGd1YXJhbnRlZSBETUEgc2FmZXR5IGZvclxcbisgKiB0aGUgWGlsaW54IEkyQyBjb250cm9sbGVyLiAgQ2FsbGVyIG11c3QgaG9sZCBicC1cXHUwMDNlY3BsZF9sb2NrLlxcbisgKi9cXG4rc3RhdGljIGludCBhZHZhX3gxX2kyY194ZmVyKHN0cnVjdCBwdHBfb2NwICpicCxcXG4rXFx0XFx0XFx0ICAgIHU4IGFkZHIsIGNvbnN0IHZvaWQgKndkYXRhLCB1OCB3bGVuLFxcbitcXHRcXHRcXHQgICAgdm9pZCAqcmRhdGEsIHU4IHJsZW4sIGJvb2wgbm9zdGFydClcXG4re1xcbitcXHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7XFxuK1xcdHN0cnVjdCBpMmNfbXNnIG1zZ3NbMl07XFxuK1xcdHU4ICp3YnVmID0gTlVMTCwgKnJidWYgPSBOVUxMO1xcbitcXHRpbnQgbm1zZ3MgPSAwLCByZXQ7XFxuK1xcbitcXHRhZGFwID0gaTJjX2dldF9hZGFwdGVyKFJFQURfT05DRShicC1cXHUwMDNlY3BsZF9pMmNfYWRhcF9ucikpO1xcbitcXHRpZiAoIWFkYXApXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0aWYgKHdsZW4pIHtcXG4rXFx0XFx0d2J1ZiA9IGttZW1kdXAod2RhdGEsIHdsZW4sIEdGUF9LRVJORUwpO1xcbitcXHRcXHRpZiAoIXdidWYpIHtcXG4rXFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0XFx0Z290byBwdXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0bXNnc1tubXNncysrXSA9IChzdHJ1Y3QgaTJjX21zZyl7XFxuK1xcdFxcdFxcdC5hZGRyICA9IGFkZHIsXFxuK1xcdFxcdFxcdC5mbGFncyA9IEkyQ19NX0RNQV9TQUZFLFxcbitcXHRcXHRcXHQubGVuICAgPSB3bGVuLFxcbitcXHRcXHRcXHQuYnVmICAgPSB3YnVmLFxcbitcXHRcXHR9O1xcbitcXHR9XFxuK1xcdGlmIChybGVuKSB7XFxuK1xcdFxcdHJidWYgPSBremFsbG9jKHJsZW4sIEdGUF9LRVJORUwpO1xcbitcXHRcXHRpZiAoIXJidWYpIHtcXG4rXFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0XFx0Z290byBwdXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0bXNnc1tubXNncysrXSA9IChzdHJ1Y3QgaTJjX21zZyl7XFxuK1xcdFxcdFxcdC5hZGRyICA9IGFkZHIsXFxuK1xcdFxcdFxcdC5mbGFncyA9IEkyQ19NX1JEIHwgSTJDX01fRE1BX1NBRkUgfFxcbitcXHRcXHRcXHRcXHQgKG5vc3RhcnQgPyBJMkNfTV9OT1NUQVJUIDogMCksXFxuK1xcdFxcdFxcdC5sZW4gICA9IHJsZW4sXFxuK1xcdFxcdFxcdC5idWYgICA9IHJidWYsXFxuK1xcdFxcdH07XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IGkyY190cmFuc2ZlcihhZGFwLCBtc2dzLCBubXNncyk7XFxuK1xcdGlmIChyZXQgPT0gbm1zZ3MpIHtcXG4rXFx0XFx0aWYgKHJkYXRhIFxcdTAwMjZcXHUwMDI2IHJsZW4pXFxuK1xcdFxcdFxcdG1lbWNweShyZGF0YSwgcmJ1Ziwgcmxlbik7XFxuK1xcdFxcdHJldCA9IDA7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHJldCA9IChyZXQgXFx1MDAzYyAwKSA/IHJldCA6IC1FSU87XFxuK1xcdH1cXG4rcHV0OlxcbitcXHRrZnJlZSh3YnVmKTtcXG4rXFx0a2ZyZWUocmJ1Zik7XFxuK1xcdGkyY19wdXRfYWRhcHRlcihhZGFwKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4rLyogQWNxdWlyZSB0aGUgc2hhcmVkIEkyQyBidXMgZnJvbSB0aGUgTWljcm9CbGF6ZSBmaXJtd2FyZS4gKi9cXG4rc3RhdGljIGludCBhZHZhX3gxX21ibGF6ZV9hY3F1aXJlKHN0cnVjdCBwdHBfb2NwICpicClcXG4re1xcbitcXHR1MzIgdmFsO1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdGlmICghYnAtXFx1MDAzZXBwc19zZWxlY3QpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0LyogUmVsZWFzZSBhbnkgc3RhbGUgZ3JhbnQgbGVmdCBieSBhIHByZXZpb3VzIGNyYXNoZWQgY2FsbGVyLiAqL1xcbitcXHRpb3dyaXRlMzIoMCwgXFx1MDAyNmJwLVxcdTAwM2VwcHNfc2VsZWN0LVxcdTAwM2VpMmNfYnVzX2N0cmwpO1xcbitcXHR2YWwgPSBpb3JlYWQzMihcXHUwMDI2YnAtXFx1MDAzZXBwc19zZWxlY3QtXFx1MDAzZWkyY19idXNfY3RybCk7XFxuK1xcdGlmICh2YWwgIT0gMClcXG4rXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4rXFxuK1xcdGlvd3JpdGUzMihNQkxBWkVfUkVRVUVTVCwgXFx1MDAyNmJwLVxcdTAwM2VwcHNfc2VsZWN0LVxcdTAwM2VpMmNfYnVzX2N0cmwpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUJMQVpFX1JFVFJJRVM7IGkrKykge1xcbitcXHRcXHR1c2xlZXBfcmFuZ2UoTUJMQVpFX1JFVFJZX1VTLCBNQkxBWkVfUkVUUllfVVMgKyAxMDAwKTtcXG4rXFx0XFx0dmFsID0gaW9yZWFkMzIoXFx1MDAyNmJwLVxcdTAwM2VwcHNfc2VsZWN0LVxcdTAwM2VpMmNfYnVzX2N0cmwpO1xcbitcXHRcXHRpZiAodmFsID09IE1CTEFaRV9HUkFOVEVEKVxcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYWR2YV94MV9tYmxhemVfcmVsZWFzZShzdHJ1Y3QgcHRwX29jcCAqYnApXFxuK3tcXG4rXFx0aWYgKGJwLVxcdTAwM2VwcHNfc2VsZWN0KVxcbitcXHRcXHRpb3dyaXRlMzIoTUJMQVpFX1JFTEVBU0UsIFxcdTAwMjZicC1cXHUwMDNlcHBzX3NlbGVjdC1cXHUwMDNlaTJjX2J1c19jdHJsKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBhZHZhX3gxX211eF9zZWxlY3Qoc3RydWN0IHB0cF9vY3AgKmJwLCBpbnQgY2gpXFxuK3tcXG4rXFx0dTggdmFsID0gKGNoIFxcdTAwM2U9IDApID8gQklUKGNoKSA6IDA7XFxuK1xcbitcXHRyZXR1cm4gYWR2YV94MV9pMmNfeGZlcihicCwgQURWQV9NVVhfQUREUiwgXFx1MDAyNnZhbCwgMSwgTlVMTCwgMCwgZmFsc2UpO1xcbit9XFxuK1xcbisvKiBTZW5kIDEtYnl0ZSBJU0MgY29tbWFuZCArIG9wdGlvbmFsIGFyZ3VtZW50cy4gKi9cXG4rc3RhdGljIGludCBhZHZhX3gxX2NwbGRfd3JpdGUoc3RydWN0IHB0cF9vY3AgKmJwLFxcbitcXHRcXHRcXHQgICAgICB1OCBjbWQsIGNvbnN0IHU4ICphcmdzLCB1OCBuYXJncylcXG4re1xcbitcXHR1OCBidWZbMSArIDY0XTtcXG4rXFxuK1xcdGlmIChuYXJncyBcXHUwMDNlIDY0KVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0YnVmWzBdID0gY21kO1xcbitcXHRpZiAobmFyZ3MpXFxuK1xcdFxcdG1lbWNweShcXHUwMDI2YnVmWzFdLCBhcmdzLCBuYXJncyk7XFxuK1xcdHJldHVybiBhZHZhX3gxX2kyY194ZmVyKGJwLCBBRFZBX0NQTERfQUREUiwgYnVmLCAxICsgbmFyZ3MsXFxuK1xcdFxcdFxcdFxcdCBOVUxMLCAwLCBmYWxzZSk7XFxuK31cXG4rXFxuKy8qXFxuKyAqIFNlbmQgYSA0LWJ5dGUgY29tbWFuZCB0aGVuIHJlYWQgZGF0YSBiYWNrIHdpdGhvdXQgYW4gaW50ZXJtZWRpYXRlIFNUT1BcXG4rICogKExhdHRpY2UgY29tYmluZWQgd3JpdGXihpJyZXBlYXRlZC1TVEFSVOKGknJlYWQpLlxcbisgKi9cXG4rc3RhdGljIGludCBhZHZhX3gxX2NwbGRfY21kX3JlYWQoc3RydWN0IHB0cF9vY3AgKmJwLFxcbitcXHRcXHRcXHRcXHQgdTMyIGNtZF9iZSwgdTggKm91dCwgdTggb3V0X2xlbilcXG4re1xcbitcXHRfX2JlMzIgY21kID0gY3B1X3RvX2JlMzIoY21kX2JlKTtcXG4rXFxuK1xcdHJldHVybiBhZHZhX3gxX2kyY194ZmVyKGJwLCBBRFZBX0NQTERfQUREUiwgXFx1MDAyNmNtZCwgNCwgb3V0LCBvdXRfbGVuLCB0cnVlKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoc3RydWN0IHB0cF9vY3AgKmJwLCB1MzIgKnN0YXR1cylcXG4re1xcbitcXHR1OCBidWZbNF07XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfU1RBVFVTLCBidWYsIDQpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHQqc3RhdHVzID0gZ2V0X3VuYWxpZ25lZF9iZTMyKGJ1Zik7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KHN0cnVjdCBwdHBfb2NwICpicCwgdW5zaWduZWQgaW50IG1heF9tcylcXG4re1xcbitcXHR1MzIgc3RhdHVzO1xcbitcXHR1bnNpZ25lZCBpbnQgZWxhcHNlZCA9IDA7XFxuK1xcbitcXHR3aGlsZSAoZWxhcHNlZCBcXHUwMDNjIG1heF9tcykge1xcbitcXHRcXHRpZiAoYWR2YV94MV9jcGxkX3JlYWRfc3RhdHVzKGJwLCBcXHUwMDI2c3RhdHVzKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdFxcdGlmIChzdGF0dXMgXFx1MDAyNiBDUExEX1NUQVRVU19GQUlMRUQpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRcXHRpZiAoIShzdGF0dXMgXFx1MDAyNiBDUExEX1NUQVRVU19CVVNZKSlcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcdFxcdHVzbGVlcF9yYW5nZSgxMDAwMDAsIDEwMTAwMCk7XFxuK1xcdFxcdGVsYXBzZWQgKz0gMTAwO1xcbitcXHR9XFxuK1xcdHJldHVybiAtRVRJTUVET1VUO1xcbit9XFxuK1xcbisvKlxcbisgKiBjcGxkX2RldmljZV9pZCAtIHNob3cgdGhlIExhdHRpY2UgZGV2aWNlIElEIG9mIHRoZSBUQVAgQ1BMRC5cXG4rICpcXG4rICogUmV0dXJucyB0aGUgMzItYml0IElEIGFzIGEgaGV4IHN0cmluZywgZS5nLiBcXFwiMHg2MTJiYzA0M1xcXFxuXFxcIi5cXG4rICogTGF0dGljZSBMQ01YTzNMRi0yMTAgcmVwb3J0cyAweDYxMkJDMDQzLlxcbisgKi9cXG4rc3RhdGljIHNzaXplX3RcXG4rY3BsZF9kZXZpY2VfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbitcXHRcXHQgICAgY2hhciAqYnVmKVxcbit7XFxuK1xcdHN0cnVjdCBwdHBfb2NwICpicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbitcXHR1OCBkYXRhWzRdO1xcbitcXHR1MzIgaWQgPSAwO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2YnAtXFx1MDAzZWNwbGRfbG9jayk7XFxuK1xcdHJldCA9IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0cmV0ID0gYWR2YV94MV9tdXhfc2VsZWN0KGJwLCBBRFZBX01VWF9DSEFOTkVMKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0Z290byByZWxlYXNlO1xcbitcXHRyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfSUQsIGRhdGEsIDQpO1xcbitcXHRpZiAoIXJldClcXG4rXFx0XFx0aWQgPSAoKHUzMilkYXRhWzBdIFxcdTAwM2NcXHUwMDNjIDI0KSB8ICgodTMyKWRhdGFbMV0gXFx1MDAzY1xcdTAwM2MgMTYpIHxcXG4rXFx0XFx0ICAgICAoKHUzMilkYXRhWzJdIFxcdTAwM2NcXHUwMDNjICA4KSB8ICAodTMyKWRhdGFbM107XFxuK1xcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xcbityZWxlYXNlOlxcbitcXHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcXG4rb3V0OlxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmJwLVxcdTAwM2VjcGxkX2xvY2spO1xcbitcXHRyZXR1cm4gcmV0ID8gcmV0IDogc3lzZnNfZW1pdChidWYsIFxcXCIweCUwOHhcXFxcblxcXCIsIGlkKTtcXG4rfVxcbitzdGF0aWMgREVWSUNFX0FUVFJfUk8oY3BsZF9kZXZpY2VfaWQpO1xcbitcXG4rLypcXG4rICogY3BsZF9zdGF0dXMgLSBzaG93IHRoZSBzdGF0dXMgcmVnaXN0ZXIgb2YgdGhlIFRBUCBDUExELlxcbisgKlxcbisgKiBSZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nOiBcXFwiZG9uZT1cXHUwMDNjMHwxXFx1MDAzZSBidXN5PVxcdTAwM2MwfDFcXHUwMDNlIGZhaWxlZD1cXHUwMDNjMHwxXFx1MDAzZVxcXFxuXFxcIlxcbisgKi9cXG4rc3RhdGljIHNzaXplX3RcXG4rY3BsZF9zdGF0dXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbitcXHRcXHQgY2hhciAqYnVmKVxcbit7XFxuK1xcdHN0cnVjdCBwdHBfb2NwICpicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbitcXHR1MzIgc3QgPSAwO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2YnAtXFx1MDAzZWNwbGRfbG9jayk7XFxuK1xcdHJldCA9IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0cmV0ID0gYWR2YV94MV9tdXhfc2VsZWN0KGJwLCBBRFZBX01VWF9DSEFOTkVMKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0Z290byByZWxlYXNlO1xcbitcXHRyZXQgPSBhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsIFxcdTAwMjZzdCk7XFxuK1xcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xcbityZWxlYXNlOlxcbitcXHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcXG4rb3V0OlxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmJwLVxcdTAwM2VjcGxkX2xvY2spO1xcbitcXHRyZXR1cm4gcmV0ID8gcmV0IDogc3lzZnNfZW1pdChidWYsIFxcXCJkb25lPSV1IGJ1c3k9JXUgZmFpbGVkPSV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICAhIShzdCBcXHUwMDI2IENQTERfU1RBVFVTX0RPTkUpLFxcbitcXHRcXHRcXHRcXHQgICAgICAhIShzdCBcXHUwMDI2IENQTERfU1RBVFVTX0JVU1kpLFxcbitcXHRcXHRcXHRcXHQgICAgICAhIShzdCBcXHUwMDI2IENQTERfU1RBVFVTX0ZBSUxFRCkpO1xcbit9XFxuK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhjcGxkX3N0YXR1cyk7XFxuK1xcbisvKlxcbisgKiBhZHZhX3gxIENQTEQgZmlybXdhcmUtdXBsb2FkIGNhbGxiYWNrcy5cXG4rICpcXG4rICogVGhlIGtlcm5lbCBmaXJtd2FyZS11cGxvYWQgc3Vic3lzdGVtIChDT05GSUdfRldfVVBMT0FEKSBleHBvc2VzOlxcbisgKiAgIC9zeXMvY2xhc3MvZmlybXdhcmUvYWR2YS1jcGxkL3tkYXRhLGxvYWRpbmcsc3RhdHVzLGVycm9yLC4uLn1cXG4rICogVXNlcnNwYWNlIHdyaXRlcyB0aGUgcmF3IGJpbmFyeSBwYWdlIGRhdGEgZGlyZWN0bHkg4oCUIG5vIC9saWIvZmlybXdhcmUvXFxuKyAqIHN0YWdpbmcgZmlsZSBpcyBuZWVkZWQuXFxuKyAqXFxuKyAqIENhbGxiYWNrIHNlcXVlbmNlIGRyaXZlbiBieSB0aGUgZnJhbWV3b3JrOlxcbisgKiAgIHByZXBhcmUoKSAgICAgIC0gdmFsaWRhdGUgc2l6ZSwgYWNxdWlyZSBidXMsIGVuYWJsZSBjb25maWcsIGVyYXNlIGZsYXNoXFxuKyAqICAgd3JpdGUoKSAgICAgICAgLSBwcm9ncmFtIG9uZSAxNi1ieXRlIHBhZ2UgcGVyIGNhbGxcXG4rICogICBwb2xsX2NvbXBsZXRlKCktIHNldCBET05FLCBSRUZSRVNILCB3YWl0IGZvciBDUExEIHRvIHJlYm9vdFxcbisgKiAgIGNhbmNlbCgpICAgICAgIC0gc2V0IGZsYWc7IGNoZWNrZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggY2FsbGJhY2tcXG4rICogICBjbGVhbnVwKCkgICAgICAtIHJlbGVhc2UgYnVzIHJlc291cmNlcyAoY2FsbGVkIG9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcXG4rICovXFxuK3N0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnJcXG4rYWR2YV9jcGxkX3ByZXBhcmUoc3RydWN0IGZ3X3VwbG9hZCAqZndsLCBjb25zdCB1OCAqZGF0YSwgdTMyIHNpemUpXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVxcdTAwM2VkZF9oYW5kbGU7XFxuK1xcdGNvbnN0IHU4IGVuX2FyZ3NbMl0gID0geyAweDA4LCAweDAwIH07XFxuK1xcdGNvbnN0IHU4IGVyYV9hcmdzWzNdID0geyAweDA0LCAweDAwLCAweDAwIH07IC8qIGNmZyBzZWN0b3Igb25seSAqL1xcbitcXHRjb25zdCB1OCB6ZXJvM1szXSAgICA9IHsgMCB9O1xcbitcXHRjb25zdCB1OCBkaXNfYXJnc1syXSA9IHsgMHgwMCwgMHgwMCB9O1xcbitcXHRlbnVtIGZ3X3VwbG9hZF9lcnIgcmV0ID0gRldfVVBMT0FEX0VSUl9OT05FO1xcbitcXG4rXFx0aWYgKCFzaXplIHx8IHNpemUgJSBDUExEX1BBR0VfU0laRSlcXG4rXFx0XFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSU5WQUxJRF9TSVpFO1xcbitcXG4rXFx0YnAtXFx1MDAzZWNwbGRfY2FuY2VsXFx0XFx0PSBmYWxzZTtcXG4rXFx0YnAtXFx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGVcXHQ9IGZhbHNlO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2YnAtXFx1MDAzZWNwbGRfbG9jayk7XFxuK1xcbitcXHRpZiAoYWR2YV94MV9tYmxhemVfYWNxdWlyZShicCkpIHtcXG4rXFx0XFx0cmV0ID0gRldfVVBMT0FEX0VSUl9USU1FT1VUO1xcbitcXHRcXHRnb3RvIGVycl91bmxvY2s7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChhZHZhX3gxX211eF9zZWxlY3QoYnAsIEFEVkFfTVVYX0NIQU5ORUwpKSB7XFxuK1xcdFxcdHJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XFxuK1xcdFxcdGdvdG8gZXJyX3JlbGVhc2U7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX0VOX0NGR19UUCwgZW5fYXJncywgMikgfHxcXG4rXFx0ICAgIGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KGJwLCA1MDAwKSkge1xcbitcXHRcXHRyZXQgPSBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xcbitcXHRcXHRnb3RvIGVycl9kZXNlbGVjdDtcXG4rXFx0fVxcbitcXHRicC1cXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSA9IHRydWU7XFxuK1xcbitcXHRpZiAoYnAtXFx1MDAzZWNwbGRfY2FuY2VsKSB7XFxuK1xcdFxcdHJldCA9IEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XFxuK1xcdFxcdGdvdG8gZXJyX2Rlc2VsZWN0O1xcbitcXHR9XFxuK1xcbitcXHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9FUkFTRSwgZXJhX2FyZ3MsIDMpIHx8XFxuK1xcdCAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMTUwMDApKSB7XFxuK1xcdFxcdHJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XFxuK1xcdFxcdGdvdG8gZXJyX2Rlc2VsZWN0O1xcbitcXHR9XFxuK1xcbitcXHRpZiAoYnAtXFx1MDAzZWNwbGRfY2FuY2VsKSB7XFxuK1xcdFxcdHJldCA9IEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XFxuK1xcdFxcdGdvdG8gZXJyX2Rlc2VsZWN0O1xcbitcXHR9XFxuK1xcbitcXHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9SRVNFVF9BRERSLCB6ZXJvMywgMykpIHtcXG4rXFx0XFx0cmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcXG4rXFx0XFx0Z290byBlcnJfZGVzZWxlY3Q7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBGV19VUExPQURfRVJSX05PTkU7XFx0LyogY2xlYW51cCgpIHdpbGwgdW5sb2NrIGV2ZXJ5dGhpbmcgKi9cXG4rXFxuK2Vycl9kZXNlbGVjdDpcXG4rXFx0aWYgKGJwLVxcdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlKSB7XFxuK1xcdFxcdGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfRElTX0NGRywgZGlzX2FyZ3MsIDIpO1xcbitcXHRcXHRicC1cXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSA9IGZhbHNlO1xcbitcXHR9XFxuK1xcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xcbitlcnJfcmVsZWFzZTpcXG4rXFx0YWR2YV94MV9tYmxhemVfcmVsZWFzZShicCk7XFxuK2Vycl91bmxvY2s6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2YnAtXFx1MDAzZWNwbGRfbG9jayk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnJcXG4rYWR2YV9jcGxkX3dyaXRlKHN0cnVjdCBmd191cGxvYWQgKmZ3bCwgY29uc3QgdTggKmRhdGEsXFxuK1xcdFxcdHUzMiBvZmZzZXQsIHUzMiBzaXplLCB1MzIgKndyaXR0ZW4pXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVxcdTAwM2VkZF9oYW5kbGU7XFxuK1xcdHU4IHBhZ2VfYXJnc1szICsgQ1BMRF9QQUdFX1NJWkVdO1xcbitcXG4rXFx0aWYgKGJwLVxcdTAwM2VjcGxkX2NhbmNlbClcXG4rXFx0XFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XFxuK1xcbitcXHRpZiAoc2l6ZSBcXHUwMDNjIENQTERfUEFHRV9TSVpFKVxcbitcXHRcXHRyZXR1cm4gRldfVVBMT0FEX0VSUl9JTlZBTElEX1NJWkU7XFxuK1xcbitcXHRwYWdlX2FyZ3NbMF0gPSAweDAwO1xcbitcXHRwYWdlX2FyZ3NbMV0gPSAweDAwO1xcbitcXHRwYWdlX2FyZ3NbMl0gPSAweDAxO1xcbitcXHRtZW1jcHkoXFx1MDAyNnBhZ2VfYXJnc1szXSwgZGF0YSArIG9mZnNldCwgQ1BMRF9QQUdFX1NJWkUpO1xcbitcXG4rXFx0aWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfV1JJVEVfUEFHRSxcXG4rXFx0XFx0XFx0ICAgICAgIHBhZ2VfYXJncywgMyArIENQTERfUEFHRV9TSVpFKSB8fFxcbitcXHQgICAgYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDEwMCkpXFxuK1xcdFxcdHJldHVybiBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xcbitcXG4rXFx0KndyaXR0ZW4gPSBDUExEX1BBR0VfU0laRTtcXG4rXFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfTk9ORTtcXG4rfVxcbitcXG4rc3RhdGljIGVudW0gZndfdXBsb2FkX2VyclxcbithZHZhX2NwbGRfcG9sbF9jb21wbGV0ZShzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVxcdTAwM2VkZF9oYW5kbGU7XFxuK1xcdGNvbnN0IHU4IHplcm8zWzNdICAgID0geyAwIH07XFxuK1xcdGNvbnN0IHU4IHJlZl9hcmdzWzJdID0geyAweDAwLCAweDAwIH07XFxuK1xcdHUzMiBzdDtcXG4rXFxuK1xcdGlmIChicC1cXHUwMDNlY3BsZF9jYW5jZWwpXFxuK1xcdFxcdHJldHVybiBGV19VUExPQURfRVJSX0NBTkNFTEVEO1xcbitcXG4rXFx0aWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfU0VUX0RPTkUsIHplcm8zLCAzKSB8fFxcbitcXHQgICAgYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDEwMDApKVxcbitcXHRcXHRyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcXG4rXFxuK1xcdGlmIChhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsIFxcdTAwMjZzdCkgfHwgIShzdCBcXHUwMDI2IENQTERfU1RBVFVTX0RPTkUpKVxcbitcXHRcXHRyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcXG4rXFxuK1xcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX1JFRlJFU0gsIHJlZl9hcmdzLCAyKSlcXG4rXFx0XFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XFxuK1xcbitcXHQvKiBDUExEIHJlYm9vdHMgYWZ0ZXIgUkVGUkVTSDsgcmUtc2VsZWN0IG11eCBvbmNlIGl0IGNvbWVzIGJhY2sgdXAgKi9cXG4rXFx0bXNsZWVwKDE1MDApO1xcbitcXHRhZHZhX3gxX211eF9zZWxlY3QoYnAsIEFEVkFfTVVYX0NIQU5ORUwpO1xcbitcXHRpZiAoYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDMwMDApKVxcbitcXHRcXHRyZXR1cm4gRldfVVBMT0FEX0VSUl9USU1FT1VUO1xcbitcXG4rXFx0YnAtXFx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUgPSBmYWxzZTtcXG4rXFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfTk9ORTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWRcXG4rYWR2YV9jcGxkX2NhbmNlbChzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVxcdTAwM2VkZF9oYW5kbGU7XFxuK1xcbitcXHRicC1cXHUwMDNlY3BsZF9jYW5jZWwgPSB0cnVlO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZFxcbithZHZhX2NwbGRfY2xlYW51cChzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVxcdTAwM2VkZF9oYW5kbGU7XFxuK1xcdGNvbnN0IHU4IGRpc19hcmdzWzJdID0geyAweDAwLCAweDAwIH07XFxuK1xcbitcXHRpZiAoYnAtXFx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUpIHtcXG4rXFx0XFx0YWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9ESVNfQ0ZHLCBkaXNfYXJncywgMik7XFxuK1xcdFxcdGJwLVxcdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlID0gZmFsc2U7XFxuK1xcdH1cXG4rXFx0YWR2YV94MV9tdXhfc2VsZWN0KGJwLCAtMSk7XFxuK1xcdGFkdmFfeDFfbWJsYXplX3JlbGVhc2UoYnApO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmJwLVxcdTAwM2VjcGxkX2xvY2spO1xcbit9XFxuK1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGZ3X3VwbG9hZF9vcHMgYWR2YV9jcGxkX3VwbG9hZF9vcHMgPSB7XFxuK1xcdC5wcmVwYXJlXFx0ID0gYWR2YV9jcGxkX3ByZXBhcmUsXFxuK1xcdC53cml0ZVxcdFxcdCA9IGFkdmFfY3BsZF93cml0ZSxcXG4rXFx0LnBvbGxfY29tcGxldGVcXHQgPSBhZHZhX2NwbGRfcG9sbF9jb21wbGV0ZSxcXG4rXFx0LmNhbmNlbFxcdFxcdCA9IGFkdmFfY3BsZF9jYW5jZWwsXFxuK1xcdC5jbGVhbnVwXFx0ID0gYWR2YV9jcGxkX2NsZWFudXAsXFxuK307XFxuK1xcbiBzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYWR2YV90aW1lY2FyZF9hdHRyc1tdID0ge1xcbiBcXHRcXHUwMDI2ZGV2X2F0dHJfc2VyaWFsbnVtLmF0dHIsXFxuIFxcdFxcdTAwMjZkZXZfYXR0cl9nbnNzX3N5bmMuYXR0cixcXG5AQCAtNDI3Miw2ICs0NzM5LDggQEAgc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkdmFfdGltZWNhcmRfeDFfYXR0cnNbXSA9IHtcXG4gXFx0XFx1MDAyNmRldl9hdHRyX3RzX3dpbmRvd19hZGp1c3QuYXR0cixcXG4gXFx0XFx1MDAyNmRldl9hdHRyX3V0Y190YWlfb2Zmc2V0LmF0dHIsXFxuIFxcdFxcdTAwMjZkZXZfYXR0cl90b2RfY29ycmVjdGlvbi5hdHRyLFxcbitcXHRcXHUwMDI2ZGV2X2F0dHJfY3BsZF9kZXZpY2VfaWQuYXR0cixcXG4rXFx0XFx1MDAyNmRldl9hdHRyX2NwbGRfc3RhdHVzLmF0dHIsXFxuIFxcdE5VTEwsXFxuIH07XFxuIFxcbkBAIC00OTAyLDYgKzUzNzEsMTEgQEAgcHRwX29jcF9kZXRhY2goc3RydWN0IHB0cF9vY3AgKmJwKVxcbiBcXHRcXHRjbGtfaHdfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKGJwLVxcdTAwM2VpMmNfY2xrKTtcXG4gXFx0aWYgKGJwLVxcdTAwM2VuX2lycXMpXFxuIFxcdFxcdHBjaV9mcmVlX2lycV92ZWN0b3JzKGJwLVxcdTAwM2VwZGV2KTtcXG4rXFx0aWYgKGJwLVxcdTAwM2VjcGxkX2Z3X3VwbG9hZCkge1xcbitcXHRcXHRmaXJtd2FyZV91cGxvYWRfdW5yZWdpc3RlcihicC1cXHUwMDNlY3BsZF9md191cGxvYWQpO1xcbitcXHRcXHRicC1cXHUwMDNlY3BsZF9md191cGxvYWQgPSBOVUxMO1xcbitcXHR9XFxuK1xcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmJwLVxcdTAwM2VjcGxkX2xvY2spO1xcbiBcXHRkZXZpY2VfdW5yZWdpc3RlcihcXHUwMDI2YnAtXFx1MDAzZWRldik7XFxuIH1cXG4gXFxuQEAgLTUwNzgsNiArNTU1MiwxNyBAQCBwdHBfb2NwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gb3V0X2Rpc2FibGU7XFxuIFxcbitcXHQvKiBNdXN0IGJlIGJlZm9yZSB0aGUgZmlyc3QgZXJyb3IgcGF0aCB0aGF0IGNhbGxzIHB0cF9vY3BfZGV0YWNoKCksXFxuK1xcdCAqIHNvIG11dGV4X2Rlc3Ryb3koKSBhbHdheXMgcnVucyBvbiBhbiBpbml0aWFsaXNlZCBtdXRleC5cXG4rXFx0ICogTXVzdCBhbHNvIGJlIGJlZm9yZSBwdHBfb2NwX3JlZ2lzdGVyX3Jlc291cmNlcygpOiB0aGUgSTJDIGJ1c1xcbitcXHQgKiBub3RpZmllciAocHRwX29jcF9pMmNfbm90aWZpZXJfY2FsbCkgZmlyZXMgd2hlbiB0aGUgYWRhcHRlclxcbitcXHQgKiByZWdpc3RlcnMgYW5kIHN0b3JlcyB0aGUgYWRhcHRlciBudW1iZXIgaW4gY3BsZF9pMmNfYWRhcF9ucjsgdGhlXFxuK1xcdCAqIC0xIHNlbnRpbmVsIGJlbG93IG11c3QgYWxyZWFkeSBiZSB3cml0dGVuIHNvIHRoYXQgYSBub3RpZmllclxcbitcXHQgKiBmaXJpbmcgZHVyaW5nIHJlZ2lzdHJhdGlvbiBpcyBuZXZlciBvdmVyd3JpdHRlbiBieSB0aGlzIGluaXQuXFxuK1xcdCAqL1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZicC1cXHUwMDNlY3BsZF9sb2NrKTtcXG4rXFx0YnAtXFx1MDAzZWNwbGRfaTJjX2FkYXBfbnIgPSAtMTtcXG4rXFxuIFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZicC1cXHUwMDNlc3luY193b3JrLCBwdHBfb2NwX3N5bmNfd29yayk7XFxuIFxcbiBcXHQvKiBjb21wYXQgbW9kZS5cXG5AQCAtNTIxNywxMSArNTcwMiwxNiBAQCBwdHBfb2NwX2kyY19ub3RpZmllcl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuIFxcbiBmb3VuZDpcXG4gXFx0YnAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG4tXFx0aWYgKGFkZClcXG4rXFx0aWYgKGFkZCkge1xcbiBcXHRcXHRwdHBfb2NwX3N5bWxpbmsoYnAsIGNoaWxkLCBcXFwiaTJjXFxcIik7XFxuLVxcdGVsc2VcXG4rXFx0XFx0LyogQ2FjaGUgYWRhcHRlciBucjsgdXNlZCBieSBjcGxkX2RldmljZV9pZC9jcGxkX3N0YXR1cy9jcGxkX3Byb2dyYW1cXG4rXFx0XFx0ICogZm9yIHJlZmVyZW5jZS1jb3VudGVkIHVuYmluZC1zYWZlIGFkYXB0ZXIgYWNjZXNzLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0V1JJVEVfT05DRShicC1cXHUwMDNlY3BsZF9pMmNfYWRhcF9uciwgaTJjX3ZlcmlmeV9hZGFwdGVyKGNoaWxkKS1cXHUwMDNlbnIpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRXUklURV9PTkNFKGJwLVxcdTAwM2VjcGxkX2kyY19hZGFwX25yLCAtMSk7IC8qIGludmFsaWRhdGUgYmVmb3JlIGZyZWUgKi9cXG4gXFx0XFx0c3lzZnNfcmVtb3ZlX2xpbmsoXFx1MDAyNmJwLVxcdTAwM2VkZXYua29iaiwgXFxcImkyY1xcXCIpO1xcbi1cXG4rXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6NDE6MDkuMzM0NDU4NzE0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjc4NTEzNTI0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgQ1BMRCBmaXJtd2FyZSB1cGxvYWQgYW5kIHN5c2ZzIGF0dHJpYnV0ZXMgZm9yIHRoZSBBRFZBIHgxIE9DUCBUaW1lY2FyZCwgd2hpY2ggaXMgYSBwaHlzaWNhbCBQQ0llIGRldmljZS4gVGhlIG5ldyBjb2RlIGhlYXZpbHkgcmVsaWVzIG9uIGhhcmR3YXJlLXNwZWNpZmljIGludGVyYWN0aW9ucyAoZS5nLiwgcG9sbGluZyBNTUlPIHJlZ2lzdGVycyBmb3IgTWljcm9CbGF6ZSBmaXJtd2FyZSBncmFudHMsIEkyQyBjb21tdW5pY2F0aW9uIHdpdGggYSBQQ0E5NTQ4IG11eCBhbmQgTGF0dGljZSBDUExEKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIENvbnNlcXVlbnRseSwgdGhlIGNvcmUgbG9naWMgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMWM1MzQ3NmY1ZWEwMzlhYzFhMzQ0ZDFiOTkwZGY5YTRmOTU3NjZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxOTo0MTowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdGltZWNhcmQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXRpbWVjYXJkXG5pbmRleCAzYWU0MWI3NjM0YWM5Li5mN2M5OTU1YWNiMGE5IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZFxuKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZFxuQEAgLTExLDYgKzExLDQwIEBAIENvbnRhY3Q6XHRKb25hdGhhbiBMZW1vbiBcdTAwM2Nqb25hdGhhbi5sZW1vbkBnbWFpbC5jb21cdTAwM2VcbiBEZXNjcmlwdGlvbjpcdFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBOdGggdGltZWNhcmRcbiBcdFx0cmVnaXN0ZXJlZC5cbiBcbitXaGF0Olx0XHQvc3lzL2NsYXNzL3RpbWVjYXJkL29jcE4vY3BsZF9kZXZpY2VfaWRcbitEYXRlOlx0XHRKdWx5IDIwMjZcbitDb250YWN0Olx0U2FnaSBNYWltb24gXHUwMDNjbWFpbW9uLnNhZ2lAZ21haWwuY29tXHUwMDNlXG4rRGVzY3JpcHRpb246XHQoUk8pIFRoZSAzMi1iaXQgTGF0dGljZSBkZXZpY2UgSUQgb2YgdGhlIFRBUCBDUExELCByZXBvcnRlZCBhc1xuK1x0XHRhIGhleCBzdHJpbmcsIGUuZy4gXCIweGUxMmJjMDQzXCIuXG4rXG4rXHRcdE9ubHkgcHJlc2VudCBvbiBBRFZBIHgxIFRBUCBib2FyZHMgKFBDSSBJRCAweGFkNWE6MHgwNDEwKS5cbitcdFx0VGhlIExhdHRpY2UgTENNWE8zTEYtMjEwIHJlcG9ydHMgMHhlMTJiYzA0My5cbitcbitcdFx0VGhlIGRyaXZlciBhY3F1aXJlcyB0aGUgTWljcm9CbGF6ZSBJMkMgYnVzIGludGVybmFsbHkgYmVmb3JlXG4rXHRcdGlzc3VpbmcgdGhlIFJFQURfSURDT0RFIGNvbW1hbmQ7IG5vIGJ1cyBhcmJpdHJhdGlvbiBpcyByZXF1aXJlZFxuK1x0XHRmcm9tIHVzZXJzcGFjZS5cbitcbitXaGF0Olx0XHQvc3lzL2NsYXNzL3RpbWVjYXJkL29jcE4vY3BsZF9zdGF0dXNcbitEYXRlOlx0XHRKdWx5IDIwMjZcbitDb250YWN0Olx0U2FnaSBNYWltb24gXHUwMDNjbWFpbW9uLnNhZ2lAZ21haWwuY29tXHUwMDNlXG4rRGVzY3JpcHRpb246XHQoUk8pIFRoZSBzdGF0dXMgcmVnaXN0ZXIgb2YgdGhlIFRBUCBDUExELCBpbiBodW1hbi1yZWFkYWJsZVxuK1x0XHRmb3JtOlxuK1xuK1x0XHQgIGRvbmU9XHUwMDNjMHwxXHUwMDNlIGJ1c3k9XHUwMDNjMHwxXHUwMDNlIGZhaWxlZD1cdTAwM2MwfDFcdTAwM2VcbitcbitcdFx0T25seSBwcmVzZW50IG9uIEFEVkEgeDEgVEFQIGJvYXJkcyAoUENJIElEIDB4YWQ1YToweDA0MTApLlxuK1xuK1x0XHRkb25lPTEgaW5kaWNhdGVzIHRoZSBjb25maWd1cmF0aW9uIGZsYXNoIHdhcyBzdWNjZXNzZnVsbHlcbitcdFx0cHJvZ3JhbW1lZCBhbmQgaXMgYWN0aXZlLiAgYnVzeT0xIG1lYW5zIGFuIGludGVybmFsIG9wZXJhdGlvblxuK1x0XHRpcyBpbiBwcm9ncmVzcy4gIGZhaWxlZD0xIG1lYW5zIHRoZSBsYXN0IElTQyBvcGVyYXRpb24gZmFpbGVkLlxuK1xuK1x0XHRUaGUgZHJpdmVyIGFjcXVpcmVzIHRoZSBNaWNyb0JsYXplIEkyQyBidXMgaW50ZXJuYWxseTsgbm8gYnVzXG4rXHRcdGFyYml0cmF0aW9uIGlzIHJlcXVpcmVkIGZyb20gdXNlcnNwYWNlLlxuK1xuK1x0XHRUbyBwcm9ncmFtIG5ldyBDUExEIGZpcm13YXJlIHVzZSB0aGUgc3RhbmRhcmQga2VybmVsXG4rXHRcdGZpcm13YXJlLXVwbG9hZCBpbnRlcmZhY2UgcmVnaXN0ZXJlZCBhdDpcbitcdFx0L3N5cy9jbGFzcy9maXJtd2FyZS9hZHZhLWNwbGQvXG4rXG4gV2hhdDpcdFx0L3N5cy9jbGFzcy90aW1lY2FyZC9vY3BOL2F2YWlsYWJsZV9jbG9ja19zb3VyY2VzXG4gRGF0ZTpcdFx0U2VwdGVtYmVyIDIwMjFcbiBDb250YWN0Olx0Sm9uYXRoYW4gTGVtb24gXHUwMDNjam9uYXRoYW4ubGVtb25AZ21haWwuY29tXHUwMDNlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvcHRwX29jcC5jIGIvZHJpdmVycy9wdHAvcHRwX29jcC5jXG5pbmRleCAzNWU5MTFmMWFkNzhjLi5kYjhhYjE2MWQ0ZjBmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvcHRwX29jcC5jXG4rKysgYi9kcml2ZXJzL3B0cC9wdHBfb2NwLmNcbkBAIC0yNCw2ICsyNCwxMSBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L252bWVtLWNvbnN1bWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcmMxNi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZHBsbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZmlybXdhcmUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FVEFfVElNRUNBUkRcdFx0MHgwNDAwXG4gXG5AQCAtODUsNiArOTAsNyBAQCBzdHJ1Y3QgcHRwX29jcF9hZHZhX2luZm8ge1xuIFx0dThcdFx0XHRcdHNpZ25hbHNfbnI7XG4gXHR1OFx0XHRcdFx0ZnJlcV9pbl9ucjtcbiBcdGNvbnN0IHN0cnVjdCBvY3BfYXR0cl9ncm91cFx0KmF0dHJfZ3JvdXBzO1xuK1x0Ym9vbFx0XHRcdFx0aGFzX2NwbGQ7IC8qIHgxOiBzdXBwb3J0cyBDUExEIGZpcm13YXJlIHVwbG9hZCAqL1xuIH07XG4gXG4gI2RlZmluZSBPQ1BfQ1RSTF9FTkFCTEVcdFx0QklUKDApXG5AQCAtMTYzLDcgKzE2OSw4IEBAIHN0cnVjdCBncGlvX3JlZyB7XG4gXHR1MzJcdGdwaW8xO1xuIFx0dTMyXHRfX3BhZDA7XG4gXHR1MzJcdGdwaW8yO1xuLVx0dTMyXHRfX3BhZDE7XG4rXHQvKiBhZHZhX3gxOiBJMkMgYnVzIG93bmVyc2hpcCByZWdpc3RlcjsgcmVzZXJ2ZWQgb24gb3RoZXIgdmFyaWFudHMgKi9cbitcdHUzMlx0aTJjX2J1c19jdHJsO1xuIH07XG4gXG4gc3RydWN0IGlyaWdfbWFzdGVyX3JlZyB7XG5AQCAtNDE2LDYgKzQyMywxMiBAQCBzdHJ1Y3QgcHRwX29jcCB7XG4gXHRkcGxsX3RyYWNrZXIgdHJhY2tlcjtcbiBcdGludCBzaWduYWxzX25yO1xuIFx0aW50IGZyZXFfaW5fbnI7XG4rXHQvKiBhZHZhX3gxIENQTEQgSTJDIChpbnRlcm5hbCB1c2Ugb25seSkgKi9cbitcdHN0cnVjdCBtdXRleFx0XHRjcGxkX2xvY2s7ICAgICAgICAgICAgLyogc2VyaWFsaXNlcyBDUExEIG9wZXJhdGlvbnMgKi9cbitcdGludFx0XHRcdGNwbGRfaTJjX2FkYXBfbnI7ICAgICAvKiBJMkMgYWRhcHRlciBucjsgLTEgaWYgYWJzZW50ICovXG4rXHRzdHJ1Y3QgZndfdXBsb2FkXHQqY3BsZF9md191cGxvYWQ7ICAgICAgLyogZmlybXdhcmUgdXBsb2FkIGhhbmRsZTsgTlVMTCBpZiBhYnNlbnQgKi9cbitcdGJvb2xcdFx0XHRjcGxkX2NhbmNlbDsgICAgICAgICAgLyogY2FuY2VsbGF0aW9uIHJlcXVlc3RlZCAqL1xuK1x0Ym9vbFx0XHRcdGNwbGRfaW5fY29uZmlnX21vZGU7ICAvKiBFTl9DRkdfVFAgaXNzdWVkIGJ1dCBub3QgeWV0IFJFRlJFU0gnZCAqL1xuIH07XG4gXG4gI2RlZmluZSBPQ1BfUkVRX1RJTUVTVEFNUFx0QklUKDApXG5AQCAtNDQ5LDYgKzQ2Miw4IEBAIHN0YXRpYyBpbnQgcHRwX29jcF9hcnRfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xuIFxuIHN0YXRpYyBpbnQgcHRwX29jcF9hZHZhX2JvYXJkX2luaXQoc3RydWN0IHB0cF9vY3AgKmJwLCBzdHJ1Y3Qgb2NwX3Jlc291cmNlICpyKTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IGZ3X3VwbG9hZF9vcHMgYWR2YV9jcGxkX3VwbG9hZF9vcHM7XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvY3Bfc21hX29wIG9jcF9hZHZhX3NtYV9vcDtcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9zbWFfb3Agb2NwX2FkdmFfeDFfc21hX29wO1xuIFxuQEAgLTEyNzMsNiArMTI4OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgb2NwX3Jlc291cmNlIG9jcF9hZHZhX3gxX3Jlc291cmNlW10gPSB7XG4gXHRcdFx0LnNpZ25hbHNfbnIgICA9IDQsXG4gXHRcdFx0LmZyZXFfaW5fbnIgICA9IDQsXG4gXHRcdFx0LmF0dHJfZ3JvdXBzICA9IGFkdmFfdGltZWNhcmRfeDFfZ3JvdXBzLFxuK1x0XHRcdC5oYXNfY3BsZCAgICAgPSB0cnVlLFxuIFx0XHR9LFxuIFx0fSxcbiBcdHsgfVxuQEAgLTMxOTcsNiArMzIxMywyMCBAQCBwdHBfb2NwX2FkdmFfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXHRwdHBfb2NwX3NtYV9pbml0KGJwKTtcbiBcbitcdGlmIChpbmZvLVx1MDAzZWhhc19jcGxkKSB7XG4rXHRcdHN0cnVjdCBmd191cGxvYWQgKmZ3bDtcbitcbitcdFx0ZndsID0gZmlybXdhcmVfdXBsb2FkX3JlZ2lzdGVyKFRISVNfTU9EVUxFLCBcdTAwMjZicC1cdTAwM2VwZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdFx0ICAgICAgIFwiYWR2YS1jcGxkXCIsXG4rXHRcdFx0XHRcdCAgICAgICBcdTAwMjZhZHZhX2NwbGRfdXBsb2FkX29wcywgYnApO1xuK1x0XHRpZiAoSVNfRVJSKGZ3bCkpXG4rXHRcdFx0ZGV2X3dhcm4oXHUwMDI2YnAtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHQgXCJDUExEIGZpcm13YXJlIHVwbG9hZCB1bmF2YWlsYWJsZTogJXBlXFxuXCIsXG4rXHRcdFx0XHQgZndsKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGJwLVx1MDAzZWNwbGRfZndfdXBsb2FkID0gZndsO1xuK1x0fVxuK1xuIFx0cmV0dXJuIHB0cF9vY3BfaW5pdF9jbG9jayhicCwgXHUwMDI2aW5mby1cdTAwM2VzZXJ2byk7XG4gfVxuIFxuQEAgLTQyMjQsNiArNDI1NCw0NDMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvY3BfYXR0cl9ncm91cCBhcnRfdGltZWNhcmRfZ3JvdXBzW10gPSB7XG4gXHR7IH0sXG4gfTtcbiBcbisvKlxuKyAqIEludGVybmFsIGhlbHBlcnMgZm9yIHRoZSBhZHZhX3gxIFRBUCBDUExEIChMYXR0aWNlIExDTVhPM0xGLTIxMCkuXG4rICpcbisgKiBUaGUgQ1BMRCBzaXRzIGF0IEkyQyBhZGRyZXNzIDB4NDAgYmVoaW5kIGEgUENBOTU0OCBtdXggKDB4NzQpIG9uXG4rICogY2hhbm5lbCAwLiAgVGhlIEkyQyBidXMgaXMgc2hhcmVkIHdpdGggdGhlIE1pY3JvQmxhemUgZmlybXdhcmU7XG4rICogY3BsZF9sb2NrICsgbWJsYXplIGFjcXVpcmUvcmVsZWFzZSBwcm92aWRlIG11dHVhbCBleGNsdXNpb24gZm9yIHRoZVxuKyAqIGZ1bGwgZHVyYXRpb24gb2YgYW55IENQTEQgb3BlcmF0aW9uLiAgTm8gcmF3IEkyQyBhY2Nlc3MgaXMgZXhwb3NlZFxuKyAqIHRvIHVzZXJzcGFjZTsgb25seSB0aGUgaGlnaC1sZXZlbCBhdHRyaWJ1dGVzIGJlbG93IGFyZS5cbisgKi9cbitcbisjZGVmaW5lIEFEVkFfTVVYX0FERFIgICAgIDB4NzRcbisjZGVmaW5lIEFEVkFfQ1BMRF9BRERSICAgIDB4NDBcbisjZGVmaW5lIEFEVkFfTVVYX0NIQU5ORUwgIDBcbitcbisjZGVmaW5lIE1CTEFaRV9SRVFVRVNUICAgIDB4MDAwMGFhYWFVXG4rI2RlZmluZSBNQkxBWkVfR1JBTlRFRCAgICAweDU1NTVhYWFhVVxuKyNkZWZpbmUgTUJMQVpFX1JFTEVBU0UgICAgMHg1NTU1MDAwMFVcbisjZGVmaW5lIE1CTEFaRV9SRVRSSUVTICAgIDIwMFxuKyNkZWZpbmUgTUJMQVpFX1JFVFJZX1VTICAgMTAwMDBcbitcbisvKiBMYXR0aWNlIExDTVhPM0xGIElTQyBjb21tYW5kIGNvZGVzICovXG4rI2RlZmluZSBDUExEX0NNRF9SRUFEX0lEICAgICAgMHhFMDAwMDAwMFVMXG4rI2RlZmluZSBDUExEX0NNRF9SRUFEX1NUQVRVUyAgMHgzQzAwMDAwMFVMXG4rI2RlZmluZSBDUExEX0NNRF9FTl9DRkdfVFAgICAgMHg3NCAgIC8qIGVuYWJsZSBjb25maWcsIHRyYW5zcGFyZW50IG1vZGUgKi9cbisjZGVmaW5lIENQTERfQ01EX0RJU19DRkcgICAgICAweDI2XG4rI2RlZmluZSBDUExEX0NNRF9FUkFTRSAgICAgICAgMHgwRVxuKyNkZWZpbmUgQ1BMRF9DTURfUkVTRVRfQUREUiAgIDB4NDZcbisjZGVmaW5lIENQTERfQ01EX1dSSVRFX1BBR0UgICAweDcwXG4rI2RlZmluZSBDUExEX0NNRF9TRVRfRE9ORSAgICAgMHg1RVxuKyNkZWZpbmUgQ1BMRF9DTURfUkVGUkVTSCAgICAgIDB4NzlcbisjZGVmaW5lIENQTERfUEFHRV9TSVpFICAgICAgICAxNlxuK1xuKy8qIFN0YXR1cyByZWdpc3RlciBiaXQgcG9zaXRpb25zIChMYXR0aWNlIExDTVhPM0xGIGRhdGFzaGVldCkgKi9cbisjZGVmaW5lIENQTERfU1RBVFVTX0RPTkUgICBCSVQoOClcbisjZGVmaW5lIENQTERfU1RBVFVTX0JVU1kgICBCSVQoMTIpXG4rI2RlZmluZSBDUExEX1NUQVRVU19GQUlMRUQgQklUKDEzKVxuK1xuKy8qXG4rICogYWR2YV94MV9pMmNfeGZlcigpIC0gaXNzdWUgYSBzaW5nbGUgSTJDIHRyYW5zYWN0aW9uIG9uIHRoZSBDUExEIGJ1cy5cbisgKlxuKyAqIEFsbCBidWZmZXJzIGFyZSBoZWFwLWFsbG9jYXRlZCBpbnRlcm5hbGx5IHRvIGd1YXJhbnRlZSBETUEgc2FmZXR5IGZvclxuKyAqIHRoZSBYaWxpbnggSTJDIGNvbnRyb2xsZXIuICBDYWxsZXIgbXVzdCBob2xkIGJwLVx1MDAzZWNwbGRfbG9jay5cbisgKi9cbitzdGF0aWMgaW50IGFkdmFfeDFfaTJjX3hmZXIoc3RydWN0IHB0cF9vY3AgKmJwLFxuK1x0XHRcdCAgICB1OCBhZGRyLCBjb25zdCB2b2lkICp3ZGF0YSwgdTggd2xlbixcbitcdFx0XHQgICAgdm9pZCAqcmRhdGEsIHU4IHJsZW4sIGJvb2wgbm9zdGFydClcbit7XG4rXHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7XG4rXHRzdHJ1Y3QgaTJjX21zZyBtc2dzWzJdO1xuK1x0dTggKndidWYgPSBOVUxMLCAqcmJ1ZiA9IE5VTEw7XG4rXHRpbnQgbm1zZ3MgPSAwLCByZXQ7XG4rXG4rXHRhZGFwID0gaTJjX2dldF9hZGFwdGVyKFJFQURfT05DRShicC1cdTAwM2VjcGxkX2kyY19hZGFwX25yKSk7XG4rXHRpZiAoIWFkYXApXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0aWYgKHdsZW4pIHtcbitcdFx0d2J1ZiA9IGttZW1kdXAod2RhdGEsIHdsZW4sIEdGUF9LRVJORUwpO1xuK1x0XHRpZiAoIXdidWYpIHtcbitcdFx0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRcdGdvdG8gcHV0O1xuK1x0XHR9XG4rXHRcdG1zZ3Nbbm1zZ3MrK10gPSAoc3RydWN0IGkyY19tc2cpe1xuK1x0XHRcdC5hZGRyICA9IGFkZHIsXG4rXHRcdFx0LmZsYWdzID0gSTJDX01fRE1BX1NBRkUsXG4rXHRcdFx0LmxlbiAgID0gd2xlbixcbitcdFx0XHQuYnVmICAgPSB3YnVmLFxuK1x0XHR9O1xuK1x0fVxuK1x0aWYgKHJsZW4pIHtcbitcdFx0cmJ1ZiA9IGt6YWxsb2MocmxlbiwgR0ZQX0tFUk5FTCk7XG4rXHRcdGlmICghcmJ1Zikge1xuK1x0XHRcdHJldCA9IC1FTk9NRU07XG4rXHRcdFx0Z290byBwdXQ7XG4rXHRcdH1cbitcdFx0bXNnc1tubXNncysrXSA9IChzdHJ1Y3QgaTJjX21zZyl7XG4rXHRcdFx0LmFkZHIgID0gYWRkcixcbitcdFx0XHQuZmxhZ3MgPSBJMkNfTV9SRCB8IEkyQ19NX0RNQV9TQUZFIHxcbitcdFx0XHRcdCAobm9zdGFydCA/IEkyQ19NX05PU1RBUlQgOiAwKSxcbitcdFx0XHQubGVuICAgPSBybGVuLFxuK1x0XHRcdC5idWYgICA9IHJidWYsXG4rXHRcdH07XG4rXHR9XG4rXG4rXHRyZXQgPSBpMmNfdHJhbnNmZXIoYWRhcCwgbXNncywgbm1zZ3MpO1xuK1x0aWYgKHJldCA9PSBubXNncykge1xuK1x0XHRpZiAocmRhdGEgXHUwMDI2XHUwMDI2IHJsZW4pXG4rXHRcdFx0bWVtY3B5KHJkYXRhLCByYnVmLCBybGVuKTtcbitcdFx0cmV0ID0gMDtcbitcdH0gZWxzZSB7XG4rXHRcdHJldCA9IChyZXQgXHUwMDNjIDApID8gcmV0IDogLUVJTztcbitcdH1cbitwdXQ6XG4rXHRrZnJlZSh3YnVmKTtcbitcdGtmcmVlKHJidWYpO1xuK1x0aTJjX3B1dF9hZGFwdGVyKGFkYXApO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rLyogQWNxdWlyZSB0aGUgc2hhcmVkIEkyQyBidXMgZnJvbSB0aGUgTWljcm9CbGF6ZSBmaXJtd2FyZS4gKi9cbitzdGF0aWMgaW50IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoc3RydWN0IHB0cF9vY3AgKmJwKVxuK3tcbitcdHUzMiB2YWw7XG4rXHRpbnQgaTtcbitcbitcdGlmICghYnAtXHUwMDNlcHBzX3NlbGVjdClcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4rXHQvKiBSZWxlYXNlIGFueSBzdGFsZSBncmFudCBsZWZ0IGJ5IGEgcHJldmlvdXMgY3Jhc2hlZCBjYWxsZXIuICovXG4rXHRpb3dyaXRlMzIoMCwgXHUwMDI2YnAtXHUwMDNlcHBzX3NlbGVjdC1cdTAwM2VpMmNfYnVzX2N0cmwpO1xuK1x0dmFsID0gaW9yZWFkMzIoXHUwMDI2YnAtXHUwMDNlcHBzX3NlbGVjdC1cdTAwM2VpMmNfYnVzX2N0cmwpO1xuK1x0aWYgKHZhbCAhPSAwKVxuK1x0XHRyZXR1cm4gLUVCVVNZO1xuK1xuK1x0aW93cml0ZTMyKE1CTEFaRV9SRVFVRVNULCBcdTAwMjZicC1cdTAwM2VwcHNfc2VsZWN0LVx1MDAzZWkyY19idXNfY3RybCk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQkxBWkVfUkVUUklFUzsgaSsrKSB7XG4rXHRcdHVzbGVlcF9yYW5nZShNQkxBWkVfUkVUUllfVVMsIE1CTEFaRV9SRVRSWV9VUyArIDEwMDApO1xuK1x0XHR2YWwgPSBpb3JlYWQzMihcdTAwMjZicC1cdTAwM2VwcHNfc2VsZWN0LVx1MDAzZWkyY19idXNfY3RybCk7XG4rXHRcdGlmICh2YWwgPT0gTUJMQVpFX0dSQU5URUQpXG4rXHRcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXHRyZXR1cm4gLUVUSU1FRE9VVDtcbit9XG4rXG4rc3RhdGljIHZvaWQgYWR2YV94MV9tYmxhemVfcmVsZWFzZShzdHJ1Y3QgcHRwX29jcCAqYnApXG4re1xuK1x0aWYgKGJwLVx1MDAzZXBwc19zZWxlY3QpXG4rXHRcdGlvd3JpdGUzMihNQkxBWkVfUkVMRUFTRSwgXHUwMDI2YnAtXHUwMDNlcHBzX3NlbGVjdC1cdTAwM2VpMmNfYnVzX2N0cmwpO1xuK31cbitcbitzdGF0aWMgaW50IGFkdmFfeDFfbXV4X3NlbGVjdChzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBjaClcbit7XG4rXHR1OCB2YWwgPSAoY2ggXHUwMDNlPSAwKSA/IEJJVChjaCkgOiAwO1xuK1xuK1x0cmV0dXJuIGFkdmFfeDFfaTJjX3hmZXIoYnAsIEFEVkFfTVVYX0FERFIsIFx1MDAyNnZhbCwgMSwgTlVMTCwgMCwgZmFsc2UpO1xuK31cbitcbisvKiBTZW5kIDEtYnl0ZSBJU0MgY29tbWFuZCArIG9wdGlvbmFsIGFyZ3VtZW50cy4gKi9cbitzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF93cml0ZShzdHJ1Y3QgcHRwX29jcCAqYnAsXG4rXHRcdFx0ICAgICAgdTggY21kLCBjb25zdCB1OCAqYXJncywgdTggbmFyZ3MpXG4re1xuK1x0dTggYnVmWzEgKyA2NF07XG4rXG4rXHRpZiAobmFyZ3MgXHUwMDNlIDY0KVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdGJ1ZlswXSA9IGNtZDtcbitcdGlmIChuYXJncylcbitcdFx0bWVtY3B5KFx1MDAyNmJ1ZlsxXSwgYXJncywgbmFyZ3MpO1xuK1x0cmV0dXJuIGFkdmFfeDFfaTJjX3hmZXIoYnAsIEFEVkFfQ1BMRF9BRERSLCBidWYsIDEgKyBuYXJncyxcbitcdFx0XHRcdCBOVUxMLCAwLCBmYWxzZSk7XG4rfVxuK1xuKy8qXG4rICogU2VuZCBhIDQtYnl0ZSBjb21tYW5kIHRoZW4gcmVhZCBkYXRhIGJhY2sgd2l0aG91dCBhbiBpbnRlcm1lZGlhdGUgU1RPUFxuKyAqIChMYXR0aWNlIGNvbWJpbmVkIHdyaXRl4oaScmVwZWF0ZWQtU1RBUlTihpJyZWFkKS5cbisgKi9cbitzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF9jbWRfcmVhZChzdHJ1Y3QgcHRwX29jcCAqYnAsXG4rXHRcdFx0XHQgdTMyIGNtZF9iZSwgdTggKm91dCwgdTggb3V0X2xlbilcbit7XG4rXHRfX2JlMzIgY21kID0gY3B1X3RvX2JlMzIoY21kX2JlKTtcbitcbitcdHJldHVybiBhZHZhX3gxX2kyY194ZmVyKGJwLCBBRFZBX0NQTERfQUREUiwgXHUwMDI2Y21kLCA0LCBvdXQsIG91dF9sZW4sIHRydWUpO1xuK31cbitcbitzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcHRwX29jcCAqYnAsIHUzMiAqc3RhdHVzKVxuK3tcbitcdHU4IGJ1Zls0XTtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSBhZHZhX3gxX2NwbGRfY21kX3JlYWQoYnAsIENQTERfQ01EX1JFQURfU1RBVFVTLCBidWYsIDQpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcdCpzdGF0dXMgPSBnZXRfdW5hbGlnbmVkX2JlMzIoYnVmKTtcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KHN0cnVjdCBwdHBfb2NwICpicCwgdW5zaWduZWQgaW50IG1heF9tcylcbit7XG4rXHR1MzIgc3RhdHVzO1xuK1x0dW5zaWduZWQgaW50IGVsYXBzZWQgPSAwO1xuK1xuK1x0d2hpbGUgKGVsYXBzZWQgXHUwMDNjIG1heF9tcykge1xuK1x0XHRpZiAoYWR2YV94MV9jcGxkX3JlYWRfc3RhdHVzKGJwLCBcdTAwMjZzdGF0dXMpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1x0XHRpZiAoc3RhdHVzIFx1MDAyNiBDUExEX1NUQVRVU19GQUlMRUQpXG4rXHRcdFx0cmV0dXJuIC1FSU87XG4rXHRcdGlmICghKHN0YXR1cyBcdTAwMjYgQ1BMRF9TVEFUVVNfQlVTWSkpXG4rXHRcdFx0cmV0dXJuIDA7XG4rXHRcdHVzbGVlcF9yYW5nZSgxMDAwMDAsIDEwMTAwMCk7XG4rXHRcdGVsYXBzZWQgKz0gMTAwO1xuK1x0fVxuK1x0cmV0dXJuIC1FVElNRURPVVQ7XG4rfVxuK1xuKy8qXG4rICogY3BsZF9kZXZpY2VfaWQgLSBzaG93IHRoZSBMYXR0aWNlIGRldmljZSBJRCBvZiB0aGUgVEFQIENQTEQuXG4rICpcbisgKiBSZXR1cm5zIHRoZSAzMi1iaXQgSUQgYXMgYSBoZXggc3RyaW5nLCBlLmcuIFwiMHg2MTJiYzA0M1xcblwiLlxuKyAqIExhdHRpY2UgTENNWE8zTEYtMjEwIHJlcG9ydHMgMHg2MTJCQzA0My5cbisgKi9cbitzdGF0aWMgc3NpemVfdFxuK2NwbGRfZGV2aWNlX2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbitcdFx0ICAgIGNoYXIgKmJ1Zilcbit7XG4rXHRzdHJ1Y3QgcHRwX29jcCAqYnAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbitcdHU4IGRhdGFbNF07XG4rXHR1MzIgaWQgPSAwO1xuK1x0aW50IHJldDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbitcdHJldCA9IGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBvdXQ7XG4rXHRyZXQgPSBhZHZhX3gxX211eF9zZWxlY3QoYnAsIEFEVkFfTVVYX0NIQU5ORUwpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byByZWxlYXNlO1xuK1x0cmV0ID0gYWR2YV94MV9jcGxkX2NtZF9yZWFkKGJwLCBDUExEX0NNRF9SRUFEX0lELCBkYXRhLCA0KTtcbitcdGlmICghcmV0KVxuK1x0XHRpZCA9ICgodTMyKWRhdGFbMF0gXHUwMDNjXHUwMDNjIDI0KSB8ICgodTMyKWRhdGFbMV0gXHUwMDNjXHUwMDNjIDE2KSB8XG4rXHRcdCAgICAgKCh1MzIpZGF0YVsyXSBcdTAwM2NcdTAwM2MgIDgpIHwgICh1MzIpZGF0YVszXTtcbitcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xuK3JlbGVhc2U6XG4rXHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcbitvdXQ6XG4rXHRtdXRleF91bmxvY2soXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbitcdHJldHVybiByZXQgPyByZXQgOiBzeXNmc19lbWl0KGJ1ZiwgXCIweCUwOHhcXG5cIiwgaWQpO1xuK31cbitzdGF0aWMgREVWSUNFX0FUVFJfUk8oY3BsZF9kZXZpY2VfaWQpO1xuK1xuKy8qXG4rICogY3BsZF9zdGF0dXMgLSBzaG93IHRoZSBzdGF0dXMgcmVnaXN0ZXIgb2YgdGhlIFRBUCBDUExELlxuKyAqXG4rICogUmV0dXJucyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZzogXCJkb25lPVx1MDAzYzB8MVx1MDAzZSBidXN5PVx1MDAzYzB8MVx1MDAzZSBmYWlsZWQ9XHUwMDNjMHwxXHUwMDNlXFxuXCJcbisgKi9cbitzdGF0aWMgc3NpemVfdFxuK2NwbGRfc3RhdHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbitcdFx0IGNoYXIgKmJ1Zilcbit7XG4rXHRzdHJ1Y3QgcHRwX29jcCAqYnAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbitcdHUzMiBzdCA9IDA7XG4rXHRpbnQgcmV0O1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuK1x0cmV0ID0gYWR2YV94MV9tYmxhemVfYWNxdWlyZShicCk7XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIG91dDtcbitcdHJldCA9IGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCk7XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIHJlbGVhc2U7XG4rXHRyZXQgPSBhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsIFx1MDAyNnN0KTtcbitcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xuK3JlbGVhc2U6XG4rXHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcbitvdXQ6XG4rXHRtdXRleF91bmxvY2soXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbitcdHJldHVybiByZXQgPyByZXQgOiBzeXNmc19lbWl0KGJ1ZiwgXCJkb25lPSV1IGJ1c3k9JXUgZmFpbGVkPSV1XFxuXCIsXG4rXHRcdFx0XHQgICAgICAhIShzdCBcdTAwMjYgQ1BMRF9TVEFUVVNfRE9ORSksXG4rXHRcdFx0XHQgICAgICAhIShzdCBcdTAwMjYgQ1BMRF9TVEFUVVNfQlVTWSksXG4rXHRcdFx0XHQgICAgICAhIShzdCBcdTAwMjYgQ1BMRF9TVEFUVVNfRkFJTEVEKSk7XG4rfVxuK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhjcGxkX3N0YXR1cyk7XG4rXG4rLypcbisgKiBhZHZhX3gxIENQTEQgZmlybXdhcmUtdXBsb2FkIGNhbGxiYWNrcy5cbisgKlxuKyAqIFRoZSBrZXJuZWwgZmlybXdhcmUtdXBsb2FkIHN1YnN5c3RlbSAoQ09ORklHX0ZXX1VQTE9BRCkgZXhwb3NlczpcbisgKiAgIC9zeXMvY2xhc3MvZmlybXdhcmUvYWR2YS1jcGxkL3tkYXRhLGxvYWRpbmcsc3RhdHVzLGVycm9yLC4uLn1cbisgKiBVc2Vyc3BhY2Ugd3JpdGVzIHRoZSByYXcgYmluYXJ5IHBhZ2UgZGF0YSBkaXJlY3RseSDigJQgbm8gL2xpYi9maXJtd2FyZS9cbisgKiBzdGFnaW5nIGZpbGUgaXMgbmVlZGVkLlxuKyAqXG4rICogQ2FsbGJhY2sgc2VxdWVuY2UgZHJpdmVuIGJ5IHRoZSBmcmFtZXdvcms6XG4rICogICBwcmVwYXJlKCkgICAgICAtIHZhbGlkYXRlIHNpemUsIGFjcXVpcmUgYnVzLCBlbmFibGUgY29uZmlnLCBlcmFzZSBmbGFzaFxuKyAqICAgd3JpdGUoKSAgICAgICAgLSBwcm9ncmFtIG9uZSAxNi1ieXRlIHBhZ2UgcGVyIGNhbGxcbisgKiAgIHBvbGxfY29tcGxldGUoKS0gc2V0IERPTkUsIFJFRlJFU0gsIHdhaXQgZm9yIENQTEQgdG8gcmVib290XG4rICogICBjYW5jZWwoKSAgICAgICAtIHNldCBmbGFnOyBjaGVja2VkIGF0IHRoZSBzdGFydCBvZiBlYWNoIGNhbGxiYWNrXG4rICogICBjbGVhbnVwKCkgICAgICAtIHJlbGVhc2UgYnVzIHJlc291cmNlcyAoY2FsbGVkIG9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcbisgKi9cbitzdGF0aWMgZW51bSBmd191cGxvYWRfZXJyXG4rYWR2YV9jcGxkX3ByZXBhcmUoc3RydWN0IGZ3X3VwbG9hZCAqZndsLCBjb25zdCB1OCAqZGF0YSwgdTMyIHNpemUpXG4re1xuK1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbitcdGNvbnN0IHU4IGVuX2FyZ3NbMl0gID0geyAweDA4LCAweDAwIH07XG4rXHRjb25zdCB1OCBlcmFfYXJnc1szXSA9IHsgMHgwNCwgMHgwMCwgMHgwMCB9OyAvKiBjZmcgc2VjdG9yIG9ubHkgKi9cbitcdGNvbnN0IHU4IHplcm8zWzNdICAgID0geyAwIH07XG4rXHRjb25zdCB1OCBkaXNfYXJnc1syXSA9IHsgMHgwMCwgMHgwMCB9O1xuK1x0ZW51bSBmd191cGxvYWRfZXJyIHJldCA9IEZXX1VQTE9BRF9FUlJfTk9ORTtcbitcbitcdGlmICghc2l6ZSB8fCBzaXplICUgQ1BMRF9QQUdFX1NJWkUpXG4rXHRcdHJldHVybiBGV19VUExPQURfRVJSX0lOVkFMSURfU0laRTtcbitcbitcdGJwLVx1MDAzZWNwbGRfY2FuY2VsXHRcdD0gZmFsc2U7XG4rXHRicC1cdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlXHQ9IGZhbHNlO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuK1xuK1x0aWYgKGFkdmFfeDFfbWJsYXplX2FjcXVpcmUoYnApKSB7XG4rXHRcdHJldCA9IEZXX1VQTE9BRF9FUlJfVElNRU9VVDtcbitcdFx0Z290byBlcnJfdW5sb2NrO1xuK1x0fVxuK1xuK1x0aWYgKGFkdmFfeDFfbXV4X3NlbGVjdChicCwgQURWQV9NVVhfQ0hBTk5FTCkpIHtcbitcdFx0cmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbitcdFx0Z290byBlcnJfcmVsZWFzZTtcbitcdH1cbitcbitcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX0VOX0NGR19UUCwgZW5fYXJncywgMikgfHxcbitcdCAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgNTAwMCkpIHtcbitcdFx0cmV0ID0gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbitcdFx0Z290byBlcnJfZGVzZWxlY3Q7XG4rXHR9XG4rXHRicC1cdTAwM2VjcGxkX2luX2NvbmZpZ19tb2RlID0gdHJ1ZTtcbitcbitcdGlmIChicC1cdTAwM2VjcGxkX2NhbmNlbCkge1xuK1x0XHRyZXQgPSBGV19VUExPQURfRVJSX0NBTkNFTEVEO1xuK1x0XHRnb3RvIGVycl9kZXNlbGVjdDtcbitcdH1cbitcbitcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX0VSQVNFLCBlcmFfYXJncywgMykgfHxcbitcdCAgICBhZHZhX3gxX2NwbGRfd2FpdF9yZWFkeShicCwgMTUwMDApKSB7XG4rXHRcdHJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XG4rXHRcdGdvdG8gZXJyX2Rlc2VsZWN0O1xuK1x0fVxuK1xuK1x0aWYgKGJwLVx1MDAzZWNwbGRfY2FuY2VsKSB7XG4rXHRcdHJldCA9IEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XG4rXHRcdGdvdG8gZXJyX2Rlc2VsZWN0O1xuK1x0fVxuK1xuK1x0aWYgKGFkdmFfeDFfY3BsZF93cml0ZShicCwgQ1BMRF9DTURfUkVTRVRfQUREUiwgemVybzMsIDMpKSB7XG4rXHRcdHJldCA9IEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XG4rXHRcdGdvdG8gZXJyX2Rlc2VsZWN0O1xuK1x0fVxuK1xuK1x0cmV0dXJuIEZXX1VQTE9BRF9FUlJfTk9ORTtcdC8qIGNsZWFudXAoKSB3aWxsIHVubG9jayBldmVyeXRoaW5nICovXG4rXG4rZXJyX2Rlc2VsZWN0OlxuK1x0aWYgKGJwLVx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUpIHtcbitcdFx0YWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9ESVNfQ0ZHLCBkaXNfYXJncywgMik7XG4rXHRcdGJwLVx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUgPSBmYWxzZTtcbitcdH1cbitcdGFkdmFfeDFfbXV4X3NlbGVjdChicCwgLTEpO1xuK2Vycl9yZWxlYXNlOlxuK1x0YWR2YV94MV9tYmxhemVfcmVsZWFzZShicCk7XG4rZXJyX3VubG9jazpcbitcdG11dGV4X3VubG9jayhcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGVudW0gZndfdXBsb2FkX2VyclxuK2FkdmFfY3BsZF93cml0ZShzdHJ1Y3QgZndfdXBsb2FkICpmd2wsIGNvbnN0IHU4ICpkYXRhLFxuK1x0XHR1MzIgb2Zmc2V0LCB1MzIgc2l6ZSwgdTMyICp3cml0dGVuKVxuK3tcbitcdHN0cnVjdCBwdHBfb2NwICpicCA9IGZ3bC1cdTAwM2VkZF9oYW5kbGU7XG4rXHR1OCBwYWdlX2FyZ3NbMyArIENQTERfUEFHRV9TSVpFXTtcbitcbitcdGlmIChicC1cdTAwM2VjcGxkX2NhbmNlbClcbitcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XG4rXG4rXHRpZiAoc2l6ZSBcdTAwM2MgQ1BMRF9QQUdFX1NJWkUpXG4rXHRcdHJldHVybiBGV19VUExPQURfRVJSX0lOVkFMSURfU0laRTtcbitcbitcdHBhZ2VfYXJnc1swXSA9IDB4MDA7XG4rXHRwYWdlX2FyZ3NbMV0gPSAweDAwO1xuK1x0cGFnZV9hcmdzWzJdID0gMHgwMTtcbitcdG1lbWNweShcdTAwMjZwYWdlX2FyZ3NbM10sIGRhdGEgKyBvZmZzZXQsIENQTERfUEFHRV9TSVpFKTtcbitcbitcdGlmIChhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX1dSSVRFX1BBR0UsXG4rXHRcdFx0ICAgICAgIHBhZ2VfYXJncywgMyArIENQTERfUEFHRV9TSVpFKSB8fFxuK1x0ICAgIGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KGJwLCAxMDApKVxuK1x0XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbitcbitcdCp3cml0dGVuID0gQ1BMRF9QQUdFX1NJWkU7XG4rXHRyZXR1cm4gRldfVVBMT0FEX0VSUl9OT05FO1xuK31cbitcbitzdGF0aWMgZW51bSBmd191cGxvYWRfZXJyXG4rYWR2YV9jcGxkX3BvbGxfY29tcGxldGUoc3RydWN0IGZ3X3VwbG9hZCAqZndsKVxuK3tcbitcdHN0cnVjdCBwdHBfb2NwICpicCA9IGZ3bC1cdTAwM2VkZF9oYW5kbGU7XG4rXHRjb25zdCB1OCB6ZXJvM1szXSAgICA9IHsgMCB9O1xuK1x0Y29uc3QgdTggcmVmX2FyZ3NbMl0gPSB7IDB4MDAsIDB4MDAgfTtcbitcdHUzMiBzdDtcbitcbitcdGlmIChicC1cdTAwM2VjcGxkX2NhbmNlbClcbitcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfQ0FOQ0VMRUQ7XG4rXG4rXHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9TRVRfRE9ORSwgemVybzMsIDMpIHx8XG4rXHQgICAgYWR2YV94MV9jcGxkX3dhaXRfcmVhZHkoYnAsIDEwMDApKVxuK1x0XHRyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJPUjtcbitcbitcdGlmIChhZHZhX3gxX2NwbGRfcmVhZF9zdGF0dXMoYnAsIFx1MDAyNnN0KSB8fCAhKHN0IFx1MDAyNiBDUExEX1NUQVRVU19ET05FKSlcbitcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfSFdfRVJST1I7XG4rXG4rXHRpZiAoYWR2YV94MV9jcGxkX3dyaXRlKGJwLCBDUExEX0NNRF9SRUZSRVNILCByZWZfYXJncywgMikpXG4rXHRcdHJldHVybiBGV19VUExPQURfRVJSX0hXX0VSUk9SO1xuK1xuK1x0LyogQ1BMRCByZWJvb3RzIGFmdGVyIFJFRlJFU0g7IHJlLXNlbGVjdCBtdXggb25jZSBpdCBjb21lcyBiYWNrIHVwICovXG4rXHRtc2xlZXAoMTUwMCk7XG4rXHRhZHZhX3gxX211eF9zZWxlY3QoYnAsIEFEVkFfTVVYX0NIQU5ORUwpO1xuK1x0aWYgKGFkdmFfeDFfY3BsZF93YWl0X3JlYWR5KGJwLCAzMDAwKSlcbitcdFx0cmV0dXJuIEZXX1VQTE9BRF9FUlJfVElNRU9VVDtcbitcbitcdGJwLVx1MDAzZWNwbGRfaW5fY29uZmlnX21vZGUgPSBmYWxzZTtcbitcdHJldHVybiBGV19VUExPQURfRVJSX05PTkU7XG4rfVxuK1xuK3N0YXRpYyB2b2lkXG4rYWR2YV9jcGxkX2NhbmNlbChzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXG4re1xuK1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbitcbitcdGJwLVx1MDAzZWNwbGRfY2FuY2VsID0gdHJ1ZTtcbit9XG4rXG4rc3RhdGljIHZvaWRcbithZHZhX2NwbGRfY2xlYW51cChzdHJ1Y3QgZndfdXBsb2FkICpmd2wpXG4re1xuK1x0c3RydWN0IHB0cF9vY3AgKmJwID0gZndsLVx1MDAzZWRkX2hhbmRsZTtcbitcdGNvbnN0IHU4IGRpc19hcmdzWzJdID0geyAweDAwLCAweDAwIH07XG4rXG4rXHRpZiAoYnAtXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSkge1xuK1x0XHRhZHZhX3gxX2NwbGRfd3JpdGUoYnAsIENQTERfQ01EX0RJU19DRkcsIGRpc19hcmdzLCAyKTtcbitcdFx0YnAtXHUwMDNlY3BsZF9pbl9jb25maWdfbW9kZSA9IGZhbHNlO1xuK1x0fVxuK1x0YWR2YV94MV9tdXhfc2VsZWN0KGJwLCAtMSk7XG4rXHRhZHZhX3gxX21ibGF6ZV9yZWxlYXNlKGJwKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IGZ3X3VwbG9hZF9vcHMgYWR2YV9jcGxkX3VwbG9hZF9vcHMgPSB7XG4rXHQucHJlcGFyZVx0ID0gYWR2YV9jcGxkX3ByZXBhcmUsXG4rXHQud3JpdGVcdFx0ID0gYWR2YV9jcGxkX3dyaXRlLFxuK1x0LnBvbGxfY29tcGxldGVcdCA9IGFkdmFfY3BsZF9wb2xsX2NvbXBsZXRlLFxuK1x0LmNhbmNlbFx0XHQgPSBhZHZhX2NwbGRfY2FuY2VsLFxuK1x0LmNsZWFudXBcdCA9IGFkdmFfY3BsZF9jbGVhbnVwLFxuK307XG4rXG4gc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkdmFfdGltZWNhcmRfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRldl9hdHRyX3NlcmlhbG51bS5hdHRyLFxuIFx0XHUwMDI2ZGV2X2F0dHJfZ25zc19zeW5jLmF0dHIsXG5AQCAtNDI3Miw2ICs0NzM5LDggQEAgc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkdmFfdGltZWNhcmRfeDFfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRldl9hdHRyX3RzX3dpbmRvd19hZGp1c3QuYXR0cixcbiBcdFx1MDAyNmRldl9hdHRyX3V0Y190YWlfb2Zmc2V0LmF0dHIsXG4gXHRcdTAwMjZkZXZfYXR0cl90b2RfY29ycmVjdGlvbi5hdHRyLFxuK1x0XHUwMDI2ZGV2X2F0dHJfY3BsZF9kZXZpY2VfaWQuYXR0cixcbitcdFx1MDAyNmRldl9hdHRyX2NwbGRfc3RhdHVzLmF0dHIsXG4gXHROVUxMLFxuIH07XG4gXG5AQCAtNDkwMiw2ICs1MzcxLDExIEBAIHB0cF9vY3BfZGV0YWNoKHN0cnVjdCBwdHBfb2NwICpicClcbiBcdFx0Y2xrX2h3X3VucmVnaXN0ZXJfZml4ZWRfcmF0ZShicC1cdTAwM2VpMmNfY2xrKTtcbiBcdGlmIChicC1cdTAwM2VuX2lycXMpXG4gXHRcdHBjaV9mcmVlX2lycV92ZWN0b3JzKGJwLVx1MDAzZXBkZXYpO1xuK1x0aWYgKGJwLVx1MDAzZWNwbGRfZndfdXBsb2FkKSB7XG4rXHRcdGZpcm13YXJlX3VwbG9hZF91bnJlZ2lzdGVyKGJwLVx1MDAzZWNwbGRfZndfdXBsb2FkKTtcbitcdFx0YnAtXHUwMDNlY3BsZF9md191cGxvYWQgPSBOVUxMO1xuK1x0fVxuK1x0bXV0ZXhfZGVzdHJveShcdTAwMjZicC1cdTAwM2VjcGxkX2xvY2spO1xuIFx0ZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2YnAtXHUwMDNlZGV2KTtcbiB9XG4gXG5AQCAtNTA3OCw2ICs1NTUyLDE3IEBAIHB0cF9vY3BfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gb3V0X2Rpc2FibGU7XG4gXG4rXHQvKiBNdXN0IGJlIGJlZm9yZSB0aGUgZmlyc3QgZXJyb3IgcGF0aCB0aGF0IGNhbGxzIHB0cF9vY3BfZGV0YWNoKCksXG4rXHQgKiBzbyBtdXRleF9kZXN0cm95KCkgYWx3YXlzIHJ1bnMgb24gYW4gaW5pdGlhbGlzZWQgbXV0ZXguXG4rXHQgKiBNdXN0IGFsc28gYmUgYmVmb3JlIHB0cF9vY3BfcmVnaXN0ZXJfcmVzb3VyY2VzKCk6IHRoZSBJMkMgYnVzXG4rXHQgKiBub3RpZmllciAocHRwX29jcF9pMmNfbm90aWZpZXJfY2FsbCkgZmlyZXMgd2hlbiB0aGUgYWRhcHRlclxuK1x0ICogcmVnaXN0ZXJzIGFuZCBzdG9yZXMgdGhlIGFkYXB0ZXIgbnVtYmVyIGluIGNwbGRfaTJjX2FkYXBfbnI7IHRoZVxuK1x0ICogLTEgc2VudGluZWwgYmVsb3cgbXVzdCBhbHJlYWR5IGJlIHdyaXR0ZW4gc28gdGhhdCBhIG5vdGlmaWVyXG4rXHQgKiBmaXJpbmcgZHVyaW5nIHJlZ2lzdHJhdGlvbiBpcyBuZXZlciBvdmVyd3JpdHRlbiBieSB0aGlzIGluaXQuXG4rXHQgKi9cbitcdG11dGV4X2luaXQoXHUwMDI2YnAtXHUwMDNlY3BsZF9sb2NrKTtcbitcdGJwLVx1MDAzZWNwbGRfaTJjX2FkYXBfbnIgPSAtMTtcbitcbiBcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmJwLVx1MDAzZXN5bmNfd29yaywgcHRwX29jcF9zeW5jX3dvcmspO1xuIFxuIFx0LyogY29tcGF0IG1vZGUuXG5AQCAtNTIxNywxMSArNTcwMiwxNiBAQCBwdHBfb2NwX2kyY19ub3RpZmllcl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4gXG4gZm91bmQ6XG4gXHRicCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuLVx0aWYgKGFkZClcbitcdGlmIChhZGQpIHtcbiBcdFx0cHRwX29jcF9zeW1saW5rKGJwLCBjaGlsZCwgXCJpMmNcIik7XG4tXHRlbHNlXG4rXHRcdC8qIENhY2hlIGFkYXB0ZXIgbnI7IHVzZWQgYnkgY3BsZF9kZXZpY2VfaWQvY3BsZF9zdGF0dXMvY3BsZF9wcm9ncmFtXG4rXHRcdCAqIGZvciByZWZlcmVuY2UtY291bnRlZCB1bmJpbmQtc2FmZSBhZGFwdGVyIGFjY2Vzcy5cbitcdFx0ICovXG4rXHRcdFdSSVRFX09OQ0UoYnAtXHUwMDNlY3BsZF9pMmNfYWRhcF9uciwgaTJjX3ZlcmlmeV9hZGFwdGVyKGNoaWxkKS1cdTAwM2Vucik7XG4rXHR9IGVsc2Uge1xuK1x0XHRXUklURV9PTkNFKGJwLVx1MDAzZWNwbGRfaTJjX2FkYXBfbnIsIC0xKTsgLyogaW52YWxpZGF0ZSBiZWZvcmUgZnJlZSAqL1xuIFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZicC1cdTAwM2VkZXYua29iaiwgXCJpMmNcIik7XG4tXG4rXHR9XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo0MTowOS4zMzQ0NjAwMTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODg4MTE3OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHB0cF9vY3BgIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgcHRwX29jcGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvcHRwL3B0cF9vY3AuY2AuIEl0J3MgYWRkaW5nIENQTEQgZmlybXdhcmUgdXBsb2FkIHN1cHBvcnQsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBtZW50aW9ucyB0aGUgYGZpcm13YXJlX3VwbG9hZGAgZnJhbWV3b3JrIGFuZCBhbHNvIGludHJvZHVjZXMgYGNwbGRfZGV2aWNlX2lkYCBhbmQgYGNwbGRfc3RhdHVzYCBzeXNmcyBhdHRyaWJ1dGVzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJJcyB0aGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGU/XCIuXG5cblRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyLCBhbmQgdGhlIGRldmljZSBJRCwgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uLCBpcyBgMHhhZDVhOjB4MDQxMGAuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGluIHRoZSBjb2RlIGl0c2VsZi4gT2theSwgdGhlIGNvZGUgZG9lcyBjaGVjayBmb3IgYGluZm8tXHUwMDNlaGFzX2NwbGRgLCBhbmQgaXTigJlzIHNldCB0byBgdHJ1ZWAgc3BlY2lmaWNhbGx5IGZvciB0aGUgYG9jcF9hZHZhX3gxX3Jlc291cmNlYC4gU28gdGhpcyBpcyBkZWZpbml0ZWx5IGEgUENJIGRldmljZSBkcml2ZXIuXG5cblRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogQ2FuIHRoaXMgYmUgZnV6emVkPyBHaXZlbiB0aGF0IGl0J3MgUENJLCBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZnV6eiBpdCB1c2luZyBpdHMgcHNldWRvLVBDSSBzdWJzeXN0ZW0sIG9yIHZoY2ksIG9yIHNvbWUgb3RoZXIgUENJIGZ1enppbmcgc3VwcG9ydC4gU3l6a2FsbGVyIGhhcyBiZWVuIG1ha2luZyBzdHJpZGVzIGluIHRoaXMgYXJlYS4gQnV0IHdhaXQuLi4gdGhpcyBwcm9tcHQgaXMgYSBiaXQgb21pbm91cywgaXQgbWVudGlvbnMgXCJ2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVVwiLiBJcyB0aGlzIGEgY2FzZT8gSXMgYHB0cF9vY3BgIHZlbmRvci1zcGVjaWZpYz9cblxuSXQncyB0aGUgXCJPcGVuIENvbXB1dGUgUHJvamVjdCB0aW1lIGNhcmQgZHJpdmVyXCIuLi4gdGhhdCBkb2Vzbid0IHNvdW5kIHNwZWNpZmljYWxseSB2ZW5kb3ItbG9ja2VkLiBJIHNob3VsZCBjaGVjayBob3cgaXQncyBoYW5kbGVkLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogaXMgaXQgZnV6emVkIGFscmVhZHksIG9yIGNhbiBpdCBiZT8gSG9sZCBvbiwgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAuIE5vdyB0aGF0J3MgaW50ZXJlc3RpbmchIFN5emthbGxlciBpcyBlaXRoZXIgZmluZGluZyBzb21ldGhpbmcsIG9yIHRoaXMgaXMgYSB0ZXN0IHBhdGNoLiBXYWl0LCB0aGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLCB3aGljaCBpcyBncmVhdCwgbWVhbmluZyBTeXprYWxsZXIgaGFkIGEgcm9sZSBpbiB0aGlzLCB3aGljaCBpcyBnb29kIG5ld3MgZm9yIG91ciBnb2Fscy5cblxuT2theSwgbGV0IG1lIGNvbmZpcm0gaWYgYHB0cF9vY3BgIGlzIGEgc3RhbmRhcmQgZHJpdmVyIG9yIG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlLiBCZWNhdXNlIHRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQgZm9yIG15IHdvcmsuIEl0J3MgYSBQQ0kgZHJpdmVyLi4uIHNvIGxldCdzIGRvIGEgcXVpY2sgZ3JlcCBzZWFyY2ggZm9yIGBwdHBfb2NwYCBpbiB0aGUga2VybmVsIHRvIHNlZSB0aGUgbGFyZ2VyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDA3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6NDE6MTYuMjIyNTgxMDg3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTcxMTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInB0cF9vY3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjA4NyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9wdHAvTWFrZWZpbGU9MjA9b2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX1ZNVylcXHQrPSBwdHBfdm13Lm9cXG5kcml2ZXJzL3B0cC9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfT0NQKVxcdCs9IHB0cF9vY3Aub1xcbmRyaXZlcnMvcHRwL01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19QVFBfREZMX1RPRClcXHRcXHQrPSBwdHBfZGZsX3RvZC5vXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9NDk9c3RydWN0IG9jcF9yZWcge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTczLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3NDpzdHJ1Y3QgcHRwX29jcF9zZXJ2b19jb25mIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzUtXFx0dTMyXFx0c2Vydm9fb2Zmc2V0X3A7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODItICogQ29tYmluZWQgc2Vydm8gKyBib2FyZC12YXJpYW50IHBhcmFtZXRlcnMgZm9yIEFEVkEgYm9hcmRzLlxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MzogKiBFbWJlZGRlZCBpbiB0aGUgcmVzb3VyY2UgdGFibGUgLmV4dHJhIHNvIGEgc2luZ2xlIHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0KClcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODQtICogY2FuIGhhbmRsZSBib3RoIEFEVkEgYW5kIEFEVkEtWDEgd2l0aG91dCBwZXItdmFyaWFudCBpbml0IGZ1bmN0aW9ucy5cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODUtICovXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg2OnN0cnVjdCBwdHBfb2NwX2FkdmFfaW5mbyB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg3OlxcdHN0cnVjdCBwdHBfb2NwX3NlcnZvX2NvbmZcXHRzZXJ2bztcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODgtXFx0dTMyXFx0XFx0XFx0XFx0Zmxhc2hfc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9MjQzPXN0cnVjdCBib2FyZF9jb25maWdfcmVnIHtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNTEtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjI1MjpzdHJ1Y3QgcHRwX29jcF9mbGFzaF9pbmZvIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjUzLVxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjU4LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyNTk6c3RydWN0IHB0cF9vY3BfZmlybXdhcmVfaGVhZGVyIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjYwLVxcdGNoYXIgbWFnaWNbNF07XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjY5LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyNzA6c3RydWN0IHB0cF9vY3BfaTJjX2luZm8ge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNzEtXFx0Y29uc3QgY2hhciAqbmFtZTtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yNzYtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjI3NzpzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbyB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI3OC1cXHRpbnQgaW5kZXg7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjgyLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyODM6c3RydWN0IHB0cF9vY3BfZXh0X3NyYyB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTI4NC1cXHR2b2lkIF9faW9tZW1cXHRcXHQqbWVtO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyODU6XFx0c3RydWN0IHB0cF9vY3BcXHRcXHQqYnA7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjI4NjpcXHRzdHJ1Y3QgcHRwX29jcF9leHRfaW5mb1xcdCppbmZvO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yODctXFx0aW50XFx0XFx0XFx0aXJxX3ZlYztcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yODktXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjI5MDplbnVtIHB0cF9vY3Bfc21hX21vZGUge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yOTEtXFx0U01BX01PREVfSU4sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMjk0LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoyOTU6c3RhdGljIHN0cnVjdCBkcGxsX3Bpbl9mcmVxdWVuY3kgcHRwX29jcF9zbWFfZnJlcVtdID0ge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0yOTYtXFx0RFBMTF9QSU5fRlJFUVVFTkNZXzFQUFMsXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzAxLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMDI6c3RydWN0IHB0cF9vY3Bfc21hX2Nvbm5lY3RvciB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMwMzpcXHRlbnVtXFx0cHRwX29jcF9zbWFfbW9kZSBtb2RlO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zMDQtXFx0Ym9vbFxcdGZpeGVkX2ZjbjtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz0zMjQ9c3RydWN0IG9jcF9zbWFfb3Age1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zMjUtXFx0Y29uc3Qgc3RydWN0IG9jcF9zZWxlY3RvciAqdGJsWzJdO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMjY6XFx0dm9pZCAoKmluaXQpKHN0cnVjdCBwdHBfb2NwICpicCk7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMyNzpcXHR1MzIgKCpnZXQpKHN0cnVjdCBwdHBfb2NwICpicCwgaW50IHNtYV9ucik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjMyODpcXHRpbnQgKCpzZXRfaW5wdXRzKShzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBzbWFfbnIsIHUzMiB2YWwpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMjk6XFx0aW50ICgqc2V0X291dHB1dCkoc3RydWN0IHB0cF9vY3AgKmJwLCBpbnQgc21hX25yLCB1MzIgdmFsKTtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzMwLX07XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzM1LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozMzY6c3RydWN0IHB0cF9vY3Bfc2lnbmFsIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzM3LVxcdGt0aW1lX3RcXHRcXHRwZXJpb2Q7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzQ1LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozNDY6c3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnQge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0zNDctXFx0aW50IGxpbmU7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM9MzU3PWVudW0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTM2NS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MzY2OnN0cnVjdCBwdHBfb2NwIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzY3LVxcdHN0cnVjdCBwY2lfZGV2XFx0XFx0KnBkZXY7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzgzLVxcdHN0cnVjdCBmcmVxdWVuY3lfcmVnXFx0X19pb21lbSAqZnJlcV9pbltPQ1BfRlJFUV9OVU1dO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozODQ6XFx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1xcdCpzaWduYWxfb3V0W09DUF9TSUdOQUxfTlVNXTtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mzg1OlxcdHN0cnVjdCBwdHBfb2NwX2V4dF9zcmNcXHQqcHBzO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozODY6XFx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1xcdCp0czA7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM4NzpcXHRzdHJ1Y3QgcHRwX29jcF9leHRfc3JjXFx0KnRzMTtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Mzg4OlxcdHN0cnVjdCBwdHBfb2NwX2V4dF9zcmNcXHQqdHMyO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzozODk6XFx0c3RydWN0IHB0cF9vY3BfZXh0X3NyY1xcdCp0czM7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjM5MDpcXHRzdHJ1Y3QgcHRwX29jcF9leHRfc3JjXFx0KnRzNDtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzkxLVxcdHN0cnVjdCBvY3BfYXJ0X2dwaW9fcmVnIF9faW9tZW0gKmFydF9zbWE7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMzk5LVxcdGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKiphdHRyX2dyb3VwO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0MDA6XFx0Y29uc3Qgc3RydWN0IHB0cF9vY3BfZWVwcm9tX21hcCAqZWVwcm9tX21hcDtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDAxLVxcdHN0cnVjdCBkZW50cnlcXHRcXHQqZGVidWdfcm9vdDtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00MDYtXFx0aW50XFx0XFx0XFx0bl9pcnFzO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0MDc6XFx0c3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnRcXHRwb3J0W19fUE9SVF9DT1VOVF07XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQwOC1cXHRib29sXFx0XFx0XFx0ZndfbG9hZGVyO1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQxOC1cXHR1NjRcXHRcXHRcXHRmd19jYXA7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQxOTpcXHRzdHJ1Y3QgcHRwX29jcF9zaWduYWxcXHRzaWduYWxbT0NQX1NJR05BTF9OVU1dO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0MjA6XFx0c3RydWN0IHB0cF9vY3Bfc21hX2Nvbm5lY3RvciBzbWFbT0NQX1NNQV9OVU1dO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00MjEtXFx0Y29uc3Qgc3RydWN0IG9jcF9zbWFfb3AgKnNtYV9vcDtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz00Mzc9c3RydWN0IG9jcF9yZXNvdXJjZSB7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDQwLVxcdGludCBpcnFfdmVjO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NDE6XFx0aW50ICgqc2V0dXApKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ0Mi1cXHR2b2lkICpleHRyYTtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NDYtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ0NzpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfbWVtKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ0ODpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfaTJjKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ0OTpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfc3BpKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1MDpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfc2VyaWFsKHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1MTpzdGF0aWMgaW50IHB0cF9vY3BfcmVnaXN0ZXJfZXh0KHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ1MjpzdGF0aWMgaW50IHB0cF9vY3BfZmJfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTM6c3RhdGljIGlycXJldHVybl90IHB0cF9vY3BfdHNfaXJxKGludCBpcnEsIHZvaWQgKnByaXYpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTQ6c3RhdGljIGlycXJldHVybl90IHB0cF9vY3Bfc2lnbmFsX2lycShpbnQgaXJxLCB2b2lkICpwcml2KTtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDU1OnN0YXRpYyBpbnQgcHRwX29jcF90c19lbmFibGUodm9pZCAqcHJpdiwgdTMyIHJlcSwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTY6c3RhdGljIGludCBwdHBfb2NwX3NpZ25hbF9mcm9tX3Blcm91dChzdHJ1Y3QgcHRwX29jcCAqYnAsIGludCBnZW4sXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ1Ny1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcHRwX3Blcm91dF9yZXF1ZXN0ICpyZXEpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTg6c3RhdGljIGludCBwdHBfb2NwX3NpZ25hbF9lbmFibGUodm9pZCAqcHJpdiwgdTMyIHJlcSwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0NTk6c3RhdGljIGludCBwdHBfb2NwX3NtYV9zdG9yZShzdHJ1Y3QgcHRwX29jcCAqYnAsIGNvbnN0IGNoYXIgKmJ1ZiwgaW50IHNtYV9ucik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ2MC1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDYxOnN0YXRpYyBpbnQgcHRwX29jcF9hcnRfYm9hcmRfaW5pdChzdHJ1Y3QgcHRwX29jcCAqYnAsIHN0cnVjdCBvY3BfcmVzb3VyY2UgKnIpO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NjItXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ2MzpzdGF0aWMgaW50IHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0KHN0cnVjdCBwdHBfb2NwICpicCwgc3RydWN0IG9jcF9yZXNvdXJjZSAqcik7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ2NC1cXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz00NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvY3BfYXR0cl9ncm91cCBhZHZhX3RpbWVjYXJkX3gxX2dyb3Vwc1tdO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00NzctXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ3ODpzdHJ1Y3QgcHRwX29jcF9lZXByb21fbWFwIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDc5LVxcdHUxNlxcdG9mZjtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy00ODYtXFx0Lm9mZiA9IGFkZHIsXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo0ODc6XFx0LmxlbiA9IHNpemVvZl9maWVsZChzdHJ1Y3QgcHRwX29jcCwgbWVtYmVyKSxcXHRcXHRcXFxcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjQ4ODpcXHQuYnBfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9vY3AsIG1lbWJlcilcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDg5LVxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ5My1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NDk0OnN0YXRpYyBzdHJ1Y3QgcHRwX29jcF9lZXByb21fbWFwIGZiX2VlcHJvbV9tYXBbXSA9IHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNDk1LVxcdHsgRUVQUk9NX0VOVFJZKDB4NDMsIGJvYXJkX2lkKSB9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTQ5OS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTAwOnN0YXRpYyBzdHJ1Y3QgcHRwX29jcF9lZXByb21fbWFwIGFydF9lZXByb21fbWFwW10gPSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUwMS1cXHR7IEVFUFJPTV9FTlRSWSgweDIwMCArIDB4NDMsIGJvYXJkX2lkKSB9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUxMS0jZGVmaW5lIE9DUF9SRVNfTE9DQVRJT04obWVtYmVyKSBcXFxcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUxMjpcXHQubmFtZSA9ICNtZW1iZXIsIC5icF9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX29jcCwgbWVtYmVyKVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MTMtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUxNC0jZGVmaW5lIE9DUF9NRU1fUkVTT1VSQ0UobWVtYmVyKSBcXFxcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUxNTpcXHRPQ1BfUkVTX0xPQ0FUSU9OKG1lbWJlciksIC5zZXR1cCA9IHB0cF9vY3BfcmVnaXN0ZXJfbWVtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUxNi1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTE3LSNkZWZpbmUgT0NQX1NFUklBTF9SRVNPVVJDRShtZW1iZXIpIFxcXFxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTE4OlxcdE9DUF9SRVNfTE9DQVRJT04obWVtYmVyKSwgLnNldHVwID0gcHRwX29jcF9yZWdpc3Rlcl9zZXJpYWxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTE5LVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MjAtI2RlZmluZSBPQ1BfSTJDX1JFU09VUkNFKG1lbWJlcikgXFxcXFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1MjE6XFx0T0NQX1JFU19MT0NBVElPTihtZW1iZXIpLCAuc2V0dXAgPSBwdHBfb2NwX3JlZ2lzdGVyX2kyY1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01MjItXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUyMy0jZGVmaW5lIE9DUF9TUElfUkVTT1VSQ0UobWVtYmVyKSBcXFxcXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjUyNDpcXHRPQ1BfUkVTX0xPQ0FUSU9OKG1lbWJlciksIC5zZXR1cCA9IHB0cF9vY3BfcmVnaXN0ZXJfc3BpXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTUyNS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTI2LSNkZWZpbmUgT0NQX0VYVF9SRVNPVVJDRShtZW1iZXIpIFxcXFxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTI3OlxcdE9DUF9SRVNfTE9DQVRJT04obWVtYmVyKSwgLnNldHVwID0gcHRwX29jcF9yZWdpc3Rlcl9leHRcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTI4LVxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTU1Nj1zdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfZmJfcmVzb3VyY2VbXSA9IHtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01NjMtXFx0XFx0Lm9mZnNldCA9IDB4MDEwMTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1NjQ6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01NjUtXFx0XFx0XFx0LmluZGV4ID0gMCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTY2OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjU2NzpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU2OC1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU3Mi1cXHRcXHQub2Zmc2V0ID0gMHgwMTAyMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDIsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjU3MzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTU3NC1cXHRcXHRcXHQuaW5kZXggPSAxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1NzU6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTc2OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTc3LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTgxLVxcdFxcdC5vZmZzZXQgPSAweDAxMDYwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gNixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTgyOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTgzLVxcdFxcdFxcdC5pbmRleCA9IDIsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjU4NDpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1ODU6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01ODYtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01OTAtXFx0XFx0Lm9mZnNldCA9IDB4MDExMTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxNSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NTkxOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNTkyLVxcdFxcdFxcdC5pbmRleCA9IDMsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjU5MzpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo1OTQ6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01OTUtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy01OTktXFx0XFx0Lm9mZnNldCA9IDB4MDExMjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxNixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjAwOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjAxLVxcdFxcdFxcdC5pbmRleCA9IDQsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYwMjpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MDM6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MDQtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MDktXFx0XFx0Lm9mZnNldCA9IDB4MDEwQzAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAwLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MTA6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MTEtXFx0XFx0XFx0LmluZGV4ID0gNSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjEyOlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYxMzpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTYxNC1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTYxOC1cXHRcXHQub2Zmc2V0ID0gMHgwMTBEMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDExLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MTk6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MjAtXFx0XFx0XFx0LmluZGV4ID0gMSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjIxOlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF9zaWduYWxfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MjI6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3Bfc2lnbmFsX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjIzLVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjI3LVxcdFxcdC5vZmZzZXQgPSAweDAxMEUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTIsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYyODpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTYyOS1cXHRcXHRcXHQuaW5kZXggPSAyLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2MzA6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYzMTpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MzItXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02MzYtXFx0XFx0Lm9mZnNldCA9IDB4MDEwRjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxMyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjM3OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjM4LVxcdFxcdFxcdC5pbmRleCA9IDMsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjYzOTpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3Bfc2lnbmFsX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjQwOlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTY0MS1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTY0NS1cXHRcXHQub2Zmc2V0ID0gMHgwMTEwMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDE0LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2NDY6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy02NDctXFx0XFx0XFx0LmluZGV4ID0gNCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NjQ4OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF9zaWduYWxfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo2NDk6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3Bfc2lnbmFsX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNjUwLVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzAyLVxcdFxcdC5vZmZzZXQgPSAweDAwMTUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gNyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NzAzOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfaTJjX2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzA0LVxcdFxcdFxcdC5uYW1lID0gXFxcInhpaWMtaTJjXFxcIixcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MTktXFx0XFx0Lm9mZnNldCA9IDB4MDAxNjAwMDAgKyAweDEwMDAsIC5pcnFfdmVjID0gMyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6NzIwOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnQpIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzIxLVxcdFxcdFxcdC5iYXVkID0gMTE1MjAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTcyNi1cXHRcXHQub2Zmc2V0ID0gMHgwMDE3MDAwMCArIDB4MTAwMCwgLmlycV92ZWMgPSA0LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo3Mjc6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9zZXJpYWxfcG9ydCkge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03MjgtXFx0XFx0XFx0LmJhdWQgPSAxMTUyMDAsXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzMzLVxcdFxcdC5vZmZzZXQgPSAweDAwMTgwMDAwICsgMHgxMDAwLCAuaXJxX3ZlYyA9IDUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjczNDpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTczNS1cXHRcXHRcXHQuYmF1ZCA9IDU3NjAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTc0NC1cXHRcXHQub2Zmc2V0ID0gMHgwMDMxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDksXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjc0NTpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2ZsYXNoX2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzQ2LVxcdFxcdFxcdC5uYW1lID0gXFxcInhpbGlueF9zcGlcXFwiLCAucGNpX29mZnNldCA9IDAsXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtNzc1LVxcdHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Nzc2OlxcdFxcdC5zZXR1cCA9IHB0cF9vY3BfZmJfYm9hcmRfaW5pdCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6Nzc3OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2Vydm9fY29uZikge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy03NzgtXFx0XFx0XFx0LnNlcnZvX29mZnNldF9wID0gMHgyMDAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTc5Nz1zdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfYXJ0X3Jlc291cmNlW10gPSB7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODA0LVxcdFxcdC5vZmZzZXQgPSAweDAwMTYwMDAwICsgMHgxMDAwLCAuaXJxX3ZlYyA9IDMsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgwNTpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgwNi1cXHRcXHRcXHQuYmF1ZCA9IDExNTIwMCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04MTYtXFx0XFx0Lm9mZnNldCA9IDB4MzYwMDAwLCAuc2l6ZSA9IDB4MjAsIC5pcnFfdmVjID0gMTIsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgxNzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgxOC1cXHRcXHRcXHQuaW5kZXggPSAwLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MTk6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODIwOlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODIxLVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODI1LVxcdFxcdC5vZmZzZXQgPSAweDM4MDAwMCwgLnNpemUgPSAweDIwLCAuaXJxX3ZlYyA9IDgsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgyNjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgyNy1cXHRcXHRcXHQuaW5kZXggPSAxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4Mjg6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODI5OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODMwLVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODM0LVxcdFxcdC5vZmZzZXQgPSAweDM5MDAwMCwgLnNpemUgPSAweDIwLCAuaXJxX3ZlYyA9IDEwLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4MzU6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04MzYtXFx0XFx0XFx0LmluZGV4ID0gMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODM3OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjgzODpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTgzOS1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg0My1cXHRcXHQub2Zmc2V0ID0gMHgzQTAwMDAsIC5zaXplID0gMHgyMCwgLmlycV92ZWMgPSAxNCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODQ0OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODQ1LVxcdFxcdFxcdC5pbmRleCA9IDMsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg0NjpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NDc6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NDgtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NTItXFx0XFx0Lm9mZnNldCA9IDB4M0IwMDAwLCAuc2l6ZSA9IDB4MjAsIC5pcnFfdmVjID0gMTUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg1MzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg1NC1cXHRcXHRcXHQuaW5kZXggPSA0LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NTU6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODU2OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODU3LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODYyLVxcdFxcdC5vZmZzZXQgPSAweDAwMzMwMDAwLCAuc2l6ZSA9IDB4MjAsIC5pcnFfdmVjID0gMTEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg2MzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg2NC1cXHRcXHRcXHQuaW5kZXggPSA1LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo4NjU6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODY2OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODY3LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtODcxLVxcdFxcdC5vZmZzZXQgPSAweDAwMzEwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gOSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6ODcyOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZmxhc2hfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04NzMtXFx0XFx0XFx0Lm5hbWUgPSBcXFwic3BpX2FsdGVyYVxcXCIsIC5wY2lfb2Zmc2V0ID0gMCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy04ODYtXFx0XFx0Lm9mZnNldCA9IDB4MzUwMDAwLCAuc2l6ZSA9IDB4MTAwLCAuaXJxX3ZlYyA9IDQsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjg4NzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2kyY19pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTg4OC1cXHRcXHRcXHQubmFtZSA9IFxcXCJvY29yZXMtaTJjXFxcIixcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MDMtXFx0XFx0Lm9mZnNldCA9IDB4MDAxOTAwMDAsIC5pcnFfdmVjID0gNyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTA0OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2VyaWFsX3BvcnQpIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTA1LVxcdFxcdFxcdC5iYXVkID0gOTYwMCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MTItXFx0e1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5MTM6XFx0XFx0LnNldHVwID0gcHRwX29jcF9hcnRfYm9hcmRfaW5pdCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTE0OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3Bfc2Vydm9fY29uZikge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05MTUtXFx0XFx0XFx0LnNlcnZvX29mZnNldF9wID0gMHgyMDAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jPTkyND1zdGF0aWMgc3RydWN0IG9jcF9yZXNvdXJjZSBvY3BfYWR2YV9yZXNvdXJjZVtdID0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTkzMS1cXHRcXHQub2Zmc2V0ID0gMHgwMTAxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjkzMjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTkzMy1cXHRcXHRcXHQuaW5kZXggPSAwLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5MzQ6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTM1OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTM2LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTQwLVxcdFxcdC5vZmZzZXQgPSAweDAxMDIwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTQxOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTQyLVxcdFxcdFxcdC5pbmRleCA9IDEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk0MzpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NDQ6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NDUtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NDktXFx0XFx0Lm9mZnNldCA9IDB4MDEwNjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSA2LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NTA6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NTEtXFx0XFx0XFx0LmluZGV4ID0gMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTUyOlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk1MzpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk1NC1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk1OS1cXHRcXHQub2Zmc2V0ID0gMHgwMTBDMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDAsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk2MDpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk2MS1cXHRcXHRcXHQuaW5kZXggPSA1LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NjI6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTYzOlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTY0LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTY4LVxcdFxcdC5vZmZzZXQgPSAweDAxMEQwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk2OTpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk3MC1cXHRcXHRcXHQuaW5kZXggPSAxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzo5NzE6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk3MjpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NzMtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy05NzctXFx0XFx0Lm9mZnNldCA9IDB4MDEwRTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTc4OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtOTc5LVxcdFxcdFxcdC5pbmRleCA9IDIsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjk4MDpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3Bfc2lnbmFsX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6OTgxOlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTk4Mi1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMTQtXFx0XFx0Lm9mZnNldCA9IDB4MDAxNjAwMDAgKyAweDEwMDAsIC5pcnFfdmVjID0gMyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTAxNTpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMTYtXFx0XFx0XFx0LmJhdWQgPSA5NjAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMjEtXFx0XFx0Lm9mZnNldCA9IDB4MDAxODAwMDAgKyAweDEwMDAsIC5pcnFfdmVjID0gNSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTAyMjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMjMtXFx0XFx0XFx0LmJhdWQgPSAxMTUyMDAsXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTAzNi1cXHRcXHQub2Zmc2V0ID0gMHgwMDMxMDQwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDksXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwMzc6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9mbGFzaF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEwMzgtXFx0XFx0XFx0Lm5hbWUgPSBcXFwic3BpX2FsdGVyYVxcXCIsIC5wY2lfb2Zmc2V0ID0gMCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDUxLVxcdFxcdC5vZmZzZXQgPSAweDE1MDAwMCwgLnNpemUgPSAweDEwMCwgLmlycV92ZWMgPSA3LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMDUyOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfaTJjX2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTA1My1cXHRcXHRcXHQubmFtZSA9IFxcXCJvY29yZXMtaTJjXFxcIixcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDcwLVxcdHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTA3MTpcXHRcXHQuc2V0dXAgPSBwdHBfb2NwX2FkdmFfYm9hcmRfaW5pdCxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTA3MjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2FkdmFfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDczLVxcdFxcdFxcdC5zZXJ2byA9IHtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYz0xMDg5PXN0YXRpYyBzdHJ1Y3Qgb2NwX3Jlc291cmNlIG9jcF9hZHZhX3gxX3Jlc291cmNlW10gPSB7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTA5Ni1cXHRcXHQub2Zmc2V0ID0gMHgwMTAxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwOTc6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMDk4LVxcdFxcdFxcdC5pbmRleCA9IDAsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEwOTk6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEwMDpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExMDEtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTA1LVxcdFxcdC5vZmZzZXQgPSAweDAxMDIwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEwNjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExMDctXFx0XFx0XFx0LmluZGV4ID0gMSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTEwODpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3BfdHNfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTA5OlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3RzX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTExMC1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExMTQtXFx0XFx0Lm9mZnNldCA9IDB4MDEwNjAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSA2LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTE1OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTExNi1cXHRcXHRcXHQuaW5kZXggPSAyLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTE3OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMTg6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTE5LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEyMy1cXHRcXHQub2Zmc2V0ID0gMHgwMTExMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDE1LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTI0OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEyNS1cXHRcXHRcXHQuaW5kZXggPSAzLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTI2OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMjc6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTI4LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEzMi1cXHRcXHQub2Zmc2V0ID0gMHgwMTEyMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDE2LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTMzOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTEzNC1cXHRcXHRcXHQuaW5kZXggPSA0LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTM1OlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF90c19pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExMzY6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3BfdHNfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTM3LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE0Mi1cXHRcXHQub2Zmc2V0ID0gMHgwMTBDMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDAsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNDM6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTQ0LVxcdFxcdFxcdC5pbmRleCA9IDUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNDU6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3RzX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE0NjpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF90c19lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNDctXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTUxLVxcdFxcdC5vZmZzZXQgPSAweDAxMEQwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNTI6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTUzLVxcdFxcdFxcdC5pbmRleCA9IDEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNTQ6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNTU6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3Bfc2lnbmFsX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE1Ni1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNjAtXFx0XFx0Lm9mZnNldCA9IDB4MDEwRTAwMDAsIC5zaXplID0gMHgxMDAwMCwgLmlycV92ZWMgPSAxMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE2MTpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2V4dF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNjItXFx0XFx0XFx0LmluZGV4ID0gMixcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE2MzpcXHRcXHRcXHQuaXJxX2ZjbiA9IHB0cF9vY3Bfc2lnbmFsX2lycSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTE2NDpcXHRcXHRcXHQuZW5hYmxlID0gcHRwX29jcF9zaWduYWxfZW5hYmxlLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTY1LVxcdFxcdH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE2OS1cXHRcXHQub2Zmc2V0ID0gMHgwMTBGMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDEzLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTcwOlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfZXh0X2luZm8pIHtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE3MS1cXHRcXHRcXHQuaW5kZXggPSAzLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTcyOlxcdFxcdFxcdC5pcnFfZmNuID0gcHRwX29jcF9zaWduYWxfaXJxLFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMTczOlxcdFxcdFxcdC5lbmFibGUgPSBwdHBfb2NwX3NpZ25hbF9lbmFibGUsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTExNzQtXFx0XFx0fSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTc4LVxcdFxcdC5vZmZzZXQgPSAweDAxMTAwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gMTQsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExNzk6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9leHRfaW5mbykge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMTgwLVxcdFxcdFxcdC5pbmRleCA9IDQsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExODE6XFx0XFx0XFx0LmlycV9mY24gPSBwdHBfb2NwX3NpZ25hbF9pcnEsXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjExODI6XFx0XFx0XFx0LmVuYWJsZSA9IHB0cF9vY3Bfc2lnbmFsX2VuYWJsZSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTE4My1cXHRcXHR9LFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMTUtXFx0XFx0Lm9mZnNldCA9IDB4MDAxNjAwMDAgKyAweDEwMDAsIC5pcnFfdmVjID0gMyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTIxNjpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMTctXFx0XFx0XFx0LmJhdWQgPSA5NjAwLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMjItXFx0XFx0Lm9mZnNldCA9IDB4MDAxODAwMDAgKyAweDEwMDAsIC5pcnFfdmVjID0gNSxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTIyMzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX3NlcmlhbF9wb3J0KSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyMjQtXFx0XFx0XFx0LmJhdWQgPSAxMTUyMDAsXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTI0NS1cXHRcXHQub2Zmc2V0ID0gMHgwMDMxMDAwMCwgLnNpemUgPSAweDEwMDAwLCAuaXJxX3ZlYyA9IDksXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEyNDY6XFx0XFx0LmV4dHJhID0gXFx1MDAyNihzdHJ1Y3QgcHRwX29jcF9mbGFzaF9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyNDctXFx0XFx0XFx0Lm5hbWUgPSBcXFwieGlsaW54X3NwaVxcXCIsIC5wY2lfb2Zmc2V0ID0gMCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMjYyLVxcdFxcdC5vZmZzZXQgPSAweDAwMTUwMDAwLCAuc2l6ZSA9IDB4MTAwMDAsIC5pcnFfdmVjID0gNyxcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTI2MzpcXHRcXHQuZXh0cmEgPSBcXHUwMDI2KHN0cnVjdCBwdHBfb2NwX2kyY19pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyNjQtXFx0XFx0XFx0Lm5hbWUgPSBcXFwieGlpYy1pMmNcXFwiLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyNzctXFx0e1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMjc4OlxcdFxcdC5zZXR1cCA9IHB0cF9vY3BfYWR2YV9ib2FyZF9pbml0LFxcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMjc5OlxcdFxcdC5leHRyYSA9IFxcdTAwMjYoc3RydWN0IHB0cF9vY3BfYWR2YV9pbmZvKSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyODAtXFx0XFx0XFx0LnNlcnZvID0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyOTYtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEyOTc6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHB0cF9vY3BfcGNpZGV2X2lkW10gPSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEyOTgtXFx0eyBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgVElNRUNBUkQsIFxcdTAwMjZvY3BfZmJfcmVzb3VyY2UpIH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTMwNC19O1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMzA1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBwdHBfb2NwX3BjaWRldl9pZCk7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEzMDYtXFxuZHJpdmVycy9wdHAvcHRwX29jcC5jOjEzMDc6c3RhdGljIERFRklORV9NVVRFWChwdHBfb2NwX2xvY2spO1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYzoxMzA4OnN0YXRpYyBERUZJTkVfSURSKHB0cF9vY3BfaWRyKTtcXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTMwOS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMxMDpzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9zZWxlY3RvciBwdHBfb2NwX2Nsb2NrW10gPSB7XFxuZHJpdmVycy9wdHAvcHRwX29jcC5jLTEzMTEtXFx0eyAubmFtZSA9IFxcXCJOT05FXFxcIixcXHQudmFsdWUgPSAwIH0sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmMtMTMyNi1cXG5kcml2ZXJzL3B0cC9wdHBfb2NwLmM6MTMyNzpzdGF0aWMgY29uc3Qgc3RydWN0IG9jcF9zZWxlY3RvciBwdHBfb2NwX3NtYV9pbltdID0ge1xcbmRyaXZlcnMvcHRwL3B0cF9vY3AuYy0xMzI4LVxcdHsgLm5hbWUgPSBcXFwiMTBNaHpcXFwiLCAgLnZhbHVlID0gMHgwMDAwLCAgICAgIC5mcmVxdWVuY3kgPSAxMDAwMDAwMCB9LFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo0MToxNi4yNzE1NTc5NDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDAwMTgyNzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUFRQIE9DUCBUaW1lIENhcmQgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcHRwX29jcC5jYCBkcml2ZXIuIEl0J3MgdGhlIFwiT3BlbiBDb21wdXRlIFByb2plY3QgdGltZSBjYXJkIGRyaXZlclwiLCBzbyBpdCdzIGEgUENJIGRldmljZSBkcml2ZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCB0aGluZyBJIG5vdGljZS4gSXQncyByZWdpc3RlcmluZyBpdHNlbGYgYXMgc3VjaC4gVGhlIHBhdGNoIGFkZHMgZmlybXdhcmUgdXBsb2FkIGZ1bmN0aW9uYWxpdHkgdXNpbmcgdGhlIGBmaXJtd2FyZV91cGxvYWRgIGZyYW1ld29yay4gSW50ZXJlc3RpbmcuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/XG5cblJpZ2h0LCBpdCdzIGEgUENJIGRyaXZlci4gSXQgYmluZHMgdG8gc3BlY2lmaWMgUENJIElEczogYFBDSV9ERVZJQ0VfSURfTUVUQV9USU1FQ0FSRGAgKDB4MDQwMCksIGBQQ0lfREVWSUNFX0lEX09ST0xJQV9BUlRfVElNRUNBUkRgICgweDA0MDApLCBhbmQgYFBDSV9ERVZJQ0VfSURfQURWQV9USU1FQ0FSRGAgKDB4MDQxMCkuIFNvLCBpdCdzIG5vdCBnb2luZyB0byBiZSBhIGdlbmVyYWwtcHVycG9zZSBkcml2ZXI7IGl0J3Mgc3BlY2lmaWMgaGFyZHdhcmUuXG5cbkJ1dCwgaGFuZyBvbi4uLiBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gU3l6a2FsbGVyIGhhcyB0aGlzIHBzZXVkby1QQ0kgc3Vic3lzdGVtLCBkb2Vzbid0IGl0PyBJdCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIHdpdGggYXJiaXRyYXJ5IHZlbmRvci9kZXZpY2UgSURzIGlmIGl0IGhhcyBkZXNjcmlwdGlvbnMgZm9yIHRoZW0uIFRoYXQgY291bGQgb3BlbiB1cCBhbiBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhbnkgZGVzY3JpcHRpb25zIGZvciBgcHRwX29jcGA/IEkgbmVlZCB0byBjaGVjayB0aGUgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5ODAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6NDE6MjEuMjcxNzQyNzE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODUwNDc3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdHBfb2NwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInN5cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjQxOjIxLjMxNjYwNDg3NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1ODY5MTgwMDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZz1mYWxzZSBEZWNpc2lvbiAtIHB0cF9vY3AgRHJpdmVyIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSByZXN0cmljdGlvbnMg4oCTIG5vIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbHMgb3Igc3l6bGFuZyBkZXNjcmlwdGlvbnMuIEdvdCBpdC4gQW5kIEkgZG9uJ3QgaGF2ZSB0aG9zZSBzcGVjaWFsIGBzeXotZ3JlcHBlcmAgb3IgYHJlYWQtc3l6LXNwZWNgIHRvb2xzLCBzbyBJJ2xsIHdvcmsgd2l0aCB3aGF0IEkgKmRvKiBoYXZlLiAgXG5cbk5vdywgYWJvdXQgdGhpcyBgcHRwX29jcGAgZHJpdmVyLiBJcyBpdCB2ZW5kb3Itc3BlY2lmaWM/IEl04oCZcyBmb3IgdGhlIE9wZW4gQ29tcHV0ZSBQcm9qZWN0IHRpbWUgY2FyZCwgYSBzcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGNhcmQuICBEb2VzIGl0ICpyZXF1aXJlKiBwaHlzaWNhbCBoYXJkd2FyZT8gQWgsIHRoYXQncyB0aGUga2V5LiAgU3l6a2FsbGVyJ3MgcHNldWRvLVBDSSBvbmx5IGVtdWxhdGVzIHRoZSBQQ0kgY29uZmlnIHNwYWNlIGFuZCBiYXNpYyBCQVJzLCBub3QgdGhlIGFjdHVhbCBkZXZpY2UncyBpbnRlcm5hbCBsb2dpYyBsaWtlIHRoZSBDUExELCBJMkMgYnVzLCBhbmQgTWljcm9CbGF6ZSBmaXJtd2FyZS4gVGhpcyBwYXRjaCBpbnRlcmFjdHMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMuXG5cblRoaXMgcGF0Y2ggYWRkcyBJMkMgY29tbXVuaWNhdGlvbiB3aXRoIGEgQ1BMRC4gTG9va2luZyBhdCB0aGUgY29kZTogYGFkdmFfeDFfbWJsYXplX2FjcXVpcmVgIGV4cGVjdHMgc3BlY2lmaWMgcmVzcG9uc2VzIChgTUJMQVpFX0dSQU5URURgKS4gVGhpcyBjb2RlIHVzZXMgYGlvd3JpdGUzMmAgYW5kIGBpb3JlYWQzMmAgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIHdhaXRzIGZvciBhIHNwZWNpZmljIHJlc3BvbnNlLiAgSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgdGhvc2UgYGlvcmVhZDMyYCBjYWxscyB3aWxsIGxpa2VseSByZXR1cm4gemVybyBvciBgMHhmZmZmZmZmZmAsIHNvIGBhZHZhX3gxX21ibGF6ZV9hY3F1aXJlYCB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCB3aXRoIHRpbWVvdXQuIElmIGl0IGZhaWxzLCBhbGwgdGhlIHN1YnNlcXVlbnQgY29kZSwgSTJDIHRyYW5zZmVycywgQ1BMRCBjb21tYW5kcywgYW5kIGZpcm13YXJlIHVwbG9hZHMsIHdpbGwgYmUgY29tcGxldGVseSB1bnJlYWNoYWJsZS4gQW5kIHRoZSBgYWR2YV9jcGxkX3dyaXRlYCBjYWxscyBgYWR2YV94MV9pMmNfeGZlcmAuXG5cblRoZSBwcm9tcHQgZ2l2ZXMgYSBjb3VwbGUgb2Ygc3BlY2lmaWMgcmVhc29ucyBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0IHNheXM6IFwiQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VXCIuIEFuZCwgXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVVcIi4gU2luY2UgYHB0cF9vY3BgIGlzIGEgZHJpdmVyIGZvciB0aGUgT0NQIFRpbWVjYXJkLCB3aGljaCBpcyBhICpwaHlzaWNhbCogUENJZSBjYXJkLCBhbmQgdGhlIG5ldyBjb2RlIGRpcmVjdGx5IGNvbW11bmljYXRlcyB3aXRoIHRoaXMgaGFyZHdhcmUgKE1pY3JvQmxhemUsIEkyQyBtdXgsIENQTEQpIHRoYXQncyBub3QgZW11bGF0ZWQgaW4gUUVNVSwgaXQgZmFsbHMgc3F1YXJlbHkgaW50byB0aGF0IGZpcnN0IGNhdGVnb3J5LiBUaGlzIGNvZGUgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJlY2F1c2UgaXQgZXhwbGljaXRseSB3YWl0cyBmb3IgdGhlIGhhcmR3YXJlIHRvIGJlIGluIGEgY2VydGFpbiBzdGF0ZSwgYW5kIHRoYXQgc3RhdGUgY2FuJ3QgYmUgYWNoaWV2ZWQgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLiAgXG5cbkV2ZW4gaWYgaXQgZ2V0cyBwYXN0IHRoZSBNaWNyb0JsYXplIGdyYW50LCB0aGUgYGkyY190cmFuc2ZlcmAgd2lsbCBmYWlsIGJlY2F1c2UgdGhlIGhhcmR3YXJlIEkyQyBjb250cm9sbGVyIGlzIG5vdCBlbXVsYXRlZCBvciBwb3NzaWJseSBub3QgZXZlbiByZWdpc3RlcmVkLiBTbywgdGhlcmUgaXMgbm8gd2F5IHRvIHJlYWNoIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmcgPSBmYWxzZWAuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGF0IGRyaXZlciBhbmQgZG9uJ3QgaW50cm9kdWNlIGFueSBnZW5lcmljIGtlcm5lbCBtb2RpZmljYXRpb25zLiBMb29rcyBsaWtlIEknbSBnb29kOiB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBgRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy10aW1lY2FyZGAgYW5kIGBkcml2ZXJzL3B0cC9wdHBfb2NwLmNgLiBObyBnZW5lcmljIGNoYW5nZXMuXG5PaywgSSB3aWxsIGZvcm11bGF0ZSB0aGUgcmVzcG9uc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTUxLCJPdXRwdXRUb2tlbnMiOjEzMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6NDE6MzcuMTg1Nzg3MTU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIENQTEQgZmlybXdhcmUgdXBsb2FkIGFuZCBzeXNmcyBhdHRyaWJ1dGVzIGZvciB0aGUgQURWQSB4MSBPQ1AgVGltZWNhcmQsIHdoaWNoIGlzIGEgcGh5c2ljYWwgUENJZSBkZXZpY2UuIFRoZSBuZXcgY29kZSBoZWF2aWx5IHJlbGllcyBvbiBoYXJkd2FyZS1zcGVjaWZpYyBpbnRlcmFjdGlvbnMgKGUuZy4sIHBvbGxpbmcgTU1JTyByZWdpc3RlcnMgZm9yIE1pY3JvQmxhemUgZmlybXdhcmUgZ3JhbnRzLCBJMkMgY29tbXVuaWNhdGlvbiB3aXRoIGEgUENBOTU0OCBtdXggYW5kIExhdHRpY2UgQ1BMRCkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBjb3JlIGxvZ2ljIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBDUExEIGZpcm13YXJlIHVwbG9hZCBhbmQgc3lzZnMgYXR0cmlidXRlcyBmb3IgdGhlIEFEVkEgeDEgT0NQIFRpbWVjYXJkLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlLiBUaGUgbmV3IGNvZGUgaGVhdmlseSByZWxpZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgaW50ZXJhY3Rpb25zIChlLmcuLCBwb2xsaW5nIE1NSU8gcmVnaXN0ZXJzIGZvciBNaWNyb0JsYXplIGZpcm13YXJlIGdyYW50cywgSTJDIGNvbW11bmljYXRpb24gd2l0aCBhIFBDQTk1NDggbXV4IGFuZCBMYXR0aWNlIENQTEQpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgY29yZSBsb2dpYyBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2b4qm[1] Phase: Running StartedAt: 2026-08-03 19:42:01 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2b4qm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 19:42:01 +0000 UTC FinishedAt: 2026-08-03 19:42:07 +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,}