Name: series-workflowrfx5r Phase: Failed StartedAt: 2026-09-04 11:47:51 +0000 UTC FinishedAt: 2026-09-04 12:09:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrfx5r[0] Phase: Succeeded StartedAt: 2026-09-04 11:47:51 +0000 UTC FinishedAt: 2026-09-04 12:09:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrfx5r[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 11:47:51 +0000 UTC FinishedAt: 2026-09-04 12:09:17 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgJiMzOTtzdHJ1Y3QgY2xrX2luaXRfZGF0YSYjMzk7IGluIGRyaXZlciBwcm9iZS9zZXR1cCBmdW5jdGlvbnMgYWNyb3NzIGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgKFNpRml2ZSBGVTU0MCBTb0MgTUFDKSwgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgKEFtbG9naWMgTWVzb24gRzEyQSBTb0MgTURJTyBtdXgpLCBhbmQgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgKEFpcm9oYSBFTjg4MTFIIE1ESU8gUEhZKS4gQWxsIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3IgRXRoZXJuZXQgUEhZcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGVtIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMzdmODM5ZDVlZDEyY2VlODZjOGU3ZThjYjczYmYzNDQzMDY3MzU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAxMjowODowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuaW5kZXggNzZlZTRmNTA2MDMzNS4uMmU2YTVlOTNkMGNkZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcbkBAIC01Mzc1LDcgJiM0Mzs1Mzc1LDcgQEAgc3RhdGljIGludCBmdTU0MF9jMDAwX2Nsa19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBjbGsgKipwY2xrLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2NsayxcbiBcdFx0XHQgICAgICAgc3RydWN0IGNsayAqKnJ4X2Nsaywgc3RydWN0IGNsayAqKnRzdV9jbGspXG4ge1xuLVx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDtcbiYjNDM7XHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307XG4gXHRpbnQgZXJyID0gMDtcbiBcbiBcdGVyciA9IG1hY2JfY2xrX2luaXRfZGZsdChwZGV2LCBwY2xrLCBoY2xrLCB0eF9jbGssIHJ4X2NsaywgdHN1X2Nsayk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuY1xuaW5kZXggMDhkNmE2YzkzZmI4Yi4uZTZjOWVmMzY0MWFmYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuY1xuQEAgLTIyMyw3ICYjNDM7MjIzLDcgQEAgc3RhdGljIGludCBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBnMTJhX21kaW9fbXV4ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gXHRjb25zdCBjaGFyICpwYXJlbnRfbmFtZXNbUExMX01VWF9OVU1fUEFSRU5UXTtcbi1cdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7XG4mIzQzO1x0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9O1xuIFx0c3RydWN0IGcxMmFfZXBoeV9wbGwgKnBsbDtcbiBcdHN0cnVjdCBjbGtfbXV4ICptdXg7XG4gXHRzdHJ1Y3QgY2xrICpjbGs7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xuaW5kZXggMGVlYjdiOWE0ZTI2MC4uNDI5MjMxOTQ5MTIwYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xuQEAgLTkzMiw3ICYjNDM7OTMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIGFuODgxMWhiX2Nsa19vcHMgPSB7XG4gXG4gc3RhdGljIGludCBhbjg4MTFoYl9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcbiB7XG4tXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0O1xuJiM0MztcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTtcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTU1PTl9DTEspKVxuQEAgLTEwMzEsNyAmIzQzOzEwMzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZW44ODExaF9jbGtfb3BzID0ge1xuIFxuIHN0YXRpYyBpbnQgZW44ODExaF9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcbiB7XG4tXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0O1xuJiM0MztcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTtcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTU1PTl9DTEspKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGluaXRpYWxpemVzICYjMzk7c3RydWN0IGNsa19pbml0X2RhdGEmIzM5OyBpbiBkcml2ZXIgcHJvYmUvc2V0dXAgZnVuY3Rpb25zIGFjcm9zcyBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIChTaUZpdmUgRlU1NDAgU29DIE1BQyksIGRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jIChBbWxvZ2ljIE1lc29uIEcxMkEgU29DIE1ESU8gbXV4KSwgYW5kIGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jIChBaXJvaGEgRU44ODExSCBNRElPIFBIWSkuIEFsbCBtb2RpZmllZCBjb2RlIHBhdGhzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgU29DIGhhcmR3YXJlIG9yIEV0aGVybmV0IFBIWXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlbSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDM3ZjgzOWQ1ZWQxMmNlZTg2YzhlN2U4Y2I3M2JmMzQ0MzA2NzM1OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMTI6MDg6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYwppbmRleCA3NmVlNGY1MDYwMzM1Li4yZTZhNWU5M2QwY2RkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMKQEAgLTUzNzUsNyAmIzQzOzUzNzUsNyBAQCBzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssCiAJCQkgICAgICAgc3RydWN0IGNsayAqKmhjbGssIHN0cnVjdCBjbGsgKip0eF9jbGssCiAJCQkgICAgICAgc3RydWN0IGNsayAqKnJ4X2Nsaywgc3RydWN0IGNsayAqKnRzdV9jbGspCiB7Ci0Jc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDsKJiM0MzsJc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9OwogCWludCBlcnIgPSAwOwogCiAJZXJyID0gbWFjYl9jbGtfaW5pdF9kZmx0KHBkZXYsIHBjbGssIGhjbGssIHR4X2NsaywgcnhfY2xrLCB0c3VfY2xrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMKaW5kZXggMDhkNmE2YzkzZmI4Yi4uZTZjOWVmMzY0MWFmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMKQEAgLTIyMyw3ICYjNDM7MjIzLDcgQEAgc3RhdGljIGludCBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBnMTJhX21kaW9fbXV4ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJY29uc3QgY2hhciAqcGFyZW50X25hbWVzW1BMTF9NVVhfTlVNX1BBUkVOVF07Ci0Jc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDsKJiM0MzsJc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9OwogCXN0cnVjdCBnMTJhX2VwaHlfcGxsICpwbGw7CiAJc3RydWN0IGNsa19tdXggKm11eDsKIAlzdHJ1Y3QgY2xrICpjbGs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jCmluZGV4IDBlZWI3YjlhNGUyNjAuLjQyOTIzMTk0OTEyMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jCkBAIC05MzIsNyAmIzQzOzkzMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBhbjg4MTFoYl9jbGtfb3BzID0gewogCiBzdGF0aWMgaW50IGFuODgxMWhiX2Nsa19wcm92aWRlcl9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBjbGtfaHcgKmh3KQogewotCXN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7CiYjNDM7CXN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTsKIAlpbnQgcmV0OwogCiAJaWYgKCFJU19FTkFCTEVEKENPTkZJR19DT01NT05fQ0xLKSkKQEAgLTEwMzEsNyAmIzQzOzEwMzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZW44ODExaF9jbGtfb3BzID0gewogCiBzdGF0aWMgaW50IGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGNsa19odyAqaHcpCiB7Ci0Jc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDsKJiM0MzsJc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9OwogCWludCByZXQ7CiAKIAlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTU1PTl9DTEspKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTYwCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSBnb2FsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgcGF0Y2hlcyBvZmZlciBhbnkgbmV3IGVudHJ5IHBvaW50cyBvciBjaGFuZ2VzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgZXhwb3NlZCB0byBmdXp6aW5nIHVzaW5nIHN5emthbGxlciwgc3BlY2lmaWNhbGx5IG9uIGFtZDY0LiAKCkZpcnN0LCBJIHNlZSB0aHJlZSBhcmVhcyBvZiBpbnRlcmVzdDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNgLCBgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmNgLCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYC4gVGhlIGNvbW1vbiB0aHJlYWQgaXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307YCB3aXRoaW4gY2xvY2sgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zOiBgZnU1NDBfYzAwMF9jbGtfaW5pdGAsIGBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXJgLCBgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwYCwgYW5kIGBlbjg4MTFoX2Nsa19wcm92aWRlcl9zZXR1cGAuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMsIHRoZXNlIHdlcmUgKnByZXZpb3VzbHkqIHVuaW5pdGlhbGl6ZWQgc3RhY2sgdmFyaWFibGVzLCBhbmQgbm93IHRoZXkmIzM5O3JlIGV4cGxpY2l0bHkgemVyb2VkLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGNoYW5nZSBpbiBiZWhhdmlvciwgd2hpY2ggY291bGQgYmUgZXhwbG9pdGFibGUuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IHRoZSBjb2RlICpwZXIgc2UqOyBpdCYjMzk7cyBhYm91dCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCB0aGUgZHJpdmVycywgYW5kIHRoZSBhcmNoaXRlY3R1cmUgKGFtZDY0LCBpbiB0aGlzIGNhc2UpLiBTbywgSSYjMzk7bGwgbmVlZCB0byByZXNlYXJjaCB0aGVzZSBzcGVjaWZpYyBkcml2ZXJzIGFuZCB0aGVpciBhc3NvY2lhdGVkIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gQXJlIHRoZXkgdXNlZCBieSBhIHZhcmlldHkgb2YgbmV0d29yayBkZXZpY2VzPyBEbyB0aGVzZSBkcml2ZXJzIGhhdmUgYSBoaXN0b3J5IG9mIGJ1Z3M/CgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGxldmVyYWdlIG15IGdyZXBwZXIgc2tpbGxzLiBJIHdhbnQgdG8gc2VlIHRoZSBicm9hZGVyIHBpY3R1cmUuIEkgbmVlZCB0byBrbm93ICp3aGVyZSogdGhlc2UgZnVuY3Rpb25zIGFuZCBkcml2ZXJzIGFyZSB1c2VkLiBIb3cgYXJlIHRoZXkgY2FsbGVkPyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGlucHV0IHBvaW50cz8gQXJlIHRoZXkgaW52b2tlZCBkaXJlY3RseSBkdXJpbmcgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24sIG9yIGFyZSB0aGV5IHBhcnQgb2YgYSBtb3JlIGNvbXBsZXggY2xvY2sgbWFuYWdlbWVudCBzeXN0ZW0/IFRoZSBncmVwcGVyIHJlc3VsdHMgd2lsbCB0ZWxsIG1lIHRoYXQuIFRoaXMgaXMgdGhlIGZhc3Rlc3Qgd2F5IHRvIGdldCBhbiBpbml0aWFsIHNlbnNlIG9mIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgc3VyZmFjZS4gVGhlbiwgSSBjYW4gc3RhcnQgbG9va2luZyBhdCBzeXprYWxsZXImIzM5O3MgY292ZXJhZ2UgYW5kIGlmIHRoZXJlJiMzOTtzIGFueSByZWxhdGVkIGNvZGUgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnU1NDBfYzAwMF9jbGtfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTUzNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIGZ1NTQwX2MwMDBfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM3NDpzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNzUtXHRcdFx0ICAgICAgIHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTU2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGZ1NTQwX2MwMDBfY29uZmlnID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2Ni1cdC5kbWFfYnVyc3RfbGVuZ3RoID0gMTYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1Njc6XHQuY2xrX2luaXQgPSBmdTU0MF9jMDAwX2Nsa19pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY4LVx0LmluaXQgPSBmdTU0MF9jMDAwX2luaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY2MQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipEaXZpbmcgaW50byB0aGUgTUFDQiBEcml2ZXIgb24gdGhlIEZVNTQwKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBNQUNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgU2lGaXZlIEZyZWVkb20gVTU0MCwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgYSBSSVNDLVYgYmFzZWQgc3lzdGVtLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvYmluZyByb3V0aW5lcyBhbmQgc2VlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgbWF0Y2hpbmcgdGhlIGhhcmR3YXJlLiBUaGF0IG1lYW5zIGRpZ2dpbmcgaW50byB0aGUgYG1hY2JfbWFpbi5jYCBmaWxlIGFuZCBleGFtaW5pbmcgdGhlIHByb2JlIGFuZCBtYXRjaCB0YWJsZXMuIE15IGluaXRpYWwgY29uY2VybiBpcyB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIGlzc3VlcyB0aGVyZSwgcGFydGljdWxhcmx5IHdpdGggdGhlIFU1NDAmIzM5O3Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4KCk15IG5leHQgc3RlcCBpcyB0byBsb2NhdGUgd2hlcmUgYGZ1NTQwX2MwMDBfY29uZmlnYCBpcyByZWZlcmVuY2VkIHdpdGhpbiBgbWFjYl9tYWluLmNgLiBUaGlzIGNvbmZpZ3VyYXRpb24gaXMga2V5LCBhbmQgSSB3YW50IHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgdXNpbmcgaXQuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBkcml2ZXIgaXMgc2V0IHVwIHRvIGludGVyYWN0IHdpdGggdGhlIFU1NDAmIzM5O3Mgc3BlY2lmaWMgaGFyZHdhcmUgZGV0YWlscy4gVGhpcyB3aWxsIGxpa2VseSBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyBpbnRlcnJ1cHRzIGFyZSByb3V0ZWQsIG1lbW9yeSBtYXBwaW5nLCBhbmQgY2xvY2sgY29uZmlndXJhdGlvbiDigJMgdGhlIHVzdWFsIHN1c3BlY3RzLiBJIHdhbnQgdG8gc2VlIGhvdyB3ZWxsIGl0JiMzOTtzIGFsbCBpbnRlZ3JhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z1NTQwX2MwMDBfY29uZmlnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFjYl91c3Jpb19jb25maWcgc2FtYTdnNV9lbWFjX3VzcmlvID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTU2MzpzdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGZ1NTQwX2MwMDBfY29uZmlnID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY0LVx0LmNhcHMgPSBNQUNCX0NBUFNfR0lHQUJJVF9NT0RFX0FWQUlMQUJMRSB8IE1BQ0JfQ0FQU19KVU1CTyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NzI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1hY2JfZHRfaWRzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzQyLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2NkbnMsenlucS1nZW1cJiMzNDssIC5kYXRhID0gXHUwMDI2enlucV9jb25maWcgfSwgLyogZGVwcmVjYXRlZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzQzOlx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3NpZml2ZSxmdTU0MC1jMDAwLWdlbVwmIzM0OywgLmRhdGEgPSBcdTAwMjZmdTU0MF9jMDAwX2NvbmZpZyB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzQ0LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxtcGZzLW1hY2JcJiMzNDssIC5kYXRhID0gXHUwMDI2bXBmc19jb25maWcgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDA0CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqSW5pdGlhbCBJbnZlc3RpZ2F0aW9uOiBDbG9jayBJbml0aWFsaXphdGlvbiBhbmQgUG90ZW50aWFsIENyb3NzLVJlZmVyZW5jZSoqCgpPa2F5LCBzbyBgZnU1NDBfYzAwMF9jbGtfaW5pdGAgaXMgcmlnaHQgdGhlcmUgaW4gdGhlIHByb2JlIHBhdGggb2YgdGhlIE1BQ0IgcGxhdGZvcm0gZHJpdmVyLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIHRoZSBjbG9ja3Mgb24gdGhpcyBTaUZpdmUgRlU1NDAtQzAwMCBHRU0gZGV2aWNlLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSB0aGF0JiMzOTtzIERUIGNvbXBhdGlibGUgd2l0aCAmIzM0O3NpZml2ZSxmdTU0MC1jMDAwLWdlbS4mIzM0OyBHb3QgaXQuIE1ha2VzIHRvdGFsIHNlbnNlLCBzdGFuZGFyZCBjbG9jayBpbml0IGluIHByb2JlLCBub3RoaW5nIHN1cnByaXNpbmcgeWV0LgoKSG93ZXZlciwgSSB2YWd1ZWx5IHJlY2FsbCBhIHJlbGF0ZWQgaXNzdWUgZnJvbSAqc29tZXdoZXJlKiwgcGVyaGFwcyBpbiBhIHNpbWlsYXIgZGV2aWNlIGNvbnRleHQsIHJlbGF0ZWQgdG8gTURJT01VWC4gTGV0IG1lIHNlZSBpZiBJIHJlY2FsbCByaWdodCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBtZGlvLW11eC1tZXNvbi1nMTJhLmNgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgcmVsYXRlZCBzaGFyZWQgY29kZSBvciBkZXNpZ24gcGF0dGVybnMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIGluaXRpYWxpemF0aW9uIG9yIGhhdmUgdXNlZnVsIGluc2lnaHRzLiBBbHdheXMgZ29vZCB0byBjcm9zcy1yZWZlcmVuY2Ugc2ltaWxhciBpbXBsZW1lbnRhdGlvbnM7IEkgbmVlZCB0byBrZWVwIGEgY2xlYW4gY29kZWJhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZzEyYV9lcGh5X2dsdWVfY2xrX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jPTIyMD1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBnMTJhX21kaW9fbXV4X21hdGNoKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jLTIyMS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jOjIyMjpzdGF0aWMgaW50IGcxMmFfZXBoeV9nbHVlX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYy0yMjMte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jPTMwND1zdGF0aWMgaW50IGcxMmFfbWRpb19tdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYy0zMjYtXHQvKiBSZWdpc3RlciBQTEwgaW4gQ0NGICovXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYzozMjc6XHRyZXQgPSBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jLTMyOC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBBbWxvZ2ljIFNvQyBTdXBwb3J0KioKCk9rYXksIHNvIGBtZGlvLW11eC1tZXNvbi1nMTJhLmNgLi4udGhhdCYjMzk7cyB0aGUgZHJpdmVyIGZpbGUgc3BlY2lmaWNhbGx5IGZvciB0aGUgTURJTyBtdWx0aXBsZXhlciBvbiB0aGUgQW1sb2dpYyBNZXNvbiBHMTJBIFNvQy4gUmlnaHQsIEFSTTY0IHBsYXRmb3JtIGRldmljZS4gR290IGl0LiBOb3csIHdoYXQmIzM5O3MgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIHNvbWV0aGluZyBsaWtlIGBhaXJfZW44ODExaC5jYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNRElPIG11bHRpcGxleGluZyBpcyB1c2VkIHdpdGhpbiB0aGlzIHBsYXRmb3JtLiBUaW1lIHRvIGdvIG92ZXIgdGhlcmUgYW5kIHN0YXJ0IGNyb3NzLXJlZmVyZW5jaW5nIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzIG9yIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwfGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTkyND1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgYW44ODExaGJfY2xrX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05MzItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5MzM6c3RhdGljIGludCBhbjg4MTFoYl9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTkzNC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTAyMz1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZW44ODExaF9jbGtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwMzEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDMyOnN0YXRpYyBpbnQgZW44ODExaF9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwMzMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEwNzQ9c3RhdGljIGludCBhbjg4MTFoYl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMjMtXHQvKiBDby1DbG9jayBPdXRwdXQgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjExMjQ6XHRyZXQgPSBhbjg4MTFoYl9jbGtfcHJvdmlkZXJfc2V0dXAoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBcdTAwMjZwcml2LVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMjUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTExNDU9c3RhdGljIGludCBlbjg4MTFoX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTE3MS1cdC8qIENvLUNsb2NrIE91dHB1dCAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTE3MjpcdHJldCA9IGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgXHUwMDI2cHJpdi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTczLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg5NQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBgYWlyX2VuODgxMWguY2AgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgYWlyX2VuODgxMWguY2AuICBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IHRoaXMgZHJpdmVyIGFjdHVhbGx5IGhhbmRsZXMuIEFoLCB5ZXMsIGl0JiMzOTtzIGFuIE1ESU8gUEhZIGRyaXZlci4gR29vZCwgdGhhdCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIGNvbnNpZGVyYWJseS4gIE5vdywgSSYjMzk7bGwgZ28gc3RyYWlnaHQgdG8gdGhlIHJlbGV2YW50IHNlY3Rpb25zIC0gcHJvYmFibHkgYXJvdW5kIHRoZSBgbW9kdWxlX3BoeV9kcml2ZXJgIGRlY2xhcmF0aW9uIG9yIHdoZXJlIHRoZSBQSFkgSURzIGFyZSBkZWZpbmVkLiBUaGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXImIzM5O3MgaWRlbnRpZmljYXRpb24gYW5kIHJlZ2lzdHJhdGlvbiBsaXZlcy4gIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBQSFkgaXQgbWFuYWdlcyBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgd2l0aCB0aGUgTURJTyBidXMuIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0aWRiaXRzIHdlIGNhbiBmaW5kIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfZHJpdmVyfE1PRFVMRV9ERVZJQ0VfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xNTAyPXN0YXRpYyB2b2lkIGFuODgxMWhiX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE1MTEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNTEyOnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBlbjg4MTFoX2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTUxMy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTU1Ni1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE1NTc6bW9kdWxlX3BoeV9kcml2ZXIoZW44ODExaF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTU1OC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTE1NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBlbjg4MTFoX3RibFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE1NjQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNTY1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZW44ODExaF90YmwpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTU2Ni1NT0RVTEVfRklSTVdBUkUoRU44ODExSF9NRDMyX0RNKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU0OAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byBnZXQgYSByZWFsbHkgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgYGFpcl9lbjg4MTFoLmNgIHByb2JlIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgZnJvbSBsaW5lcyAxMDcwIHRvIDExODAuIEkga25vdyB0aGlzIGlzIHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBpbml0aWFsaXphdGlvbiBsaWtlbHkgbGl2ZXMsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBncmFzcCBhbnkgY3JpdGljYWwgbG9naWMgb3IgcG90ZW50aWFsIHByb2JsZW0gYXJlYXMuIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGFuZCBpbXBsaWNhdGlvbnMgd2l0aGluIHRoYXQgc3BlY2lmaWMgY29kZSBibG9jay4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBwcm9ibGVtcyEpIGFyZSBsaWtlbHkgaGFwcGVuaW5nLCBhbmQgSSBuZWVkIHRvIGJlIHJlYWR5IHRvIGFuYWx5emUgaXQgd2l0aCBhIGtlZW4gZXllLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTA3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA3MDpcdFxuMTA3MTpcdFx0cmV0dXJuIHJldDtcbjEwNzI6XHR9XG4xMDczOlx0XG4xMDc0Olx0c3RhdGljIGludCBhbjg4MTFoYl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTA3NTpcdHtcbjEwNzY6XHRcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldjtcbjEwNzc6XHRcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXY7XG4xMDc4Olx0XHRpbnQgcmV0O1xuMTA3OTpcdFxuMTA4MDpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHNpemVvZihzdHJ1Y3QgZW44ODExaF9wcml2KSxcbjEwODE6XHRcdFx0XHQgICAgR0ZQX0tFUk5FTCk7XG4xMDgyOlx0XHRpZiAoIXByaXYpXG4xMDgzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTA4NDpcdFx0cGh5ZGV2LVx1MDAzZXByaXYgPSBwcml2O1xuMTA4NTpcdFxuMTA4NjpcdFx0LypcbjEwODc6XHRcdCAqIFRoZSBBTjg4MTFIQiBQSFkgYWRkcmVzcyBpcyByZXN0cmljdGVkIHRvIDgtMTUgKGRlY2ltYWwpLFxuMTA4ODpcdFx0ICogZGVwZW5kaW5nIG9uIHRoZSBib2FyZCBoYXJkd2FyZSBzdHJhcHBpbmcuXG4xMDg5Olx0XHQgKiBUaGlzIG1lYW5zIHRoZSBQQlVTIGFkZHJlc3MgaXMgb25seSBpbiB0aGUgcmFuZ2UgMTYtMjEgKGRlY2ltYWwpLFxuMTA5MDpcdFx0ICogc28gd2UgZG8gbm90IG5lZWQgdG8gaGFuZGxlIHRoZSBjYXNlXG4xMDkxOlx0XHQgKiB3aGVyZSB0aGUgUEJVUyBhZGRyZXNzIGV4Y2VlZHMgMzEgKGRlY2ltYWwpLlxuMTA5MjpcdFx0ICovXG4xMDkzOlx0XHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHBoeWRldi1cdTAwM2VtZGlvLmJ1cyxcbjEwOTQ6XHRcdFx0XHRcdCAgICAgcGh5ZGV2LVx1MDAzZW1kaW8uYWRkciAmIzQzOyBFTjg4MTFIX1BCVVNfQUREUl9PRkZTKTtcbjEwOTU6XHRcdGlmIChJU19FUlIobWRpb2RldikpXG4xMDk2Olx0XHRcdHJldHVybiBQVFJfRVJSKG1kaW9kZXYpO1xuMTA5NzpcdFxuMTA5ODpcdFx0cmV0ID0gbWRpb19kZXZpY2VfcmVnaXN0ZXIobWRpb2Rldik7XG4xMDk5Olx0XHRpZiAocmV0KVxuMTEwMDpcdFx0XHRnb3RvIGVycl9kZXZfZnJlZTtcbjExMDE6XHRcbjExMDI6XHRcdHByaXYtXHUwMDNlcGJ1c2RldiA9IG1kaW9kZXY7XG4xMTAzOlx0XG4xMTA0Olx0XHRyZXQgPSBhbjg4MTFoYl9sb2FkX2Zpcm13YXJlKHBoeWRldik7XG4xMTA1Olx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4xMTA2Olx0XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtMb2FkIGZpcm13YXJlIGZhaWxlZDogJWRcXG5cJiMzNDssIHJldCk7XG4xMTA3Olx0XHRcdGdvdG8gZXJyX2Rldl9jcmVhdGU7XG4xMTA4Olx0XHR9XG4xMTA5Olx0XG4xMTEwOlx0XHRlbjg4MTFoX3ByaW50X2Z3X3ZlcnNpb24ocGh5ZGV2KTtcbjExMTE6XHRcbjExMTI6XHRcdC8qIG1jdSBoYXMganVzdCByZXN0YXJ0ZWQgYWZ0ZXIgZmlybXdhcmUgbG9hZCAqL1xuMTExMzpcdFx0cHJpdi1cdTAwM2VtY3VfbmVlZHNfcmVzdGFydCA9IGZhbHNlO1xuMTExNDpcdFxuMTExNTpcdFx0LyogTURJT19ERVZTMS8yIGVtcHR5LCBzbyBzZXQgbW1kc19wcmVzZW50IGJpdHMgaGVyZSAqL1xuMTExNjpcdFx0cGh5ZGV2LVx1MDAzZWM0NV9pZHMubW1kc19wcmVzZW50IHw9IE1ESU9fREVWU19QTUFQTUQgfCBNRElPX0RFVlNfQU47XG4xMTE3Olx0XG4xMTE4Olx0XHRyZXQgPSBlbjg4MTFoX2xlZHNfc2V0dXAocGh5ZGV2KTtcbjExMTk6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMTIwOlx0XHRcdGdvdG8gZXJyX2Rldl9jcmVhdGU7XG4xMTIxOlx0XG4xMTIyOlx0XHRwcml2LVx1MDAzZXBoeWRldiA9IHBoeWRldjtcbjExMjM6XHRcdC8qIENvLUNsb2NrIE91dHB1dCAqL1xuMTEyNDpcdFx0cmV0ID0gYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgXHUwMDI2cHJpdi1cdTAwM2Vodyk7XG4xMTI1Olx0XHRpZiAocmV0KVxuMTEyNjpcdFx0XHRnb3RvIGVycl9kZXZfY3JlYXRlO1xuMTEyNzpcdFxuMTEyODpcdFx0LyogQ29uZmlndXJlIGxlZCBncGlvIHBpbnMgYXMgb3V0cHV0ICovXG4xMTI5Olx0XHRyZXQgPSBhaXJfcGh5X2J1Y2twYnVzX3JlZ19tb2RpZnkocGh5ZGV2LCBBTjg4MTFIQl9HUElPX09VVFBVVCxcbjExMzA6XHRcdFx0XHRcdFx0ICBBTjg4MTFIQl9HUElPX09VVFBVVF8zNDUsXG4xMTMxOlx0XHRcdFx0XHRcdCAgQU44ODExSEJfR1BJT19PVVRQVVRfMzQ1KTtcbjExMzI6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMTMzOlx0XHRcdGdvdG8gZXJyX2Rldl9jcmVhdGU7XG4xMTM0Olx0XG4xMTM1Olx0XHRyZXR1cm4gMDtcbjExMzY6XHRcbjExMzc6XHRlcnJfZGV2X2NyZWF0ZTpcbjExMzg6XHRcdG1kaW9fZGV2aWNlX3JlbW92ZShtZGlvZGV2KTtcbjExMzk6XHRcbjExNDA6XHRlcnJfZGV2X2ZyZWU6XG4xMTQxOlx0XHRtZGlvX2RldmljZV9mcmVlKG1kaW9kZXYpO1xuMTE0MjpcdFx0cmV0dXJuIHJldDtcbjExNDM6XHR9XG4xMTQ0Olx0XG4xMTQ1Olx0c3RhdGljIGludCBlbjg4MTFoX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4xMTQ2Olx0e1xuMTE0NzpcdFx0c3RydWN0IGVuODgxMWhfcHJpdiAqcHJpdjtcbjExNDg6XHRcdGludCByZXQ7XG4xMTQ5Olx0XG4xMTUwOlx0XHRwcml2ID0gZGV2bV9remFsbG9jKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgc2l6ZW9mKHN0cnVjdCBlbjg4MTFoX3ByaXYpLFxuMTE1MTpcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbjExNTI6XHRcdGlmICghcHJpdilcbjExNTM6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xMTU0Olx0XHRwaHlkZXYtXHUwMDNlcHJpdiA9IHByaXY7XG4xMTU1Olx0XG4xMTU2Olx0XHRyZXQgPSBlbjg4MTFoX2xvYWRfZmlybXdhcmUocGh5ZGV2KTtcbjExNTc6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMTU4Olx0XHRcdHJldHVybiByZXQ7XG4xMTU5Olx0XG4xMTYwOlx0XHQvKiBtY3UgaGFzIGp1c3QgcmVzdGFydGVkIGFmdGVyIGZpcm13YXJlIGxvYWQgKi9cbjExNjE6XHRcdHByaXYtXHUwMDNlbWN1X25lZWRzX3Jlc3RhcnQgPSBmYWxzZTtcbjExNjI6XHRcbjExNjM6XHRcdC8qIE1ESU9fREVWUzEvMiBlbXB0eSwgc28gc2V0IG1tZHNfcHJlc2VudCBiaXRzIGhlcmUgKi9cbjExNjQ6XHRcdHBoeWRldi1cdTAwM2VjNDVfaWRzLm1tZHNfcHJlc2VudCB8PSBNRElPX0RFVlNfUE1BUE1EIHwgTURJT19ERVZTX0FOO1xuMTE2NTpcdFxuMTE2NjpcdFx0cmV0ID0gZW44ODExaF9sZWRzX3NldHVwKHBoeWRldik7XG4xMTY3Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTE2ODpcdFx0XHRyZXR1cm4gcmV0O1xuMTE2OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzAyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE1ESU8gUEhZIFByb2JpbmcgaW4gYSBWaXJ0dWFsIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBQSFkgZHJpdmVycyB3b3JrLCBzcGVjaWZpY2FsbHkgdGhlIGBhbjg4MTFoYl9sb2FkX2Zpcm13YXJlYCBhbmQgYGVuODgxMWhfbG9hZF9maXJtd2FyZWAgcm91dGluZXMsIGFsb25nIHdpdGggdGhlIGBwaHlfZHJpdmVyYCBwcm9iaW5nLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgSSBjYW4gZXZlbiByZWFjaCBNRElPIFBIWSBkcml2ZXJzIGluIHZpcnR1YWxpemVkIG9yIGVtdWxhdGVkIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIE1ESU8gUEhZIGRldmljZXMgYXJlIGNyZWF0ZWQgYW5kIHByb2JlZCBpbiB0aGUgZmlyc3QgcGxhY2UuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZG8gSSBuZWVkIHJlYWwgaGFyZHdhcmUgZm9yIHRoaXMsIG9yIGFyZSB0aGVyZSB2aXJ0dWFsIE1ESU8gaW50ZXJmYWNlcywgbW9jayBNRElPIGltcGxlbWVudGF0aW9ucywgb3IgcGVyaGFwcyBldmVuIFVTQi10by1NRElPIHNvbHV0aW9ucyB0aGF0IG1pZ2h0IHdvcms/IEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHdoZXJlIE1ESU8gZGV2aWNlcyBvcmlnaW5hdGUgd2l0aGluIExpbnV4IGl0c2VsZi4KCkFoYSEgTURJTyBQSFlzIGdldCBzY2FubmVkIG9uIGFuIE1ESU8gYnVzIHVzaW5nIGBtZGlvYnVzX3NjYW5gLCB3aGljaCBpcyBjcmVhdGVkIGJ5IEV0aGVybmV0IE1BQyBkcml2ZXJzIG9yIHRoaW5ncyBsaWtlIGBtZGlvLWdwaW9gIG9yIGBtZGlvLWJpdGJhbmdgLiBEdXJpbmcgdGhpcyBzY2FuLCB0aGUgYnVzIGRyaXZlciByZWFkcyB0aGUgYE1JSV9QSFlTSUQxYCBhbmQgYE1JSV9QSFlTSUQyYCByZWdpc3RlcnMgZnJvbSB0aGUgUEhZcyBvdmVyIHRoZSBNRElPIGJ1cy4gSWYgdGhlIFBIWSBJRCBtYXRjaGVzIHRoZSBleHBlY3RlZCBgQUlSX1BIWV9JRF9FTjg4MTFIYCBvciBgQUlSX1BIWV9JRF9BTjg4MTFIQmAsIHRoZSBrZXJuZWwgdGhlbiBhbGxvY2F0ZXMgYSBgc3RydWN0IHBoeV9kZXZpY2VgIGFuZCBwcm9iZXMgdGhlIGBlbjg4MTFoX2RyaXZlcmAuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gSSBzaW11bGF0ZSB0aGlzIGluIGFuIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdoaWNoIGlzIHdoYXQgc3l6a2FsbGVyIHVzZXM/IERvIGFueSBvZiB0aGVzZSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyBoYXZlIGEgZGV2aWNlIHdpdGggYW4gQWlycm9oYSBFTjg4MTFIIFBIWT8gTm9wZSwgaXQgbG9va3MgbGlrZSBRRU1VIHR5cGljYWxseSBlbXVsYXRlcyBJbnRlbCBlMTAwMC9lMTAwMGUsIFJlYWx0ZWsgcnRsODEzOSwgdmlydGlvLW5ldCwgZXRjLiwgbm9uZSBvZiB3aGljaCBoYXZlIHRoZSBFTjg4MTFIIFBIWSwgb3IgTWVzb24gRzEyQSBNRElPIG11eCwgb3IgdGhlIFNpRml2ZSBGVTU0MCBNQUNCLiBUaGlzIGlzIGEgcHJvYmxlbS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRvIHNlZSBpZiBhbnkgb2YgdGhlc2UgZHJpdmVycyAoYG1hY2JgLCBgZW44ODExaGAsIG9yIG90aGVycykgY2FuIGJlIHByb2JlZCB2aWEgbmV0bGluaywgbW9jaywgb3IgdmlydHVhbCBidXNzZXMgdG8gZ2V0IGFyb3VuZCB0aGUgaGFyZHdhcmUuCgpUYWtpbmcgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jYDogSSBzZWUgdGhhdCBgZnU1NDBfYzAwMF9jbGtfaW5pdGAgZ2V0cyBjYWxsZWQgaW4gYG1hY2JfcHJvYmVgIHdoZW4gdGhlIGRldmljZSB0cmVlIElEIG1hdGNoZXMgYCYjMzQ7c2lmaXZlLGZ1NTQwLWMwMDAtZ2VtJiMzNDtgLiBUaGUgYG1hY2JgIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciByZWdpc3RlcmVkIHZpYSBgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyYC4gSSBzdXNwZWN0IHRoYXQgb24geDg2XzY0LCBhIHBsYXRmb3JtIGRldmljZSBmb3IgYSBkZXZpY2UgdHJlZSBzdWNoIGFzIGAmIzM0O3NpZml2ZSxmdTU0MC1jMDAwLWdlbSYjMzQ7YCBjYW4mIzM5O3QgYmUgcHJvYmVkIHVubGVzcyBJIGNyZWF0ZSBhIGNvcnJlc3BvbmRpbmcgZGV2aWNlIHRyZWUvcGxhdGZvcm0gZGV2aWNlLiBBbmQgZXZlbiB0aGVuLCBpdCYjMzk7cyBmb3IgYW4gRlU1NDAsIHdoaWNoIGlzIGEgUklTQy1WIFNvQyBhbmQgbGlrZWx5IHdvbiYjMzk7dCBldmVuIGJlIHByb2JlZCBvbiBhbWQ2NC94ODZfNjQuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgY2FuIGBtYWNiYCBhbHNvIGJlIGEgUENJIGRldmljZT8gSSBuZWVkIHRvIGNoZWNrIGBtYWNiX3BjaS5jYCBvciBhIHNpbWlsYXIgZmlsZSB0byBjb25maXJtIGlmIENhZGVuY2UgTUFDQiBjYW4gZXhpc3QgYXMgYSBQQ0kgZGV2aWNlIGluIGFkZGl0aW9uIHRvIGJlaW5nIGEgcGxhdGZvcm0gZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWNiX3BjaXxmdTU0MCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz00NT1jb25maWcgTUFDQl9QQ0lcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNTEtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzo1MjpcdCAgd2lsbCBiZSBjYWxsZWQgbWFjYl9wY2kuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfTUFDQikgJiM0Mzs9IG1hY2Iub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTUFDQl9QQ0kpICYjNDM7PSBtYWNiX3BjaS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NC0vKiBUaGlzIHN0cnVjdHVyZSBpcyBvbmx5IHVzZWQgZm9yIE1BQ0Igb24gU2lGaXZlIEZVNTQwIGRldmljZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDU6c3RydWN0IHNpZml2ZV9mdTU0MF9tYWNiX21nbXQge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00Ni1cdHZvaWQgX19pb21lbSAqcmVnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDkyMj1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfdXNyaW9fY29uZmlnIGF0OTFfZGVmYXVsdF91c3JpbyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ5MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ5MzQ6c3RhdGljIHN0cnVjdCBzaWZpdmVfZnU1NDBfbWFjYl9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00OTM1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTI5Mj1zdGF0aWMgaW50IGF0OTFldGhlcl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzE1OnN0YXRpYyB1bnNpZ25lZCBsb25nIGZ1NTQwX21hY2JfdHhfcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAqaHcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzMTYtXHRcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTMyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTMyMTpzdGF0aWMgaW50IGZ1NTQwX21hY2JfdHhfZGV0ZXJtaW5lX3JhdGUoc3RydWN0IGNsa19odyAqaHcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzMjItXHRcdFx0XHRcdHN0cnVjdCBjbGtfcmF0ZV9yZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzQ4OnN0YXRpYyBpbnQgZnU1NDBfbWFjYl90eF9zZXRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyByYXRlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzQ5LVx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM1NC1cdGNsa19od19pbml0X3JhdGVfcmVxdWVzdChodywgXHUwMDI2cmVxLCByYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM1NTpcdHJldCA9IGZ1NTQwX21hY2JfdHhfZGV0ZXJtaW5lX3JhdGUoaHcsIFx1MDAyNnJlcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNTYtXHRpZiAocmV0ICE9IDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzY4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBmdTU0MF9jMDAwX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM2OTpcdC5yZWNhbGNfcmF0ZSA9IGZ1NTQwX21hY2JfdHhfcmVjYWxjX3JhdGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzNzA6XHQuZGV0ZXJtaW5lX3JhdGUgPSBmdTU0MF9tYWNiX3R4X2RldGVybWluZV9yYXRlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzcxOlx0LnNldF9yYXRlID0gZnU1NDBfbWFjYl90eF9zZXRfcmF0ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM3Mi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1Mzc0OnN0YXRpYyBpbnQgZnU1NDBfYzAwMF9jbGtfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM3NS1cdFx0XHQgICAgICAgc3RydWN0IGNsayAqKmhjbGssIHN0cnVjdCBjbGsgKip0eF9jbGssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzkxLVx0aW5pdC5uYW1lID0gXCYjMzQ7c2lmaXZlLWdlbWd4bC1tZ210XCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzkyOlx0aW5pdC5vcHMgPSBcdTAwMjZmdTU0MF9jMDAwX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM5My1cdGluaXQuZmxhZ3MgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTQyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTQyMjpzdGF0aWMgaW50IGZ1NTQwX2MwMDBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU1NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX3VzcmlvX2NvbmZpZyBzYW1hN2c1X2VtYWNfdXNyaW8gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTYzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFjYl9jb25maWcgZnU1NDBfYzAwMF9jb25maWcgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NjQtXHQuY2FwcyA9IE1BQ0JfQ0FQU19HSUdBQklUX01PREVfQVZBSUxBQkxFIHwgTUFDQl9DQVBTX0pVTUJPIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NjYtXHQuZG1hX2J1cnN0X2xlbmd0aCA9IDE2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTY3Olx0LmNsa19pbml0ID0gZnU1NDBfYzAwMF9jbGtfaW5pdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTU2ODpcdC5pbml0ID0gZnU1NDBfYzAwMF9pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY5LVx0Lmp1bWJvX21heF9sZW4gPSAxMDI0MCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWFjYl9kdF9pZHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NDItXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7Y2Rucyx6eW5xLWdlbVwmIzM0OywgLmRhdGEgPSBcdTAwMjZ6eW5xX2NvbmZpZyB9LCAvKiBkZXByZWNhdGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3NDM6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c2lmaXZlLGZ1NTQwLWMwMDAtZ2VtXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNmZ1NTQwX2MwMDBfY29uZmlnIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NDQtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLG1wZnMtbWFjYlwmIzM0OywgLmRhdGEgPSBcdTAwMjZtcGZzX2NvbmZpZyB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxOTojZGVmaW5lIFBDSV9EUklWRVJfTkFNRSBcJiMzNDttYWNiX3BjaVwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTIwLSNkZWZpbmUgUExBVF9EUklWRVJfTkFNRSBcJiMzNDttYWNiXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjU6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjYtXHQubmFtZSAgICAgPSBQQ0lfRFJJVkVSX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMzI6bW9kdWxlX3BjaV9kcml2ZXIobWFjYl9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMzMtTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGRldl9pZF90YWJsZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTc1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBNQUNCIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtYWNiX3BjaS5jYCBmaWxlIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3Mgc2V0dGluZyB1cCB0aGUgTUFDQiAoTWVkaWEgQWNjZXNzIENvbnRyb2xsZXIsIEV0aGVybmV0KSBoYXJkd2FyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgdXNpbmcgdGhlIHN0YW5kYXJkIGBtYWNiX2RlZmF1bHRfY29uZmlnYCBzdHJ1Y3R1cmUgdG8gY29uZmlndXJlIHRoZSBwbGF0Zm9ybSBkZXZpY2UuIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCYjMzk7cyBob3cgaXQgZ2VuZXJhbGx5IHdvcmtzLCBidXQgaXTigJlzIGFsd2F5cyB3aXNlIHRvIHZlcmlmeS4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgaW5kZWVkIHRoZSBwYXRoIGJlaW5nIHRha2VuLCBhbmQgdGhhdCBpdCBpc24mIzM5O3Qgb3ZlcnJpZGluZyBpdCB3aXRoIHNvbWV0aGluZyBzcGVjaWZpYyB0byB0aGUgRlU1NDAtQzAwMCBjb25maWd1cmF0aW9uLiBMZXQgbWUgcXVpY2tseSBqdW1wIGludG8gYG1hY2JfcGNpLmNgIHRvIGNvbmZpcm0uIE5vIHN1cnByaXNlcyB0aGVyZSwgSSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2JfZGVmYXVsdF9jb25maWd8cGRldmluZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjgzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgbWFjYl9wY2kuY2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGNyYWNrIG9wZW4gYG1hY2JfcGNpLmNgLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIGlzIHRoZSBQQ0ktc3BlY2lmaWMgZHJpdmVyIGltcGxlbWVudGF0aW9uIGZvciB0aGUgTUFDQiBFdGhlcm5ldCBjb250cm9sbGVyLiBHaXZlbiB0aGUgZmlsZSBuYW1lLCBpdCYjMzk7cyBwcmV0dHkgbXVjaCBhIGdpdmVuLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgaG93IHRoZSBNQUNCIGhhcmR3YXJlIGlzIHByb2JlZCwgaW5pdGlhbGl6ZWQsIGFuZCBpbnRlZ3JhdGVkIHdpdGhpbiBhIFBDSS1iYXNlZCBzeXN0ZW0uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIFBDSSBkZXZpY2UgSUQgbWF0Y2hpbmcsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBrZWVuIHRvIHNlZSB0aGUgcG93ZXIgbWFuYWdlbWVudCBhc3BlY3RzOyBob3cgaXQgaGFuZGxlcyBQQ0kgcG93ZXIgc3RhdGVzIGFuZCBhbnkgc3BlY2lmaWMgY2xvY2sgbWFuYWdlbWVudCByZWxhdGVkIHRvIHRoZSBQQ0kgYnVzLiBUaGlzIHNob3VsZCBwcm92aWRlIHNvbWUgdXNlZnVsIGluZm9ybWF0aW9uIHRvIG1lLCBldmVuIGZvciB0aGUgZ2VuZXJhbCBkZXNpZ24gb2YgdGhpcyB0eXBlIG9mIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogRE9DOiBDYWRlbmNlIEdFTSBQQ0kgd3JhcHBlci5cbiAgIDQ6XHQgKlxuICAgNTpcdCAqIENvcHlyaWdodCAoQykgMjAxNiBDYWRlbmNlIERlc2lnbiBTeXN0ZW1zIC0gaHR0cHM6Ly93d3cuY2FkZW5jZS5jb21cbiAgIDY6XHQgKlxuICAgNzpcdCAqIEF1dGhvcnM6IFJhZmFsIE96aWVibG8gXHUwMDNjcmFmYWxvQGNhZGVuY2UuY29tXHUwMDNlXG4gICA4Olx0ICpcdCAgICBCYXJ0b3N6IEZvbHRhIFx1MDAzY2Jmb2x0YUBjYWRlbmNlLmNvbVx1MDAzZVxuICAgOTpcdCAqL1xuICAxMDpcdFxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4gIDEyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcdTAwM2VcbiAgMTM6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2kuaFx1MDAzZVxuICAxNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gIDE3Olx0I2luY2x1ZGUgXCYjMzQ7bWFjYi5oXCYjMzQ7XG4gIDE4Olx0XG4gIDE5Olx0I2RlZmluZSBQQ0lfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYl9wY2lcJiMzNDtcbiAgMjA6XHQjZGVmaW5lIFBMQVRfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYlwmIzM0O1xuICAyMTpcdFxuICAyMjpcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9DRE5TX01BQ0IgMHhlMDA3XG4gIDIzOlx0XG4gIDI0Olx0I2RlZmluZSBHRU1fUENMS19SQVRFIDUwMDAwMDAwXG4gIDI1Olx0I2RlZmluZSBHRU1fSENMS19SQVRFIDUwMDAwMDAwXG4gIDI2Olx0XG4gIDI3Olx0c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbiAgMjg6XHR7XG4gIDI5Olx0XHRpbnQgZXJyO1xuICAzMDpcdFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcbiAgMzE6XHRcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaW5mbyBwbGF0X2luZm87XG4gIDMyOlx0XHRzdHJ1Y3QgbWFjYl9wbGF0Zm9ybV9kYXRhIHBsYXRfZGF0YTtcbiAgMzM6XHRcdHN0cnVjdCByZXNvdXJjZSByZXNbMl07XG4gIDM0Olx0XG4gIDM1Olx0XHQvKiBlbmFibGUgcGNpIGRldmljZSAqL1xuICAzNjpcdFx0ZXJyID0gcGNpbV9lbmFibGVfZGV2aWNlKHBjaSk7XG4gIDM3Olx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4gIDM4Olx0XHRcdGRldl9lcnIoXHUwMDI2cGNpLVx1MDAzZWRldiwgXCYjMzQ7RW5hYmxpbmcgUENJIGRldmljZSBoYXMgZmFpbGVkOiAlZFwmIzM0OywgZXJyKTtcbiAgMzk6XHRcdFx0cmV0dXJuIGVycjtcbiAgNDA6XHRcdH1cbiAgNDE6XHRcbiAgNDI6XHRcdHBjaV9zZXRfbWFzdGVyKHBjaSk7XG4gIDQzOlx0XG4gIDQ0Olx0XHQvKiBzZXQgdXAgcmVzb3VyY2VzICovXG4gIDQ1Olx0XHRtZW1zZXQocmVzLCAweDAwLCBzaXplb2Yoc3RydWN0IHJlc291cmNlKSAqIEFSUkFZX1NJWkUocmVzKSk7XG4gIDQ2Olx0XHRyZXNbMF0uc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbiAgNDc6XHRcdHJlc1swXS5lbmQgPSBwY2lfcmVzb3VyY2VfZW5kKHBjaSwgMCk7XG4gIDQ4Olx0XHRyZXNbMF0ubmFtZSA9IFBDSV9EUklWRVJfTkFNRTtcbiAgNDk6XHRcdHJlc1swXS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNO1xuICA1MDpcdFx0cmVzWzFdLnN0YXJ0ID0gcGNpX2lycV92ZWN0b3IocGNpLCAwKTtcbiAgNTE6XHRcdHJlc1sxXS5uYW1lID0gUENJX0RSSVZFUl9OQU1FO1xuICA1MjpcdFx0cmVzWzFdLmZsYWdzID0gSU9SRVNPVVJDRV9JUlE7XG4gIDUzOlx0XG4gIDU0Olx0XHRkZXZfaW5mbyhcdTAwMjZwY2ktXHUwMDNlZGV2LCBcJiMzNDtFTUFDIHBoeXNpY2FsIGJhc2UgYWRkcjogJXBhXFxuXCYjMzQ7LFxuICA1NTpcdFx0XHQgXHUwMDI2cmVzWzBdLnN0YXJ0KTtcbiAgNTY6XHRcbiAgNTc6XHRcdC8qIHNldCB1cCBtYWNiIHBsYXRmb3JtIGRhdGEgKi9cbiAgNTg6XHRcdG1lbXNldChcdTAwMjZwbGF0X2RhdGEsIDAsIHNpemVvZihwbGF0X2RhdGEpKTtcbiAgNTk6XHRcbiAgNjA6XHRcdC8qIGluaXRpYWxpemUgY2xvY2tzICovXG4gIDYxOlx0XHRwbGF0X2RhdGEucGNsayA9IGNsa19yZWdpc3Rlcl9maXhlZF9yYXRlKFx1MDAyNnBjaS1cdTAwM2VkZXYsIFwmIzM0O3BjbGtcJiMzNDssIE5VTEwsIDAsXG4gIDYyOlx0XHRcdFx0XHRcdFx0IEdFTV9QQ0xLX1JBVEUpO1xuICA2MzpcdFx0aWYgKElTX0VSUihwbGF0X2RhdGEucGNsaykpIHtcbiAgNjQ6XHRcdFx0ZXJyID0gUFRSX0VSUihwbGF0X2RhdGEucGNsayk7XG4gIDY1Olx0XHRcdGdvdG8gZXJyX3BjbGtfcmVnaXN0ZXI7XG4gIDY2Olx0XHR9XG4gIDY3Olx0XG4gIDY4Olx0XHRwbGF0X2RhdGEuaGNsayA9IGNsa19yZWdpc3Rlcl9maXhlZF9yYXRlKFx1MDAyNnBjaS1cdTAwM2VkZXYsIFwmIzM0O2hjbGtcJiMzNDssIE5VTEwsIDAsXG4gIDY5Olx0XHRcdFx0XHRcdFx0IEdFTV9IQ0xLX1JBVEUpO1xuICA3MDpcdFx0aWYgKElTX0VSUihwbGF0X2RhdGEuaGNsaykpIHtcbiAgNzE6XHRcdFx0ZXJyID0gUFRSX0VSUihwbGF0X2RhdGEuaGNsayk7XG4gIDcyOlx0XHRcdGdvdG8gZXJyX2hjbGtfcmVnaXN0ZXI7XG4gIDczOlx0XHR9XG4gIDc0Olx0XG4gIDc1Olx0XHQvKiBzZXQgdXAgcGxhdGZvcm0gZGV2aWNlIGluZm8gKi9cbiAgNzY6XHRcdG1lbXNldChcdTAwMjZwbGF0X2luZm8sIDAsIHNpemVvZihwbGF0X2luZm8pKTtcbiAgNzc6XHRcdHBsYXRfaW5mby5wYXJlbnQgPSBcdTAwMjZwY2ktXHUwMDNlZGV2O1xuICA3ODpcdFx0cGxhdF9pbmZvLmZ3bm9kZSA9IHBjaS1cdTAwM2VkZXYuZndub2RlO1xuICA3OTpcdFx0cGxhdF9pbmZvLm5hbWUgPSBQTEFUX0RSSVZFUl9OQU1FO1xuICA4MDpcdFx0cGxhdF9pbmZvLmlkID0gcGNpLVx1MDAzZWRldmZuO1xuICA4MTpcdFx0cGxhdF9pbmZvLnJlcyA9IHJlcztcbiAgODI6XHRcdHBsYXRfaW5mby5udW1fcmVzID0gQVJSQVlfU0laRShyZXMpO1xuICA4MzpcdFx0cGxhdF9pbmZvLmRhdGEgPSBcdTAwMjZwbGF0X2RhdGE7XG4gIDg0Olx0XHRwbGF0X2luZm8uc2l6ZV9kYXRhID0gc2l6ZW9mKHBsYXRfZGF0YSk7XG4gIDg1Olx0XHRwbGF0X2luZm8uZG1hX21hc2sgPSBwY2ktXHUwMDNlZG1hX21hc2s7XG4gIDg2Olx0XG4gIDg3Olx0XHQvKiByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2UgKi9cbiAgODg6XHRcdHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChcdTAwMjZwbGF0X2luZm8pO1xuICA4OTpcdFx0aWYgKElTX0VSUihwZGV2KSkge1xuICA5MDpcdFx0XHRlcnIgPSBQVFJfRVJSKHBkZXYpO1xuICA5MTpcdFx0XHRnb3RvIGVycl9wbGF0X2Rldl9yZWdpc3RlcjtcbiAgOTI6XHRcdH1cbiAgOTM6XHRcbiAgOTQ6XHRcdHBjaV9zZXRfZHJ2ZGF0YShwY2ksIHBkZXYpO1xuICA5NTpcdFxuICA5NjpcdFx0cmV0dXJuIDA7XG4gIDk3Olx0XG4gIDk4Olx0ZXJyX3BsYXRfZGV2X3JlZ2lzdGVyOlxuICA5OTpcdFx0Y2xrX3VucmVnaXN0ZXJfZml4ZWRfcmF0ZShwbGF0X2RhdGEuaGNsayk7XG4gMTAwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDQxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIHdpdGggdGhlIGJvbGRlZCBoZWFkZXIgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIFBDSSBEZXZpY2UgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBQQ0kgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgc2VlbXMgdG8gYmUgc2V0dGluZyB1cCAmIzM0O21hY2ImIzM0OyB3aXRoIHRoZSBkZWZhdWx0IGBwbGF0X2RhdGFgIGNvbmZpZ3VyYXRpb24sIG5vdCBzcGVjaWZpY2FsbHkgdGhlIGZ1NTQwIHNldHVwIEkgd2FzIGV4cGVjdGluZy4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbi4gTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGFuZCB3aGVyZSB0aGlzIGlzIGhhcHBlbmluZy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGZsb3cgYW5kIGZpZ3VyZSBvdXQgaG93IHRoZSBjbG9jayBpcyBpbml0aWFsaXplZCBmb3IgJiMzNDttYWNiLiYjMzQ7IFRoZSBvYnZpb3VzIHBsYWNlIHRvIGludmVzdGlnYXRlIGlzIGBtYWNiX21haW4uY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgY2xrX2luaXRgIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoaW4gdGhhdCBjb250ZXh0IGFuZCBob3cgdGhhdCBjYWxsIGltcGFjdHMgdGhlICYjMzQ7bWFjYiYjMzQ7IHJlZ2lzdHJhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhvc2UgdHdvIGZ1bmN0aW9ucyBpcyB0aGUgY29yZSBwcm9ibGVtIGhlcmUuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IHNvdXJjZSBjb2RlIGFuZCBzZWUgd2hhdCBpbnNpZ2h0cyBpdCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbGtfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oPTEyMzM9c3RydWN0IG1hY2JfY29uZmlnIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaC0xMjM1LVx0dW5zaWduZWQgaW50XHRcdGRtYV9idXJzdF9sZW5ndGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaDoxMjM2Olx0aW50XHQoKmNsa19pbml0KShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oLTEyMzctXHRcdFx0ICAgIHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDYxMD1zdGF0aWMgdm9pZCBtYWNiX2Nsa3NfZGlzYWJsZShzdHJ1Y3QgY2xrICpwY2xrLCBzdHJ1Y3QgY2xrICpoY2xrLCBzdHJ1Y3QgY2xrICp0eF9jbGssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NjI0OnN0YXRpYyBpbnQgbWFjYl9jbGtfaW5pdF9kZmx0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBjbGsgKipwY2xrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjI1LVx0XHRcdCAgICAgIHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDcwOTpzdGF0aWMgaW50IG1hY2JfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3MTAtXHRcdFx0IHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcxMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ3MTQ6XHRpZiAoY29uZmlnLVx1MDAzZWNsa19pbml0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NzE1Olx0XHRyZXR1cm4gY29uZmlnLVx1MDAzZWNsa19pbml0KHBkZXYsIHBjbGssIGhjbGssIHR4X2NsaywgcnhfY2xrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NzE2LVx0XHRcdFx0XHR0c3VfY2xrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcxNy1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDcxODpcdFx0cmV0dXJuIG1hY2JfY2xrX2luaXRfZGZsdChwZGV2LCBwY2xrLCBoY2xrLCB0eF9jbGssIHJ4X2NsayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcxOS1cdFx0XHRcdFx0ICB0c3VfY2xrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTUyNTI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhdDkxZXRoZXJfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUyNjg6c3RhdGljIGludCBhdDkxZXRoZXJfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyNjktXHRcdFx0ICAgICAgc3RydWN0IGNsayAqKmhjbGssIHN0cnVjdCBjbGsgKip0eF9jbGssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01MzY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBmdTU0MF9jMDAwX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzNzQ6c3RhdGljIGludCBmdTU0MF9jMDAwX2Nsa19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBjbGsgKipwY2xrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzc1LVx0XHRcdCAgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2Nsayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1Mzc4Olx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzc5LVx0aW50IGVyciA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzODE6XHRlcnIgPSBtYWNiX2Nsa19pbml0X2RmbHQocGRldiwgcGNsaywgaGNsaywgdHhfY2xrLCByeF9jbGssIHRzdV9jbGspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzgyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU1NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX2NvbmZpZyBmdTU0MF9jMDAwX2NvbmZpZyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NjYtXHQuZG1hX2J1cnN0X2xlbmd0aCA9IDE2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTY3Olx0LmNsa19pbml0ID0gZnU1NDBfYzAwMF9jbGtfaW5pdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2OC1cdC5pbml0ID0gZnU1NDBfYzAwMF9pbml0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTYyND1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGVtYWNfY29uZmlnID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTYyNi1cdFx0TUFDQl9DQVBTX1VTUklPX0hBU19NSUksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU2Mjc6XHQuY2xrX2luaXQgPSBhdDkxZXRoZXJfY2xrX2luaXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU2MjgtXHQuaW5pdCA9IGF0OTFldGhlcl9pbml0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTc2Nj1zdGF0aWMgaW50IG1hY2JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3ODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3OTA6XHRlcnIgPSBtYWNiX2Nsa19pbml0KHBkZXYsIFx1MDAyNnBjbGssIFx1MDAyNmhjbGssIFx1MDAyNnR4X2NsaywgXHUwMDI2cnhfY2xrLCBcdTAwMjZ0c3VfY2xrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzkxLVx0XHRcdCAgICBtYWNiX2NvbmZpZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2OTg3CgkJCQkJCQlvdXRwdXQ6IDE4MQoJCQkJCQkJdGhvdWdodHM6IDk5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIGlkZW50aWZpZXMgdGhyZWUgZHJpdmVycyBiZWluZyBtb2RpZmllZDogYSBNQUMgZHJpdmVyIGZvciB0aGUgU2lGaXZlIEZVNTQwIFJJU0MtViBTb0MsIGFuIE1ESU8gbXV4IGRyaXZlciBmb3IgdGhlIEFtbG9naWMgTWVzb24gRzEyQSBBUk0gU29DLCBhbmQgYW4gRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgdGhlIEFpcm9oYSBFTjg4MTFILiBUaGUgcGF0Y2ggaXRzZWxmIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwganVzdCBpbml0aWFsaXppbmcgYHN0cnVjdCBjbGtfaW5pdF9kYXRhYCB0byB6ZXJvIGJlZm9yZSBjbG9jayByZWdpc3RyYXRpb24uIE5vIGNvbXBsZXggbG9naWMgdGhlcmUuIFRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBhcmUgcmVsZXZhbnQgZm9yIGZ1enppbmcgb24gbXkgc3RhbmRhcmQgeDg2XzY0IFFFTVUvR0NFIGVudmlyb25tZW50LgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlYWNoYWJpbGl0eSBvZiBlYWNoIGZ1bmN0aW9uLiBGaXJzdCwgYGZ1NTQwX2MwMDBfY2xrX2luaXRgIGlzIGNsZWFybHkgYSBTaUZpdmUgUklTQy1WIHBsYXRmb3JtIGRyaXZlciwgdHJpZ2dlcmVkIGJ5IGEgc3BlY2lmaWMgYG9mX2RldmljZV9pZGAuIE5vdCBnb2luZyB0byBoYXBwZW4gb24geDg2XzY0IFFFTVUuIE5leHQsIGBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXJgIGlzIGZvciBhbiBBbWxvZ2ljIEFSTSBTb0MuIFNhbWUgaXNzdWUsIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIEZpbmFsbHksIHRoZSBgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwYCBhbmQgYGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwYCBmdW5jdGlvbnMgYXJlIE1ESU8gUEhZIGRyaXZlcnMsIGRlcGVuZGVudCBvbiBhbiBNRElPIGJ1cyBhbmQgdGhlIHByZXNlbmNlIG9mIHRoZSBBaXJvaGEgUEhZLiBObyBzdWNoIFBIWSBpcyBlbXVsYXRlZCBpbiBhIHR5cGljYWwgUUVNVS9HQ0Ugc2V0dXAuIFRoZXNlIE1ESU8gUEhZcyBwcm9iZSBkdXJpbmcgTURJTyBidXMgc2Nhbm5pbmcsIHNvIHRoZXJlJiMzOTtzIG5vIHdheSB0byByZWFjaCB0aGVzZSB3aXRoIGN1cnJlbnQgY29uZmlndXJhdGlvbnMuCgpTbywgaXQmIzM5O3MgcHJldHR5IGNsZWFyIGFsbCBvZiB0aGVzZSBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIG15IHRhcmdldCBhcmNoaXRlY3R1cmUgYW5kIGVudmlyb25tZW50LiBUaGV5IGFyZSBwbGF0Zm9ybS1zcGVjaWZpYyBvciByZWxpYW50IG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBhdmFpbGFibGUuIFRoaXMgbGluZXMgdXAgd2l0aCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIFRoZXNlIGNvZGUgcGF0aHMgZmFsbCBzcXVhcmVseSBpbnRvIHRoZSBjYXRlZ29yeSBvZiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEl0JiMzOTtzIG5vdCBhIGNhc2Ugb2YgY29tcGxleCBjb250cm9sIGZsb3cgb3IgaW5kaXJlY3QgY2FsbHM7IHRoZXkgc2ltcGx5IHJlcXVpcmUgc3BlY2lmaWMgc2lsaWNvbi4KClRoZXJlZm9yZSwgdGhlIHBhdGNoIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZy4gTm8gbmVlZCB0byBsb29rIGZvciBhbnkgZm9jdXMgc3ltYm9scyBvciBlbmFibGluZyBjb25maWd1cmF0aW9ucy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlc2UgY2hhbmdlcyBhcmUgaW4gZHJpdmVycyBmb3Igc3BlY2lhbGl6ZWQgaGFyZHdhcmUgKFNpRml2ZSBSSVNDLVYsIEFtbG9naWMgQVJNLCBBaXJvaGEgUEhZcykgd2hpY2ggYXJlIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIHg4Nl82NCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgJiMzOTtzdHJ1Y3QgY2xrX2luaXRfZGF0YSYjMzk7IGluIGRyaXZlciBwcm9iZS9zZXR1cCBmdW5jdGlvbnMgYWNyb3NzIGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgKFNpRml2ZSBGVTU0MCBTb0MgTUFDKSwgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgKEFtbG9naWMgTWVzb24gRzEyQSBTb0MgTURJTyBtdXgpLCBhbmQgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgKEFpcm9oYSBFTjg4MTFIIE1ESU8gUEhZKS4gQWxsIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3IgRXRoZXJuZXQgUEhZcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGVtIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGluaXRpYWxpemVzICYjMzk7c3RydWN0IGNsa19pbml0X2RhdGEmIzM5OyBpbiBkcml2ZXIgcHJvYmUvc2V0dXAgZnVuY3Rpb25zIGFjcm9zcyBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIChTaUZpdmUgRlU1NDAgU29DIE1BQyksIGRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jIChBbWxvZ2ljIE1lc29uIEcxMkEgU29DIE1ESU8gbXV4KSwgYW5kIGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jIChBaXJvaGEgRU44ODExSCBNRElPIFBIWSkuIEFsbCBtb2RpZmllZCBjb2RlIHBhdGhzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgU29DIGhhcmR3YXJlIG9yIEV0aGVybmV0IFBIWXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlbSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6MDguOTE4ODY3ODEzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2MzI1Mjk0OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbml0aWFsaXplcyAnc3RydWN0IGNsa19pbml0X2RhdGEnIGluIGRyaXZlciBwcm9iZS9zZXR1cCBmdW5jdGlvbnMgYWNyb3NzIGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgKFNpRml2ZSBGVTU0MCBTb0MgTUFDKSwgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgKEFtbG9naWMgTWVzb24gRzEyQSBTb0MgTURJTyBtdXgpLCBhbmQgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgKEFpcm9oYSBFTjg4MTFIIE1ESU8gUEhZKS4gQWxsIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3IgRXRoZXJuZXQgUEhZcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGVtIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjA4LjkxODg3MzYyNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU0MTcwNTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDM3ZjgzOWQ1ZWQxMmNlZTg2YzhlN2U4Y2I3M2JmMzQ0MzA2NzM1OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDEyOjA4OjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXFxuaW5kZXggNzZlZTRmNTA2MDMzNS4uMmU2YTVlOTNkMGNkZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xcbkBAIC01Mzc1LDcgKzUzNzUsNyBAQCBzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2NsayxcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBjbGsgKipyeF9jbGssIHN0cnVjdCBjbGsgKip0c3VfY2xrKVxcbiB7XFxuLVxcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7XFxuK1xcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTtcXG4gXFx0aW50IGVyciA9IDA7XFxuIFxcbiBcXHRlcnIgPSBtYWNiX2Nsa19pbml0X2RmbHQocGRldiwgcGNsaywgaGNsaywgdHhfY2xrLCByeF9jbGssIHRzdV9jbGspO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jXFxuaW5kZXggMDhkNmE2YzkzZmI4Yi4uZTZjOWVmMzY0MWFmYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jXFxuQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgaW50IGcxMmFfZXBoeV9nbHVlX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIHtcXG4gXFx0c3RydWN0IGcxMmFfbWRpb19tdXggKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG4gXFx0Y29uc3QgY2hhciAqcGFyZW50X25hbWVzW1BMTF9NVVhfTlVNX1BBUkVOVF07XFxuLVxcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7XFxuK1xcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTtcXG4gXFx0c3RydWN0IGcxMmFfZXBoeV9wbGwgKnBsbDtcXG4gXFx0c3RydWN0IGNsa19tdXggKm11eDtcXG4gXFx0c3RydWN0IGNsayAqY2xrO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXFxuaW5kZXggMGVlYjdiOWE0ZTI2MC4uNDI5MjMxOTQ5MTIwYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXFxuQEAgLTkzMiw3ICs5MzIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgYW44ODExaGJfY2xrX29wcyA9IHtcXG4gXFxuIHN0YXRpYyBpbnQgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGNsa19odyAqaHcpXFxuIHtcXG4tXFx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDtcXG4rXFx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9O1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19DT01NT05fQ0xLKSlcXG5AQCAtMTAzMSw3ICsxMDMxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIGVuODgxMWhfY2xrX29wcyA9IHtcXG4gXFxuIHN0YXRpYyBpbnQgZW44ODExaF9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcXG4ge1xcbi1cXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0O1xcbitcXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTU1PTl9DTEspKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODowOS41NzM3NTU4ODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU1OTc3NjAyMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbml0aWFsaXplcyAnc3RydWN0IGNsa19pbml0X2RhdGEnIGluIGRyaXZlciBwcm9iZS9zZXR1cCBmdW5jdGlvbnMgYWNyb3NzIGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgKFNpRml2ZSBGVTU0MCBTb0MgTUFDKSwgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgKEFtbG9naWMgTWVzb24gRzEyQSBTb0MgTURJTyBtdXgpLCBhbmQgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgKEFpcm9oYSBFTjg4MTFIIE1ESU8gUEhZKS4gQWxsIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3IgRXRoZXJuZXQgUEhZcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGVtIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDM3ZjgzOWQ1ZWQxMmNlZTg2YzhlN2U4Y2I3M2JmMzQ0MzA2NzM1OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTI6MDg6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuaW5kZXggNzZlZTRmNTA2MDMzNS4uMmU2YTVlOTNkMGNkZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcbkBAIC01Mzc1LDcgKzUzNzUsNyBAQCBzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgY2xrICoqcnhfY2xrLCBzdHJ1Y3QgY2xrICoqdHN1X2NsaylcbiB7XG4tXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0O1xuK1x0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9O1xuIFx0aW50IGVyciA9IDA7XG4gXG4gXHRlcnIgPSBtYWNiX2Nsa19pbml0X2RmbHQocGRldiwgcGNsaywgaGNsaywgdHhfY2xrLCByeF9jbGssIHRzdV9jbGspO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmNcbmluZGV4IDA4ZDZhNmM5M2ZiOGIuLmU2YzllZjM2NDFhZmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuY1xuKysrIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmNcbkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIGludCBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBnMTJhX21kaW9fbXV4ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gXHRjb25zdCBjaGFyICpwYXJlbnRfbmFtZXNbUExMX01VWF9OVU1fUEFSRU5UXTtcbi1cdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7XG4rXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307XG4gXHRzdHJ1Y3QgZzEyYV9lcGh5X3BsbCAqcGxsO1xuIFx0c3RydWN0IGNsa19tdXggKm11eDtcbiBcdHN0cnVjdCBjbGsgKmNsaztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXG5pbmRleCAwZWViN2I5YTRlMjYwLi40MjkyMzE5NDkxMjBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXG5AQCAtOTMyLDcgKzkzMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBhbjg4MTFoYl9jbGtfb3BzID0ge1xuIFxuIHN0YXRpYyBpbnQgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGNsa19odyAqaHcpXG4ge1xuLVx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDtcbitcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTtcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTU1PTl9DTEspKVxuQEAgLTEwMzEsNyArMTAzMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBlbjg4MTFoX2Nsa19vcHMgPSB7XG4gXG4gc3RhdGljIGludCBlbjg4MTFoX2Nsa19wcm92aWRlcl9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBjbGtfaHcgKmh3KVxuIHtcbi1cdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7XG4rXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307XG4gXHRpbnQgcmV0O1xuIFxuIFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19DT01NT05fQ0xLKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjA5LjU3Mzc1ODg3NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzNjI2MTU5Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGUgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIHBhdGNoZXMgb2ZmZXIgYW55IG5ldyBlbnRyeSBwb2ludHMgb3IgY2hhbmdlcyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGV4cG9zZWQgdG8gZnV6emluZyB1c2luZyBzeXprYWxsZXIsIHNwZWNpZmljYWxseSBvbiBhbWQ2NC4gXG5cbkZpcnN0LCBJIHNlZSB0aHJlZSBhcmVhcyBvZiBpbnRlcmVzdDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNgLCBgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmNgLCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYC4gVGhlIGNvbW1vbiB0aHJlYWQgaXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307YCB3aXRoaW4gY2xvY2sgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zOiBgZnU1NDBfYzAwMF9jbGtfaW5pdGAsIGBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXJgLCBgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwYCwgYW5kIGBlbjg4MTFoX2Nsa19wcm92aWRlcl9zZXR1cGAuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMsIHRoZXNlIHdlcmUgKnByZXZpb3VzbHkqIHVuaW5pdGlhbGl6ZWQgc3RhY2sgdmFyaWFibGVzLCBhbmQgbm93IHRoZXkncmUgZXhwbGljaXRseSB6ZXJvZWQuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgY2hhbmdlIGluIGJlaGF2aW9yLCB3aGljaCBjb3VsZCBiZSBleHBsb2l0YWJsZS5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gVGhpcyBpc24ndCBqdXN0IGFib3V0IHRoZSBjb2RlICpwZXIgc2UqOyBpdCdzIGFib3V0IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIHRoZSBkcml2ZXJzLCBhbmQgdGhlIGFyY2hpdGVjdHVyZSAoYW1kNjQsIGluIHRoaXMgY2FzZSkuIFNvLCBJJ2xsIG5lZWQgdG8gcmVzZWFyY2ggdGhlc2Ugc3BlY2lmaWMgZHJpdmVycyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEFyZSB0aGV5IHVzZWQgYnkgYSB2YXJpZXR5IG9mIG5ldHdvcmsgZGV2aWNlcz8gRG8gdGhlc2UgZHJpdmVycyBoYXZlIGEgaGlzdG9yeSBvZiBidWdzP1xuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGxldmVyYWdlIG15IGdyZXBwZXIgc2tpbGxzLiBJIHdhbnQgdG8gc2VlIHRoZSBicm9hZGVyIHBpY3R1cmUuIEkgbmVlZCB0byBrbm93ICp3aGVyZSogdGhlc2UgZnVuY3Rpb25zIGFuZCBkcml2ZXJzIGFyZSB1c2VkLiBIb3cgYXJlIHRoZXkgY2FsbGVkPyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGlucHV0IHBvaW50cz8gQXJlIHRoZXkgaW52b2tlZCBkaXJlY3RseSBkdXJpbmcgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24sIG9yIGFyZSB0aGV5IHBhcnQgb2YgYSBtb3JlIGNvbXBsZXggY2xvY2sgbWFuYWdlbWVudCBzeXN0ZW0/IFRoZSBncmVwcGVyIHJlc3VsdHMgd2lsbCB0ZWxsIG1lIHRoYXQuIFRoaXMgaXMgdGhlIGZhc3Rlc3Qgd2F5IHRvIGdldCBhbiBpbml0aWFsIHNlbnNlIG9mIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgc3VyZmFjZS4gVGhlbiwgSSBjYW4gc3RhcnQgbG9va2luZyBhdCBzeXprYWxsZXIncyBjb3ZlcmFnZSBhbmQgaWYgdGhlcmUncyBhbnkgcmVsYXRlZCBjb2RlIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTYwLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6MjMuMTk5OTIyMDI4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTk0NDAzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnU1NDBfYzAwMF9jbGtfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTUzNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIGZ1NTQwX2MwMDBfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM3NDpzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzc1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2NsayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTU2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGZ1NTQwX2MwMDBfY29uZmlnID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY2LVxcdC5kbWFfYnVyc3RfbGVuZ3RoID0gMTYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTY3OlxcdC5jbGtfaW5pdCA9IGZ1NTQwX2MwMDBfY2xrX2luaXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY4LVxcdC5pbml0ID0gZnU1NDBfYzAwMF9pbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODoyNS4wMTkzNjg5MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMTY4MzkzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDQiBEcml2ZXIgb24gdGhlIEZVNTQwKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIE1BQ0IgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBTaUZpdmUgRnJlZWRvbSBVNTQwLCB3aGljaCwgb2YgY291cnNlLCBpcyBhIFJJU0MtViBiYXNlZCBzeXN0ZW0uIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBwcm9iaW5nIHJvdXRpbmVzIGFuZCBzZWUgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBtYXRjaGluZyB0aGUgaGFyZHdhcmUuIFRoYXQgbWVhbnMgZGlnZ2luZyBpbnRvIHRoZSBgbWFjYl9tYWluLmNgIGZpbGUgYW5kIGV4YW1pbmluZyB0aGUgcHJvYmUgYW5kIG1hdGNoIHRhYmxlcy4gTXkgaW5pdGlhbCBjb25jZXJuIGlzIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgaXNzdWVzIHRoZXJlLCBwYXJ0aWN1bGFybHkgd2l0aCB0aGUgVTU0MCdzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uXG5cbk15IG5leHQgc3RlcCBpcyB0byBsb2NhdGUgd2hlcmUgYGZ1NTQwX2MwMDBfY29uZmlnYCBpcyByZWZlcmVuY2VkIHdpdGhpbiBgbWFjYl9tYWluLmNgLiBUaGlzIGNvbmZpZ3VyYXRpb24gaXMga2V5LCBhbmQgSSB3YW50IHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgdXNpbmcgaXQuIEknbSBleHBlY3RpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBzZXQgdXAgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgVTU0MCdzIHNwZWNpZmljIGhhcmR3YXJlIGRldGFpbHMuIFRoaXMgd2lsbCBsaWtlbHkgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgaW50ZXJydXB0cyBhcmUgcm91dGVkLCBtZW1vcnkgbWFwcGluZywgYW5kIGNsb2NrIGNvbmZpZ3VyYXRpb24g4oCTIHRoZSB1c3VhbCBzdXNwZWN0cy4gSSB3YW50IHRvIHNlZSBob3cgd2VsbCBpdCdzIGFsbCBpbnRlZ3JhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjYxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6MjguMjM2MjEwMzc1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTI2MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1NTQwX2MwMDBfY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTU1ND1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfdXNyaW9fY29uZmlnIHNhbWE3ZzVfZW1hY191c3JpbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1NjM6c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX2NvbmZpZyBmdTU0MF9jMDAwX2NvbmZpZyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NjQtXFx0LmNhcHMgPSBNQUNCX0NBUFNfR0lHQUJJVF9NT0RFX0FWQUlMQUJMRSB8IE1BQ0JfQ0FQU19KVU1CTyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWFjYl9kdF9pZHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTc0Mi1cXHR7IC5jb21wYXRpYmxlID0gXFxcImNkbnMsenlucS1nZW1cXFwiLCAuZGF0YSA9IFxcdTAwMjZ6eW5xX2NvbmZpZyB9LCAvKiBkZXByZWNhdGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzQzOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwic2lmaXZlLGZ1NTQwLWMwMDAtZ2VtXFxcIiwgLmRhdGEgPSBcXHUwMDI2ZnU1NDBfYzAwMF9jb25maWcgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NDQtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsbXBmcy1tYWNiXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXBmc19jb25maWcgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6MjguMjg1NzQyNDMxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIwMDQ2NDgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipJbml0aWFsIEludmVzdGlnYXRpb246IENsb2NrIEluaXRpYWxpemF0aW9uIGFuZCBQb3RlbnRpYWwgQ3Jvc3MtUmVmZXJlbmNlKipcblxuT2theSwgc28gYGZ1NTQwX2MwMDBfY2xrX2luaXRgIGlzIHJpZ2h0IHRoZXJlIGluIHRoZSBwcm9iZSBwYXRoIG9mIHRoZSBNQUNCIHBsYXRmb3JtIGRyaXZlci4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIHRoZSBjbG9ja3Mgb24gdGhpcyBTaUZpdmUgRlU1NDAtQzAwMCBHRU0gZGV2aWNlLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSB0aGF0J3MgRFQgY29tcGF0aWJsZSB3aXRoIFwic2lmaXZlLGZ1NTQwLWMwMDAtZ2VtLlwiIEdvdCBpdC4gTWFrZXMgdG90YWwgc2Vuc2UsIHN0YW5kYXJkIGNsb2NrIGluaXQgaW4gcHJvYmUsIG5vdGhpbmcgc3VycHJpc2luZyB5ZXQuXG5cbkhvd2V2ZXIsIEkgdmFndWVseSByZWNhbGwgYSByZWxhdGVkIGlzc3VlIGZyb20gKnNvbWV3aGVyZSosIHBlcmhhcHMgaW4gYSBzaW1pbGFyIGRldmljZSBjb250ZXh0LCByZWxhdGVkIHRvIE1ESU9NVVguIExldCBtZSBzZWUgaWYgSSByZWNhbGwgcmlnaHQsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBtZGlvLW11eC1tZXNvbi1nMTJhLmNgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSByZWxhdGVkIHNoYXJlZCBjb2RlIG9yIGRlc2lnbiBwYXR0ZXJucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoaXMgaW5pdGlhbGl6YXRpb24gb3IgaGF2ZSB1c2VmdWwgaW5zaWdodHMuIEFsd2F5cyBnb29kIHRvIGNyb3NzLXJlZmVyZW5jZSBzaW1pbGFyIGltcGxlbWVudGF0aW9uczsgSSBuZWVkIHRvIGtlZXAgYSBjbGVhbiBjb2RlYmFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQwNCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjMxLjQ4NjIxMDQ1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc3MTA4MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImcxMmFfZXBoeV9nbHVlX2Nsa19yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYz0yMjA9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZzEyYV9tZGlvX211eF9tYXRjaCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMtMjIxLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jOjIyMjpzdGF0aWMgaW50IGcxMmFfZXBoeV9nbHVlX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMtMjIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jPTMwND1zdGF0aWMgaW50IGcxMmFfbWRpb19tdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jLTMyNi1cXHQvKiBSZWdpc3RlciBQTEwgaW4gQ0NGICovXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmM6MzI3OlxcdHJldCA9IGcxMmFfZXBoeV9nbHVlX2Nsa19yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jLTMyOC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODozMy4zNjMzMjY5NzdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTAwNzU2ODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgQW1sb2dpYyBTb0MgU3VwcG9ydCoqXG5cbk9rYXksIHNvIGBtZGlvLW11eC1tZXNvbi1nMTJhLmNgLi4udGhhdCdzIHRoZSBkcml2ZXIgZmlsZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNRElPIG11bHRpcGxleGVyIG9uIHRoZSBBbWxvZ2ljIE1lc29uIEcxMkEgU29DLiBSaWdodCwgQVJNNjQgcGxhdGZvcm0gZGV2aWNlLiBHb3QgaXQuIE5vdywgd2hhdCdzIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBzb21ldGhpbmcgbGlrZSBgYWlyX2VuODgxMWguY2A/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTURJTyBtdWx0aXBsZXhpbmcgaXMgdXNlZCB3aXRoaW4gdGhpcyBwbGF0Zm9ybS4gVGltZSB0byBnbyBvdmVyIHRoZXJlIGFuZCBzdGFydCBjcm9zcy1yZWZlcmVuY2luZyB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODozNS4yNjQwODY3MjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDk3NzcxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwfGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTkyND1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgYW44ODExaGJfY2xrX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTkzMi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5MzM6c3RhdGljIGludCBhbjg4MTFoYl9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTAyMz1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZW44ODExaF9jbGtfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTAzMS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDMyOnN0YXRpYyBpbnQgZW44ODExaF9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEwNzQ9c3RhdGljIGludCBhbjg4MTFoYl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTEyMy1cXHQvKiBDby1DbG9jayBPdXRwdXQgKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMTI0OlxcdHJldCA9IGFuODgxMWhiX2Nsa19wcm92aWRlcl9zZXR1cChcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldiwgXFx1MDAyNnByaXYtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTI1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMTQ1PXN0YXRpYyBpbnQgZW44ODExaF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTE3MS1cXHQvKiBDby1DbG9jayBPdXRwdXQgKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMTcyOlxcdHJldCA9IGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExNzMtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6MzguNDczODczNzQyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5Mzc2Mzk4NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIGBhaXJfZW44ODExaC5jYCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCBgYWlyX2VuODgxMWguY2AuICBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IHRoaXMgZHJpdmVyIGFjdHVhbGx5IGhhbmRsZXMuIEFoLCB5ZXMsIGl0J3MgYW4gTURJTyBQSFkgZHJpdmVyLiBHb29kLCB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUgY29uc2lkZXJhYmx5LiAgTm93LCBJJ2xsIGdvIHN0cmFpZ2h0IHRvIHRoZSByZWxldmFudCBzZWN0aW9ucyAtIHByb2JhYmx5IGFyb3VuZCB0aGUgYG1vZHVsZV9waHlfZHJpdmVyYCBkZWNsYXJhdGlvbiBvciB3aGVyZSB0aGUgUEhZIElEcyBhcmUgZGVmaW5lZC4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXIncyBpZGVudGlmaWNhdGlvbiBhbmQgcmVnaXN0cmF0aW9uIGxpdmVzLiAgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIFBIWSBpdCBtYW5hZ2VzIGFuZCBob3cgaXQncyBpbnRlZ3JhdGVkIHdpdGggdGhlIE1ESU8gYnVzLiBMZXQncyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0aWRiaXRzIHdlIGNhbiBmaW5kIVxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODk1LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6NDEuNDExNTE3OTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzA4Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kcml2ZXJ8TU9EVUxFX0RFVklDRV9UQUJMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xNTAyPXN0YXRpYyB2b2lkIGFuODgxMWhiX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTUxMS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNTEyOnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBlbjg4MTFoX2RyaXZlcltdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE1MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTU1Ni1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNTU3Om1vZHVsZV9waHlfZHJpdmVyKGVuODgxMWhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNTU4LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTE1NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBlbjg4MTFoX3RibFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTU2NC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNTY1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZW44ODExaF90YmwpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE1NjYtTU9EVUxFX0ZJUk1XQVJFKEVOODgxMUhfTUQzMl9ETSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjQxLjQ1OTgzMzI4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODc4NTk3MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIGdldCBhIHJlYWxseSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBgYWlyX2VuODgxMWguY2AgcHJvYmUgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBmcm9tIGxpbmVzIDEwNzAgdG8gMTE4MC4gSSBrbm93IHRoaXMgaXMgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGluaXRpYWxpemF0aW9uIGxpa2VseSBsaXZlcywgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdyYXNwIGFueSBjcml0aWNhbCBsb2dpYyBvciBwb3RlbnRpYWwgcHJvYmxlbSBhcmVhcy4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYW5kIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhhdCBzcGVjaWZpYyBjb2RlIGJsb2NrLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyAob3IgdGhlIHByb2JsZW1zISkgYXJlIGxpa2VseSBoYXBwZW5pbmcsIGFuZCBJIG5lZWQgdG8gYmUgcmVhZHkgdG8gYW5hbHl6ZSBpdCB3aXRoIGEga2VlbiBleWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NDgsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODo0My4zMzg0MzI0NzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwNzAsXG4gIFwiTGluZUNvdW50XCI6IDExMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMDcwOlxcdFxcbjEwNzE6XFx0XFx0cmV0dXJuIHJldDtcXG4xMDcyOlxcdH1cXG4xMDczOlxcdFxcbjEwNzQ6XFx0c3RhdGljIGludCBhbjg4MTFoYl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjEwNzU6XFx0e1xcbjEwNzY6XFx0XFx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2O1xcbjEwNzc6XFx0XFx0c3RydWN0IGVuODgxMWhfcHJpdiAqcHJpdjtcXG4xMDc4OlxcdFxcdGludCByZXQ7XFxuMTA3OTpcXHRcXG4xMDgwOlxcdFxcdHByaXYgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIHNpemVvZihzdHJ1Y3QgZW44ODExaF9wcml2KSxcXG4xMDgxOlxcdFxcdFxcdFxcdCAgICBHRlBfS0VSTkVMKTtcXG4xMDgyOlxcdFxcdGlmICghcHJpdilcXG4xMDgzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjEwODQ6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4xMDg1OlxcdFxcbjEwODY6XFx0XFx0LypcXG4xMDg3OlxcdFxcdCAqIFRoZSBBTjg4MTFIQiBQSFkgYWRkcmVzcyBpcyByZXN0cmljdGVkIHRvIDgtMTUgKGRlY2ltYWwpLFxcbjEwODg6XFx0XFx0ICogZGVwZW5kaW5nIG9uIHRoZSBib2FyZCBoYXJkd2FyZSBzdHJhcHBpbmcuXFxuMTA4OTpcXHRcXHQgKiBUaGlzIG1lYW5zIHRoZSBQQlVTIGFkZHJlc3MgaXMgb25seSBpbiB0aGUgcmFuZ2UgMTYtMjEgKGRlY2ltYWwpLFxcbjEwOTA6XFx0XFx0ICogc28gd2UgZG8gbm90IG5lZWQgdG8gaGFuZGxlIHRoZSBjYXNlXFxuMTA5MTpcXHRcXHQgKiB3aGVyZSB0aGUgUEJVUyBhZGRyZXNzIGV4Y2VlZHMgMzEgKGRlY2ltYWwpLlxcbjEwOTI6XFx0XFx0ICovXFxuMTA5MzpcXHRcXHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHBoeWRldi1cXHUwMDNlbWRpby5idXMsXFxuMTA5NDpcXHRcXHRcXHRcXHRcXHQgICAgIHBoeWRldi1cXHUwMDNlbWRpby5hZGRyICsgRU44ODExSF9QQlVTX0FERFJfT0ZGUyk7XFxuMTA5NTpcXHRcXHRpZiAoSVNfRVJSKG1kaW9kZXYpKVxcbjEwOTY6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWRpb2Rldik7XFxuMTA5NzpcXHRcXG4xMDk4OlxcdFxcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKG1kaW9kZXYpO1xcbjEwOTk6XFx0XFx0aWYgKHJldClcXG4xMTAwOlxcdFxcdFxcdGdvdG8gZXJyX2Rldl9mcmVlO1xcbjExMDE6XFx0XFxuMTEwMjpcXHRcXHRwcml2LVxcdTAwM2VwYnVzZGV2ID0gbWRpb2RldjtcXG4xMTAzOlxcdFxcbjExMDQ6XFx0XFx0cmV0ID0gYW44ODExaGJfbG9hZF9maXJtd2FyZShwaHlkZXYpO1xcbjExMDU6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4xMTA2OlxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiTG9hZCBmaXJtd2FyZSBmYWlsZWQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjExMDc6XFx0XFx0XFx0Z290byBlcnJfZGV2X2NyZWF0ZTtcXG4xMTA4OlxcdFxcdH1cXG4xMTA5OlxcdFxcbjExMTA6XFx0XFx0ZW44ODExaF9wcmludF9md192ZXJzaW9uKHBoeWRldik7XFxuMTExMTpcXHRcXG4xMTEyOlxcdFxcdC8qIG1jdSBoYXMganVzdCByZXN0YXJ0ZWQgYWZ0ZXIgZmlybXdhcmUgbG9hZCAqL1xcbjExMTM6XFx0XFx0cHJpdi1cXHUwMDNlbWN1X25lZWRzX3Jlc3RhcnQgPSBmYWxzZTtcXG4xMTE0OlxcdFxcbjExMTU6XFx0XFx0LyogTURJT19ERVZTMS8yIGVtcHR5LCBzbyBzZXQgbW1kc19wcmVzZW50IGJpdHMgaGVyZSAqL1xcbjExMTY6XFx0XFx0cGh5ZGV2LVxcdTAwM2VjNDVfaWRzLm1tZHNfcHJlc2VudCB8PSBNRElPX0RFVlNfUE1BUE1EIHwgTURJT19ERVZTX0FOO1xcbjExMTc6XFx0XFxuMTExODpcXHRcXHRyZXQgPSBlbjg4MTFoX2xlZHNfc2V0dXAocGh5ZGV2KTtcXG4xMTE5OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjExMjA6XFx0XFx0XFx0Z290byBlcnJfZGV2X2NyZWF0ZTtcXG4xMTIxOlxcdFxcbjExMjI6XFx0XFx0cHJpdi1cXHUwMDNlcGh5ZGV2ID0gcGh5ZGV2O1xcbjExMjM6XFx0XFx0LyogQ28tQ2xvY2sgT3V0cHV0ICovXFxuMTEyNDpcXHRcXHRyZXQgPSBhbjg4MTFoYl9jbGtfcHJvdmlkZXJfc2V0dXAoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIFxcdTAwMjZwcml2LVxcdTAwM2Vodyk7XFxuMTEyNTpcXHRcXHRpZiAocmV0KVxcbjExMjY6XFx0XFx0XFx0Z290byBlcnJfZGV2X2NyZWF0ZTtcXG4xMTI3OlxcdFxcbjExMjg6XFx0XFx0LyogQ29uZmlndXJlIGxlZCBncGlvIHBpbnMgYXMgb3V0cHV0ICovXFxuMTEyOTpcXHRcXHRyZXQgPSBhaXJfcGh5X2J1Y2twYnVzX3JlZ19tb2RpZnkocGh5ZGV2LCBBTjg4MTFIQl9HUElPX09VVFBVVCxcXG4xMTMwOlxcdFxcdFxcdFxcdFxcdFxcdCAgQU44ODExSEJfR1BJT19PVVRQVVRfMzQ1LFxcbjExMzE6XFx0XFx0XFx0XFx0XFx0XFx0ICBBTjg4MTFIQl9HUElPX09VVFBVVF8zNDUpO1xcbjExMzI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTEzMzpcXHRcXHRcXHRnb3RvIGVycl9kZXZfY3JlYXRlO1xcbjExMzQ6XFx0XFxuMTEzNTpcXHRcXHRyZXR1cm4gMDtcXG4xMTM2OlxcdFxcbjExMzc6XFx0ZXJyX2Rldl9jcmVhdGU6XFxuMTEzODpcXHRcXHRtZGlvX2RldmljZV9yZW1vdmUobWRpb2Rldik7XFxuMTEzOTpcXHRcXG4xMTQwOlxcdGVycl9kZXZfZnJlZTpcXG4xMTQxOlxcdFxcdG1kaW9fZGV2aWNlX2ZyZWUobWRpb2Rldik7XFxuMTE0MjpcXHRcXHRyZXR1cm4gcmV0O1xcbjExNDM6XFx0fVxcbjExNDQ6XFx0XFxuMTE0NTpcXHRzdGF0aWMgaW50IGVuODgxMWhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xMTQ2OlxcdHtcXG4xMTQ3OlxcdFxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXY7XFxuMTE0ODpcXHRcXHRpbnQgcmV0O1xcbjExNDk6XFx0XFxuMTE1MDpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBzaXplb2Yoc3RydWN0IGVuODgxMWhfcHJpdiksXFxuMTE1MTpcXHRcXHRcXHRcXHQgICAgR0ZQX0tFUk5FTCk7XFxuMTE1MjpcXHRcXHRpZiAoIXByaXYpXFxuMTE1MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4xMTU0OlxcdFxcdHBoeWRldi1cXHUwMDNlcHJpdiA9IHByaXY7XFxuMTE1NTpcXHRcXG4xMTU2OlxcdFxcdHJldCA9IGVuODgxMWhfbG9hZF9maXJtd2FyZShwaHlkZXYpO1xcbjExNTc6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTE1ODpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjExNTk6XFx0XFxuMTE2MDpcXHRcXHQvKiBtY3UgaGFzIGp1c3QgcmVzdGFydGVkIGFmdGVyIGZpcm13YXJlIGxvYWQgKi9cXG4xMTYxOlxcdFxcdHByaXYtXFx1MDAzZW1jdV9uZWVkc19yZXN0YXJ0ID0gZmFsc2U7XFxuMTE2MjpcXHRcXG4xMTYzOlxcdFxcdC8qIE1ESU9fREVWUzEvMiBlbXB0eSwgc28gc2V0IG1tZHNfcHJlc2VudCBiaXRzIGhlcmUgKi9cXG4xMTY0OlxcdFxcdHBoeWRldi1cXHUwMDNlYzQ1X2lkcy5tbWRzX3ByZXNlbnQgfD0gTURJT19ERVZTX1BNQVBNRCB8IE1ESU9fREVWU19BTjtcXG4xMTY1OlxcdFxcbjExNjY6XFx0XFx0cmV0ID0gZW44ODExaF9sZWRzX3NldHVwKHBoeWRldik7XFxuMTE2NzpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4xMTY4OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTE2OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6NDMuMzM4NTUwMzE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY2MTcyMjAzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTURJTyBQSFkgUHJvYmluZyBpbiBhIFZpcnR1YWwgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBQSFkgZHJpdmVycyB3b3JrLCBzcGVjaWZpY2FsbHkgdGhlIGBhbjg4MTFoYl9sb2FkX2Zpcm13YXJlYCBhbmQgYGVuODgxMWhfbG9hZF9maXJtd2FyZWAgcm91dGluZXMsIGFsb25nIHdpdGggdGhlIGBwaHlfZHJpdmVyYCBwcm9iaW5nLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgSSBjYW4gZXZlbiByZWFjaCBNRElPIFBIWSBkcml2ZXJzIGluIHZpcnR1YWxpemVkIG9yIGVtdWxhdGVkIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIE1ESU8gUEhZIGRldmljZXMgYXJlIGNyZWF0ZWQgYW5kIHByb2JlZCBpbiB0aGUgZmlyc3QgcGxhY2UuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBkbyBJIG5lZWQgcmVhbCBoYXJkd2FyZSBmb3IgdGhpcywgb3IgYXJlIHRoZXJlIHZpcnR1YWwgTURJTyBpbnRlcmZhY2VzLCBtb2NrIE1ESU8gaW1wbGVtZW50YXRpb25zLCBvciBwZXJoYXBzIGV2ZW4gVVNCLXRvLU1ESU8gc29sdXRpb25zIHRoYXQgbWlnaHQgd29yaz8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2hlcmUgTURJTyBkZXZpY2VzIG9yaWdpbmF0ZSB3aXRoaW4gTGludXggaXRzZWxmLlxuXG5BaGEhIE1ESU8gUEhZcyBnZXQgc2Nhbm5lZCBvbiBhbiBNRElPIGJ1cyB1c2luZyBgbWRpb2J1c19zY2FuYCwgd2hpY2ggaXMgY3JlYXRlZCBieSBFdGhlcm5ldCBNQUMgZHJpdmVycyBvciB0aGluZ3MgbGlrZSBgbWRpby1ncGlvYCBvciBgbWRpby1iaXRiYW5nYC4gRHVyaW5nIHRoaXMgc2NhbiwgdGhlIGJ1cyBkcml2ZXIgcmVhZHMgdGhlIGBNSUlfUEhZU0lEMWAgYW5kIGBNSUlfUEhZU0lEMmAgcmVnaXN0ZXJzIGZyb20gdGhlIFBIWXMgb3ZlciB0aGUgTURJTyBidXMuIElmIHRoZSBQSFkgSUQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgYEFJUl9QSFlfSURfRU44ODExSGAgb3IgYEFJUl9QSFlfSURfQU44ODExSEJgLCB0aGUga2VybmVsIHRoZW4gYWxsb2NhdGVzIGEgYHN0cnVjdCBwaHlfZGV2aWNlYCBhbmQgcHJvYmVzIHRoZSBgZW44ODExaF9kcml2ZXJgLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gSSBzaW11bGF0ZSB0aGlzIGluIGFuIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdoaWNoIGlzIHdoYXQgc3l6a2FsbGVyIHVzZXM/IERvIGFueSBvZiB0aGVzZSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyBoYXZlIGEgZGV2aWNlIHdpdGggYW4gQWlycm9oYSBFTjg4MTFIIFBIWT8gTm9wZSwgaXQgbG9va3MgbGlrZSBRRU1VIHR5cGljYWxseSBlbXVsYXRlcyBJbnRlbCBlMTAwMC9lMTAwMGUsIFJlYWx0ZWsgcnRsODEzOSwgdmlydGlvLW5ldCwgZXRjLiwgbm9uZSBvZiB3aGljaCBoYXZlIHRoZSBFTjg4MTFIIFBIWSwgb3IgTWVzb24gRzEyQSBNRElPIG11eCwgb3IgdGhlIFNpRml2ZSBGVTU0MCBNQUNCLiBUaGlzIGlzIGEgcHJvYmxlbS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0byBzZWUgaWYgYW55IG9mIHRoZXNlIGRyaXZlcnMgKGBtYWNiYCwgYGVuODgxMWhgLCBvciBvdGhlcnMpIGNhbiBiZSBwcm9iZWQgdmlhIG5ldGxpbmssIG1vY2ssIG9yIHZpcnR1YWwgYnVzc2VzIHRvIGdldCBhcm91bmQgdGhlIGhhcmR3YXJlLlxuXG5UYWtpbmcgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jYDogSSBzZWUgdGhhdCBgZnU1NDBfYzAwMF9jbGtfaW5pdGAgZ2V0cyBjYWxsZWQgaW4gYG1hY2JfcHJvYmVgIHdoZW4gdGhlIGRldmljZSB0cmVlIElEIG1hdGNoZXMgYFwic2lmaXZlLGZ1NTQwLWMwMDAtZ2VtXCJgLiBUaGUgYG1hY2JgIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciByZWdpc3RlcmVkIHZpYSBgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyYC4gSSBzdXNwZWN0IHRoYXQgb24geDg2XzY0LCBhIHBsYXRmb3JtIGRldmljZSBmb3IgYSBkZXZpY2UgdHJlZSBzdWNoIGFzIGBcInNpZml2ZSxmdTU0MC1jMDAwLWdlbVwiYCBjYW4ndCBiZSBwcm9iZWQgdW5sZXNzIEkgY3JlYXRlIGEgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZS9wbGF0Zm9ybSBkZXZpY2UuIEFuZCBldmVuIHRoZW4sIGl0J3MgZm9yIGFuIEZVNTQwLCB3aGljaCBpcyBhIFJJU0MtViBTb0MgYW5kIGxpa2VseSB3b24ndCBldmVuIGJlIHByb2JlZCBvbiBhbWQ2NC94ODZfNjQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBjYW4gYG1hY2JgIGFsc28gYmUgYSBQQ0kgZGV2aWNlPyBJIG5lZWQgdG8gY2hlY2sgYG1hY2JfcGNpLmNgIG9yIGEgc2ltaWxhciBmaWxlIHRvIGNvbmZpcm0gaWYgQ2FkZW5jZSBNQUNCIGNhbiBleGlzdCBhcyBhIFBDSSBkZXZpY2UgaW4gYWRkaXRpb24gdG8gYmVpbmcgYSBwbGF0Zm9ybSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMDIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODo0OS45NTU3NzM2ODVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTg5ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfcGNpfGZ1NTQwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz00NT1jb25maWcgTUFDQl9QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01MS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6NTI6XFx0ICB3aWxsIGJlIGNhbGxlZCBtYWNiX3BjaS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19NQUNCKSArPSBtYWNiLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19NQUNCX1BDSSkgKz0gbWFjYl9wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NC0vKiBUaGlzIHN0cnVjdHVyZSBpcyBvbmx5IHVzZWQgZm9yIE1BQ0Igb24gU2lGaXZlIEZVNTQwIGRldmljZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1OnN0cnVjdCBzaWZpdmVfZnU1NDBfbWFjYl9tZ210IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2LVxcdHZvaWQgX19pb21lbSAqcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00OTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFjYl91c3Jpb19jb25maWcgYXQ5MV9kZWZhdWx0X3VzcmlvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00OTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDkzNDpzdGF0aWMgc3RydWN0IHNpZml2ZV9mdTU0MF9tYWNiX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00OTM1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01MjkyPXN0YXRpYyBpbnQgYXQ5MWV0aGVyX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTMxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzMTU6c3RhdGljIHVuc2lnbmVkIGxvbmcgZnU1NDBfbWFjYl90eF9yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzMTYtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzIxOnN0YXRpYyBpbnQgZnU1NDBfbWFjYl90eF9kZXRlcm1pbmVfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzMjItXFx0XFx0XFx0XFx0XFx0c3RydWN0IGNsa19yYXRlX3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzNDg6c3RhdGljIGludCBmdTU0MF9tYWNiX3R4X3NldF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzQ5LVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM1NC1cXHRjbGtfaHdfaW5pdF9yYXRlX3JlcXVlc3QoaHcsIFxcdTAwMjZyZXEsIHJhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM1NTpcXHRyZXQgPSBmdTU0MF9tYWNiX3R4X2RldGVybWluZV9yYXRlKGh3LCBcXHUwMDI2cmVxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNTYtXFx0aWYgKHJldCAhPSAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM2ODpzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZnU1NDBfYzAwMF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzY5OlxcdC5yZWNhbGNfcmF0ZSA9IGZ1NTQwX21hY2JfdHhfcmVjYWxjX3JhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzcwOlxcdC5kZXRlcm1pbmVfcmF0ZSA9IGZ1NTQwX21hY2JfdHhfZGV0ZXJtaW5lX3JhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzcxOlxcdC5zZXRfcmF0ZSA9IGZ1NTQwX21hY2JfdHhfc2V0X3JhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzcyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM3NDpzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzc1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2NsayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM5MS1cXHRpbml0Lm5hbWUgPSBcXFwic2lmaXZlLWdlbWd4bC1tZ210XFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzOTI6XFx0aW5pdC5vcHMgPSBcXHUwMDI2ZnU1NDBfYzAwMF9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzkzLVxcdGluaXQuZmxhZ3MgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTQyMjpzdGF0aWMgaW50IGZ1NTQwX2MwMDBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTQyMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU1NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX3VzcmlvX2NvbmZpZyBzYW1hN2c1X2VtYWNfdXNyaW8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTYzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFjYl9jb25maWcgZnU1NDBfYzAwMF9jb25maWcgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY0LVxcdC5jYXBzID0gTUFDQl9DQVBTX0dJR0FCSVRfTU9ERV9BVkFJTEFCTEUgfCBNQUNCX0NBUFNfSlVNQk8gfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY2LVxcdC5kbWFfYnVyc3RfbGVuZ3RoID0gMTYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTY3OlxcdC5jbGtfaW5pdCA9IGZ1NTQwX2MwMDBfY2xrX2luaXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTY4OlxcdC5pbml0ID0gZnU1NDBfYzAwMF9pbml0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2OS1cXHQuanVtYm9fbWF4X2xlbiA9IDEwMjQwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NzI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1hY2JfZHRfaWRzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NDItXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJjZG5zLHp5bnEtZ2VtXFxcIiwgLmRhdGEgPSBcXHUwMDI2enlucV9jb25maWcgfSwgLyogZGVwcmVjYXRlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTc0MzpcXHR7IC5jb21wYXRpYmxlID0gXFxcInNpZml2ZSxmdTU0MC1jMDAwLWdlbVxcXCIsIC5kYXRhID0gXFx1MDAyNmZ1NTQwX2MwMDBfY29uZmlnIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzQ0LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLG1wZnMtbWFjYlxcXCIsIC5kYXRhID0gXFx1MDAyNm1wZnNfY29uZmlnIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjE5OiNkZWZpbmUgUENJX0RSSVZFUl9OQU1FIFxcXCJtYWNiX3BjaVxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMjAtI2RlZmluZSBQTEFUX0RSSVZFUl9OQU1FIFxcXCJtYWNiXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjU6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI2LVxcdC5uYW1lICAgICA9IFBDSV9EUklWRVJfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEzMjptb2R1bGVfcGNpX2RyaXZlcihtYWNiX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMzMtTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGRldl9pZF90YWJsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjUwLjAwMjk2OTY3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTk5NDQwNTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDQiBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1hY2JfcGNpLmNgIGZpbGUgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCdzIHNldHRpbmcgdXAgdGhlIE1BQ0IgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyLCBFdGhlcm5ldCkgaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgdXNpbmcgdGhlIHN0YW5kYXJkIGBtYWNiX2RlZmF1bHRfY29uZmlnYCBzdHJ1Y3R1cmUgdG8gY29uZmlndXJlIHRoZSBwbGF0Zm9ybSBkZXZpY2UuIEknbSBwcmV0dHkgc3VyZSB0aGF0J3MgaG93IGl0IGdlbmVyYWxseSB3b3JrcywgYnV0IGl04oCZcyBhbHdheXMgd2lzZSB0byB2ZXJpZnkuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGluZGVlZCB0aGUgcGF0aCBiZWluZyB0YWtlbiwgYW5kIHRoYXQgaXQgaXNuJ3Qgb3ZlcnJpZGluZyBpdCB3aXRoIHNvbWV0aGluZyBzcGVjaWZpYyB0byB0aGUgRlU1NDAtQzAwMCBjb25maWd1cmF0aW9uLiBMZXQgbWUgcXVpY2tseSBqdW1wIGludG8gYG1hY2JfcGNpLmNgIHRvIGNvbmZpcm0uIE5vIHN1cnByaXNlcyB0aGVyZSwgSSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk3NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjUyLjYwMjQxMzg0NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU0MDYxNzYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfZGVmYXVsdF9jb25maWd8cGRldmluZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjUyLjY0NzgyNzI3MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQ4MjU2MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBtYWNiX3BjaS5jYCoqXG5cbkFscmlnaHQsIGxldCdzIGNyYWNrIG9wZW4gYG1hY2JfcGNpLmNgLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIGlzIHRoZSBQQ0ktc3BlY2lmaWMgZHJpdmVyIGltcGxlbWVudGF0aW9uIGZvciB0aGUgTUFDQiBFdGhlcm5ldCBjb250cm9sbGVyLiBHaXZlbiB0aGUgZmlsZSBuYW1lLCBpdCdzIHByZXR0eSBtdWNoIGEgZ2l2ZW4uIEknbSBleHBlY3RpbmcgdG8gc2VlIGhvdyB0aGUgTUFDQiBoYXJkd2FyZSBpcyBwcm9iZWQsIGluaXRpYWxpemVkLCBhbmQgaW50ZWdyYXRlZCB3aXRoaW4gYSBQQ0ktYmFzZWQgc3lzdGVtLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIFBDSSBkZXZpY2UgSUQgbWF0Y2hpbmcsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAuIFNwZWNpZmljYWxseSwgSSdtIGtlZW4gdG8gc2VlIHRoZSBwb3dlciBtYW5hZ2VtZW50IGFzcGVjdHM7IGhvdyBpdCBoYW5kbGVzIFBDSSBwb3dlciBzdGF0ZXMgYW5kIGFueSBzcGVjaWZpYyBjbG9jayBtYW5hZ2VtZW50IHJlbGF0ZWQgdG8gdGhlIFBDSSBidXMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24gdG8gbWUsIGV2ZW4gZm9yIHRoZSBnZW5lcmFsIGRlc2lnbiBvZiB0aGlzIHR5cGUgb2YgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzI4MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjU0Ljc5NjA4NTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBET0M6IENhZGVuY2UgR0VNIFBDSSB3cmFwcGVyLlxcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIENvcHlyaWdodCAoQykgMjAxNiBDYWRlbmNlIERlc2lnbiBTeXN0ZW1zIC0gaHR0cHM6Ly93d3cuY2FkZW5jZS5jb21cXG4gICA2OlxcdCAqXFxuICAgNzpcXHQgKiBBdXRob3JzOiBSYWZhbCBPemllYmxvIFxcdTAwM2NyYWZhbG9AY2FkZW5jZS5jb21cXHUwMDNlXFxuICAgODpcXHQgKlxcdCAgICBCYXJ0b3N6IEZvbHRhIFxcdTAwM2NiZm9sdGFAY2FkZW5jZS5jb21cXHUwMDNlXFxuICAgOTpcXHQgKi9cXG4gIDEwOlxcdFxcbiAgMTE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Nsay5oXFx1MDAzZVxcbiAgMTI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Nsay1wcm92aWRlci5oXFx1MDAzZVxcbiAgMTM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAxNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAxNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuICAxNzpcXHQjaW5jbHVkZSBcXFwibWFjYi5oXFxcIlxcbiAgMTg6XFx0XFxuICAxOTpcXHQjZGVmaW5lIFBDSV9EUklWRVJfTkFNRSBcXFwibWFjYl9wY2lcXFwiXFxuICAyMDpcXHQjZGVmaW5lIFBMQVRfRFJJVkVSX05BTUUgXFxcIm1hY2JcXFwiXFxuICAyMTpcXHRcXG4gIDIyOlxcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9DRE5TX01BQ0IgMHhlMDA3XFxuICAyMzpcXHRcXG4gIDI0OlxcdCNkZWZpbmUgR0VNX1BDTEtfUkFURSA1MDAwMDAwMFxcbiAgMjU6XFx0I2RlZmluZSBHRU1fSENMS19SQVRFIDUwMDAwMDAwXFxuICAyNjpcXHRcXG4gIDI3OlxcdHN0YXRpYyBpbnQgbWFjYl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpLCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuICAyODpcXHR7XFxuICAyOTpcXHRcXHRpbnQgZXJyO1xcbiAgMzA6XFx0XFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcXG4gIDMxOlxcdFxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaW5mbyBwbGF0X2luZm87XFxuICAzMjpcXHRcXHRzdHJ1Y3QgbWFjYl9wbGF0Zm9ybV9kYXRhIHBsYXRfZGF0YTtcXG4gIDMzOlxcdFxcdHN0cnVjdCByZXNvdXJjZSByZXNbMl07XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdC8qIGVuYWJsZSBwY2kgZGV2aWNlICovXFxuICAzNjpcXHRcXHRlcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGNpKTtcXG4gIDM3OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuICAzODpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwY2ktXFx1MDAzZWRldiwgXFxcIkVuYWJsaW5nIFBDSSBkZXZpY2UgaGFzIGZhaWxlZDogJWRcXFwiLCBlcnIpO1xcbiAgMzk6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gIDQwOlxcdFxcdH1cXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGNpKTtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0Lyogc2V0IHVwIHJlc291cmNlcyAqL1xcbiAgNDU6XFx0XFx0bWVtc2V0KHJlcywgMHgwMCwgc2l6ZW9mKHN0cnVjdCByZXNvdXJjZSkgKiBBUlJBWV9TSVpFKHJlcykpO1xcbiAgNDY6XFx0XFx0cmVzWzBdLnN0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XFxuICA0NzpcXHRcXHRyZXNbMF0uZW5kID0gcGNpX3Jlc291cmNlX2VuZChwY2ksIDApO1xcbiAgNDg6XFx0XFx0cmVzWzBdLm5hbWUgPSBQQ0lfRFJJVkVSX05BTUU7XFxuICA0OTpcXHRcXHRyZXNbMF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTtcXG4gIDUwOlxcdFxcdHJlc1sxXS5zdGFydCA9IHBjaV9pcnFfdmVjdG9yKHBjaSwgMCk7XFxuICA1MTpcXHRcXHRyZXNbMV0ubmFtZSA9IFBDSV9EUklWRVJfTkFNRTtcXG4gIDUyOlxcdFxcdHJlc1sxXS5mbGFncyA9IElPUkVTT1VSQ0VfSVJRO1xcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGNpLVxcdTAwM2VkZXYsIFxcXCJFTUFDIHBoeXNpY2FsIGJhc2UgYWRkcjogJXBhXFxcXG5cXFwiLFxcbiAgNTU6XFx0XFx0XFx0IFxcdTAwMjZyZXNbMF0uc3RhcnQpO1xcbiAgNTY6XFx0XFxuICA1NzpcXHRcXHQvKiBzZXQgdXAgbWFjYiBwbGF0Zm9ybSBkYXRhICovXFxuICA1ODpcXHRcXHRtZW1zZXQoXFx1MDAyNnBsYXRfZGF0YSwgMCwgc2l6ZW9mKHBsYXRfZGF0YSkpO1xcbiAgNTk6XFx0XFxuICA2MDpcXHRcXHQvKiBpbml0aWFsaXplIGNsb2NrcyAqL1xcbiAgNjE6XFx0XFx0cGxhdF9kYXRhLnBjbGsgPSBjbGtfcmVnaXN0ZXJfZml4ZWRfcmF0ZShcXHUwMDI2cGNpLVxcdTAwM2VkZXYsIFxcXCJwY2xrXFxcIiwgTlVMTCwgMCxcXG4gIDYyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBHRU1fUENMS19SQVRFKTtcXG4gIDYzOlxcdFxcdGlmIChJU19FUlIocGxhdF9kYXRhLnBjbGspKSB7XFxuICA2NDpcXHRcXHRcXHRlcnIgPSBQVFJfRVJSKHBsYXRfZGF0YS5wY2xrKTtcXG4gIDY1OlxcdFxcdFxcdGdvdG8gZXJyX3BjbGtfcmVnaXN0ZXI7XFxuICA2NjpcXHRcXHR9XFxuICA2NzpcXHRcXG4gIDY4OlxcdFxcdHBsYXRfZGF0YS5oY2xrID0gY2xrX3JlZ2lzdGVyX2ZpeGVkX3JhdGUoXFx1MDAyNnBjaS1cXHUwMDNlZGV2LCBcXFwiaGNsa1xcXCIsIE5VTEwsIDAsXFxuICA2OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgR0VNX0hDTEtfUkFURSk7XFxuICA3MDpcXHRcXHRpZiAoSVNfRVJSKHBsYXRfZGF0YS5oY2xrKSkge1xcbiAgNzE6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihwbGF0X2RhdGEuaGNsayk7XFxuICA3MjpcXHRcXHRcXHRnb3RvIGVycl9oY2xrX3JlZ2lzdGVyO1xcbiAgNzM6XFx0XFx0fVxcbiAgNzQ6XFx0XFxuICA3NTpcXHRcXHQvKiBzZXQgdXAgcGxhdGZvcm0gZGV2aWNlIGluZm8gKi9cXG4gIDc2OlxcdFxcdG1lbXNldChcXHUwMDI2cGxhdF9pbmZvLCAwLCBzaXplb2YocGxhdF9pbmZvKSk7XFxuICA3NzpcXHRcXHRwbGF0X2luZm8ucGFyZW50ID0gXFx1MDAyNnBjaS1cXHUwMDNlZGV2O1xcbiAgNzg6XFx0XFx0cGxhdF9pbmZvLmZ3bm9kZSA9IHBjaS1cXHUwMDNlZGV2LmZ3bm9kZTtcXG4gIDc5OlxcdFxcdHBsYXRfaW5mby5uYW1lID0gUExBVF9EUklWRVJfTkFNRTtcXG4gIDgwOlxcdFxcdHBsYXRfaW5mby5pZCA9IHBjaS1cXHUwMDNlZGV2Zm47XFxuICA4MTpcXHRcXHRwbGF0X2luZm8ucmVzID0gcmVzO1xcbiAgODI6XFx0XFx0cGxhdF9pbmZvLm51bV9yZXMgPSBBUlJBWV9TSVpFKHJlcyk7XFxuICA4MzpcXHRcXHRwbGF0X2luZm8uZGF0YSA9IFxcdTAwMjZwbGF0X2RhdGE7XFxuICA4NDpcXHRcXHRwbGF0X2luZm8uc2l6ZV9kYXRhID0gc2l6ZW9mKHBsYXRfZGF0YSk7XFxuICA4NTpcXHRcXHRwbGF0X2luZm8uZG1hX21hc2sgPSBwY2ktXFx1MDAzZWRtYV9tYXNrO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHQvKiByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2UgKi9cXG4gIDg4OlxcdFxcdHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChcXHUwMDI2cGxhdF9pbmZvKTtcXG4gIDg5OlxcdFxcdGlmIChJU19FUlIocGRldikpIHtcXG4gIDkwOlxcdFxcdFxcdGVyciA9IFBUUl9FUlIocGRldik7XFxuICA5MTpcXHRcXHRcXHRnb3RvIGVycl9wbGF0X2Rldl9yZWdpc3RlcjtcXG4gIDkyOlxcdFxcdH1cXG4gIDkzOlxcdFxcbiAgOTQ6XFx0XFx0cGNpX3NldF9kcnZkYXRhKHBjaSwgcGRldik7XFxuICA5NTpcXHRcXG4gIDk2OlxcdFxcdHJldHVybiAwO1xcbiAgOTc6XFx0XFxuICA5ODpcXHRlcnJfcGxhdF9kZXZfcmVnaXN0ZXI6XFxuICA5OTpcXHRcXHRjbGtfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKHBsYXRfZGF0YS5oY2xrKTtcXG4gMTAwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODo1NC43OTYxNTc0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjAzODkzNTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIHdpdGggdGhlIGJvbGRlZCBoZWFkZXIgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgUENJIERldmljZSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgUENJIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHNlZW1zIHRvIGJlIHNldHRpbmcgdXAgXCJtYWNiXCIgd2l0aCB0aGUgZGVmYXVsdCBgcGxhdF9kYXRhYCBjb25maWd1cmF0aW9uLCBub3Qgc3BlY2lmaWNhbGx5IHRoZSBmdTU0MCBzZXR1cCBJIHdhcyBleHBlY3RpbmcuIFRoYXQncyBhIGtleSBvYnNlcnZhdGlvbi4gTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGFuZCB3aGVyZSB0aGlzIGlzIGhhcHBlbmluZy4gTGV0J3Mgc2VlLi4uIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgZmxvdyBhbmQgZmlndXJlIG91dCBob3cgdGhlIGNsb2NrIGlzIGluaXRpYWxpemVkIGZvciBcIm1hY2IuXCIgVGhlIG9idmlvdXMgcGxhY2UgdG8gaW52ZXN0aWdhdGUgaXMgYG1hY2JfbWFpbi5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBjbGtfaW5pdGAgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGhpbiB0aGF0IGNvbnRleHQgYW5kIGhvdyB0aGF0IGNhbGwgaW1wYWN0cyB0aGUgXCJtYWNiXCIgcmVnaXN0cmF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aG9zZSB0d28gZnVuY3Rpb25zIGlzIHRoZSBjb3JlIHByb2JsZW0gaGVyZS4gTGV0J3MgZGlnIGludG8gdGhhdCBzb3VyY2UgY29kZSBhbmQgc2VlIHdoYXQgaW5zaWdodHMgaXQgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjU3LjQwMDA1MzUxNFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1MTQ0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2xrX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmg9MTIzMz1zdHJ1Y3QgbWFjYl9jb25maWcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmgtMTIzNS1cXHR1bnNpZ25lZCBpbnRcXHRcXHRkbWFfYnVyc3RfbGVuZ3RoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oOjEyMzY6XFx0aW50XFx0KCpjbGtfaW5pdCkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmgtMTIzNy1cXHRcXHRcXHQgICAgc3RydWN0IGNsayAqKmhjbGssIHN0cnVjdCBjbGsgKip0eF9jbGssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ2MTA9c3RhdGljIHZvaWQgbWFjYl9jbGtzX2Rpc2FibGUoc3RydWN0IGNsayAqcGNsaywgc3RydWN0IGNsayAqaGNsaywgc3RydWN0IGNsayAqdHhfY2xrLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDYyNDpzdGF0aWMgaW50IG1hY2JfY2xrX2luaXRfZGZsdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2MjUtXFx0XFx0XFx0ICAgICAgc3RydWN0IGNsayAqKmhjbGssIHN0cnVjdCBjbGsgKip0eF9jbGssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3MDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NzA5OnN0YXRpYyBpbnQgbWFjYl9jbGtfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3MTAtXFx0XFx0XFx0IHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NzEzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ3MTQ6XFx0aWYgKGNvbmZpZy1cXHUwMDNlY2xrX2luaXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NzE1OlxcdFxcdHJldHVybiBjb25maWctXFx1MDAzZWNsa19pbml0KHBkZXYsIHBjbGssIGhjbGssIHR4X2NsaywgcnhfY2xrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcxNi1cXHRcXHRcXHRcXHRcXHR0c3VfY2xrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3MTctXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDcxODpcXHRcXHRyZXR1cm4gbWFjYl9jbGtfaW5pdF9kZmx0KHBkZXYsIHBjbGssIGhjbGssIHR4X2NsaywgcnhfY2xrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcxOS1cXHRcXHRcXHRcXHRcXHQgIHRzdV9jbGspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01MjUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYXQ5MWV0aGVyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MjY4OnN0YXRpYyBpbnQgYXQ5MWV0aGVyX2Nsa19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBjbGsgKipwY2xrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTI2OS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2NsayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTM2OD1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZnU1NDBfYzAwMF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1Mzc0OnN0YXRpYyBpbnQgZnU1NDBfYzAwMF9jbGtfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNzUtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzc3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzNzg6XFx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM3OS1cXHRpbnQgZXJyID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzgxOlxcdGVyciA9IG1hY2JfY2xrX2luaXRfZGZsdChwZGV2LCBwY2xrLCBoY2xrLCB0eF9jbGssIHJ4X2NsaywgdHN1X2Nsayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzgyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU1NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX2NvbmZpZyBmdTU0MF9jMDAwX2NvbmZpZyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2Ni1cXHQuZG1hX2J1cnN0X2xlbmd0aCA9IDE2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTU2NzpcXHQuY2xrX2luaXQgPSBmdTU0MF9jMDAwX2Nsa19pbml0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2OC1cXHQuaW5pdCA9IGZ1NTQwX2MwMDBfaW5pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTYyND1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGVtYWNfY29uZmlnID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjI2LVxcdFxcdE1BQ0JfQ0FQU19VU1JJT19IQVNfTUlJLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTYyNzpcXHQuY2xrX2luaXQgPSBhdDkxZXRoZXJfY2xrX2luaXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjI4LVxcdC5pbml0ID0gYXQ5MWV0aGVyX2luaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3NjY9c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3ODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzkwOlxcdGVyciA9IG1hY2JfY2xrX2luaXQocGRldiwgXFx1MDAyNnBjbGssIFxcdTAwMjZoY2xrLCBcXHUwMDI2dHhfY2xrLCBcXHUwMDI2cnhfY2xrLCBcXHUwMDI2dHN1X2NsayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3OTEtXFx0XFx0XFx0ICAgIG1hY2JfY29uZmlnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6NTcuNDQ0NTczMTRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODEwNjcyNDU2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBpZGVudGlmaWVzIHRocmVlIGRyaXZlcnMgYmVpbmcgbW9kaWZpZWQ6IGEgTUFDIGRyaXZlciBmb3IgdGhlIFNpRml2ZSBGVTU0MCBSSVNDLVYgU29DLCBhbiBNRElPIG11eCBkcml2ZXIgZm9yIHRoZSBBbWxvZ2ljIE1lc29uIEcxMkEgQVJNIFNvQywgYW5kIGFuIEV0aGVybmV0IFBIWSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU44ODExSC4gVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyBzdHJhaWdodGZvcndhcmQsIGp1c3QgaW5pdGlhbGl6aW5nIGBzdHJ1Y3QgY2xrX2luaXRfZGF0YWAgdG8gemVybyBiZWZvcmUgY2xvY2sgcmVnaXN0cmF0aW9uLiBObyBjb21wbGV4IGxvZ2ljIHRoZXJlLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXNlIGNoYW5nZXMgYXJlIHJlbGV2YW50IGZvciBmdXp6aW5nIG9uIG15IHN0YW5kYXJkIHg4Nl82NCBRRU1VL0dDRSBlbnZpcm9ubWVudC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlYWNoYWJpbGl0eSBvZiBlYWNoIGZ1bmN0aW9uLiBGaXJzdCwgYGZ1NTQwX2MwMDBfY2xrX2luaXRgIGlzIGNsZWFybHkgYSBTaUZpdmUgUklTQy1WIHBsYXRmb3JtIGRyaXZlciwgdHJpZ2dlcmVkIGJ5IGEgc3BlY2lmaWMgYG9mX2RldmljZV9pZGAuIE5vdCBnb2luZyB0byBoYXBwZW4gb24geDg2XzY0IFFFTVUuIE5leHQsIGBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXJgIGlzIGZvciBhbiBBbWxvZ2ljIEFSTSBTb0MuIFNhbWUgaXNzdWUsIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIEZpbmFsbHksIHRoZSBgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwYCBhbmQgYGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwYCBmdW5jdGlvbnMgYXJlIE1ESU8gUEhZIGRyaXZlcnMsIGRlcGVuZGVudCBvbiBhbiBNRElPIGJ1cyBhbmQgdGhlIHByZXNlbmNlIG9mIHRoZSBBaXJvaGEgUEhZLiBObyBzdWNoIFBIWSBpcyBlbXVsYXRlZCBpbiBhIHR5cGljYWwgUUVNVS9HQ0Ugc2V0dXAuIFRoZXNlIE1ESU8gUEhZcyBwcm9iZSBkdXJpbmcgTURJTyBidXMgc2Nhbm5pbmcsIHNvIHRoZXJlJ3Mgbm8gd2F5IHRvIHJlYWNoIHRoZXNlIHdpdGggY3VycmVudCBjb25maWd1cmF0aW9ucy5cblxuU28sIGl0J3MgcHJldHR5IGNsZWFyIGFsbCBvZiB0aGVzZSBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIG15IHRhcmdldCBhcmNoaXRlY3R1cmUgYW5kIGVudmlyb25tZW50LiBUaGV5IGFyZSBwbGF0Zm9ybS1zcGVjaWZpYyBvciByZWxpYW50IG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBhdmFpbGFibGUuIFRoaXMgbGluZXMgdXAgd2l0aCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIFRoZXNlIGNvZGUgcGF0aHMgZmFsbCBzcXVhcmVseSBpbnRvIHRoZSBjYXRlZ29yeSBvZiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEl0J3Mgbm90IGEgY2FzZSBvZiBjb21wbGV4IGNvbnRyb2wgZmxvdyBvciBpbmRpcmVjdCBjYWxsczsgdGhleSBzaW1wbHkgcmVxdWlyZSBzcGVjaWZpYyBzaWxpY29uLlxuXG5UaGVyZWZvcmUsIHRoZSBwYXRjaCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcuIE5vIG5lZWQgdG8gbG9vayBmb3IgYW55IGZvY3VzIHN5bWJvbHMgb3IgZW5hYmxpbmcgY29uZmlndXJhdGlvbnMuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZXNlIGNoYW5nZXMgYXJlIGluIGRyaXZlcnMgZm9yIHNwZWNpYWxpemVkIGhhcmR3YXJlIChTaUZpdmUgUklTQy1WLCBBbWxvZ2ljIEFSTSwgQWlyb2hhIFBIWXMpIHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB4ODZfNjQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2OTg3LCJPdXRwdXRUb2tlbnMiOjE4MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowOTowNS41NTEzMDA2MjlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbml0aWFsaXplcyAnc3RydWN0IGNsa19pbml0X2RhdGEnIGluIGRyaXZlciBwcm9iZS9zZXR1cCBmdW5jdGlvbnMgYWNyb3NzIGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgKFNpRml2ZSBGVTU0MCBTb0MgTUFDKSwgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgKEFtbG9naWMgTWVzb24gRzEyQSBTb0MgTURJTyBtdXgpLCBhbmQgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgKEFpcm9oYSBFTjg4MTFIIE1ESU8gUEhZKS4gQWxsIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3IgRXRoZXJuZXQgUEhZcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGVtIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGluaXRpYWxpemVzICdzdHJ1Y3QgY2xrX2luaXRfZGF0YScgaW4gZHJpdmVyIHByb2JlL3NldHVwIGZ1bmN0aW9ucyBhY3Jvc3MgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYyAoU2lGaXZlIEZVNTQwIFNvQyBNQUMpLCBkcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYyAoQW1sb2dpYyBNZXNvbiBHMTJBIFNvQyBNRElPIG11eCksIGFuZCBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyAoQWlyb2hhIEVOODgxMUggTURJTyBQSFkpLiBBbGwgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFNvQyBoYXJkd2FyZSBvciBFdGhlcm5ldCBQSFlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCBRRU1VL0dDRSB2aXJ0dWFsIGVudmlyb25tZW50cywgbWFraW5nIHRoZW0gc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDk6MDUuNTUxMzYxNzE5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrfx5r[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 11:47:51 +0000 UTC FinishedAt: 2026-09-04 12:09:07 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgJiMzOTtzdHJ1Y3QgY2xrX2luaXRfZGF0YSYjMzk7IGluIGRyaXZlciBwcm9iZS9zZXR1cCBmdW5jdGlvbnMgYWNyb3NzIGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgKFNpRml2ZSBGVTU0MCBTb0MgTUFDKSwgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgKEFtbG9naWMgTWVzb24gRzEyQSBTb0MgTURJTyBtdXgpLCBhbmQgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgKEFpcm9oYSBFTjg4MTFIIE1ESU8gUEhZKS4gQWxsIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3IgRXRoZXJuZXQgUEhZcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGVtIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMzdmODM5ZDVlZDEyY2VlODZjOGU3ZThjYjczYmYzNDQzMDY3MzU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAxMjowODowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuaW5kZXggNzZlZTRmNTA2MDMzNS4uMmU2YTVlOTNkMGNkZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcbkBAIC01Mzc1LDcgJiM0Mzs1Mzc1LDcgQEAgc3RhdGljIGludCBmdTU0MF9jMDAwX2Nsa19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBjbGsgKipwY2xrLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2NsayxcbiBcdFx0XHQgICAgICAgc3RydWN0IGNsayAqKnJ4X2Nsaywgc3RydWN0IGNsayAqKnRzdV9jbGspXG4ge1xuLVx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDtcbiYjNDM7XHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307XG4gXHRpbnQgZXJyID0gMDtcbiBcbiBcdGVyciA9IG1hY2JfY2xrX2luaXRfZGZsdChwZGV2LCBwY2xrLCBoY2xrLCB0eF9jbGssIHJ4X2NsaywgdHN1X2Nsayk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuY1xuaW5kZXggMDhkNmE2YzkzZmI4Yi4uZTZjOWVmMzY0MWFmYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuY1xuQEAgLTIyMyw3ICYjNDM7MjIzLDcgQEAgc3RhdGljIGludCBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBnMTJhX21kaW9fbXV4ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gXHRjb25zdCBjaGFyICpwYXJlbnRfbmFtZXNbUExMX01VWF9OVU1fUEFSRU5UXTtcbi1cdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7XG4mIzQzO1x0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9O1xuIFx0c3RydWN0IGcxMmFfZXBoeV9wbGwgKnBsbDtcbiBcdHN0cnVjdCBjbGtfbXV4ICptdXg7XG4gXHRzdHJ1Y3QgY2xrICpjbGs7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xuaW5kZXggMGVlYjdiOWE0ZTI2MC4uNDI5MjMxOTQ5MTIwYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xuQEAgLTkzMiw3ICYjNDM7OTMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIGFuODgxMWhiX2Nsa19vcHMgPSB7XG4gXG4gc3RhdGljIGludCBhbjg4MTFoYl9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcbiB7XG4tXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0O1xuJiM0MztcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTtcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTU1PTl9DTEspKVxuQEAgLTEwMzEsNyAmIzQzOzEwMzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZW44ODExaF9jbGtfb3BzID0ge1xuIFxuIHN0YXRpYyBpbnQgZW44ODExaF9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcbiB7XG4tXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0O1xuJiM0MztcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTtcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTU1PTl9DTEspKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGluaXRpYWxpemVzICYjMzk7c3RydWN0IGNsa19pbml0X2RhdGEmIzM5OyBpbiBkcml2ZXIgcHJvYmUvc2V0dXAgZnVuY3Rpb25zIGFjcm9zcyBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIChTaUZpdmUgRlU1NDAgU29DIE1BQyksIGRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jIChBbWxvZ2ljIE1lc29uIEcxMkEgU29DIE1ESU8gbXV4KSwgYW5kIGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jIChBaXJvaGEgRU44ODExSCBNRElPIFBIWSkuIEFsbCBtb2RpZmllZCBjb2RlIHBhdGhzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgU29DIGhhcmR3YXJlIG9yIEV0aGVybmV0IFBIWXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlbSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDM3ZjgzOWQ1ZWQxMmNlZTg2YzhlN2U4Y2I3M2JmMzQ0MzA2NzM1OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMTI6MDg6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYwppbmRleCA3NmVlNGY1MDYwMzM1Li4yZTZhNWU5M2QwY2RkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMKQEAgLTUzNzUsNyAmIzQzOzUzNzUsNyBAQCBzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssCiAJCQkgICAgICAgc3RydWN0IGNsayAqKmhjbGssIHN0cnVjdCBjbGsgKip0eF9jbGssCiAJCQkgICAgICAgc3RydWN0IGNsayAqKnJ4X2Nsaywgc3RydWN0IGNsayAqKnRzdV9jbGspCiB7Ci0Jc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDsKJiM0MzsJc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9OwogCWludCBlcnIgPSAwOwogCiAJZXJyID0gbWFjYl9jbGtfaW5pdF9kZmx0KHBkZXYsIHBjbGssIGhjbGssIHR4X2NsaywgcnhfY2xrLCB0c3VfY2xrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMKaW5kZXggMDhkNmE2YzkzZmI4Yi4uZTZjOWVmMzY0MWFmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMKQEAgLTIyMyw3ICYjNDM7MjIzLDcgQEAgc3RhdGljIGludCBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBnMTJhX21kaW9fbXV4ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJY29uc3QgY2hhciAqcGFyZW50X25hbWVzW1BMTF9NVVhfTlVNX1BBUkVOVF07Ci0Jc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDsKJiM0MzsJc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9OwogCXN0cnVjdCBnMTJhX2VwaHlfcGxsICpwbGw7CiAJc3RydWN0IGNsa19tdXggKm11eDsKIAlzdHJ1Y3QgY2xrICpjbGs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jCmluZGV4IDBlZWI3YjlhNGUyNjAuLjQyOTIzMTk0OTEyMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jCkBAIC05MzIsNyAmIzQzOzkzMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBhbjg4MTFoYl9jbGtfb3BzID0gewogCiBzdGF0aWMgaW50IGFuODgxMWhiX2Nsa19wcm92aWRlcl9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBjbGtfaHcgKmh3KQogewotCXN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7CiYjNDM7CXN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTsKIAlpbnQgcmV0OwogCiAJaWYgKCFJU19FTkFCTEVEKENPTkZJR19DT01NT05fQ0xLKSkKQEAgLTEwMzEsNyAmIzQzOzEwMzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZW44ODExaF9jbGtfb3BzID0gewogCiBzdGF0aWMgaW50IGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGNsa19odyAqaHcpCiB7Ci0Jc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDsKJiM0MzsJc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9OwogCWludCByZXQ7CiAKIAlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTU1PTl9DTEspKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTYwCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSBnb2FsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgcGF0Y2hlcyBvZmZlciBhbnkgbmV3IGVudHJ5IHBvaW50cyBvciBjaGFuZ2VzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgZXhwb3NlZCB0byBmdXp6aW5nIHVzaW5nIHN5emthbGxlciwgc3BlY2lmaWNhbGx5IG9uIGFtZDY0LiAKCkZpcnN0LCBJIHNlZSB0aHJlZSBhcmVhcyBvZiBpbnRlcmVzdDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNgLCBgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmNgLCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYC4gVGhlIGNvbW1vbiB0aHJlYWQgaXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307YCB3aXRoaW4gY2xvY2sgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zOiBgZnU1NDBfYzAwMF9jbGtfaW5pdGAsIGBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXJgLCBgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwYCwgYW5kIGBlbjg4MTFoX2Nsa19wcm92aWRlcl9zZXR1cGAuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMsIHRoZXNlIHdlcmUgKnByZXZpb3VzbHkqIHVuaW5pdGlhbGl6ZWQgc3RhY2sgdmFyaWFibGVzLCBhbmQgbm93IHRoZXkmIzM5O3JlIGV4cGxpY2l0bHkgemVyb2VkLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGNoYW5nZSBpbiBiZWhhdmlvciwgd2hpY2ggY291bGQgYmUgZXhwbG9pdGFibGUuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IHRoZSBjb2RlICpwZXIgc2UqOyBpdCYjMzk7cyBhYm91dCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCB0aGUgZHJpdmVycywgYW5kIHRoZSBhcmNoaXRlY3R1cmUgKGFtZDY0LCBpbiB0aGlzIGNhc2UpLiBTbywgSSYjMzk7bGwgbmVlZCB0byByZXNlYXJjaCB0aGVzZSBzcGVjaWZpYyBkcml2ZXJzIGFuZCB0aGVpciBhc3NvY2lhdGVkIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gQXJlIHRoZXkgdXNlZCBieSBhIHZhcmlldHkgb2YgbmV0d29yayBkZXZpY2VzPyBEbyB0aGVzZSBkcml2ZXJzIGhhdmUgYSBoaXN0b3J5IG9mIGJ1Z3M/CgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGxldmVyYWdlIG15IGdyZXBwZXIgc2tpbGxzLiBJIHdhbnQgdG8gc2VlIHRoZSBicm9hZGVyIHBpY3R1cmUuIEkgbmVlZCB0byBrbm93ICp3aGVyZSogdGhlc2UgZnVuY3Rpb25zIGFuZCBkcml2ZXJzIGFyZSB1c2VkLiBIb3cgYXJlIHRoZXkgY2FsbGVkPyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGlucHV0IHBvaW50cz8gQXJlIHRoZXkgaW52b2tlZCBkaXJlY3RseSBkdXJpbmcgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24sIG9yIGFyZSB0aGV5IHBhcnQgb2YgYSBtb3JlIGNvbXBsZXggY2xvY2sgbWFuYWdlbWVudCBzeXN0ZW0/IFRoZSBncmVwcGVyIHJlc3VsdHMgd2lsbCB0ZWxsIG1lIHRoYXQuIFRoaXMgaXMgdGhlIGZhc3Rlc3Qgd2F5IHRvIGdldCBhbiBpbml0aWFsIHNlbnNlIG9mIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgc3VyZmFjZS4gVGhlbiwgSSBjYW4gc3RhcnQgbG9va2luZyBhdCBzeXprYWxsZXImIzM5O3MgY292ZXJhZ2UgYW5kIGlmIHRoZXJlJiMzOTtzIGFueSByZWxhdGVkIGNvZGUgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnU1NDBfYzAwMF9jbGtfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTUzNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIGZ1NTQwX2MwMDBfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM3NDpzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNzUtXHRcdFx0ICAgICAgIHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTU2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGZ1NTQwX2MwMDBfY29uZmlnID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2Ni1cdC5kbWFfYnVyc3RfbGVuZ3RoID0gMTYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1Njc6XHQuY2xrX2luaXQgPSBmdTU0MF9jMDAwX2Nsa19pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY4LVx0LmluaXQgPSBmdTU0MF9jMDAwX2luaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY2MQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipEaXZpbmcgaW50byB0aGUgTUFDQiBEcml2ZXIgb24gdGhlIEZVNTQwKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBNQUNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgU2lGaXZlIEZyZWVkb20gVTU0MCwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgYSBSSVNDLVYgYmFzZWQgc3lzdGVtLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvYmluZyByb3V0aW5lcyBhbmQgc2VlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgbWF0Y2hpbmcgdGhlIGhhcmR3YXJlLiBUaGF0IG1lYW5zIGRpZ2dpbmcgaW50byB0aGUgYG1hY2JfbWFpbi5jYCBmaWxlIGFuZCBleGFtaW5pbmcgdGhlIHByb2JlIGFuZCBtYXRjaCB0YWJsZXMuIE15IGluaXRpYWwgY29uY2VybiBpcyB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIGlzc3VlcyB0aGVyZSwgcGFydGljdWxhcmx5IHdpdGggdGhlIFU1NDAmIzM5O3Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4KCk15IG5leHQgc3RlcCBpcyB0byBsb2NhdGUgd2hlcmUgYGZ1NTQwX2MwMDBfY29uZmlnYCBpcyByZWZlcmVuY2VkIHdpdGhpbiBgbWFjYl9tYWluLmNgLiBUaGlzIGNvbmZpZ3VyYXRpb24gaXMga2V5LCBhbmQgSSB3YW50IHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgdXNpbmcgaXQuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBkcml2ZXIgaXMgc2V0IHVwIHRvIGludGVyYWN0IHdpdGggdGhlIFU1NDAmIzM5O3Mgc3BlY2lmaWMgaGFyZHdhcmUgZGV0YWlscy4gVGhpcyB3aWxsIGxpa2VseSBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyBpbnRlcnJ1cHRzIGFyZSByb3V0ZWQsIG1lbW9yeSBtYXBwaW5nLCBhbmQgY2xvY2sgY29uZmlndXJhdGlvbiDigJMgdGhlIHVzdWFsIHN1c3BlY3RzLiBJIHdhbnQgdG8gc2VlIGhvdyB3ZWxsIGl0JiMzOTtzIGFsbCBpbnRlZ3JhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z1NTQwX2MwMDBfY29uZmlnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFjYl91c3Jpb19jb25maWcgc2FtYTdnNV9lbWFjX3VzcmlvID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTU2MzpzdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGZ1NTQwX2MwMDBfY29uZmlnID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY0LVx0LmNhcHMgPSBNQUNCX0NBUFNfR0lHQUJJVF9NT0RFX0FWQUlMQUJMRSB8IE1BQ0JfQ0FQU19KVU1CTyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NzI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1hY2JfZHRfaWRzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzQyLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2NkbnMsenlucS1nZW1cJiMzNDssIC5kYXRhID0gXHUwMDI2enlucV9jb25maWcgfSwgLyogZGVwcmVjYXRlZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzQzOlx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3NpZml2ZSxmdTU0MC1jMDAwLWdlbVwmIzM0OywgLmRhdGEgPSBcdTAwMjZmdTU0MF9jMDAwX2NvbmZpZyB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzQ0LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxtcGZzLW1hY2JcJiMzNDssIC5kYXRhID0gXHUwMDI2bXBmc19jb25maWcgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDA0CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqSW5pdGlhbCBJbnZlc3RpZ2F0aW9uOiBDbG9jayBJbml0aWFsaXphdGlvbiBhbmQgUG90ZW50aWFsIENyb3NzLVJlZmVyZW5jZSoqCgpPa2F5LCBzbyBgZnU1NDBfYzAwMF9jbGtfaW5pdGAgaXMgcmlnaHQgdGhlcmUgaW4gdGhlIHByb2JlIHBhdGggb2YgdGhlIE1BQ0IgcGxhdGZvcm0gZHJpdmVyLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIHRoZSBjbG9ja3Mgb24gdGhpcyBTaUZpdmUgRlU1NDAtQzAwMCBHRU0gZGV2aWNlLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSB0aGF0JiMzOTtzIERUIGNvbXBhdGlibGUgd2l0aCAmIzM0O3NpZml2ZSxmdTU0MC1jMDAwLWdlbS4mIzM0OyBHb3QgaXQuIE1ha2VzIHRvdGFsIHNlbnNlLCBzdGFuZGFyZCBjbG9jayBpbml0IGluIHByb2JlLCBub3RoaW5nIHN1cnByaXNpbmcgeWV0LgoKSG93ZXZlciwgSSB2YWd1ZWx5IHJlY2FsbCBhIHJlbGF0ZWQgaXNzdWUgZnJvbSAqc29tZXdoZXJlKiwgcGVyaGFwcyBpbiBhIHNpbWlsYXIgZGV2aWNlIGNvbnRleHQsIHJlbGF0ZWQgdG8gTURJT01VWC4gTGV0IG1lIHNlZSBpZiBJIHJlY2FsbCByaWdodCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBtZGlvLW11eC1tZXNvbi1nMTJhLmNgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgcmVsYXRlZCBzaGFyZWQgY29kZSBvciBkZXNpZ24gcGF0dGVybnMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIGluaXRpYWxpemF0aW9uIG9yIGhhdmUgdXNlZnVsIGluc2lnaHRzLiBBbHdheXMgZ29vZCB0byBjcm9zcy1yZWZlcmVuY2Ugc2ltaWxhciBpbXBsZW1lbnRhdGlvbnM7IEkgbmVlZCB0byBrZWVwIGEgY2xlYW4gY29kZWJhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZzEyYV9lcGh5X2dsdWVfY2xrX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jPTIyMD1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBnMTJhX21kaW9fbXV4X21hdGNoKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jLTIyMS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jOjIyMjpzdGF0aWMgaW50IGcxMmFfZXBoeV9nbHVlX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYy0yMjMte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jPTMwND1zdGF0aWMgaW50IGcxMmFfbWRpb19tdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYy0zMjYtXHQvKiBSZWdpc3RlciBQTEwgaW4gQ0NGICovXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYzozMjc6XHRyZXQgPSBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jLTMyOC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBBbWxvZ2ljIFNvQyBTdXBwb3J0KioKCk9rYXksIHNvIGBtZGlvLW11eC1tZXNvbi1nMTJhLmNgLi4udGhhdCYjMzk7cyB0aGUgZHJpdmVyIGZpbGUgc3BlY2lmaWNhbGx5IGZvciB0aGUgTURJTyBtdWx0aXBsZXhlciBvbiB0aGUgQW1sb2dpYyBNZXNvbiBHMTJBIFNvQy4gUmlnaHQsIEFSTTY0IHBsYXRmb3JtIGRldmljZS4gR290IGl0LiBOb3csIHdoYXQmIzM5O3MgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIHNvbWV0aGluZyBsaWtlIGBhaXJfZW44ODExaC5jYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNRElPIG11bHRpcGxleGluZyBpcyB1c2VkIHdpdGhpbiB0aGlzIHBsYXRmb3JtLiBUaW1lIHRvIGdvIG92ZXIgdGhlcmUgYW5kIHN0YXJ0IGNyb3NzLXJlZmVyZW5jaW5nIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzIG9yIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwfGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTkyND1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgYW44ODExaGJfY2xrX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05MzItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5MzM6c3RhdGljIGludCBhbjg4MTFoYl9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTkzNC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTAyMz1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZW44ODExaF9jbGtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwMzEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDMyOnN0YXRpYyBpbnQgZW44ODExaF9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwMzMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEwNzQ9c3RhdGljIGludCBhbjg4MTFoYl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMjMtXHQvKiBDby1DbG9jayBPdXRwdXQgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjExMjQ6XHRyZXQgPSBhbjg4MTFoYl9jbGtfcHJvdmlkZXJfc2V0dXAoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBcdTAwMjZwcml2LVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMjUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTExNDU9c3RhdGljIGludCBlbjg4MTFoX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTE3MS1cdC8qIENvLUNsb2NrIE91dHB1dCAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTE3MjpcdHJldCA9IGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgXHUwMDI2cHJpdi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTczLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg5NQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBgYWlyX2VuODgxMWguY2AgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgYWlyX2VuODgxMWguY2AuICBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IHRoaXMgZHJpdmVyIGFjdHVhbGx5IGhhbmRsZXMuIEFoLCB5ZXMsIGl0JiMzOTtzIGFuIE1ESU8gUEhZIGRyaXZlci4gR29vZCwgdGhhdCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIGNvbnNpZGVyYWJseS4gIE5vdywgSSYjMzk7bGwgZ28gc3RyYWlnaHQgdG8gdGhlIHJlbGV2YW50IHNlY3Rpb25zIC0gcHJvYmFibHkgYXJvdW5kIHRoZSBgbW9kdWxlX3BoeV9kcml2ZXJgIGRlY2xhcmF0aW9uIG9yIHdoZXJlIHRoZSBQSFkgSURzIGFyZSBkZWZpbmVkLiBUaGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXImIzM5O3MgaWRlbnRpZmljYXRpb24gYW5kIHJlZ2lzdHJhdGlvbiBsaXZlcy4gIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBQSFkgaXQgbWFuYWdlcyBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgd2l0aCB0aGUgTURJTyBidXMuIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0aWRiaXRzIHdlIGNhbiBmaW5kIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfZHJpdmVyfE1PRFVMRV9ERVZJQ0VfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xNTAyPXN0YXRpYyB2b2lkIGFuODgxMWhiX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE1MTEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNTEyOnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBlbjg4MTFoX2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTUxMy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTU1Ni1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE1NTc6bW9kdWxlX3BoeV9kcml2ZXIoZW44ODExaF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTU1OC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTE1NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBlbjg4MTFoX3RibFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE1NjQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNTY1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZW44ODExaF90YmwpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTU2Ni1NT0RVTEVfRklSTVdBUkUoRU44ODExSF9NRDMyX0RNKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU0OAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byBnZXQgYSByZWFsbHkgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgYGFpcl9lbjg4MTFoLmNgIHByb2JlIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgZnJvbSBsaW5lcyAxMDcwIHRvIDExODAuIEkga25vdyB0aGlzIGlzIHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBpbml0aWFsaXphdGlvbiBsaWtlbHkgbGl2ZXMsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBncmFzcCBhbnkgY3JpdGljYWwgbG9naWMgb3IgcG90ZW50aWFsIHByb2JsZW0gYXJlYXMuIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGFuZCBpbXBsaWNhdGlvbnMgd2l0aGluIHRoYXQgc3BlY2lmaWMgY29kZSBibG9jay4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBwcm9ibGVtcyEpIGFyZSBsaWtlbHkgaGFwcGVuaW5nLCBhbmQgSSBuZWVkIHRvIGJlIHJlYWR5IHRvIGFuYWx5emUgaXQgd2l0aCBhIGtlZW4gZXllLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTA3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA3MDpcdFxuMTA3MTpcdFx0cmV0dXJuIHJldDtcbjEwNzI6XHR9XG4xMDczOlx0XG4xMDc0Olx0c3RhdGljIGludCBhbjg4MTFoYl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTA3NTpcdHtcbjEwNzY6XHRcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldjtcbjEwNzc6XHRcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXY7XG4xMDc4Olx0XHRpbnQgcmV0O1xuMTA3OTpcdFxuMTA4MDpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHNpemVvZihzdHJ1Y3QgZW44ODExaF9wcml2KSxcbjEwODE6XHRcdFx0XHQgICAgR0ZQX0tFUk5FTCk7XG4xMDgyOlx0XHRpZiAoIXByaXYpXG4xMDgzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTA4NDpcdFx0cGh5ZGV2LVx1MDAzZXByaXYgPSBwcml2O1xuMTA4NTpcdFxuMTA4NjpcdFx0LypcbjEwODc6XHRcdCAqIFRoZSBBTjg4MTFIQiBQSFkgYWRkcmVzcyBpcyByZXN0cmljdGVkIHRvIDgtMTUgKGRlY2ltYWwpLFxuMTA4ODpcdFx0ICogZGVwZW5kaW5nIG9uIHRoZSBib2FyZCBoYXJkd2FyZSBzdHJhcHBpbmcuXG4xMDg5Olx0XHQgKiBUaGlzIG1lYW5zIHRoZSBQQlVTIGFkZHJlc3MgaXMgb25seSBpbiB0aGUgcmFuZ2UgMTYtMjEgKGRlY2ltYWwpLFxuMTA5MDpcdFx0ICogc28gd2UgZG8gbm90IG5lZWQgdG8gaGFuZGxlIHRoZSBjYXNlXG4xMDkxOlx0XHQgKiB3aGVyZSB0aGUgUEJVUyBhZGRyZXNzIGV4Y2VlZHMgMzEgKGRlY2ltYWwpLlxuMTA5MjpcdFx0ICovXG4xMDkzOlx0XHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHBoeWRldi1cdTAwM2VtZGlvLmJ1cyxcbjEwOTQ6XHRcdFx0XHRcdCAgICAgcGh5ZGV2LVx1MDAzZW1kaW8uYWRkciAmIzQzOyBFTjg4MTFIX1BCVVNfQUREUl9PRkZTKTtcbjEwOTU6XHRcdGlmIChJU19FUlIobWRpb2RldikpXG4xMDk2Olx0XHRcdHJldHVybiBQVFJfRVJSKG1kaW9kZXYpO1xuMTA5NzpcdFxuMTA5ODpcdFx0cmV0ID0gbWRpb19kZXZpY2VfcmVnaXN0ZXIobWRpb2Rldik7XG4xMDk5Olx0XHRpZiAocmV0KVxuMTEwMDpcdFx0XHRnb3RvIGVycl9kZXZfZnJlZTtcbjExMDE6XHRcbjExMDI6XHRcdHByaXYtXHUwMDNlcGJ1c2RldiA9IG1kaW9kZXY7XG4xMTAzOlx0XG4xMTA0Olx0XHRyZXQgPSBhbjg4MTFoYl9sb2FkX2Zpcm13YXJlKHBoeWRldik7XG4xMTA1Olx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4xMTA2Olx0XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtMb2FkIGZpcm13YXJlIGZhaWxlZDogJWRcXG5cJiMzNDssIHJldCk7XG4xMTA3Olx0XHRcdGdvdG8gZXJyX2Rldl9jcmVhdGU7XG4xMTA4Olx0XHR9XG4xMTA5Olx0XG4xMTEwOlx0XHRlbjg4MTFoX3ByaW50X2Z3X3ZlcnNpb24ocGh5ZGV2KTtcbjExMTE6XHRcbjExMTI6XHRcdC8qIG1jdSBoYXMganVzdCByZXN0YXJ0ZWQgYWZ0ZXIgZmlybXdhcmUgbG9hZCAqL1xuMTExMzpcdFx0cHJpdi1cdTAwM2VtY3VfbmVlZHNfcmVzdGFydCA9IGZhbHNlO1xuMTExNDpcdFxuMTExNTpcdFx0LyogTURJT19ERVZTMS8yIGVtcHR5LCBzbyBzZXQgbW1kc19wcmVzZW50IGJpdHMgaGVyZSAqL1xuMTExNjpcdFx0cGh5ZGV2LVx1MDAzZWM0NV9pZHMubW1kc19wcmVzZW50IHw9IE1ESU9fREVWU19QTUFQTUQgfCBNRElPX0RFVlNfQU47XG4xMTE3Olx0XG4xMTE4Olx0XHRyZXQgPSBlbjg4MTFoX2xlZHNfc2V0dXAocGh5ZGV2KTtcbjExMTk6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMTIwOlx0XHRcdGdvdG8gZXJyX2Rldl9jcmVhdGU7XG4xMTIxOlx0XG4xMTIyOlx0XHRwcml2LVx1MDAzZXBoeWRldiA9IHBoeWRldjtcbjExMjM6XHRcdC8qIENvLUNsb2NrIE91dHB1dCAqL1xuMTEyNDpcdFx0cmV0ID0gYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgXHUwMDI2cHJpdi1cdTAwM2Vodyk7XG4xMTI1Olx0XHRpZiAocmV0KVxuMTEyNjpcdFx0XHRnb3RvIGVycl9kZXZfY3JlYXRlO1xuMTEyNzpcdFxuMTEyODpcdFx0LyogQ29uZmlndXJlIGxlZCBncGlvIHBpbnMgYXMgb3V0cHV0ICovXG4xMTI5Olx0XHRyZXQgPSBhaXJfcGh5X2J1Y2twYnVzX3JlZ19tb2RpZnkocGh5ZGV2LCBBTjg4MTFIQl9HUElPX09VVFBVVCxcbjExMzA6XHRcdFx0XHRcdFx0ICBBTjg4MTFIQl9HUElPX09VVFBVVF8zNDUsXG4xMTMxOlx0XHRcdFx0XHRcdCAgQU44ODExSEJfR1BJT19PVVRQVVRfMzQ1KTtcbjExMzI6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMTMzOlx0XHRcdGdvdG8gZXJyX2Rldl9jcmVhdGU7XG4xMTM0Olx0XG4xMTM1Olx0XHRyZXR1cm4gMDtcbjExMzY6XHRcbjExMzc6XHRlcnJfZGV2X2NyZWF0ZTpcbjExMzg6XHRcdG1kaW9fZGV2aWNlX3JlbW92ZShtZGlvZGV2KTtcbjExMzk6XHRcbjExNDA6XHRlcnJfZGV2X2ZyZWU6XG4xMTQxOlx0XHRtZGlvX2RldmljZV9mcmVlKG1kaW9kZXYpO1xuMTE0MjpcdFx0cmV0dXJuIHJldDtcbjExNDM6XHR9XG4xMTQ0Olx0XG4xMTQ1Olx0c3RhdGljIGludCBlbjg4MTFoX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4xMTQ2Olx0e1xuMTE0NzpcdFx0c3RydWN0IGVuODgxMWhfcHJpdiAqcHJpdjtcbjExNDg6XHRcdGludCByZXQ7XG4xMTQ5Olx0XG4xMTUwOlx0XHRwcml2ID0gZGV2bV9remFsbG9jKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgc2l6ZW9mKHN0cnVjdCBlbjg4MTFoX3ByaXYpLFxuMTE1MTpcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbjExNTI6XHRcdGlmICghcHJpdilcbjExNTM6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xMTU0Olx0XHRwaHlkZXYtXHUwMDNlcHJpdiA9IHByaXY7XG4xMTU1Olx0XG4xMTU2Olx0XHRyZXQgPSBlbjg4MTFoX2xvYWRfZmlybXdhcmUocGh5ZGV2KTtcbjExNTc6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMTU4Olx0XHRcdHJldHVybiByZXQ7XG4xMTU5Olx0XG4xMTYwOlx0XHQvKiBtY3UgaGFzIGp1c3QgcmVzdGFydGVkIGFmdGVyIGZpcm13YXJlIGxvYWQgKi9cbjExNjE6XHRcdHByaXYtXHUwMDNlbWN1X25lZWRzX3Jlc3RhcnQgPSBmYWxzZTtcbjExNjI6XHRcbjExNjM6XHRcdC8qIE1ESU9fREVWUzEvMiBlbXB0eSwgc28gc2V0IG1tZHNfcHJlc2VudCBiaXRzIGhlcmUgKi9cbjExNjQ6XHRcdHBoeWRldi1cdTAwM2VjNDVfaWRzLm1tZHNfcHJlc2VudCB8PSBNRElPX0RFVlNfUE1BUE1EIHwgTURJT19ERVZTX0FOO1xuMTE2NTpcdFxuMTE2NjpcdFx0cmV0ID0gZW44ODExaF9sZWRzX3NldHVwKHBoeWRldik7XG4xMTY3Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTE2ODpcdFx0XHRyZXR1cm4gcmV0O1xuMTE2OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzAyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE1ESU8gUEhZIFByb2JpbmcgaW4gYSBWaXJ0dWFsIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBQSFkgZHJpdmVycyB3b3JrLCBzcGVjaWZpY2FsbHkgdGhlIGBhbjg4MTFoYl9sb2FkX2Zpcm13YXJlYCBhbmQgYGVuODgxMWhfbG9hZF9maXJtd2FyZWAgcm91dGluZXMsIGFsb25nIHdpdGggdGhlIGBwaHlfZHJpdmVyYCBwcm9iaW5nLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgSSBjYW4gZXZlbiByZWFjaCBNRElPIFBIWSBkcml2ZXJzIGluIHZpcnR1YWxpemVkIG9yIGVtdWxhdGVkIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIE1ESU8gUEhZIGRldmljZXMgYXJlIGNyZWF0ZWQgYW5kIHByb2JlZCBpbiB0aGUgZmlyc3QgcGxhY2UuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZG8gSSBuZWVkIHJlYWwgaGFyZHdhcmUgZm9yIHRoaXMsIG9yIGFyZSB0aGVyZSB2aXJ0dWFsIE1ESU8gaW50ZXJmYWNlcywgbW9jayBNRElPIGltcGxlbWVudGF0aW9ucywgb3IgcGVyaGFwcyBldmVuIFVTQi10by1NRElPIHNvbHV0aW9ucyB0aGF0IG1pZ2h0IHdvcms/IEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHdoZXJlIE1ESU8gZGV2aWNlcyBvcmlnaW5hdGUgd2l0aGluIExpbnV4IGl0c2VsZi4KCkFoYSEgTURJTyBQSFlzIGdldCBzY2FubmVkIG9uIGFuIE1ESU8gYnVzIHVzaW5nIGBtZGlvYnVzX3NjYW5gLCB3aGljaCBpcyBjcmVhdGVkIGJ5IEV0aGVybmV0IE1BQyBkcml2ZXJzIG9yIHRoaW5ncyBsaWtlIGBtZGlvLWdwaW9gIG9yIGBtZGlvLWJpdGJhbmdgLiBEdXJpbmcgdGhpcyBzY2FuLCB0aGUgYnVzIGRyaXZlciByZWFkcyB0aGUgYE1JSV9QSFlTSUQxYCBhbmQgYE1JSV9QSFlTSUQyYCByZWdpc3RlcnMgZnJvbSB0aGUgUEhZcyBvdmVyIHRoZSBNRElPIGJ1cy4gSWYgdGhlIFBIWSBJRCBtYXRjaGVzIHRoZSBleHBlY3RlZCBgQUlSX1BIWV9JRF9FTjg4MTFIYCBvciBgQUlSX1BIWV9JRF9BTjg4MTFIQmAsIHRoZSBrZXJuZWwgdGhlbiBhbGxvY2F0ZXMgYSBgc3RydWN0IHBoeV9kZXZpY2VgIGFuZCBwcm9iZXMgdGhlIGBlbjg4MTFoX2RyaXZlcmAuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gSSBzaW11bGF0ZSB0aGlzIGluIGFuIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdoaWNoIGlzIHdoYXQgc3l6a2FsbGVyIHVzZXM/IERvIGFueSBvZiB0aGVzZSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyBoYXZlIGEgZGV2aWNlIHdpdGggYW4gQWlycm9oYSBFTjg4MTFIIFBIWT8gTm9wZSwgaXQgbG9va3MgbGlrZSBRRU1VIHR5cGljYWxseSBlbXVsYXRlcyBJbnRlbCBlMTAwMC9lMTAwMGUsIFJlYWx0ZWsgcnRsODEzOSwgdmlydGlvLW5ldCwgZXRjLiwgbm9uZSBvZiB3aGljaCBoYXZlIHRoZSBFTjg4MTFIIFBIWSwgb3IgTWVzb24gRzEyQSBNRElPIG11eCwgb3IgdGhlIFNpRml2ZSBGVTU0MCBNQUNCLiBUaGlzIGlzIGEgcHJvYmxlbS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRvIHNlZSBpZiBhbnkgb2YgdGhlc2UgZHJpdmVycyAoYG1hY2JgLCBgZW44ODExaGAsIG9yIG90aGVycykgY2FuIGJlIHByb2JlZCB2aWEgbmV0bGluaywgbW9jaywgb3IgdmlydHVhbCBidXNzZXMgdG8gZ2V0IGFyb3VuZCB0aGUgaGFyZHdhcmUuCgpUYWtpbmcgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jYDogSSBzZWUgdGhhdCBgZnU1NDBfYzAwMF9jbGtfaW5pdGAgZ2V0cyBjYWxsZWQgaW4gYG1hY2JfcHJvYmVgIHdoZW4gdGhlIGRldmljZSB0cmVlIElEIG1hdGNoZXMgYCYjMzQ7c2lmaXZlLGZ1NTQwLWMwMDAtZ2VtJiMzNDtgLiBUaGUgYG1hY2JgIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciByZWdpc3RlcmVkIHZpYSBgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyYC4gSSBzdXNwZWN0IHRoYXQgb24geDg2XzY0LCBhIHBsYXRmb3JtIGRldmljZSBmb3IgYSBkZXZpY2UgdHJlZSBzdWNoIGFzIGAmIzM0O3NpZml2ZSxmdTU0MC1jMDAwLWdlbSYjMzQ7YCBjYW4mIzM5O3QgYmUgcHJvYmVkIHVubGVzcyBJIGNyZWF0ZSBhIGNvcnJlc3BvbmRpbmcgZGV2aWNlIHRyZWUvcGxhdGZvcm0gZGV2aWNlLiBBbmQgZXZlbiB0aGVuLCBpdCYjMzk7cyBmb3IgYW4gRlU1NDAsIHdoaWNoIGlzIGEgUklTQy1WIFNvQyBhbmQgbGlrZWx5IHdvbiYjMzk7dCBldmVuIGJlIHByb2JlZCBvbiBhbWQ2NC94ODZfNjQuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgY2FuIGBtYWNiYCBhbHNvIGJlIGEgUENJIGRldmljZT8gSSBuZWVkIHRvIGNoZWNrIGBtYWNiX3BjaS5jYCBvciBhIHNpbWlsYXIgZmlsZSB0byBjb25maXJtIGlmIENhZGVuY2UgTUFDQiBjYW4gZXhpc3QgYXMgYSBQQ0kgZGV2aWNlIGluIGFkZGl0aW9uIHRvIGJlaW5nIGEgcGxhdGZvcm0gZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWNiX3BjaXxmdTU0MCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz00NT1jb25maWcgTUFDQl9QQ0lcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNTEtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzo1MjpcdCAgd2lsbCBiZSBjYWxsZWQgbWFjYl9wY2kuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfTUFDQikgJiM0Mzs9IG1hY2Iub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTUFDQl9QQ0kpICYjNDM7PSBtYWNiX3BjaS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NC0vKiBUaGlzIHN0cnVjdHVyZSBpcyBvbmx5IHVzZWQgZm9yIE1BQ0Igb24gU2lGaXZlIEZVNTQwIGRldmljZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDU6c3RydWN0IHNpZml2ZV9mdTU0MF9tYWNiX21nbXQge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00Ni1cdHZvaWQgX19pb21lbSAqcmVnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDkyMj1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfdXNyaW9fY29uZmlnIGF0OTFfZGVmYXVsdF91c3JpbyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ5MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ5MzQ6c3RhdGljIHN0cnVjdCBzaWZpdmVfZnU1NDBfbWFjYl9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00OTM1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTI5Mj1zdGF0aWMgaW50IGF0OTFldGhlcl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzE1OnN0YXRpYyB1bnNpZ25lZCBsb25nIGZ1NTQwX21hY2JfdHhfcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAqaHcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzMTYtXHRcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTMyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTMyMTpzdGF0aWMgaW50IGZ1NTQwX21hY2JfdHhfZGV0ZXJtaW5lX3JhdGUoc3RydWN0IGNsa19odyAqaHcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzMjItXHRcdFx0XHRcdHN0cnVjdCBjbGtfcmF0ZV9yZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzQ4OnN0YXRpYyBpbnQgZnU1NDBfbWFjYl90eF9zZXRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyByYXRlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzQ5LVx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM1NC1cdGNsa19od19pbml0X3JhdGVfcmVxdWVzdChodywgXHUwMDI2cmVxLCByYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM1NTpcdHJldCA9IGZ1NTQwX21hY2JfdHhfZGV0ZXJtaW5lX3JhdGUoaHcsIFx1MDAyNnJlcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNTYtXHRpZiAocmV0ICE9IDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzY4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBmdTU0MF9jMDAwX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM2OTpcdC5yZWNhbGNfcmF0ZSA9IGZ1NTQwX21hY2JfdHhfcmVjYWxjX3JhdGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzNzA6XHQuZGV0ZXJtaW5lX3JhdGUgPSBmdTU0MF9tYWNiX3R4X2RldGVybWluZV9yYXRlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzcxOlx0LnNldF9yYXRlID0gZnU1NDBfbWFjYl90eF9zZXRfcmF0ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM3Mi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1Mzc0OnN0YXRpYyBpbnQgZnU1NDBfYzAwMF9jbGtfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM3NS1cdFx0XHQgICAgICAgc3RydWN0IGNsayAqKmhjbGssIHN0cnVjdCBjbGsgKip0eF9jbGssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzkxLVx0aW5pdC5uYW1lID0gXCYjMzQ7c2lmaXZlLWdlbWd4bC1tZ210XCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzkyOlx0aW5pdC5vcHMgPSBcdTAwMjZmdTU0MF9jMDAwX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM5My1cdGluaXQuZmxhZ3MgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTQyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTQyMjpzdGF0aWMgaW50IGZ1NTQwX2MwMDBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU1NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX3VzcmlvX2NvbmZpZyBzYW1hN2c1X2VtYWNfdXNyaW8gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTYzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFjYl9jb25maWcgZnU1NDBfYzAwMF9jb25maWcgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NjQtXHQuY2FwcyA9IE1BQ0JfQ0FQU19HSUdBQklUX01PREVfQVZBSUxBQkxFIHwgTUFDQl9DQVBTX0pVTUJPIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NjYtXHQuZG1hX2J1cnN0X2xlbmd0aCA9IDE2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTY3Olx0LmNsa19pbml0ID0gZnU1NDBfYzAwMF9jbGtfaW5pdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTU2ODpcdC5pbml0ID0gZnU1NDBfYzAwMF9pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY5LVx0Lmp1bWJvX21heF9sZW4gPSAxMDI0MCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWFjYl9kdF9pZHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NDItXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7Y2Rucyx6eW5xLWdlbVwmIzM0OywgLmRhdGEgPSBcdTAwMjZ6eW5xX2NvbmZpZyB9LCAvKiBkZXByZWNhdGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3NDM6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c2lmaXZlLGZ1NTQwLWMwMDAtZ2VtXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNmZ1NTQwX2MwMDBfY29uZmlnIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NDQtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLG1wZnMtbWFjYlwmIzM0OywgLmRhdGEgPSBcdTAwMjZtcGZzX2NvbmZpZyB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxOTojZGVmaW5lIFBDSV9EUklWRVJfTkFNRSBcJiMzNDttYWNiX3BjaVwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTIwLSNkZWZpbmUgUExBVF9EUklWRVJfTkFNRSBcJiMzNDttYWNiXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjU6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjYtXHQubmFtZSAgICAgPSBQQ0lfRFJJVkVSX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMzI6bW9kdWxlX3BjaV9kcml2ZXIobWFjYl9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMzMtTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGRldl9pZF90YWJsZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTc1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBNQUNCIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtYWNiX3BjaS5jYCBmaWxlIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3Mgc2V0dGluZyB1cCB0aGUgTUFDQiAoTWVkaWEgQWNjZXNzIENvbnRyb2xsZXIsIEV0aGVybmV0KSBoYXJkd2FyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgdXNpbmcgdGhlIHN0YW5kYXJkIGBtYWNiX2RlZmF1bHRfY29uZmlnYCBzdHJ1Y3R1cmUgdG8gY29uZmlndXJlIHRoZSBwbGF0Zm9ybSBkZXZpY2UuIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCYjMzk7cyBob3cgaXQgZ2VuZXJhbGx5IHdvcmtzLCBidXQgaXTigJlzIGFsd2F5cyB3aXNlIHRvIHZlcmlmeS4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgaW5kZWVkIHRoZSBwYXRoIGJlaW5nIHRha2VuLCBhbmQgdGhhdCBpdCBpc24mIzM5O3Qgb3ZlcnJpZGluZyBpdCB3aXRoIHNvbWV0aGluZyBzcGVjaWZpYyB0byB0aGUgRlU1NDAtQzAwMCBjb25maWd1cmF0aW9uLiBMZXQgbWUgcXVpY2tseSBqdW1wIGludG8gYG1hY2JfcGNpLmNgIHRvIGNvbmZpcm0uIE5vIHN1cnByaXNlcyB0aGVyZSwgSSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2JfZGVmYXVsdF9jb25maWd8cGRldmluZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjgzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgbWFjYl9wY2kuY2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGNyYWNrIG9wZW4gYG1hY2JfcGNpLmNgLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIGlzIHRoZSBQQ0ktc3BlY2lmaWMgZHJpdmVyIGltcGxlbWVudGF0aW9uIGZvciB0aGUgTUFDQiBFdGhlcm5ldCBjb250cm9sbGVyLiBHaXZlbiB0aGUgZmlsZSBuYW1lLCBpdCYjMzk7cyBwcmV0dHkgbXVjaCBhIGdpdmVuLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgaG93IHRoZSBNQUNCIGhhcmR3YXJlIGlzIHByb2JlZCwgaW5pdGlhbGl6ZWQsIGFuZCBpbnRlZ3JhdGVkIHdpdGhpbiBhIFBDSS1iYXNlZCBzeXN0ZW0uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIFBDSSBkZXZpY2UgSUQgbWF0Y2hpbmcsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBrZWVuIHRvIHNlZSB0aGUgcG93ZXIgbWFuYWdlbWVudCBhc3BlY3RzOyBob3cgaXQgaGFuZGxlcyBQQ0kgcG93ZXIgc3RhdGVzIGFuZCBhbnkgc3BlY2lmaWMgY2xvY2sgbWFuYWdlbWVudCByZWxhdGVkIHRvIHRoZSBQQ0kgYnVzLiBUaGlzIHNob3VsZCBwcm92aWRlIHNvbWUgdXNlZnVsIGluZm9ybWF0aW9uIHRvIG1lLCBldmVuIGZvciB0aGUgZ2VuZXJhbCBkZXNpZ24gb2YgdGhpcyB0eXBlIG9mIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogRE9DOiBDYWRlbmNlIEdFTSBQQ0kgd3JhcHBlci5cbiAgIDQ6XHQgKlxuICAgNTpcdCAqIENvcHlyaWdodCAoQykgMjAxNiBDYWRlbmNlIERlc2lnbiBTeXN0ZW1zIC0gaHR0cHM6Ly93d3cuY2FkZW5jZS5jb21cbiAgIDY6XHQgKlxuICAgNzpcdCAqIEF1dGhvcnM6IFJhZmFsIE96aWVibG8gXHUwMDNjcmFmYWxvQGNhZGVuY2UuY29tXHUwMDNlXG4gICA4Olx0ICpcdCAgICBCYXJ0b3N6IEZvbHRhIFx1MDAzY2Jmb2x0YUBjYWRlbmNlLmNvbVx1MDAzZVxuICAgOTpcdCAqL1xuICAxMDpcdFxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4gIDEyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcdTAwM2VcbiAgMTM6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2kuaFx1MDAzZVxuICAxNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gIDE3Olx0I2luY2x1ZGUgXCYjMzQ7bWFjYi5oXCYjMzQ7XG4gIDE4Olx0XG4gIDE5Olx0I2RlZmluZSBQQ0lfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYl9wY2lcJiMzNDtcbiAgMjA6XHQjZGVmaW5lIFBMQVRfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYlwmIzM0O1xuICAyMTpcdFxuICAyMjpcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9DRE5TX01BQ0IgMHhlMDA3XG4gIDIzOlx0XG4gIDI0Olx0I2RlZmluZSBHRU1fUENMS19SQVRFIDUwMDAwMDAwXG4gIDI1Olx0I2RlZmluZSBHRU1fSENMS19SQVRFIDUwMDAwMDAwXG4gIDI2Olx0XG4gIDI3Olx0c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbiAgMjg6XHR7XG4gIDI5Olx0XHRpbnQgZXJyO1xuICAzMDpcdFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcbiAgMzE6XHRcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaW5mbyBwbGF0X2luZm87XG4gIDMyOlx0XHRzdHJ1Y3QgbWFjYl9wbGF0Zm9ybV9kYXRhIHBsYXRfZGF0YTtcbiAgMzM6XHRcdHN0cnVjdCByZXNvdXJjZSByZXNbMl07XG4gIDM0Olx0XG4gIDM1Olx0XHQvKiBlbmFibGUgcGNpIGRldmljZSAqL1xuICAzNjpcdFx0ZXJyID0gcGNpbV9lbmFibGVfZGV2aWNlKHBjaSk7XG4gIDM3Olx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4gIDM4Olx0XHRcdGRldl9lcnIoXHUwMDI2cGNpLVx1MDAzZWRldiwgXCYjMzQ7RW5hYmxpbmcgUENJIGRldmljZSBoYXMgZmFpbGVkOiAlZFwmIzM0OywgZXJyKTtcbiAgMzk6XHRcdFx0cmV0dXJuIGVycjtcbiAgNDA6XHRcdH1cbiAgNDE6XHRcbiAgNDI6XHRcdHBjaV9zZXRfbWFzdGVyKHBjaSk7XG4gIDQzOlx0XG4gIDQ0Olx0XHQvKiBzZXQgdXAgcmVzb3VyY2VzICovXG4gIDQ1Olx0XHRtZW1zZXQocmVzLCAweDAwLCBzaXplb2Yoc3RydWN0IHJlc291cmNlKSAqIEFSUkFZX1NJWkUocmVzKSk7XG4gIDQ2Olx0XHRyZXNbMF0uc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbiAgNDc6XHRcdHJlc1swXS5lbmQgPSBwY2lfcmVzb3VyY2VfZW5kKHBjaSwgMCk7XG4gIDQ4Olx0XHRyZXNbMF0ubmFtZSA9IFBDSV9EUklWRVJfTkFNRTtcbiAgNDk6XHRcdHJlc1swXS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNO1xuICA1MDpcdFx0cmVzWzFdLnN0YXJ0ID0gcGNpX2lycV92ZWN0b3IocGNpLCAwKTtcbiAgNTE6XHRcdHJlc1sxXS5uYW1lID0gUENJX0RSSVZFUl9OQU1FO1xuICA1MjpcdFx0cmVzWzFdLmZsYWdzID0gSU9SRVNPVVJDRV9JUlE7XG4gIDUzOlx0XG4gIDU0Olx0XHRkZXZfaW5mbyhcdTAwMjZwY2ktXHUwMDNlZGV2LCBcJiMzNDtFTUFDIHBoeXNpY2FsIGJhc2UgYWRkcjogJXBhXFxuXCYjMzQ7LFxuICA1NTpcdFx0XHQgXHUwMDI2cmVzWzBdLnN0YXJ0KTtcbiAgNTY6XHRcbiAgNTc6XHRcdC8qIHNldCB1cCBtYWNiIHBsYXRmb3JtIGRhdGEgKi9cbiAgNTg6XHRcdG1lbXNldChcdTAwMjZwbGF0X2RhdGEsIDAsIHNpemVvZihwbGF0X2RhdGEpKTtcbiAgNTk6XHRcbiAgNjA6XHRcdC8qIGluaXRpYWxpemUgY2xvY2tzICovXG4gIDYxOlx0XHRwbGF0X2RhdGEucGNsayA9IGNsa19yZWdpc3Rlcl9maXhlZF9yYXRlKFx1MDAyNnBjaS1cdTAwM2VkZXYsIFwmIzM0O3BjbGtcJiMzNDssIE5VTEwsIDAsXG4gIDYyOlx0XHRcdFx0XHRcdFx0IEdFTV9QQ0xLX1JBVEUpO1xuICA2MzpcdFx0aWYgKElTX0VSUihwbGF0X2RhdGEucGNsaykpIHtcbiAgNjQ6XHRcdFx0ZXJyID0gUFRSX0VSUihwbGF0X2RhdGEucGNsayk7XG4gIDY1Olx0XHRcdGdvdG8gZXJyX3BjbGtfcmVnaXN0ZXI7XG4gIDY2Olx0XHR9XG4gIDY3Olx0XG4gIDY4Olx0XHRwbGF0X2RhdGEuaGNsayA9IGNsa19yZWdpc3Rlcl9maXhlZF9yYXRlKFx1MDAyNnBjaS1cdTAwM2VkZXYsIFwmIzM0O2hjbGtcJiMzNDssIE5VTEwsIDAsXG4gIDY5Olx0XHRcdFx0XHRcdFx0IEdFTV9IQ0xLX1JBVEUpO1xuICA3MDpcdFx0aWYgKElTX0VSUihwbGF0X2RhdGEuaGNsaykpIHtcbiAgNzE6XHRcdFx0ZXJyID0gUFRSX0VSUihwbGF0X2RhdGEuaGNsayk7XG4gIDcyOlx0XHRcdGdvdG8gZXJyX2hjbGtfcmVnaXN0ZXI7XG4gIDczOlx0XHR9XG4gIDc0Olx0XG4gIDc1Olx0XHQvKiBzZXQgdXAgcGxhdGZvcm0gZGV2aWNlIGluZm8gKi9cbiAgNzY6XHRcdG1lbXNldChcdTAwMjZwbGF0X2luZm8sIDAsIHNpemVvZihwbGF0X2luZm8pKTtcbiAgNzc6XHRcdHBsYXRfaW5mby5wYXJlbnQgPSBcdTAwMjZwY2ktXHUwMDNlZGV2O1xuICA3ODpcdFx0cGxhdF9pbmZvLmZ3bm9kZSA9IHBjaS1cdTAwM2VkZXYuZndub2RlO1xuICA3OTpcdFx0cGxhdF9pbmZvLm5hbWUgPSBQTEFUX0RSSVZFUl9OQU1FO1xuICA4MDpcdFx0cGxhdF9pbmZvLmlkID0gcGNpLVx1MDAzZWRldmZuO1xuICA4MTpcdFx0cGxhdF9pbmZvLnJlcyA9IHJlcztcbiAgODI6XHRcdHBsYXRfaW5mby5udW1fcmVzID0gQVJSQVlfU0laRShyZXMpO1xuICA4MzpcdFx0cGxhdF9pbmZvLmRhdGEgPSBcdTAwMjZwbGF0X2RhdGE7XG4gIDg0Olx0XHRwbGF0X2luZm8uc2l6ZV9kYXRhID0gc2l6ZW9mKHBsYXRfZGF0YSk7XG4gIDg1Olx0XHRwbGF0X2luZm8uZG1hX21hc2sgPSBwY2ktXHUwMDNlZG1hX21hc2s7XG4gIDg2Olx0XG4gIDg3Olx0XHQvKiByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2UgKi9cbiAgODg6XHRcdHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChcdTAwMjZwbGF0X2luZm8pO1xuICA4OTpcdFx0aWYgKElTX0VSUihwZGV2KSkge1xuICA5MDpcdFx0XHRlcnIgPSBQVFJfRVJSKHBkZXYpO1xuICA5MTpcdFx0XHRnb3RvIGVycl9wbGF0X2Rldl9yZWdpc3RlcjtcbiAgOTI6XHRcdH1cbiAgOTM6XHRcbiAgOTQ6XHRcdHBjaV9zZXRfZHJ2ZGF0YShwY2ksIHBkZXYpO1xuICA5NTpcdFxuICA5NjpcdFx0cmV0dXJuIDA7XG4gIDk3Olx0XG4gIDk4Olx0ZXJyX3BsYXRfZGV2X3JlZ2lzdGVyOlxuICA5OTpcdFx0Y2xrX3VucmVnaXN0ZXJfZml4ZWRfcmF0ZShwbGF0X2RhdGEuaGNsayk7XG4gMTAwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDQxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIHdpdGggdGhlIGJvbGRlZCBoZWFkZXIgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIFBDSSBEZXZpY2UgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBQQ0kgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgc2VlbXMgdG8gYmUgc2V0dGluZyB1cCAmIzM0O21hY2ImIzM0OyB3aXRoIHRoZSBkZWZhdWx0IGBwbGF0X2RhdGFgIGNvbmZpZ3VyYXRpb24sIG5vdCBzcGVjaWZpY2FsbHkgdGhlIGZ1NTQwIHNldHVwIEkgd2FzIGV4cGVjdGluZy4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbi4gTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGFuZCB3aGVyZSB0aGlzIGlzIGhhcHBlbmluZy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGZsb3cgYW5kIGZpZ3VyZSBvdXQgaG93IHRoZSBjbG9jayBpcyBpbml0aWFsaXplZCBmb3IgJiMzNDttYWNiLiYjMzQ7IFRoZSBvYnZpb3VzIHBsYWNlIHRvIGludmVzdGlnYXRlIGlzIGBtYWNiX21haW4uY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgY2xrX2luaXRgIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoaW4gdGhhdCBjb250ZXh0IGFuZCBob3cgdGhhdCBjYWxsIGltcGFjdHMgdGhlICYjMzQ7bWFjYiYjMzQ7IHJlZ2lzdHJhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhvc2UgdHdvIGZ1bmN0aW9ucyBpcyB0aGUgY29yZSBwcm9ibGVtIGhlcmUuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IHNvdXJjZSBjb2RlIGFuZCBzZWUgd2hhdCBpbnNpZ2h0cyBpdCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbGtfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oPTEyMzM9c3RydWN0IG1hY2JfY29uZmlnIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaC0xMjM1LVx0dW5zaWduZWQgaW50XHRcdGRtYV9idXJzdF9sZW5ndGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaDoxMjM2Olx0aW50XHQoKmNsa19pbml0KShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oLTEyMzctXHRcdFx0ICAgIHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDYxMD1zdGF0aWMgdm9pZCBtYWNiX2Nsa3NfZGlzYWJsZShzdHJ1Y3QgY2xrICpwY2xrLCBzdHJ1Y3QgY2xrICpoY2xrLCBzdHJ1Y3QgY2xrICp0eF9jbGssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NjI0OnN0YXRpYyBpbnQgbWFjYl9jbGtfaW5pdF9kZmx0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBjbGsgKipwY2xrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjI1LVx0XHRcdCAgICAgIHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDcwOTpzdGF0aWMgaW50IG1hY2JfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3MTAtXHRcdFx0IHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcxMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ3MTQ6XHRpZiAoY29uZmlnLVx1MDAzZWNsa19pbml0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NzE1Olx0XHRyZXR1cm4gY29uZmlnLVx1MDAzZWNsa19pbml0KHBkZXYsIHBjbGssIGhjbGssIHR4X2NsaywgcnhfY2xrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NzE2LVx0XHRcdFx0XHR0c3VfY2xrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcxNy1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDcxODpcdFx0cmV0dXJuIG1hY2JfY2xrX2luaXRfZGZsdChwZGV2LCBwY2xrLCBoY2xrLCB0eF9jbGssIHJ4X2NsayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcxOS1cdFx0XHRcdFx0ICB0c3VfY2xrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTUyNTI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhdDkxZXRoZXJfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUyNjg6c3RhdGljIGludCBhdDkxZXRoZXJfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyNjktXHRcdFx0ICAgICAgc3RydWN0IGNsayAqKmhjbGssIHN0cnVjdCBjbGsgKip0eF9jbGssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01MzY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBmdTU0MF9jMDAwX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzNzQ6c3RhdGljIGludCBmdTU0MF9jMDAwX2Nsa19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBjbGsgKipwY2xrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzc1LVx0XHRcdCAgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2Nsayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1Mzc4Olx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzc5LVx0aW50IGVyciA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzODE6XHRlcnIgPSBtYWNiX2Nsa19pbml0X2RmbHQocGRldiwgcGNsaywgaGNsaywgdHhfY2xrLCByeF9jbGssIHRzdV9jbGspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzgyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU1NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX2NvbmZpZyBmdTU0MF9jMDAwX2NvbmZpZyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NjYtXHQuZG1hX2J1cnN0X2xlbmd0aCA9IDE2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTY3Olx0LmNsa19pbml0ID0gZnU1NDBfYzAwMF9jbGtfaW5pdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2OC1cdC5pbml0ID0gZnU1NDBfYzAwMF9pbml0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTYyND1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGVtYWNfY29uZmlnID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTYyNi1cdFx0TUFDQl9DQVBTX1VTUklPX0hBU19NSUksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU2Mjc6XHQuY2xrX2luaXQgPSBhdDkxZXRoZXJfY2xrX2luaXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU2MjgtXHQuaW5pdCA9IGF0OTFldGhlcl9pbml0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTc2Nj1zdGF0aWMgaW50IG1hY2JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3ODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3OTA6XHRlcnIgPSBtYWNiX2Nsa19pbml0KHBkZXYsIFx1MDAyNnBjbGssIFx1MDAyNmhjbGssIFx1MDAyNnR4X2NsaywgXHUwMDI2cnhfY2xrLCBcdTAwMjZ0c3VfY2xrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzkxLVx0XHRcdCAgICBtYWNiX2NvbmZpZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2OTg3CgkJCQkJCQlvdXRwdXQ6IDE4MQoJCQkJCQkJdGhvdWdodHM6IDk5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIGlkZW50aWZpZXMgdGhyZWUgZHJpdmVycyBiZWluZyBtb2RpZmllZDogYSBNQUMgZHJpdmVyIGZvciB0aGUgU2lGaXZlIEZVNTQwIFJJU0MtViBTb0MsIGFuIE1ESU8gbXV4IGRyaXZlciBmb3IgdGhlIEFtbG9naWMgTWVzb24gRzEyQSBBUk0gU29DLCBhbmQgYW4gRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgdGhlIEFpcm9oYSBFTjg4MTFILiBUaGUgcGF0Y2ggaXRzZWxmIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwganVzdCBpbml0aWFsaXppbmcgYHN0cnVjdCBjbGtfaW5pdF9kYXRhYCB0byB6ZXJvIGJlZm9yZSBjbG9jayByZWdpc3RyYXRpb24uIE5vIGNvbXBsZXggbG9naWMgdGhlcmUuIFRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBhcmUgcmVsZXZhbnQgZm9yIGZ1enppbmcgb24gbXkgc3RhbmRhcmQgeDg2XzY0IFFFTVUvR0NFIGVudmlyb25tZW50LgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlYWNoYWJpbGl0eSBvZiBlYWNoIGZ1bmN0aW9uLiBGaXJzdCwgYGZ1NTQwX2MwMDBfY2xrX2luaXRgIGlzIGNsZWFybHkgYSBTaUZpdmUgUklTQy1WIHBsYXRmb3JtIGRyaXZlciwgdHJpZ2dlcmVkIGJ5IGEgc3BlY2lmaWMgYG9mX2RldmljZV9pZGAuIE5vdCBnb2luZyB0byBoYXBwZW4gb24geDg2XzY0IFFFTVUuIE5leHQsIGBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXJgIGlzIGZvciBhbiBBbWxvZ2ljIEFSTSBTb0MuIFNhbWUgaXNzdWUsIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIEZpbmFsbHksIHRoZSBgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwYCBhbmQgYGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwYCBmdW5jdGlvbnMgYXJlIE1ESU8gUEhZIGRyaXZlcnMsIGRlcGVuZGVudCBvbiBhbiBNRElPIGJ1cyBhbmQgdGhlIHByZXNlbmNlIG9mIHRoZSBBaXJvaGEgUEhZLiBObyBzdWNoIFBIWSBpcyBlbXVsYXRlZCBpbiBhIHR5cGljYWwgUUVNVS9HQ0Ugc2V0dXAuIFRoZXNlIE1ESU8gUEhZcyBwcm9iZSBkdXJpbmcgTURJTyBidXMgc2Nhbm5pbmcsIHNvIHRoZXJlJiMzOTtzIG5vIHdheSB0byByZWFjaCB0aGVzZSB3aXRoIGN1cnJlbnQgY29uZmlndXJhdGlvbnMuCgpTbywgaXQmIzM5O3MgcHJldHR5IGNsZWFyIGFsbCBvZiB0aGVzZSBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIG15IHRhcmdldCBhcmNoaXRlY3R1cmUgYW5kIGVudmlyb25tZW50LiBUaGV5IGFyZSBwbGF0Zm9ybS1zcGVjaWZpYyBvciByZWxpYW50IG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBhdmFpbGFibGUuIFRoaXMgbGluZXMgdXAgd2l0aCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIFRoZXNlIGNvZGUgcGF0aHMgZmFsbCBzcXVhcmVseSBpbnRvIHRoZSBjYXRlZ29yeSBvZiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEl0JiMzOTtzIG5vdCBhIGNhc2Ugb2YgY29tcGxleCBjb250cm9sIGZsb3cgb3IgaW5kaXJlY3QgY2FsbHM7IHRoZXkgc2ltcGx5IHJlcXVpcmUgc3BlY2lmaWMgc2lsaWNvbi4KClRoZXJlZm9yZSwgdGhlIHBhdGNoIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZy4gTm8gbmVlZCB0byBsb29rIGZvciBhbnkgZm9jdXMgc3ltYm9scyBvciBlbmFibGluZyBjb25maWd1cmF0aW9ucy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlc2UgY2hhbmdlcyBhcmUgaW4gZHJpdmVycyBmb3Igc3BlY2lhbGl6ZWQgaGFyZHdhcmUgKFNpRml2ZSBSSVNDLVYsIEFtbG9naWMgQVJNLCBBaXJvaGEgUEhZcykgd2hpY2ggYXJlIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIHg4Nl82NCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDEyOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgJiMzOTtzdHJ1Y3QgY2xrX2luaXRfZGF0YSYjMzk7IGluIGRyaXZlciBwcm9iZS9zZXR1cCBmdW5jdGlvbnMgYWNyb3NzIGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgKFNpRml2ZSBGVTU0MCBTb0MgTUFDKSwgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgKEFtbG9naWMgTWVzb24gRzEyQSBTb0MgTURJTyBtdXgpLCBhbmQgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgKEFpcm9oYSBFTjg4MTFIIE1ESU8gUEhZKS4gQWxsIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3IgRXRoZXJuZXQgUEhZcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGVtIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGluaXRpYWxpemVzICYjMzk7c3RydWN0IGNsa19pbml0X2RhdGEmIzM5OyBpbiBkcml2ZXIgcHJvYmUvc2V0dXAgZnVuY3Rpb25zIGFjcm9zcyBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIChTaUZpdmUgRlU1NDAgU29DIE1BQyksIGRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jIChBbWxvZ2ljIE1lc29uIEcxMkEgU29DIE1ESU8gbXV4KSwgYW5kIGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jIChBaXJvaGEgRU44ODExSCBNRElPIFBIWSkuIEFsbCBtb2RpZmllZCBjb2RlIHBhdGhzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgU29DIGhhcmR3YXJlIG9yIEV0aGVybmV0IFBIWXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlbSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMjowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6MDguOTE4ODY3ODEzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2MzI1Mjk0OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbml0aWFsaXplcyAnc3RydWN0IGNsa19pbml0X2RhdGEnIGluIGRyaXZlciBwcm9iZS9zZXR1cCBmdW5jdGlvbnMgYWNyb3NzIGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgKFNpRml2ZSBGVTU0MCBTb0MgTUFDKSwgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgKEFtbG9naWMgTWVzb24gRzEyQSBTb0MgTURJTyBtdXgpLCBhbmQgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgKEFpcm9oYSBFTjg4MTFIIE1ESU8gUEhZKS4gQWxsIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3IgRXRoZXJuZXQgUEhZcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGVtIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjA4LjkxODg3MzYyNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU0MTcwNTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDM3ZjgzOWQ1ZWQxMmNlZTg2YzhlN2U4Y2I3M2JmMzQ0MzA2NzM1OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDEyOjA4OjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXFxuaW5kZXggNzZlZTRmNTA2MDMzNS4uMmU2YTVlOTNkMGNkZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xcbkBAIC01Mzc1LDcgKzUzNzUsNyBAQCBzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2NsayxcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBjbGsgKipyeF9jbGssIHN0cnVjdCBjbGsgKip0c3VfY2xrKVxcbiB7XFxuLVxcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7XFxuK1xcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTtcXG4gXFx0aW50IGVyciA9IDA7XFxuIFxcbiBcXHRlcnIgPSBtYWNiX2Nsa19pbml0X2RmbHQocGRldiwgcGNsaywgaGNsaywgdHhfY2xrLCByeF9jbGssIHRzdV9jbGspO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jXFxuaW5kZXggMDhkNmE2YzkzZmI4Yi4uZTZjOWVmMzY0MWFmYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jXFxuQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgaW50IGcxMmFfZXBoeV9nbHVlX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIHtcXG4gXFx0c3RydWN0IGcxMmFfbWRpb19tdXggKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG4gXFx0Y29uc3QgY2hhciAqcGFyZW50X25hbWVzW1BMTF9NVVhfTlVNX1BBUkVOVF07XFxuLVxcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7XFxuK1xcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTtcXG4gXFx0c3RydWN0IGcxMmFfZXBoeV9wbGwgKnBsbDtcXG4gXFx0c3RydWN0IGNsa19tdXggKm11eDtcXG4gXFx0c3RydWN0IGNsayAqY2xrO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXFxuaW5kZXggMGVlYjdiOWE0ZTI2MC4uNDI5MjMxOTQ5MTIwYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXFxuQEAgLTkzMiw3ICs5MzIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgYW44ODExaGJfY2xrX29wcyA9IHtcXG4gXFxuIHN0YXRpYyBpbnQgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGNsa19odyAqaHcpXFxuIHtcXG4tXFx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDtcXG4rXFx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9O1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19DT01NT05fQ0xLKSlcXG5AQCAtMTAzMSw3ICsxMDMxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIGVuODgxMWhfY2xrX29wcyA9IHtcXG4gXFxuIHN0YXRpYyBpbnQgZW44ODExaF9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcXG4ge1xcbi1cXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0O1xcbitcXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTU1PTl9DTEspKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODowOS41NzM3NTU4ODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU1OTc3NjAyMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbml0aWFsaXplcyAnc3RydWN0IGNsa19pbml0X2RhdGEnIGluIGRyaXZlciBwcm9iZS9zZXR1cCBmdW5jdGlvbnMgYWNyb3NzIGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgKFNpRml2ZSBGVTU0MCBTb0MgTUFDKSwgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgKEFtbG9naWMgTWVzb24gRzEyQSBTb0MgTURJTyBtdXgpLCBhbmQgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgKEFpcm9oYSBFTjg4MTFIIE1ESU8gUEhZKS4gQWxsIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3IgRXRoZXJuZXQgUEhZcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGVtIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDM3ZjgzOWQ1ZWQxMmNlZTg2YzhlN2U4Y2I3M2JmMzQ0MzA2NzM1OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTI6MDg6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuaW5kZXggNzZlZTRmNTA2MDMzNS4uMmU2YTVlOTNkMGNkZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcbkBAIC01Mzc1LDcgKzUzNzUsNyBAQCBzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgY2xrICoqcnhfY2xrLCBzdHJ1Y3QgY2xrICoqdHN1X2NsaylcbiB7XG4tXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0O1xuK1x0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9O1xuIFx0aW50IGVyciA9IDA7XG4gXG4gXHRlcnIgPSBtYWNiX2Nsa19pbml0X2RmbHQocGRldiwgcGNsaywgaGNsaywgdHhfY2xrLCByeF9jbGssIHRzdV9jbGspO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmNcbmluZGV4IDA4ZDZhNmM5M2ZiOGIuLmU2YzllZjM2NDFhZmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuY1xuKysrIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmNcbkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIGludCBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBnMTJhX21kaW9fbXV4ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gXHRjb25zdCBjaGFyICpwYXJlbnRfbmFtZXNbUExMX01VWF9OVU1fUEFSRU5UXTtcbi1cdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7XG4rXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307XG4gXHRzdHJ1Y3QgZzEyYV9lcGh5X3BsbCAqcGxsO1xuIFx0c3RydWN0IGNsa19tdXggKm11eDtcbiBcdHN0cnVjdCBjbGsgKmNsaztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXG5pbmRleCAwZWViN2I5YTRlMjYwLi40MjkyMzE5NDkxMjBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXG5AQCAtOTMyLDcgKzkzMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBhbjg4MTFoYl9jbGtfb3BzID0ge1xuIFxuIHN0YXRpYyBpbnQgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGNsa19odyAqaHcpXG4ge1xuLVx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDtcbitcdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQgPSB7fTtcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTU1PTl9DTEspKVxuQEAgLTEwMzEsNyArMTAzMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBlbjg4MTFoX2Nsa19vcHMgPSB7XG4gXG4gc3RhdGljIGludCBlbjg4MTFoX2Nsa19wcm92aWRlcl9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBjbGtfaHcgKmh3KVxuIHtcbi1cdHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7XG4rXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307XG4gXHRpbnQgcmV0O1xuIFxuIFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19DT01NT05fQ0xLKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjA5LjU3Mzc1ODg3NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzNjI2MTU5Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGUgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIHBhdGNoZXMgb2ZmZXIgYW55IG5ldyBlbnRyeSBwb2ludHMgb3IgY2hhbmdlcyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGV4cG9zZWQgdG8gZnV6emluZyB1c2luZyBzeXprYWxsZXIsIHNwZWNpZmljYWxseSBvbiBhbWQ2NC4gXG5cbkZpcnN0LCBJIHNlZSB0aHJlZSBhcmVhcyBvZiBpbnRlcmVzdDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNgLCBgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmNgLCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYC4gVGhlIGNvbW1vbiB0aHJlYWQgaXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307YCB3aXRoaW4gY2xvY2sgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zOiBgZnU1NDBfYzAwMF9jbGtfaW5pdGAsIGBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXJgLCBgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwYCwgYW5kIGBlbjg4MTFoX2Nsa19wcm92aWRlcl9zZXR1cGAuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMsIHRoZXNlIHdlcmUgKnByZXZpb3VzbHkqIHVuaW5pdGlhbGl6ZWQgc3RhY2sgdmFyaWFibGVzLCBhbmQgbm93IHRoZXkncmUgZXhwbGljaXRseSB6ZXJvZWQuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgY2hhbmdlIGluIGJlaGF2aW9yLCB3aGljaCBjb3VsZCBiZSBleHBsb2l0YWJsZS5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gVGhpcyBpc24ndCBqdXN0IGFib3V0IHRoZSBjb2RlICpwZXIgc2UqOyBpdCdzIGFib3V0IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIHRoZSBkcml2ZXJzLCBhbmQgdGhlIGFyY2hpdGVjdHVyZSAoYW1kNjQsIGluIHRoaXMgY2FzZSkuIFNvLCBJJ2xsIG5lZWQgdG8gcmVzZWFyY2ggdGhlc2Ugc3BlY2lmaWMgZHJpdmVycyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEFyZSB0aGV5IHVzZWQgYnkgYSB2YXJpZXR5IG9mIG5ldHdvcmsgZGV2aWNlcz8gRG8gdGhlc2UgZHJpdmVycyBoYXZlIGEgaGlzdG9yeSBvZiBidWdzP1xuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGxldmVyYWdlIG15IGdyZXBwZXIgc2tpbGxzLiBJIHdhbnQgdG8gc2VlIHRoZSBicm9hZGVyIHBpY3R1cmUuIEkgbmVlZCB0byBrbm93ICp3aGVyZSogdGhlc2UgZnVuY3Rpb25zIGFuZCBkcml2ZXJzIGFyZSB1c2VkLiBIb3cgYXJlIHRoZXkgY2FsbGVkPyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGlucHV0IHBvaW50cz8gQXJlIHRoZXkgaW52b2tlZCBkaXJlY3RseSBkdXJpbmcgbmV0d29yayBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24sIG9yIGFyZSB0aGV5IHBhcnQgb2YgYSBtb3JlIGNvbXBsZXggY2xvY2sgbWFuYWdlbWVudCBzeXN0ZW0/IFRoZSBncmVwcGVyIHJlc3VsdHMgd2lsbCB0ZWxsIG1lIHRoYXQuIFRoaXMgaXMgdGhlIGZhc3Rlc3Qgd2F5IHRvIGdldCBhbiBpbml0aWFsIHNlbnNlIG9mIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgc3VyZmFjZS4gVGhlbiwgSSBjYW4gc3RhcnQgbG9va2luZyBhdCBzeXprYWxsZXIncyBjb3ZlcmFnZSBhbmQgaWYgdGhlcmUncyBhbnkgcmVsYXRlZCBjb2RlIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTYwLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6MjMuMTk5OTIyMDI4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTk0NDAzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnU1NDBfYzAwMF9jbGtfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTUzNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIGZ1NTQwX2MwMDBfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM3NDpzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzc1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2NsayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTU2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGZ1NTQwX2MwMDBfY29uZmlnID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY2LVxcdC5kbWFfYnVyc3RfbGVuZ3RoID0gMTYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTY3OlxcdC5jbGtfaW5pdCA9IGZ1NTQwX2MwMDBfY2xrX2luaXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY4LVxcdC5pbml0ID0gZnU1NDBfYzAwMF9pbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODoyNS4wMTkzNjg5MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMTY4MzkzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDQiBEcml2ZXIgb24gdGhlIEZVNTQwKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIE1BQ0IgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBTaUZpdmUgRnJlZWRvbSBVNTQwLCB3aGljaCwgb2YgY291cnNlLCBpcyBhIFJJU0MtViBiYXNlZCBzeXN0ZW0uIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBwcm9iaW5nIHJvdXRpbmVzIGFuZCBzZWUgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBtYXRjaGluZyB0aGUgaGFyZHdhcmUuIFRoYXQgbWVhbnMgZGlnZ2luZyBpbnRvIHRoZSBgbWFjYl9tYWluLmNgIGZpbGUgYW5kIGV4YW1pbmluZyB0aGUgcHJvYmUgYW5kIG1hdGNoIHRhYmxlcy4gTXkgaW5pdGlhbCBjb25jZXJuIGlzIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgaXNzdWVzIHRoZXJlLCBwYXJ0aWN1bGFybHkgd2l0aCB0aGUgVTU0MCdzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uXG5cbk15IG5leHQgc3RlcCBpcyB0byBsb2NhdGUgd2hlcmUgYGZ1NTQwX2MwMDBfY29uZmlnYCBpcyByZWZlcmVuY2VkIHdpdGhpbiBgbWFjYl9tYWluLmNgLiBUaGlzIGNvbmZpZ3VyYXRpb24gaXMga2V5LCBhbmQgSSB3YW50IHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgdXNpbmcgaXQuIEknbSBleHBlY3RpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBzZXQgdXAgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgVTU0MCdzIHNwZWNpZmljIGhhcmR3YXJlIGRldGFpbHMuIFRoaXMgd2lsbCBsaWtlbHkgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgaW50ZXJydXB0cyBhcmUgcm91dGVkLCBtZW1vcnkgbWFwcGluZywgYW5kIGNsb2NrIGNvbmZpZ3VyYXRpb24g4oCTIHRoZSB1c3VhbCBzdXNwZWN0cy4gSSB3YW50IHRvIHNlZSBob3cgd2VsbCBpdCdzIGFsbCBpbnRlZ3JhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjYxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6MjguMjM2MjEwMzc1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTI2MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1NTQwX2MwMDBfY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTU1ND1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfdXNyaW9fY29uZmlnIHNhbWE3ZzVfZW1hY191c3JpbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1NjM6c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX2NvbmZpZyBmdTU0MF9jMDAwX2NvbmZpZyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NjQtXFx0LmNhcHMgPSBNQUNCX0NBUFNfR0lHQUJJVF9NT0RFX0FWQUlMQUJMRSB8IE1BQ0JfQ0FQU19KVU1CTyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWFjYl9kdF9pZHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTc0Mi1cXHR7IC5jb21wYXRpYmxlID0gXFxcImNkbnMsenlucS1nZW1cXFwiLCAuZGF0YSA9IFxcdTAwMjZ6eW5xX2NvbmZpZyB9LCAvKiBkZXByZWNhdGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzQzOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwic2lmaXZlLGZ1NTQwLWMwMDAtZ2VtXFxcIiwgLmRhdGEgPSBcXHUwMDI2ZnU1NDBfYzAwMF9jb25maWcgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NDQtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsbXBmcy1tYWNiXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXBmc19jb25maWcgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6MjguMjg1NzQyNDMxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIwMDQ2NDgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipJbml0aWFsIEludmVzdGlnYXRpb246IENsb2NrIEluaXRpYWxpemF0aW9uIGFuZCBQb3RlbnRpYWwgQ3Jvc3MtUmVmZXJlbmNlKipcblxuT2theSwgc28gYGZ1NTQwX2MwMDBfY2xrX2luaXRgIGlzIHJpZ2h0IHRoZXJlIGluIHRoZSBwcm9iZSBwYXRoIG9mIHRoZSBNQUNCIHBsYXRmb3JtIGRyaXZlci4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIHRoZSBjbG9ja3Mgb24gdGhpcyBTaUZpdmUgRlU1NDAtQzAwMCBHRU0gZGV2aWNlLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSB0aGF0J3MgRFQgY29tcGF0aWJsZSB3aXRoIFwic2lmaXZlLGZ1NTQwLWMwMDAtZ2VtLlwiIEdvdCBpdC4gTWFrZXMgdG90YWwgc2Vuc2UsIHN0YW5kYXJkIGNsb2NrIGluaXQgaW4gcHJvYmUsIG5vdGhpbmcgc3VycHJpc2luZyB5ZXQuXG5cbkhvd2V2ZXIsIEkgdmFndWVseSByZWNhbGwgYSByZWxhdGVkIGlzc3VlIGZyb20gKnNvbWV3aGVyZSosIHBlcmhhcHMgaW4gYSBzaW1pbGFyIGRldmljZSBjb250ZXh0LCByZWxhdGVkIHRvIE1ESU9NVVguIExldCBtZSBzZWUgaWYgSSByZWNhbGwgcmlnaHQsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBtZGlvLW11eC1tZXNvbi1nMTJhLmNgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSByZWxhdGVkIHNoYXJlZCBjb2RlIG9yIGRlc2lnbiBwYXR0ZXJucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoaXMgaW5pdGlhbGl6YXRpb24gb3IgaGF2ZSB1c2VmdWwgaW5zaWdodHMuIEFsd2F5cyBnb29kIHRvIGNyb3NzLXJlZmVyZW5jZSBzaW1pbGFyIGltcGxlbWVudGF0aW9uczsgSSBuZWVkIHRvIGtlZXAgYSBjbGVhbiBjb2RlYmFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQwNCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjMxLjQ4NjIxMDQ1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc3MTA4MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImcxMmFfZXBoeV9nbHVlX2Nsa19yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYz0yMjA9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZzEyYV9tZGlvX211eF9tYXRjaCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMtMjIxLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jOjIyMjpzdGF0aWMgaW50IGcxMmFfZXBoeV9nbHVlX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMtMjIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jPTMwND1zdGF0aWMgaW50IGcxMmFfbWRpb19tdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jLTMyNi1cXHQvKiBSZWdpc3RlciBQTEwgaW4gQ0NGICovXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmM6MzI3OlxcdHJldCA9IGcxMmFfZXBoeV9nbHVlX2Nsa19yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXgtbWVzb24tZzEyYS5jLTMyOC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODozMy4zNjMzMjY5NzdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTAwNzU2ODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgQW1sb2dpYyBTb0MgU3VwcG9ydCoqXG5cbk9rYXksIHNvIGBtZGlvLW11eC1tZXNvbi1nMTJhLmNgLi4udGhhdCdzIHRoZSBkcml2ZXIgZmlsZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNRElPIG11bHRpcGxleGVyIG9uIHRoZSBBbWxvZ2ljIE1lc29uIEcxMkEgU29DLiBSaWdodCwgQVJNNjQgcGxhdGZvcm0gZGV2aWNlLiBHb3QgaXQuIE5vdywgd2hhdCdzIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBzb21ldGhpbmcgbGlrZSBgYWlyX2VuODgxMWguY2A/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTURJTyBtdWx0aXBsZXhpbmcgaXMgdXNlZCB3aXRoaW4gdGhpcyBwbGF0Zm9ybS4gVGltZSB0byBnbyBvdmVyIHRoZXJlIGFuZCBzdGFydCBjcm9zcy1yZWZlcmVuY2luZyB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODozNS4yNjQwODY3MjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDk3NzcxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwfGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTkyND1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgYW44ODExaGJfY2xrX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTkzMi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5MzM6c3RhdGljIGludCBhbjg4MTFoYl9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTAyMz1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZW44ODExaF9jbGtfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTAzMS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDMyOnN0YXRpYyBpbnQgZW44ODExaF9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEwNzQ9c3RhdGljIGludCBhbjg4MTFoYl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTEyMy1cXHQvKiBDby1DbG9jayBPdXRwdXQgKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMTI0OlxcdHJldCA9IGFuODgxMWhiX2Nsa19wcm92aWRlcl9zZXR1cChcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldiwgXFx1MDAyNnByaXYtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTI1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMTQ1PXN0YXRpYyBpbnQgZW44ODExaF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTE3MS1cXHQvKiBDby1DbG9jayBPdXRwdXQgKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMTcyOlxcdHJldCA9IGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExNzMtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6MzguNDczODczNzQyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5Mzc2Mzk4NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIGBhaXJfZW44ODExaC5jYCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCBgYWlyX2VuODgxMWguY2AuICBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IHRoaXMgZHJpdmVyIGFjdHVhbGx5IGhhbmRsZXMuIEFoLCB5ZXMsIGl0J3MgYW4gTURJTyBQSFkgZHJpdmVyLiBHb29kLCB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUgY29uc2lkZXJhYmx5LiAgTm93LCBJJ2xsIGdvIHN0cmFpZ2h0IHRvIHRoZSByZWxldmFudCBzZWN0aW9ucyAtIHByb2JhYmx5IGFyb3VuZCB0aGUgYG1vZHVsZV9waHlfZHJpdmVyYCBkZWNsYXJhdGlvbiBvciB3aGVyZSB0aGUgUEhZIElEcyBhcmUgZGVmaW5lZC4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXIncyBpZGVudGlmaWNhdGlvbiBhbmQgcmVnaXN0cmF0aW9uIGxpdmVzLiAgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIFBIWSBpdCBtYW5hZ2VzIGFuZCBob3cgaXQncyBpbnRlZ3JhdGVkIHdpdGggdGhlIE1ESU8gYnVzLiBMZXQncyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0aWRiaXRzIHdlIGNhbiBmaW5kIVxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODk1LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6NDEuNDExNTE3OTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzA4Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kcml2ZXJ8TU9EVUxFX0RFVklDRV9UQUJMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xNTAyPXN0YXRpYyB2b2lkIGFuODgxMWhiX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTUxMS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNTEyOnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBlbjg4MTFoX2RyaXZlcltdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE1MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTU1Ni1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNTU3Om1vZHVsZV9waHlfZHJpdmVyKGVuODgxMWhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNTU4LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTE1NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBlbjg4MTFoX3RibFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTU2NC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNTY1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZW44ODExaF90YmwpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE1NjYtTU9EVUxFX0ZJUk1XQVJFKEVOODgxMUhfTUQzMl9ETSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjQxLjQ1OTgzMzI4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODc4NTk3MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIGdldCBhIHJlYWxseSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBgYWlyX2VuODgxMWguY2AgcHJvYmUgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBmcm9tIGxpbmVzIDEwNzAgdG8gMTE4MC4gSSBrbm93IHRoaXMgaXMgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGluaXRpYWxpemF0aW9uIGxpa2VseSBsaXZlcywgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdyYXNwIGFueSBjcml0aWNhbCBsb2dpYyBvciBwb3RlbnRpYWwgcHJvYmxlbSBhcmVhcy4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYW5kIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhhdCBzcGVjaWZpYyBjb2RlIGJsb2NrLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyAob3IgdGhlIHByb2JsZW1zISkgYXJlIGxpa2VseSBoYXBwZW5pbmcsIGFuZCBJIG5lZWQgdG8gYmUgcmVhZHkgdG8gYW5hbHl6ZSBpdCB3aXRoIGEga2VlbiBleWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NDgsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODo0My4zMzg0MzI0NzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwNzAsXG4gIFwiTGluZUNvdW50XCI6IDExMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMDcwOlxcdFxcbjEwNzE6XFx0XFx0cmV0dXJuIHJldDtcXG4xMDcyOlxcdH1cXG4xMDczOlxcdFxcbjEwNzQ6XFx0c3RhdGljIGludCBhbjg4MTFoYl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjEwNzU6XFx0e1xcbjEwNzY6XFx0XFx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2O1xcbjEwNzc6XFx0XFx0c3RydWN0IGVuODgxMWhfcHJpdiAqcHJpdjtcXG4xMDc4OlxcdFxcdGludCByZXQ7XFxuMTA3OTpcXHRcXG4xMDgwOlxcdFxcdHByaXYgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIHNpemVvZihzdHJ1Y3QgZW44ODExaF9wcml2KSxcXG4xMDgxOlxcdFxcdFxcdFxcdCAgICBHRlBfS0VSTkVMKTtcXG4xMDgyOlxcdFxcdGlmICghcHJpdilcXG4xMDgzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjEwODQ6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4xMDg1OlxcdFxcbjEwODY6XFx0XFx0LypcXG4xMDg3OlxcdFxcdCAqIFRoZSBBTjg4MTFIQiBQSFkgYWRkcmVzcyBpcyByZXN0cmljdGVkIHRvIDgtMTUgKGRlY2ltYWwpLFxcbjEwODg6XFx0XFx0ICogZGVwZW5kaW5nIG9uIHRoZSBib2FyZCBoYXJkd2FyZSBzdHJhcHBpbmcuXFxuMTA4OTpcXHRcXHQgKiBUaGlzIG1lYW5zIHRoZSBQQlVTIGFkZHJlc3MgaXMgb25seSBpbiB0aGUgcmFuZ2UgMTYtMjEgKGRlY2ltYWwpLFxcbjEwOTA6XFx0XFx0ICogc28gd2UgZG8gbm90IG5lZWQgdG8gaGFuZGxlIHRoZSBjYXNlXFxuMTA5MTpcXHRcXHQgKiB3aGVyZSB0aGUgUEJVUyBhZGRyZXNzIGV4Y2VlZHMgMzEgKGRlY2ltYWwpLlxcbjEwOTI6XFx0XFx0ICovXFxuMTA5MzpcXHRcXHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHBoeWRldi1cXHUwMDNlbWRpby5idXMsXFxuMTA5NDpcXHRcXHRcXHRcXHRcXHQgICAgIHBoeWRldi1cXHUwMDNlbWRpby5hZGRyICsgRU44ODExSF9QQlVTX0FERFJfT0ZGUyk7XFxuMTA5NTpcXHRcXHRpZiAoSVNfRVJSKG1kaW9kZXYpKVxcbjEwOTY6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWRpb2Rldik7XFxuMTA5NzpcXHRcXG4xMDk4OlxcdFxcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKG1kaW9kZXYpO1xcbjEwOTk6XFx0XFx0aWYgKHJldClcXG4xMTAwOlxcdFxcdFxcdGdvdG8gZXJyX2Rldl9mcmVlO1xcbjExMDE6XFx0XFxuMTEwMjpcXHRcXHRwcml2LVxcdTAwM2VwYnVzZGV2ID0gbWRpb2RldjtcXG4xMTAzOlxcdFxcbjExMDQ6XFx0XFx0cmV0ID0gYW44ODExaGJfbG9hZF9maXJtd2FyZShwaHlkZXYpO1xcbjExMDU6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4xMTA2OlxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiTG9hZCBmaXJtd2FyZSBmYWlsZWQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjExMDc6XFx0XFx0XFx0Z290byBlcnJfZGV2X2NyZWF0ZTtcXG4xMTA4OlxcdFxcdH1cXG4xMTA5OlxcdFxcbjExMTA6XFx0XFx0ZW44ODExaF9wcmludF9md192ZXJzaW9uKHBoeWRldik7XFxuMTExMTpcXHRcXG4xMTEyOlxcdFxcdC8qIG1jdSBoYXMganVzdCByZXN0YXJ0ZWQgYWZ0ZXIgZmlybXdhcmUgbG9hZCAqL1xcbjExMTM6XFx0XFx0cHJpdi1cXHUwMDNlbWN1X25lZWRzX3Jlc3RhcnQgPSBmYWxzZTtcXG4xMTE0OlxcdFxcbjExMTU6XFx0XFx0LyogTURJT19ERVZTMS8yIGVtcHR5LCBzbyBzZXQgbW1kc19wcmVzZW50IGJpdHMgaGVyZSAqL1xcbjExMTY6XFx0XFx0cGh5ZGV2LVxcdTAwM2VjNDVfaWRzLm1tZHNfcHJlc2VudCB8PSBNRElPX0RFVlNfUE1BUE1EIHwgTURJT19ERVZTX0FOO1xcbjExMTc6XFx0XFxuMTExODpcXHRcXHRyZXQgPSBlbjg4MTFoX2xlZHNfc2V0dXAocGh5ZGV2KTtcXG4xMTE5OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjExMjA6XFx0XFx0XFx0Z290byBlcnJfZGV2X2NyZWF0ZTtcXG4xMTIxOlxcdFxcbjExMjI6XFx0XFx0cHJpdi1cXHUwMDNlcGh5ZGV2ID0gcGh5ZGV2O1xcbjExMjM6XFx0XFx0LyogQ28tQ2xvY2sgT3V0cHV0ICovXFxuMTEyNDpcXHRcXHRyZXQgPSBhbjg4MTFoYl9jbGtfcHJvdmlkZXJfc2V0dXAoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIFxcdTAwMjZwcml2LVxcdTAwM2Vodyk7XFxuMTEyNTpcXHRcXHRpZiAocmV0KVxcbjExMjY6XFx0XFx0XFx0Z290byBlcnJfZGV2X2NyZWF0ZTtcXG4xMTI3OlxcdFxcbjExMjg6XFx0XFx0LyogQ29uZmlndXJlIGxlZCBncGlvIHBpbnMgYXMgb3V0cHV0ICovXFxuMTEyOTpcXHRcXHRyZXQgPSBhaXJfcGh5X2J1Y2twYnVzX3JlZ19tb2RpZnkocGh5ZGV2LCBBTjg4MTFIQl9HUElPX09VVFBVVCxcXG4xMTMwOlxcdFxcdFxcdFxcdFxcdFxcdCAgQU44ODExSEJfR1BJT19PVVRQVVRfMzQ1LFxcbjExMzE6XFx0XFx0XFx0XFx0XFx0XFx0ICBBTjg4MTFIQl9HUElPX09VVFBVVF8zNDUpO1xcbjExMzI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTEzMzpcXHRcXHRcXHRnb3RvIGVycl9kZXZfY3JlYXRlO1xcbjExMzQ6XFx0XFxuMTEzNTpcXHRcXHRyZXR1cm4gMDtcXG4xMTM2OlxcdFxcbjExMzc6XFx0ZXJyX2Rldl9jcmVhdGU6XFxuMTEzODpcXHRcXHRtZGlvX2RldmljZV9yZW1vdmUobWRpb2Rldik7XFxuMTEzOTpcXHRcXG4xMTQwOlxcdGVycl9kZXZfZnJlZTpcXG4xMTQxOlxcdFxcdG1kaW9fZGV2aWNlX2ZyZWUobWRpb2Rldik7XFxuMTE0MjpcXHRcXHRyZXR1cm4gcmV0O1xcbjExNDM6XFx0fVxcbjExNDQ6XFx0XFxuMTE0NTpcXHRzdGF0aWMgaW50IGVuODgxMWhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xMTQ2OlxcdHtcXG4xMTQ3OlxcdFxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXY7XFxuMTE0ODpcXHRcXHRpbnQgcmV0O1xcbjExNDk6XFx0XFxuMTE1MDpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBzaXplb2Yoc3RydWN0IGVuODgxMWhfcHJpdiksXFxuMTE1MTpcXHRcXHRcXHRcXHQgICAgR0ZQX0tFUk5FTCk7XFxuMTE1MjpcXHRcXHRpZiAoIXByaXYpXFxuMTE1MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4xMTU0OlxcdFxcdHBoeWRldi1cXHUwMDNlcHJpdiA9IHByaXY7XFxuMTE1NTpcXHRcXG4xMTU2OlxcdFxcdHJldCA9IGVuODgxMWhfbG9hZF9maXJtd2FyZShwaHlkZXYpO1xcbjExNTc6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTE1ODpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjExNTk6XFx0XFxuMTE2MDpcXHRcXHQvKiBtY3UgaGFzIGp1c3QgcmVzdGFydGVkIGFmdGVyIGZpcm13YXJlIGxvYWQgKi9cXG4xMTYxOlxcdFxcdHByaXYtXFx1MDAzZW1jdV9uZWVkc19yZXN0YXJ0ID0gZmFsc2U7XFxuMTE2MjpcXHRcXG4xMTYzOlxcdFxcdC8qIE1ESU9fREVWUzEvMiBlbXB0eSwgc28gc2V0IG1tZHNfcHJlc2VudCBiaXRzIGhlcmUgKi9cXG4xMTY0OlxcdFxcdHBoeWRldi1cXHUwMDNlYzQ1X2lkcy5tbWRzX3ByZXNlbnQgfD0gTURJT19ERVZTX1BNQVBNRCB8IE1ESU9fREVWU19BTjtcXG4xMTY1OlxcdFxcbjExNjY6XFx0XFx0cmV0ID0gZW44ODExaF9sZWRzX3NldHVwKHBoeWRldik7XFxuMTE2NzpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4xMTY4OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTE2OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6NDMuMzM4NTUwMzE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY2MTcyMjAzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTURJTyBQSFkgUHJvYmluZyBpbiBhIFZpcnR1YWwgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBQSFkgZHJpdmVycyB3b3JrLCBzcGVjaWZpY2FsbHkgdGhlIGBhbjg4MTFoYl9sb2FkX2Zpcm13YXJlYCBhbmQgYGVuODgxMWhfbG9hZF9maXJtd2FyZWAgcm91dGluZXMsIGFsb25nIHdpdGggdGhlIGBwaHlfZHJpdmVyYCBwcm9iaW5nLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgSSBjYW4gZXZlbiByZWFjaCBNRElPIFBIWSBkcml2ZXJzIGluIHZpcnR1YWxpemVkIG9yIGVtdWxhdGVkIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIE1ESU8gUEhZIGRldmljZXMgYXJlIGNyZWF0ZWQgYW5kIHByb2JlZCBpbiB0aGUgZmlyc3QgcGxhY2UuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBkbyBJIG5lZWQgcmVhbCBoYXJkd2FyZSBmb3IgdGhpcywgb3IgYXJlIHRoZXJlIHZpcnR1YWwgTURJTyBpbnRlcmZhY2VzLCBtb2NrIE1ESU8gaW1wbGVtZW50YXRpb25zLCBvciBwZXJoYXBzIGV2ZW4gVVNCLXRvLU1ESU8gc29sdXRpb25zIHRoYXQgbWlnaHQgd29yaz8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2hlcmUgTURJTyBkZXZpY2VzIG9yaWdpbmF0ZSB3aXRoaW4gTGludXggaXRzZWxmLlxuXG5BaGEhIE1ESU8gUEhZcyBnZXQgc2Nhbm5lZCBvbiBhbiBNRElPIGJ1cyB1c2luZyBgbWRpb2J1c19zY2FuYCwgd2hpY2ggaXMgY3JlYXRlZCBieSBFdGhlcm5ldCBNQUMgZHJpdmVycyBvciB0aGluZ3MgbGlrZSBgbWRpby1ncGlvYCBvciBgbWRpby1iaXRiYW5nYC4gRHVyaW5nIHRoaXMgc2NhbiwgdGhlIGJ1cyBkcml2ZXIgcmVhZHMgdGhlIGBNSUlfUEhZU0lEMWAgYW5kIGBNSUlfUEhZU0lEMmAgcmVnaXN0ZXJzIGZyb20gdGhlIFBIWXMgb3ZlciB0aGUgTURJTyBidXMuIElmIHRoZSBQSFkgSUQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgYEFJUl9QSFlfSURfRU44ODExSGAgb3IgYEFJUl9QSFlfSURfQU44ODExSEJgLCB0aGUga2VybmVsIHRoZW4gYWxsb2NhdGVzIGEgYHN0cnVjdCBwaHlfZGV2aWNlYCBhbmQgcHJvYmVzIHRoZSBgZW44ODExaF9kcml2ZXJgLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gSSBzaW11bGF0ZSB0aGlzIGluIGFuIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdoaWNoIGlzIHdoYXQgc3l6a2FsbGVyIHVzZXM/IERvIGFueSBvZiB0aGVzZSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyBoYXZlIGEgZGV2aWNlIHdpdGggYW4gQWlycm9oYSBFTjg4MTFIIFBIWT8gTm9wZSwgaXQgbG9va3MgbGlrZSBRRU1VIHR5cGljYWxseSBlbXVsYXRlcyBJbnRlbCBlMTAwMC9lMTAwMGUsIFJlYWx0ZWsgcnRsODEzOSwgdmlydGlvLW5ldCwgZXRjLiwgbm9uZSBvZiB3aGljaCBoYXZlIHRoZSBFTjg4MTFIIFBIWSwgb3IgTWVzb24gRzEyQSBNRElPIG11eCwgb3IgdGhlIFNpRml2ZSBGVTU0MCBNQUNCLiBUaGlzIGlzIGEgcHJvYmxlbS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0byBzZWUgaWYgYW55IG9mIHRoZXNlIGRyaXZlcnMgKGBtYWNiYCwgYGVuODgxMWhgLCBvciBvdGhlcnMpIGNhbiBiZSBwcm9iZWQgdmlhIG5ldGxpbmssIG1vY2ssIG9yIHZpcnR1YWwgYnVzc2VzIHRvIGdldCBhcm91bmQgdGhlIGhhcmR3YXJlLlxuXG5UYWtpbmcgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jYDogSSBzZWUgdGhhdCBgZnU1NDBfYzAwMF9jbGtfaW5pdGAgZ2V0cyBjYWxsZWQgaW4gYG1hY2JfcHJvYmVgIHdoZW4gdGhlIGRldmljZSB0cmVlIElEIG1hdGNoZXMgYFwic2lmaXZlLGZ1NTQwLWMwMDAtZ2VtXCJgLiBUaGUgYG1hY2JgIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciByZWdpc3RlcmVkIHZpYSBgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyYC4gSSBzdXNwZWN0IHRoYXQgb24geDg2XzY0LCBhIHBsYXRmb3JtIGRldmljZSBmb3IgYSBkZXZpY2UgdHJlZSBzdWNoIGFzIGBcInNpZml2ZSxmdTU0MC1jMDAwLWdlbVwiYCBjYW4ndCBiZSBwcm9iZWQgdW5sZXNzIEkgY3JlYXRlIGEgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZS9wbGF0Zm9ybSBkZXZpY2UuIEFuZCBldmVuIHRoZW4sIGl0J3MgZm9yIGFuIEZVNTQwLCB3aGljaCBpcyBhIFJJU0MtViBTb0MgYW5kIGxpa2VseSB3b24ndCBldmVuIGJlIHByb2JlZCBvbiBhbWQ2NC94ODZfNjQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBjYW4gYG1hY2JgIGFsc28gYmUgYSBQQ0kgZGV2aWNlPyBJIG5lZWQgdG8gY2hlY2sgYG1hY2JfcGNpLmNgIG9yIGEgc2ltaWxhciBmaWxlIHRvIGNvbmZpcm0gaWYgQ2FkZW5jZSBNQUNCIGNhbiBleGlzdCBhcyBhIFBDSSBkZXZpY2UgaW4gYWRkaXRpb24gdG8gYmVpbmcgYSBwbGF0Zm9ybSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMDIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODo0OS45NTU3NzM2ODVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTg5ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfcGNpfGZ1NTQwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz00NT1jb25maWcgTUFDQl9QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01MS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6NTI6XFx0ICB3aWxsIGJlIGNhbGxlZCBtYWNiX3BjaS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19NQUNCKSArPSBtYWNiLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19NQUNCX1BDSSkgKz0gbWFjYl9wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NC0vKiBUaGlzIHN0cnVjdHVyZSBpcyBvbmx5IHVzZWQgZm9yIE1BQ0Igb24gU2lGaXZlIEZVNTQwIGRldmljZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1OnN0cnVjdCBzaWZpdmVfZnU1NDBfbWFjYl9tZ210IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2LVxcdHZvaWQgX19pb21lbSAqcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00OTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFjYl91c3Jpb19jb25maWcgYXQ5MV9kZWZhdWx0X3VzcmlvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00OTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDkzNDpzdGF0aWMgc3RydWN0IHNpZml2ZV9mdTU0MF9tYWNiX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00OTM1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01MjkyPXN0YXRpYyBpbnQgYXQ5MWV0aGVyX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTMxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzMTU6c3RhdGljIHVuc2lnbmVkIGxvbmcgZnU1NDBfbWFjYl90eF9yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzMTYtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzIxOnN0YXRpYyBpbnQgZnU1NDBfbWFjYl90eF9kZXRlcm1pbmVfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzMjItXFx0XFx0XFx0XFx0XFx0c3RydWN0IGNsa19yYXRlX3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzNDg6c3RhdGljIGludCBmdTU0MF9tYWNiX3R4X3NldF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzQ5LVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM1NC1cXHRjbGtfaHdfaW5pdF9yYXRlX3JlcXVlc3QoaHcsIFxcdTAwMjZyZXEsIHJhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM1NTpcXHRyZXQgPSBmdTU0MF9tYWNiX3R4X2RldGVybWluZV9yYXRlKGh3LCBcXHUwMDI2cmVxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNTYtXFx0aWYgKHJldCAhPSAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM2ODpzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZnU1NDBfYzAwMF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzY5OlxcdC5yZWNhbGNfcmF0ZSA9IGZ1NTQwX21hY2JfdHhfcmVjYWxjX3JhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzcwOlxcdC5kZXRlcm1pbmVfcmF0ZSA9IGZ1NTQwX21hY2JfdHhfZGV0ZXJtaW5lX3JhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzcxOlxcdC5zZXRfcmF0ZSA9IGZ1NTQwX21hY2JfdHhfc2V0X3JhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzcyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM3NDpzdGF0aWMgaW50IGZ1NTQwX2MwMDBfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzc1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2NsayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM5MS1cXHRpbml0Lm5hbWUgPSBcXFwic2lmaXZlLWdlbWd4bC1tZ210XFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzOTI6XFx0aW5pdC5vcHMgPSBcXHUwMDI2ZnU1NDBfYzAwMF9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzkzLVxcdGluaXQuZmxhZ3MgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTQyMjpzdGF0aWMgaW50IGZ1NTQwX2MwMDBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTQyMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU1NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX3VzcmlvX2NvbmZpZyBzYW1hN2c1X2VtYWNfdXNyaW8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTYzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFjYl9jb25maWcgZnU1NDBfYzAwMF9jb25maWcgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY0LVxcdC5jYXBzID0gTUFDQl9DQVBTX0dJR0FCSVRfTU9ERV9BVkFJTEFCTEUgfCBNQUNCX0NBUFNfSlVNQk8gfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTY2LVxcdC5kbWFfYnVyc3RfbGVuZ3RoID0gMTYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTY3OlxcdC5jbGtfaW5pdCA9IGZ1NTQwX2MwMDBfY2xrX2luaXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTY4OlxcdC5pbml0ID0gZnU1NDBfYzAwMF9pbml0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2OS1cXHQuanVtYm9fbWF4X2xlbiA9IDEwMjQwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NzI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1hY2JfZHRfaWRzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NDItXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJjZG5zLHp5bnEtZ2VtXFxcIiwgLmRhdGEgPSBcXHUwMDI2enlucV9jb25maWcgfSwgLyogZGVwcmVjYXRlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTc0MzpcXHR7IC5jb21wYXRpYmxlID0gXFxcInNpZml2ZSxmdTU0MC1jMDAwLWdlbVxcXCIsIC5kYXRhID0gXFx1MDAyNmZ1NTQwX2MwMDBfY29uZmlnIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzQ0LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLG1wZnMtbWFjYlxcXCIsIC5kYXRhID0gXFx1MDAyNm1wZnNfY29uZmlnIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjE5OiNkZWZpbmUgUENJX0RSSVZFUl9OQU1FIFxcXCJtYWNiX3BjaVxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMjAtI2RlZmluZSBQTEFUX0RSSVZFUl9OQU1FIFxcXCJtYWNiXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjU6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI2LVxcdC5uYW1lICAgICA9IFBDSV9EUklWRVJfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEzMjptb2R1bGVfcGNpX2RyaXZlcihtYWNiX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMzMtTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGRldl9pZF90YWJsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjUwLjAwMjk2OTY3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTk5NDQwNTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDQiBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1hY2JfcGNpLmNgIGZpbGUgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCdzIHNldHRpbmcgdXAgdGhlIE1BQ0IgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyLCBFdGhlcm5ldCkgaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgdXNpbmcgdGhlIHN0YW5kYXJkIGBtYWNiX2RlZmF1bHRfY29uZmlnYCBzdHJ1Y3R1cmUgdG8gY29uZmlndXJlIHRoZSBwbGF0Zm9ybSBkZXZpY2UuIEknbSBwcmV0dHkgc3VyZSB0aGF0J3MgaG93IGl0IGdlbmVyYWxseSB3b3JrcywgYnV0IGl04oCZcyBhbHdheXMgd2lzZSB0byB2ZXJpZnkuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGluZGVlZCB0aGUgcGF0aCBiZWluZyB0YWtlbiwgYW5kIHRoYXQgaXQgaXNuJ3Qgb3ZlcnJpZGluZyBpdCB3aXRoIHNvbWV0aGluZyBzcGVjaWZpYyB0byB0aGUgRlU1NDAtQzAwMCBjb25maWd1cmF0aW9uLiBMZXQgbWUgcXVpY2tseSBqdW1wIGludG8gYG1hY2JfcGNpLmNgIHRvIGNvbmZpcm0uIE5vIHN1cnByaXNlcyB0aGVyZSwgSSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk3NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjUyLjYwMjQxMzg0NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU0MDYxNzYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfZGVmYXVsdF9jb25maWd8cGRldmluZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjUyLjY0NzgyNzI3MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQ4MjU2MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBtYWNiX3BjaS5jYCoqXG5cbkFscmlnaHQsIGxldCdzIGNyYWNrIG9wZW4gYG1hY2JfcGNpLmNgLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIGlzIHRoZSBQQ0ktc3BlY2lmaWMgZHJpdmVyIGltcGxlbWVudGF0aW9uIGZvciB0aGUgTUFDQiBFdGhlcm5ldCBjb250cm9sbGVyLiBHaXZlbiB0aGUgZmlsZSBuYW1lLCBpdCdzIHByZXR0eSBtdWNoIGEgZ2l2ZW4uIEknbSBleHBlY3RpbmcgdG8gc2VlIGhvdyB0aGUgTUFDQiBoYXJkd2FyZSBpcyBwcm9iZWQsIGluaXRpYWxpemVkLCBhbmQgaW50ZWdyYXRlZCB3aXRoaW4gYSBQQ0ktYmFzZWQgc3lzdGVtLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIFBDSSBkZXZpY2UgSUQgbWF0Y2hpbmcsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAuIFNwZWNpZmljYWxseSwgSSdtIGtlZW4gdG8gc2VlIHRoZSBwb3dlciBtYW5hZ2VtZW50IGFzcGVjdHM7IGhvdyBpdCBoYW5kbGVzIFBDSSBwb3dlciBzdGF0ZXMgYW5kIGFueSBzcGVjaWZpYyBjbG9jayBtYW5hZ2VtZW50IHJlbGF0ZWQgdG8gdGhlIFBDSSBidXMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24gdG8gbWUsIGV2ZW4gZm9yIHRoZSBnZW5lcmFsIGRlc2lnbiBvZiB0aGlzIHR5cGUgb2YgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzI4MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjU0Ljc5NjA4NTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBET0M6IENhZGVuY2UgR0VNIFBDSSB3cmFwcGVyLlxcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIENvcHlyaWdodCAoQykgMjAxNiBDYWRlbmNlIERlc2lnbiBTeXN0ZW1zIC0gaHR0cHM6Ly93d3cuY2FkZW5jZS5jb21cXG4gICA2OlxcdCAqXFxuICAgNzpcXHQgKiBBdXRob3JzOiBSYWZhbCBPemllYmxvIFxcdTAwM2NyYWZhbG9AY2FkZW5jZS5jb21cXHUwMDNlXFxuICAgODpcXHQgKlxcdCAgICBCYXJ0b3N6IEZvbHRhIFxcdTAwM2NiZm9sdGFAY2FkZW5jZS5jb21cXHUwMDNlXFxuICAgOTpcXHQgKi9cXG4gIDEwOlxcdFxcbiAgMTE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Nsay5oXFx1MDAzZVxcbiAgMTI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Nsay1wcm92aWRlci5oXFx1MDAzZVxcbiAgMTM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAxNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAxNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuICAxNzpcXHQjaW5jbHVkZSBcXFwibWFjYi5oXFxcIlxcbiAgMTg6XFx0XFxuICAxOTpcXHQjZGVmaW5lIFBDSV9EUklWRVJfTkFNRSBcXFwibWFjYl9wY2lcXFwiXFxuICAyMDpcXHQjZGVmaW5lIFBMQVRfRFJJVkVSX05BTUUgXFxcIm1hY2JcXFwiXFxuICAyMTpcXHRcXG4gIDIyOlxcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9DRE5TX01BQ0IgMHhlMDA3XFxuICAyMzpcXHRcXG4gIDI0OlxcdCNkZWZpbmUgR0VNX1BDTEtfUkFURSA1MDAwMDAwMFxcbiAgMjU6XFx0I2RlZmluZSBHRU1fSENMS19SQVRFIDUwMDAwMDAwXFxuICAyNjpcXHRcXG4gIDI3OlxcdHN0YXRpYyBpbnQgbWFjYl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpLCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuICAyODpcXHR7XFxuICAyOTpcXHRcXHRpbnQgZXJyO1xcbiAgMzA6XFx0XFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcXG4gIDMxOlxcdFxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaW5mbyBwbGF0X2luZm87XFxuICAzMjpcXHRcXHRzdHJ1Y3QgbWFjYl9wbGF0Zm9ybV9kYXRhIHBsYXRfZGF0YTtcXG4gIDMzOlxcdFxcdHN0cnVjdCByZXNvdXJjZSByZXNbMl07XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdC8qIGVuYWJsZSBwY2kgZGV2aWNlICovXFxuICAzNjpcXHRcXHRlcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGNpKTtcXG4gIDM3OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuICAzODpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwY2ktXFx1MDAzZWRldiwgXFxcIkVuYWJsaW5nIFBDSSBkZXZpY2UgaGFzIGZhaWxlZDogJWRcXFwiLCBlcnIpO1xcbiAgMzk6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gIDQwOlxcdFxcdH1cXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGNpKTtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0Lyogc2V0IHVwIHJlc291cmNlcyAqL1xcbiAgNDU6XFx0XFx0bWVtc2V0KHJlcywgMHgwMCwgc2l6ZW9mKHN0cnVjdCByZXNvdXJjZSkgKiBBUlJBWV9TSVpFKHJlcykpO1xcbiAgNDY6XFx0XFx0cmVzWzBdLnN0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XFxuICA0NzpcXHRcXHRyZXNbMF0uZW5kID0gcGNpX3Jlc291cmNlX2VuZChwY2ksIDApO1xcbiAgNDg6XFx0XFx0cmVzWzBdLm5hbWUgPSBQQ0lfRFJJVkVSX05BTUU7XFxuICA0OTpcXHRcXHRyZXNbMF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTtcXG4gIDUwOlxcdFxcdHJlc1sxXS5zdGFydCA9IHBjaV9pcnFfdmVjdG9yKHBjaSwgMCk7XFxuICA1MTpcXHRcXHRyZXNbMV0ubmFtZSA9IFBDSV9EUklWRVJfTkFNRTtcXG4gIDUyOlxcdFxcdHJlc1sxXS5mbGFncyA9IElPUkVTT1VSQ0VfSVJRO1xcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGNpLVxcdTAwM2VkZXYsIFxcXCJFTUFDIHBoeXNpY2FsIGJhc2UgYWRkcjogJXBhXFxcXG5cXFwiLFxcbiAgNTU6XFx0XFx0XFx0IFxcdTAwMjZyZXNbMF0uc3RhcnQpO1xcbiAgNTY6XFx0XFxuICA1NzpcXHRcXHQvKiBzZXQgdXAgbWFjYiBwbGF0Zm9ybSBkYXRhICovXFxuICA1ODpcXHRcXHRtZW1zZXQoXFx1MDAyNnBsYXRfZGF0YSwgMCwgc2l6ZW9mKHBsYXRfZGF0YSkpO1xcbiAgNTk6XFx0XFxuICA2MDpcXHRcXHQvKiBpbml0aWFsaXplIGNsb2NrcyAqL1xcbiAgNjE6XFx0XFx0cGxhdF9kYXRhLnBjbGsgPSBjbGtfcmVnaXN0ZXJfZml4ZWRfcmF0ZShcXHUwMDI2cGNpLVxcdTAwM2VkZXYsIFxcXCJwY2xrXFxcIiwgTlVMTCwgMCxcXG4gIDYyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBHRU1fUENMS19SQVRFKTtcXG4gIDYzOlxcdFxcdGlmIChJU19FUlIocGxhdF9kYXRhLnBjbGspKSB7XFxuICA2NDpcXHRcXHRcXHRlcnIgPSBQVFJfRVJSKHBsYXRfZGF0YS5wY2xrKTtcXG4gIDY1OlxcdFxcdFxcdGdvdG8gZXJyX3BjbGtfcmVnaXN0ZXI7XFxuICA2NjpcXHRcXHR9XFxuICA2NzpcXHRcXG4gIDY4OlxcdFxcdHBsYXRfZGF0YS5oY2xrID0gY2xrX3JlZ2lzdGVyX2ZpeGVkX3JhdGUoXFx1MDAyNnBjaS1cXHUwMDNlZGV2LCBcXFwiaGNsa1xcXCIsIE5VTEwsIDAsXFxuICA2OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgR0VNX0hDTEtfUkFURSk7XFxuICA3MDpcXHRcXHRpZiAoSVNfRVJSKHBsYXRfZGF0YS5oY2xrKSkge1xcbiAgNzE6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihwbGF0X2RhdGEuaGNsayk7XFxuICA3MjpcXHRcXHRcXHRnb3RvIGVycl9oY2xrX3JlZ2lzdGVyO1xcbiAgNzM6XFx0XFx0fVxcbiAgNzQ6XFx0XFxuICA3NTpcXHRcXHQvKiBzZXQgdXAgcGxhdGZvcm0gZGV2aWNlIGluZm8gKi9cXG4gIDc2OlxcdFxcdG1lbXNldChcXHUwMDI2cGxhdF9pbmZvLCAwLCBzaXplb2YocGxhdF9pbmZvKSk7XFxuICA3NzpcXHRcXHRwbGF0X2luZm8ucGFyZW50ID0gXFx1MDAyNnBjaS1cXHUwMDNlZGV2O1xcbiAgNzg6XFx0XFx0cGxhdF9pbmZvLmZ3bm9kZSA9IHBjaS1cXHUwMDNlZGV2LmZ3bm9kZTtcXG4gIDc5OlxcdFxcdHBsYXRfaW5mby5uYW1lID0gUExBVF9EUklWRVJfTkFNRTtcXG4gIDgwOlxcdFxcdHBsYXRfaW5mby5pZCA9IHBjaS1cXHUwMDNlZGV2Zm47XFxuICA4MTpcXHRcXHRwbGF0X2luZm8ucmVzID0gcmVzO1xcbiAgODI6XFx0XFx0cGxhdF9pbmZvLm51bV9yZXMgPSBBUlJBWV9TSVpFKHJlcyk7XFxuICA4MzpcXHRcXHRwbGF0X2luZm8uZGF0YSA9IFxcdTAwMjZwbGF0X2RhdGE7XFxuICA4NDpcXHRcXHRwbGF0X2luZm8uc2l6ZV9kYXRhID0gc2l6ZW9mKHBsYXRfZGF0YSk7XFxuICA4NTpcXHRcXHRwbGF0X2luZm8uZG1hX21hc2sgPSBwY2ktXFx1MDAzZWRtYV9tYXNrO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHQvKiByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2UgKi9cXG4gIDg4OlxcdFxcdHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChcXHUwMDI2cGxhdF9pbmZvKTtcXG4gIDg5OlxcdFxcdGlmIChJU19FUlIocGRldikpIHtcXG4gIDkwOlxcdFxcdFxcdGVyciA9IFBUUl9FUlIocGRldik7XFxuICA5MTpcXHRcXHRcXHRnb3RvIGVycl9wbGF0X2Rldl9yZWdpc3RlcjtcXG4gIDkyOlxcdFxcdH1cXG4gIDkzOlxcdFxcbiAgOTQ6XFx0XFx0cGNpX3NldF9kcnZkYXRhKHBjaSwgcGRldik7XFxuICA5NTpcXHRcXG4gIDk2OlxcdFxcdHJldHVybiAwO1xcbiAgOTc6XFx0XFxuICA5ODpcXHRlcnJfcGxhdF9kZXZfcmVnaXN0ZXI6XFxuICA5OTpcXHRcXHRjbGtfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKHBsYXRfZGF0YS5oY2xrKTtcXG4gMTAwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowODo1NC43OTYxNTc0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjAzODkzNTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIHdpdGggdGhlIGJvbGRlZCBoZWFkZXIgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgUENJIERldmljZSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgUENJIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHNlZW1zIHRvIGJlIHNldHRpbmcgdXAgXCJtYWNiXCIgd2l0aCB0aGUgZGVmYXVsdCBgcGxhdF9kYXRhYCBjb25maWd1cmF0aW9uLCBub3Qgc3BlY2lmaWNhbGx5IHRoZSBmdTU0MCBzZXR1cCBJIHdhcyBleHBlY3RpbmcuIFRoYXQncyBhIGtleSBvYnNlcnZhdGlvbi4gTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGFuZCB3aGVyZSB0aGlzIGlzIGhhcHBlbmluZy4gTGV0J3Mgc2VlLi4uIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgZmxvdyBhbmQgZmlndXJlIG91dCBob3cgdGhlIGNsb2NrIGlzIGluaXRpYWxpemVkIGZvciBcIm1hY2IuXCIgVGhlIG9idmlvdXMgcGxhY2UgdG8gaW52ZXN0aWdhdGUgaXMgYG1hY2JfbWFpbi5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBjbGtfaW5pdGAgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGhpbiB0aGF0IGNvbnRleHQgYW5kIGhvdyB0aGF0IGNhbGwgaW1wYWN0cyB0aGUgXCJtYWNiXCIgcmVnaXN0cmF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aG9zZSB0d28gZnVuY3Rpb25zIGlzIHRoZSBjb3JlIHByb2JsZW0gaGVyZS4gTGV0J3MgZGlnIGludG8gdGhhdCBzb3VyY2UgY29kZSBhbmQgc2VlIHdoYXQgaW5zaWdodHMgaXQgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDEyOjA4OjU3LjQwMDA1MzUxNFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1MTQ0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2xrX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmg9MTIzMz1zdHJ1Y3QgbWFjYl9jb25maWcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmgtMTIzNS1cXHR1bnNpZ25lZCBpbnRcXHRcXHRkbWFfYnVyc3RfbGVuZ3RoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oOjEyMzY6XFx0aW50XFx0KCpjbGtfaW5pdCkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmgtMTIzNy1cXHRcXHRcXHQgICAgc3RydWN0IGNsayAqKmhjbGssIHN0cnVjdCBjbGsgKip0eF9jbGssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ2MTA9c3RhdGljIHZvaWQgbWFjYl9jbGtzX2Rpc2FibGUoc3RydWN0IGNsayAqcGNsaywgc3RydWN0IGNsayAqaGNsaywgc3RydWN0IGNsayAqdHhfY2xrLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDYyNDpzdGF0aWMgaW50IG1hY2JfY2xrX2luaXRfZGZsdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2MjUtXFx0XFx0XFx0ICAgICAgc3RydWN0IGNsayAqKmhjbGssIHN0cnVjdCBjbGsgKip0eF9jbGssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3MDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NzA5OnN0YXRpYyBpbnQgbWFjYl9jbGtfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3MTAtXFx0XFx0XFx0IHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NzEzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ3MTQ6XFx0aWYgKGNvbmZpZy1cXHUwMDNlY2xrX2luaXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NzE1OlxcdFxcdHJldHVybiBjb25maWctXFx1MDAzZWNsa19pbml0KHBkZXYsIHBjbGssIGhjbGssIHR4X2NsaywgcnhfY2xrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcxNi1cXHRcXHRcXHRcXHRcXHR0c3VfY2xrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3MTctXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDcxODpcXHRcXHRyZXR1cm4gbWFjYl9jbGtfaW5pdF9kZmx0KHBkZXYsIHBjbGssIGhjbGssIHR4X2NsaywgcnhfY2xrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDcxOS1cXHRcXHRcXHRcXHRcXHQgIHRzdV9jbGspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01MjUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYXQ5MWV0aGVyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MjY4OnN0YXRpYyBpbnQgYXQ5MWV0aGVyX2Nsa19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBjbGsgKipwY2xrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTI2OS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgY2xrICoqaGNsaywgc3RydWN0IGNsayAqKnR4X2NsayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTM2OD1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZnU1NDBfYzAwMF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1Mzc0OnN0YXRpYyBpbnQgZnU1NDBfYzAwMF9jbGtfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNzUtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBjbGsgKipoY2xrLCBzdHJ1Y3QgY2xrICoqdHhfY2xrLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzc3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzNzg6XFx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM3OS1cXHRpbnQgZXJyID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MzgxOlxcdGVyciA9IG1hY2JfY2xrX2luaXRfZGZsdChwZGV2LCBwY2xrLCBoY2xrLCB0eF9jbGssIHJ4X2NsaywgdHN1X2Nsayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzgyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU1NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX2NvbmZpZyBmdTU0MF9jMDAwX2NvbmZpZyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2Ni1cXHQuZG1hX2J1cnN0X2xlbmd0aCA9IDE2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTU2NzpcXHQuY2xrX2luaXQgPSBmdTU0MF9jMDAwX2Nsa19pbml0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU2OC1cXHQuaW5pdCA9IGZ1NTQwX2MwMDBfaW5pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTYyND1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGVtYWNfY29uZmlnID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjI2LVxcdFxcdE1BQ0JfQ0FQU19VU1JJT19IQVNfTUlJLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTYyNzpcXHQuY2xrX2luaXQgPSBhdDkxZXRoZXJfY2xrX2luaXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjI4LVxcdC5pbml0ID0gYXQ5MWV0aGVyX2luaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3NjY9c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3ODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzkwOlxcdGVyciA9IG1hY2JfY2xrX2luaXQocGRldiwgXFx1MDAyNnBjbGssIFxcdTAwMjZoY2xrLCBcXHUwMDI2dHhfY2xrLCBcXHUwMDI2cnhfY2xrLCBcXHUwMDI2dHN1X2NsayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3OTEtXFx0XFx0XFx0ICAgIG1hY2JfY29uZmlnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDg6NTcuNDQ0NTczMTRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODEwNjcyNDU2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBpZGVudGlmaWVzIHRocmVlIGRyaXZlcnMgYmVpbmcgbW9kaWZpZWQ6IGEgTUFDIGRyaXZlciBmb3IgdGhlIFNpRml2ZSBGVTU0MCBSSVNDLVYgU29DLCBhbiBNRElPIG11eCBkcml2ZXIgZm9yIHRoZSBBbWxvZ2ljIE1lc29uIEcxMkEgQVJNIFNvQywgYW5kIGFuIEV0aGVybmV0IFBIWSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU44ODExSC4gVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyBzdHJhaWdodGZvcndhcmQsIGp1c3QgaW5pdGlhbGl6aW5nIGBzdHJ1Y3QgY2xrX2luaXRfZGF0YWAgdG8gemVybyBiZWZvcmUgY2xvY2sgcmVnaXN0cmF0aW9uLiBObyBjb21wbGV4IGxvZ2ljIHRoZXJlLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXNlIGNoYW5nZXMgYXJlIHJlbGV2YW50IGZvciBmdXp6aW5nIG9uIG15IHN0YW5kYXJkIHg4Nl82NCBRRU1VL0dDRSBlbnZpcm9ubWVudC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlYWNoYWJpbGl0eSBvZiBlYWNoIGZ1bmN0aW9uLiBGaXJzdCwgYGZ1NTQwX2MwMDBfY2xrX2luaXRgIGlzIGNsZWFybHkgYSBTaUZpdmUgUklTQy1WIHBsYXRmb3JtIGRyaXZlciwgdHJpZ2dlcmVkIGJ5IGEgc3BlY2lmaWMgYG9mX2RldmljZV9pZGAuIE5vdCBnb2luZyB0byBoYXBwZW4gb24geDg2XzY0IFFFTVUuIE5leHQsIGBnMTJhX2VwaHlfZ2x1ZV9jbGtfcmVnaXN0ZXJgIGlzIGZvciBhbiBBbWxvZ2ljIEFSTSBTb0MuIFNhbWUgaXNzdWUsIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIEZpbmFsbHksIHRoZSBgYW44ODExaGJfY2xrX3Byb3ZpZGVyX3NldHVwYCBhbmQgYGVuODgxMWhfY2xrX3Byb3ZpZGVyX3NldHVwYCBmdW5jdGlvbnMgYXJlIE1ESU8gUEhZIGRyaXZlcnMsIGRlcGVuZGVudCBvbiBhbiBNRElPIGJ1cyBhbmQgdGhlIHByZXNlbmNlIG9mIHRoZSBBaXJvaGEgUEhZLiBObyBzdWNoIFBIWSBpcyBlbXVsYXRlZCBpbiBhIHR5cGljYWwgUUVNVS9HQ0Ugc2V0dXAuIFRoZXNlIE1ESU8gUEhZcyBwcm9iZSBkdXJpbmcgTURJTyBidXMgc2Nhbm5pbmcsIHNvIHRoZXJlJ3Mgbm8gd2F5IHRvIHJlYWNoIHRoZXNlIHdpdGggY3VycmVudCBjb25maWd1cmF0aW9ucy5cblxuU28sIGl0J3MgcHJldHR5IGNsZWFyIGFsbCBvZiB0aGVzZSBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIG15IHRhcmdldCBhcmNoaXRlY3R1cmUgYW5kIGVudmlyb25tZW50LiBUaGV5IGFyZSBwbGF0Zm9ybS1zcGVjaWZpYyBvciByZWxpYW50IG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBhdmFpbGFibGUuIFRoaXMgbGluZXMgdXAgd2l0aCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIFRoZXNlIGNvZGUgcGF0aHMgZmFsbCBzcXVhcmVseSBpbnRvIHRoZSBjYXRlZ29yeSBvZiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEl0J3Mgbm90IGEgY2FzZSBvZiBjb21wbGV4IGNvbnRyb2wgZmxvdyBvciBpbmRpcmVjdCBjYWxsczsgdGhleSBzaW1wbHkgcmVxdWlyZSBzcGVjaWZpYyBzaWxpY29uLlxuXG5UaGVyZWZvcmUsIHRoZSBwYXRjaCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcuIE5vIG5lZWQgdG8gbG9vayBmb3IgYW55IGZvY3VzIHN5bWJvbHMgb3IgZW5hYmxpbmcgY29uZmlndXJhdGlvbnMuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZXNlIGNoYW5nZXMgYXJlIGluIGRyaXZlcnMgZm9yIHNwZWNpYWxpemVkIGhhcmR3YXJlIChTaUZpdmUgUklTQy1WLCBBbWxvZ2ljIEFSTSwgQWlyb2hhIFBIWXMpIHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB4ODZfNjQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2OTg3LCJPdXRwdXRUb2tlbnMiOjE4MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMjowOTowNS41NTEzMDA2MjlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbml0aWFsaXplcyAnc3RydWN0IGNsa19pbml0X2RhdGEnIGluIGRyaXZlciBwcm9iZS9zZXR1cCBmdW5jdGlvbnMgYWNyb3NzIGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgKFNpRml2ZSBGVTU0MCBTb0MgTUFDKSwgZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC1tZXNvbi1nMTJhLmMgKEFtbG9naWMgTWVzb24gRzEyQSBTb0MgTURJTyBtdXgpLCBhbmQgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgKEFpcm9oYSBFTjg4MTFIIE1ESU8gUEhZKS4gQWxsIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgb3IgRXRoZXJuZXQgUEhZcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGVtIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGluaXRpYWxpemVzICdzdHJ1Y3QgY2xrX2luaXRfZGF0YScgaW4gZHJpdmVyIHByb2JlL3NldHVwIGZ1bmN0aW9ucyBhY3Jvc3MgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYyAoU2lGaXZlIEZVNTQwIFNvQyBNQUMpLCBkcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LW1lc29uLWcxMmEuYyAoQW1sb2dpYyBNZXNvbiBHMTJBIFNvQyBNRElPIG11eCksIGFuZCBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyAoQWlyb2hhIEVOODgxMUggTURJTyBQSFkpLiBBbGwgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFNvQyBoYXJkd2FyZSBvciBFdGhlcm5ldCBQSFlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCBRRU1VL0dDRSB2aXJ0dWFsIGVudmlyb25tZW50cywgbWFraW5nIHRoZW0gc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTI6MDk6MDUuNTUxMzYxNzE5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrfx5r[1] Phase: Running StartedAt: 2026-09-04 12:09:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrfx5r[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 12:09:17 +0000 UTC FinishedAt: 2026-09-04 12:09:21 +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,}