Name: series-workflowjzzgt Phase: Failed StartedAt: 2026-09-12 01:32:58 +0000 UTC FinishedAt: 2026-09-12 02:49:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzzgt[0] Phase: Succeeded StartedAt: 2026-09-12 01:32:58 +0000 UTC FinishedAt: 2026-09-12 02:49:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzzgt[0].run-triage Phase: Succeeded StartedAt: 2026-09-12 01:32:58 +0000 UTC FinishedAt: 2026-09-12 02:49:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2hlZCBmaWxlIChkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMpIGlzIGEgaGFyZHdhcmUgZGV2aWNlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4MSBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXIuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGNvbm5lY3RlZCB0byBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQyZDdlNDFmNGE5MDM2NjYxZGRiODk4YjNhNzlhNzk3YmI0NDhlZTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCAxMiAwMjo0Nzo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNcbmluZGV4IDhlYjUxYjFhMDA2YzQuLjY4ZmQ0ZDBmZTMxYjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguY1xuQEAgLTIwMCw4ICYjNDM7MjAwLDggQEAgc3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4gXHRpbnQgcmV0O1xuIFxuLVx0LyogRGVmYXVsdCB0byBMRUQgQWN0aXZlIEhpZ2ggaWYgYWN0aXZlLWxvdyBub3QgaW4gRFQgKi9cbi1cdGlmIChwcml2LVx1MDAzZWxlZF9wb2xhcml0eV9tb2RlID09IC0xKSB7XG4mIzQzO1x0LyogU2V0IExFRCBBY3RpdmUgSGlnaCB1bmxlc3MgYWN0aXZlLWxvdyB3YXMgcmVxdWVzdGVkIGluIERUICovXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlbGVkX3BvbGFyaXR5X21vZGUgIT0gMSkge1xuIFx0XHRyZXQgPSBwaHlfc2V0X2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfQU4sXG4gXHRcdFx0XHQgICAgICAgUUNBODA4WF9NTUQ3X0xFRF9QT0xBUklUWV9DVFJMLFxuIFx0XHRcdFx0ICAgICAgIFFDQTgwOFhfTEVEX0FDVElWRV9ISUdIKTtcbkBAIC02MDMsNiAmIzQzOzYwMyw5IEBAIHN0YXRpYyBpbnQgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbiBcdFx0Y2FzZSBQSFlfTEVEX0FDVElWRV9MT1c6XG4gXHRcdFx0YWN0aXZlX2xvdyA9IHRydWU7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIFBIWV9MRURfQUNUSVZFX0hJR0g6XG4mIzQzO1x0XHRcdGFjdGl2ZV9sb3cgPSBmYWxzZTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaGVkIGZpbGUgKGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYykgaXMgYSBoYXJkd2FyZSBkZXZpY2UgZHJpdmVyIGZvciB0aGUgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4MDgxIEV0aGVybmV0IFBIWSB0cmFuc2NlaXZlci4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgY29ubmVjdGVkIHRvIGFuIE1ESU8gYnVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDJkN2U0MWY0YTkwMzY2NjFkZGI4OThiM2E3OWE3OTdiYjQ0OGVlMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgU2VwIDEyIDAyOjQ3OjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jIGIvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jCmluZGV4IDhlYjUxYjFhMDA2YzQuLjY4ZmQ0ZDBmZTMxYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMKQEAgLTIwMCw4ICYjNDM7MjAwLDggQEAgc3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJc3RydWN0IHFjYTgwOHhfcHJpdiAqcHJpdiA9IHBoeWRldi0mZ3Q7cHJpdjsKIAlpbnQgcmV0OwogCi0JLyogRGVmYXVsdCB0byBMRUQgQWN0aXZlIEhpZ2ggaWYgYWN0aXZlLWxvdyBub3QgaW4gRFQgKi8KLQlpZiAocHJpdi0mZ3Q7bGVkX3BvbGFyaXR5X21vZGUgPT0gLTEpIHsKJiM0MzsJLyogU2V0IExFRCBBY3RpdmUgSGlnaCB1bmxlc3MgYWN0aXZlLWxvdyB3YXMgcmVxdWVzdGVkIGluIERUICovCiYjNDM7CWlmIChwcml2LSZndDtsZWRfcG9sYXJpdHlfbW9kZSAhPSAxKSB7CiAJCXJldCA9IHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwKIAkJCQkgICAgICAgUUNBODA4WF9NTUQ3X0xFRF9QT0xBUklUWV9DVFJMLAogCQkJCSAgICAgICBRQ0E4MDhYX0xFRF9BQ1RJVkVfSElHSCk7CkBAIC02MDMsNiAmIzQzOzYwMyw5IEBAIHN0YXRpYyBpbnQgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwKIAkJY2FzZSBQSFlfTEVEX0FDVElWRV9MT1c6CiAJCQlhY3RpdmVfbG93ID0gdHJ1ZTsKIAkJCWJyZWFrOwomIzQzOwkJY2FzZSBQSFlfTEVEX0FDVElWRV9ISUdIOgomIzQzOwkJCWFjdGl2ZV9sb3cgPSBmYWxzZTsKJiM0MzsJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBRQ0E4MDh4IFBIWSBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGZvciB0aGUgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4MDh4IEV0aGVybmV0IFBIWSB0cmFuc2NlaXZlciBkcml2ZXIuIEkmIzM5O20gc2VlaW5nIGEgbW9kaWZpY2F0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkZXZpY2UgaXMgYW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFNpbmNlIGl0JiMzOTtzIGEgUEhZIGRyaXZlciwgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2Ugb2YgdGhlIG5ldHdvcmsgY29ubmVjdGlvbi4KCk5vdywgbG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgd2UmIzM5O3JlIG1vZGlmeWluZyB0aGUgTEVEIHBvbGFyaXR5IGNvbmZpZ3VyYXRpb24uIFNwZWNpZmljYWxseSwgaXQgYXBwZWFycyB0aGUgb3JpZ2luYWwgY29kZSBkZWZhdWx0ZWQgdG8gJiMzNDtMRUQgQWN0aXZlIEhpZ2gmIzM0OyBpZiBubyBzcGVjaWZpYyBzZXR0aW5nIHdhcyBwcm92aWRlZCB0aHJvdWdoIHRoZSBEZXZpY2UgVHJlZSAoRFQpLiBUaGUgY2hhbmdlIHJlZmluZXMgdGhpcyBsb2dpYy4gVGhlIG9yaWdpbmFsIGNoZWNrIHdhcyBpZiBgcHJpdi0mZ3Q7bGVkX3BvbGFyaXR5X21vZGVgIHdhcyBzZXQgdG8gLTEsIHdoZXJlYXMgdGhpcyB1cGRhdGUgaXMgY2hlY2tpbmcgaWYgaXQgaXMgKm5vdCogZXF1YWwgdG8gMS4gVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIHdhcyBzYXlpbmcgJiMzNDtpZiBub3Qgc3BlY2lmaWVkLCB1c2UgaGlnaCYjMzQ7LiBJIGxpa2UgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGNoYW5nZXMgdG8gJiMzNDtpZiBub3QgKmV4cGxpY2l0bHkqIGxvdywgc2V0IHRvIGhpZ2gmIzM0Oy4gVGhlIGNvZGUgaXMgYWxzbyBhZGRpbmcgYFBIWV9MRURfQUNUSVZFX0hJR0hgIGludG8gdGhlIGBxY2E4MDh4X2xlZF9wb2xhcml0eV9zZXRgIGZ1bmN0aW9uLgoKSSBzZWUgdGhleSYjMzk7cmUgdXNpbmcgYHBoeV9zZXRfYml0c19tbWRgIHRvIGNvbmZpZ3VyZSB0aGUgTXVsdGktTWVkaWEtRGVwZW5kZW50IChNTUQpIHJlZ2lzdGVycyBvZiB0aGUgUEhZLiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlLgoKVGhlIGNoYW5nZSBzaG91bGQgZW5zdXJlIHRoYXQgd2UmIzM5O3JlIGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgTEVEIHBvbGFyaXR5IGJhc2VkIG9uIHRoZSBEVCBjb25maWd1cmF0aW9uLiBUaGUgYWRkaXRpb24gb2YgdGhlIGBQSFlfTEVEX0FDVElWRV9ISUdIYCBjYXNlIGluIHRoZSBgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbiBpcyBhIGdyZWF0IGFkZGl0aW9uLCBwcm92aWRpbmcgY29uc2lzdGVuY3kuCgpOZXh0LCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIHRvIGNvbmZpcm0gdGhlIHZpc2liaWxpdHkgb2YgdGhpcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cWNhODA4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZT00PW9iai0kKENPTkZJR19RQ0E4M1hYX1BIWSlcdCYjNDM7PSBxY2E4M3h4Lm9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1FDQTgwOFhfUEhZKVx0JiM0Mzs9IHFjYTgwOHgub1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGUtNi1vYmotJChDT05GSUdfUUNBODA3WF9QSFkpXHQmIzQzOz0gcWNhODA3eC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM9MTExMz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXQ4MDN4X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMTUtXHQuY2FibGVfdGVzdF9zdGFydFx0PSBpcHE1MDE4X2NhYmxlX3Rlc3Rfc3RhcnQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjE2Olx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1c1x0PSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMTctXHQuc29mdF9yZXNldFx0XHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz0xODE9c3RhdGljIGludCBxY2E4MDd4X2xlZF9od19jb250cm9sX2VuYWJsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleClcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMTg4LVx0cmVnID0gUUNBODA3WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKGluZGV4KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzoxODk6XHRyZXR1cm4gcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfZW5hYmxlKHBoeWRldiwgcmVnKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy0xOTAtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz0yMzg9c3RhdGljIGJvb2wgcWNhODA3eF9sZWRfaHdfY29udHJvbF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTI0NS1cdHJlZyA9IFFDQTgwN1hfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6MjQ2Olx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19od19jb250cm9sX3N0YXR1cyhwaHlkZXYsIHJlZyk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMjQ3LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9MzMwPXN0YXRpYyBpbnQgcWNhODA3eF9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMzQ2LVx0cmVnID0gUUNBODA3WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKGluZGV4KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzozNDc6XHRyZXR1cm4gcWNhODA4eF9sZWRfcmVnX2JyaWdodG5lc3Nfc2V0KHBoeWRldiwgcmVnLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMzQ4LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9MzUwPXN0YXRpYyBpbnQgcWNhODA3eF9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy0zNTktXHRyZWcgPSBRQ0E4MDdYX01NRDdfTEVEX0ZPUkNFX0NUUkwoaW5kZXgpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjM2MDpcdHJldHVybiBxY2E4MDh4X2xlZF9yZWdfYmxpbmtfc2V0KHBoeWRldiwgcmVnLCBkZWxheV9vbiwgZGVsYXlfb2ZmKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy0zNjEtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz03OTE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwN3hfZHJpdmVyc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MDctXHRcdC5jYWJsZV90ZXN0X3N0YXJ0XHQ9IHFjYTgwN3hfY2FibGVfdGVzdF9zdGFydCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo4MDg6XHRcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXNcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtODA5LVx0XHQudXBkYXRlX3N0YXRzXHRcdD0gcWNhODA3eF91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTgzMC1cdFx0LmNhYmxlX3Rlc3Rfc3RhcnRcdD0gcWNhODA3eF9jYWJsZV90ZXN0X3N0YXJ0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjgzMTpcdFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1c1x0PSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MzItXHRcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBxY2E4MDd4X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM9OTI9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy05My1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo5NDpzdHJ1Y3QgcWNhODA4eF9wcml2IHtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy05NS1cdGludCBsZWRfcG9sYXJpdHlfbW9kZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtOTgtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6OTk6c3RhdGljIGludCBxY2E4MDh4X3BoeV9mYXN0X3JldHJhaW5fY29uZmlnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTAwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTMzLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjEzNDpzdGF0aWMgaW50IHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTEzNS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE0OC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxNDk6c3RhdGljIGJvb2wgcWNhODA4eF9pc19wcmVmZXJfbWFzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTUwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTU0LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE1NTpzdGF0aWMgYm9vbCBxY2E4MDh4X2hhc19mYXN0X3JldHJhaW5fb3Jfc2xhdmVfc2VlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE1Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE1OS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxNjA6c3RhdGljIGJvb2wgcWNhODA4eF9pc18xZ19vbmx5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTYxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTcwLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE3MTpzdGF0aWMgdm9pZCBxY2E4MDh4X2ZpbGxfcG9zc2libGVfaW50ZXJmYWNlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE3Mi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE3Ni1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxNzc6XHRpZiAoIXFjYTgwOHhfaXNfMWdfb25seShwaHlkZXYpKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE3OC1cdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsIHBvc3NpYmxlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTgwLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE4MTpzdGF0aWMgaW50IHFjYTgwOHhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xODIte1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE4My1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldjtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxODQ6XHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE4NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTk3LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE5ODpzdGF0aWMgaW50IHFjYTgwOHhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xOTkte1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIwMDpcdHN0cnVjdCBxY2E4MDh4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMDEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMjQtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MjI1Olx0aWYgKHFjYTgwOHhfaGFzX2Zhc3RfcmV0cmFpbl9vcl9zbGF2ZV9zZWVkKHBoeWRldikpIHtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMjYtXHRcdC8qIENvbmZpZyB0aGUgZmFzdCByZXRyYWluIGZvciB0aGUgbGluayAyNTAwTSAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIyNzpcdFx0cmV0ID0gcWNhODA4eF9waHlfZmFzdF9yZXRyYWluX2NvbmZpZyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTIyOC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjM0LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIzNTpcdFx0aWYgKCFxY2E4MDh4X2lzX3ByZWZlcl9tYXN0ZXIocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTIzNi1cdFx0XHQvKiBFbmFibGUgc2VlZCBhbmQgY29uZmlndXJlIGxvd2VyIHJhbWRvbSBzZWVkIHRvIG1ha2UgcGh5XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTIzOC1cdFx0XHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoyMzk6XHRcdFx0cmV0ID0gcWNhODA4eF9waHlfbXNfc2VlZF9lbmFibGUocGh5ZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yNDAtXHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjQ0LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjI0NTpcdHFjYTgwOHhfZmlsbF9wb3NzaWJsZV9pbnRlcmZhY2VzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjQ2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yNTYtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MjU3OnN0YXRpYyBpbnQgcWNhODA4eF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI1OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI5NC1cdFx0ICovXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Mjk1Olx0XHRpZiAocWNhODA4eF9oYXNfZmFzdF9yZXRyYWluX29yX3NsYXZlX3NlZWQocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI5Ni1cdFx0XHRpZiAocGh5ZGV2LVx1MDAzZW1hc3Rlcl9zbGF2ZV9zdGF0ZSA9PSBNQVNURVJfU0xBVkVfU1RBVEVfRVJSIHx8XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Mjk3Olx0XHRcdCAgICBxY2E4MDh4X2lzX3ByZWZlcl9tYXN0ZXIocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjI5ODpcdFx0XHRcdHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI5OS1cdFx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjMwMDpcdFx0XHRcdHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzAxLVx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzA3LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjMwODpzdGF0aWMgaW50IHFjYTgwOHhfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTMwOS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTMxNS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozMTY6XHRpZiAocWNhODA4eF9oYXNfZmFzdF9yZXRyYWluX29yX3NsYXZlX3NlZWQocGh5ZGV2KSlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozMTc6XHRcdHJldCA9IHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzE4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zMjEtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MzIyOnN0YXRpYyBpbnQgcWNhODA4eF9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzIzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzYyLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjM2MzpzdGF0aWMgaW50IHFjYTgwOHhfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzY0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzcxLVx0LyogVGhlIGF1dG9uZWcgYWJpbGl0eSBpcyBub3QgZXhpc3RlZCBpbiBiaXQzIG9mIE1NRDcuMSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozNzI6XHQgKiBidXQgaXQgaXMgc3VwcG9ydGVkIGJ5IHFjYTgwOHggUEhZLCBzbyB3ZSBhZGQgaXQgaGVyZVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTM3My1cdCAqIG1hbnVhbGx5LlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zODAtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozODE6XHRpZiAocWNhODA4eF9pc18xZ19vbmx5KHBoeWRldikpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzgyLVx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzg2LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjM4NzpzdGF0aWMgaW50IHFjYTgwOHhfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zODgte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00MTItXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDEzOnN0YXRpYyB2b2lkIHFjYTgwOHhfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDE0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDIzLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQyNDpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX3BhcnNlX25ldGRldihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBsb25nIHJ1bGVzLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQyNS1cdFx0XHRcdCAgICB1MTYgKm9mZmxvYWRfdHJpZ2dlcilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDU1LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ1NjpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZW5hYmxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ1Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ2My1cdHJlZyA9IFFDQTgwOFhfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDY0Olx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19od19jb250cm9sX2VuYWJsZShwaHlkZXYsIHJlZyk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDY1LX1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NjYtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDY3OnN0YXRpYyBpbnQgcWNhODA4eF9sZWRfaHdfaXNfc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ2OC1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIHJ1bGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NzQtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDc1Olx0cmV0dXJuIHFjYTgwOHhfbGVkX3BhcnNlX25ldGRldihwaHlkZXYsIHJ1bGVzLCBcdTAwMjZvZmZsb2FkX3RyaWdnZXIpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ3Ni19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDc3LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ3ODpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ3OS1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ4OC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo0ODk6XHRyZXQgPSBxY2E4MDh4X2xlZF9wYXJzZV9uZXRkZXYocGh5ZGV2LCBydWxlcywgXHUwMDI2b2ZmbG9hZF90cmlnZ2VyKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00OTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00OTItXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDkzOlx0cmV0ID0gcWNhODA4eF9sZWRfaHdfY29udHJvbF9lbmFibGUocGh5ZGV2LCBpbmRleCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDk0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTAxLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUwMjpzdGF0aWMgYm9vbCBxY2E4MDh4X2xlZF9od19jb250cm9sX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleClcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MDMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MDktXHRyZWcgPSBRQ0E4MDhYX01NRDdfTEVEX0ZPUkNFX0NUUkwoaW5kZXgpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUxMDpcdHJldHVybiBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9zdGF0dXMocGh5ZGV2LCByZWcpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTUxMS19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTEyLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUxMzpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTUxNC1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgKnJ1bGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MjItXHQvKiBDaGVjayBpZiB3ZSBoYXZlIGh3IGNvbnRyb2wgZW5hYmxlZCAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUyMzpcdGlmIChxY2E4MDh4X2xlZF9od19jb250cm9sX3N0YXR1cyhwaHlkZXYsIGluZGV4KSlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MjQtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NDgtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTQ5OnN0YXRpYyBpbnQgcWNhODA4eF9sZWRfaHdfY29udHJvbF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleClcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NTAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NjEtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTYyOnN0YXRpYyBpbnQgcWNhODA4eF9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NjMtXHRcdFx0XHQgICAgICB1OCBpbmRleCwgZW51bSBsZWRfYnJpZ2h0bmVzcyB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTcxLVx0aWYgKCF2YWx1ZSkge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU3MjpcdFx0cmV0ID0gcWNhODA4eF9sZWRfaHdfY29udHJvbF9yZXNldChwaHlkZXYsIGluZGV4KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NzMtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU3Ny1cdHJlZyA9IFFDQTgwOFhfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTc4Olx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19icmlnaHRuZXNzX3NldChwaHlkZXYsIHJlZywgdmFsdWUpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU3OS19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTgwLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU4MTpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01ODItXHRcdFx0XHQgdW5zaWduZWQgbG9uZyAqZGVsYXlfb24sXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5MC1cdHJlZyA9IFFDQTgwOFhfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTkxOlx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19ibGlua19zZXQocGh5ZGV2LCByZWcsIGRlbGF5X29uLCBkZWxheV9vZmYpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5Mi19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTkzLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU5NDpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTk1LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTk2LXtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo1OTc6XHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTk4LVx0Ym9vbCBhY3RpdmVfbG93ID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTYzMi1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2MzM6c3RhdGljIGludCBxY2E4MDh4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTYzNC17XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjM1Olx0c3RydWN0IHFjYTgwOHhfcHJpdiAqcHJpdiA9IHBoeWRldi1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTYzNi1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjM5LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY0MDpzdGF0aWMgdm9pZCBxY2E4MDh4X2dldF9waHlfc3RhdHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NDEtXHRcdFx0XHQgIHN0cnVjdCBldGh0b29sX2V0aF9waHlfc3RhdHMgKmV0aF9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjQzLXtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NDQ6XHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjQ1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NDgtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjQ5OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBxY2E4MDh4X2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY1MC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY1NC1cdC5mbGFnc1x0XHRcdD0gUEhZX1BPTExfQ0FCTEVfVEVTVCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NTU6XHQucHJvYmVcdFx0XHQ9IHFjYTgwOHhfcHJvYmUsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjU2LVx0LmNvbmZpZ19pbnRyXHRcdD0gYXQ4MDN4X2NvbmZpZ19pbnRyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NjEtXHQuZ2V0X3dvbFx0XHQ9IGF0ODAzeF9nZXRfd29sLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY2MjpcdC5nZXRfZmVhdHVyZXNcdFx0PSBxY2E4MDh4X2dldF9mZWF0dXJlcyxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NjM6XHQuY29uZmlnX2FuZWdcdFx0PSBxY2E4MDh4X2NvbmZpZ19hbmVnLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY2NC1cdC5zdXNwZW5kXHRcdD0gZ2VucGh5X3N1c3BlbmQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjY1LVx0LnJlc3VtZVx0XHRcdD0gZ2VucGh5X3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NjY6XHQucmVhZF9zdGF0dXNcdFx0PSBxY2E4MDh4X3JlYWRfc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY2NzpcdC5jb25maWdfaW5pdFx0XHQ9IHFjYTgwOHhfY29uZmlnX2luaXQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY4Olx0LnNvZnRfcmVzZXRcdFx0PSBxY2E4MDh4X3NvZnRfcmVzZXQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY5Olx0LmNhYmxlX3Rlc3Rfc3RhcnRcdD0gcWNhODA4eF9jYWJsZV90ZXN0X3N0YXJ0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3MDpcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXNcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjcxOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBxY2E4MDh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NzI6XHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IHFjYTgwOHhfbGVkX2JyaWdodG5lc3Nfc2V0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3MzpcdC5sZWRfYmxpbmtfc2V0XHRcdD0gcWNhODA4eF9sZWRfYmxpbmtfc2V0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3NDpcdC5sZWRfaHdfaXNfc3VwcG9ydGVkXHQ9IHFjYTgwOHhfbGVkX2h3X2lzX3N1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NzU6XHQubGVkX2h3X2NvbnRyb2xfc2V0XHQ9IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3NjpcdC5sZWRfaHdfY29udHJvbF9nZXRcdD0gcWNhODA4eF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njc3Olx0LmxlZF9wb2xhcml0eV9zZXRcdD0gcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3ODpcdC51cGRhdGVfc3RhdHNcdFx0PSBxY2E4MDh4X3VwZGF0ZV9zdGF0cyxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2Nzk6XHQuZ2V0X3BoeV9zdGF0c1x0XHQ9IHFjYTgwOHhfZ2V0X3BoeV9zdGF0cyxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODAtfSwgfTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODEtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjgyOm1vZHVsZV9waHlfZHJpdmVyKHFjYTgwOHhfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODMtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njg0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgcWNhODA4eF90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODUtXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MDgxX1BIWV9JRCkgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjg4LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY4OTpNT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIHFjYTgwOHhfdGJsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYz00OTE9RVhQT1JUX1NZTUJPTF9HUEwoYXQ4MDN4X2NkdF93YWl0X2Zvcl9jb21wbGV0aW9uKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTQ5Mi1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjQ5MzpzdGF0aWMgYm9vbCBxY2E4MDh4X2NkdF9mYXVsdF9sZW5ndGhfdmFsaWQoaW50IGNkdF9jb2RlKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNDk0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy01MTItXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo1MTM6c3RhdGljIGludCBxY2E4MDh4X2NhYmxlX3Rlc3RfcmVzdWx0X3RyYW5zKGludCBjZHRfY29kZSlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTUxNC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTM3LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NTM4OnN0YXRpYyBpbnQgcWNhODA4eF9jZHRfZmF1bHRfbGVuZ3RoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWlyLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTM5LVx0XHRcdFx0ICAgIGludCByZXN1bHQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTcyLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NTczOnN0YXRpYyBpbnQgcWNhODA4eF9jYWJsZV90ZXN0X2dldF9wYWlyX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBwYWlyLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTc0LVx0XHRcdFx0XHQgICAgICB1MTYgc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTU5NS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjU5NjpcdHJlc3VsdCA9IHFjYTgwOHhfY2FibGVfdGVzdF9yZXN1bHRfdHJhbnMocGFpcl9jb2RlKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTU5Ny1cdGV0aG5sX2NhYmxlX3Rlc3RfcmVzdWx0KHBoeWRldiwgcGFpciwgcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTU5OC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjU5OTpcdGlmIChxY2E4MDh4X2NkdF9mYXVsdF9sZW5ndGhfdmFsaWQocGFpcl9jb2RlKSkge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjAwOlx0XHRsZW5ndGggPSBxY2E4MDh4X2NkdF9mYXVsdF9sZW5ndGgocGh5ZGV2LCBwYWlyLCByZXN1bHQpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjAxLVx0XHRldGhubF9jYWJsZV90ZXN0X2ZhdWx0X2xlbmd0aChwaHlkZXYsIHBhaXIsIGxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjA2LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjA3OmludCBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpmaW5pc2hlZClcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYwOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjI2LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjI3Olx0cmV0ID0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9wYWlyX3N0YXR1cyhwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0EsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYzMC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjYzMTpcdHJldCA9IHFjYTgwOHhfY2FibGVfdGVzdF9nZXRfcGFpcl9zdGF0dXMocGh5ZGV2LCBFVEhUT09MX0FfQ0FCTEVfUEFJUl9CLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjMyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MzQtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2MzU6XHRyZXQgPSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3BhaXJfc3RhdHVzKHBoeWRldiwgRVRIVE9PTF9BX0NBQkxFX1BBSVJfQywgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYzNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjM4LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjM5Olx0cmV0ID0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9wYWlyX3N0YXR1cyhwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0QsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NDAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY0Ni19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2NDc6RVhQT1JUX1NZTUJPTF9HUEwocWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjQ4LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjQ5OmludCBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZylcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY1MC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjUzLX1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjY1NDpFWFBPUlRfU1lNQk9MX0dQTChxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9lbmFibGUpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjU1LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjU2OmJvb2wgcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NTcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY2Mi19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2NjM6RVhQT1JUX1NZTUJPTF9HUEwocWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY2NC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjY2NTppbnQgcWNhODA4eF9sZWRfcmVnX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NjYtXHRcdFx0XHQgICB1MTYgcmVnLCBlbnVtIGxlZF9icmlnaHRuZXNzIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY3Mi19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2NzM6RVhQT1JUX1NZTUJPTF9HUEwocWNhODA4eF9sZWRfcmVnX2JyaWdodG5lc3Nfc2V0KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY3NC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjY3NTppbnQgcWNhODA4eF9sZWRfcmVnX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjc2LVx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTcwMC19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo3MDE6RVhQT1JUX1NZTUJPTF9HUEwocWNhODA4eF9sZWRfcmVnX2JsaW5rX3NldCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy03MDItXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS5oPTI1Nz1pbnQgYXQ4MDN4X2NkdF93YWl0X2Zvcl9jb21wbGV0aW9uKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjU4LVx0XHRcdFx0ICAgdTMyIGNkdF9lbik7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjU5OmludCBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpmaW5pc2hlZCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjYwOmludCBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZyk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjYxOmJvb2wgcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS5oOjI2MjppbnQgcWNhODA4eF9sZWRfcmVnX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjYzLVx0XHRcdFx0ICAgdTE2IHJlZywgZW51bSBsZWRfYnJpZ2h0bmVzcyB2YWx1ZSk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjY0OmludCBxY2E4MDh4X2xlZF9yZWdfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjY1LVx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0Mzg5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgUUNBODA4WCBQSFkgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhlIGRlZmluaXRpb24gb2YgYENPTkZJR19RQ0E4MDhYX1BIWWAuIE5vIG5lZWQgdG8gcmVpbnZlbnQgdGhlIHdoZWVsLCBzbyBJJiMzOTtsbCBqdW1wIHN0cmFpZ2h0IGludG8gYGRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBQSFkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIG1pZ2h0IGJlIHJlbGV2YW50IGluIHRoaXMgY29uZmlndXJhdGlvbiBzcGFjZS4gVGhpcyBpcyBmdW5kYW1lbnRhbDsgSSBjYW4mIzM5O3QgcHJvY2VlZCBlZmZlY3RpdmVseSB1bnRpbCBJIGtub3cgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIGV4cGVjdHMgYW5kIGhvdyB0aGlzIHNwZWNpZmljIFBIWSBpbnRlZ3JhdGVzIGludG8gdGhlIGJyb2FkZXIgUXVhbGNvbW0gbmV0d29ya2luZyBkcml2ZXIgbGFuZHNjYXBlLiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIGVudHJ5IGlzIHRoZSBlc3NlbnRpYWwgZmlyc3Qgc3RlcCB0byB1bmRlcnN0YW5kaW5nIGl0cyBmdWxsIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUUNBODA4WF9QSFkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0xMj1jb25maWcgUUNBODNYWF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZzoxODpjb25maWcgUUNBODA4WF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBRQ0E4MDh4IFBIWXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDczMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBRQ09NIFBIWSBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTguIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBhcmVhIHByb2JhYmx5IGRlYWxzIHdpdGggdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgUXVhbGNvbW0gUEhZIGRyaXZlcnMuIEdpdmVuIHRoZSBmaWxlIG5hbWUsIGl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgdGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBtYXliZSBldmVuIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgZ292ZXJuaW5nIHdoaWNoIHNwZWNpZmljIFFDT00gUEhZIGltcGxlbWVudGF0aW9ucyBhcmUgZW5hYmxlZCBkdXJpbmcgdGhlIGJ1aWxkLiBUaGlzIGlzIHRoZSBwbGFjZSB0byBzdGFydCBpZiBJJiMzOTttIHRyeWluZyB0byB1bmRlcnN0YW5kIG9yIG1vZGlmeSB0aGUgaW5jbHVzaW9uIG9mIGEgcGFydGljdWxhciBRQ09NIFBIWSBpbiBhIGtlcm5lbCBidWlsZC4gSSBhbnRpY2lwYXRlIGZpbmRpbmcgdGhpbmdzIGxpa2Ugd2hldGhlciBjZXJ0YWluIFBIWXMgYXJlIGVuYWJsZWQgYmFzZWQgb24gYXJjaGl0ZWN0dXJlLCBib2FyZCB0eXBlLCBvciBzcGVjaWZpYyBTb0MgZmVhdHVyZXMuIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1jb21tZW50ZWQgc28gSSBjYW4gcXVpY2tseSBncm9rIHRoZSBpbnRlbnQgYmVoaW5kIGVhY2ggb3B0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFFDT01fTkVUX1BIWUxJQlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgQVQ4MDNYX1BIWVxuICAgNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZc1wmIzM0O1xuICAgNzpcdFx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxuICAgODpcdFx0ZGVwZW5kcyBvbiBSRUdVTEFUT1JcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBBUjgwMzAsIEFSODAzMSwgQVI4MDMzLCBBUjgwMzUsIElQUTUwMTggbW9kZWxcbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgUUNBODNYWF9QSFlcbiAgMTM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgUUNBODMzeCBQSFlzXCYjMzQ7XG4gIDE0Olx0XHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXG4gIDE1Olx0XHRoZWxwXG4gIDE2Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgUUNBODMzNyhJbnRlcm5hbCBxY2E4ayBQSFkpIG1vZGVsXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIFFDQTgwOFhfUEhZXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBRQ0E4MDh4IFBIWXNcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBRQ0E4MDgxIG1vZGVsXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIFFDQTgwN1hfUEhZXG4gIDI1Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBRQ0E4MDd4IFBIWXNcJiMzNDtcbiAgMjY6XHRcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcbiAgMjc6XHRcdHNlbGVjdCBQSFlfUEFDS0FHRVxuICAyODpcdFx0ZGVwZW5kcyBvbiBPRl9NRElPXG4gIDI5Olx0XHRoZWxwXG4gIDMwOlx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgUXVhbGNvbW0gUUNBODA3MiwgUUNBODA3NSBhbmQgdGhlIFBTR01JSVxuICAzMTpcdFx0ICBjb250cm9sIFBIWS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTQ1NwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQcm9iaW5nIE1ESU8gUEhZcyBpbiBhIFZpcnR1YWwgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdGhlIFFDQTgwOFgsIHdoaWNoIGlzIGFuIE1ESU8gRXRoZXJuZXQgUEhZLCBnZXRzIHByb2JlZCBhbmQgYm91bmQgaW4gdGhlIGtlcm5lbC4gSSBzZWUgaXQgdXNlcyBgTU9EVUxFX0RFVklDRV9UQUJMRWAgZm9yIHRoZSBNRElPIHN1YnN5c3RlbSBhbmQgdGhlbiByZWdpc3RlcnMgaXRzIGRyaXZlciB3aXRoIGBtb2R1bGVfcGh5X2RyaXZlcmAuIEJ1dCwgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIG9yIHByb2JlIGFuIE1ESU8gUEhZIGRyaXZlciBsaWtlIHRoaXMgd2l0aGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2l0aG91dCBoYXZpbmcgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/CgpJIG5lZWQgdG8gZXhwbG9yZSBpZiB0aGVyZSBhcmUgd2F5cyB0byBjcmVhdGUgdGhlc2UgTURJTyBQSFlzIHZpcnR1YWxseSwgbWF5YmUgdGhyb3VnaCBzeXNmcyBvciBzb21lIG90aGVyIHZpcnR1YWwgZGV2aWNlIG1lY2hhbmlzbS4gSSYjMzk7bSB3b25kZXJpbmcgaWYgc29tZXRoaW5nIGxpa2UgYG1kaW8tZ3Bpb2AsIGBtZGlvLWJpdGJhbmdgLCBvciBldmVuIGEgYG1kaW8tbW9ja2AgZGV2aWNlIGV4aXN0cyB0byBzaW11bGF0ZSB0aGlzLiBDYW4gSSBjcmVhdGUgdGhlc2UgTURJTyBwaHkgZGV2aWNlcyBmcm9tIHVzZXIgc3BhY2Ugb3IgdGhyb3VnaCBhIHZpcnR1YWwgZGV2aWNlIHNvbWVob3c/CgpUaW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGJhc2UuIEkmIzM5O2xsIGhpdCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0IGNvbWVzIHVwIHJlZ2FyZGluZyBNRElPIGRyaXZlciByZWdpc3RyYXRpb24sIHN5c2ZzIGludGVyYWN0aW9ucywgYW5kIG1heWJlIGV2ZW4gTmV0bGluayB1c2FnZSBmb3IgY2x1ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTURJTyBkcml2ZXJzIGFyZSBtYW5hZ2VkIGFuZCBpZiB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgcGF0aCB0byB0ZXN0IG9yIGRldmVsb3AgdGhlbSB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvX2J1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzYwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ND1saWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXHRcdFx0XHQgICBsaW5rbW9kZS5vIHBoeV9saW5rX3RvcG9sb2d5Lm8gXFxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2Olx0XHRcdFx0ICAgcGh5X2NhcHMubyBtZGlvX2J1c19wcm92aWRlci5vIHBoeV9wb3J0Lm8gXFxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS03LVx0XHRcdFx0ICAgbWRpb19kZXZpY2Uub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xNj1saWJwaHktJChDT05GSUdfT1BFTl9BTExJQU5DRV9IRUxQRVJTKSAmIzQzOz0gb3Blbl9hbGxpYW5jZV9oZWxwZXJzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xNy1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbWRpb19idXMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE5LW9iai0kKENPTkZJR19QSFlMSU5LKVx0XHQmIzQzOz0gcGh5bGluay5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDEzPXN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2Fzc2VydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQxNy1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQxODpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MTktXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDMyLXVubG9jazpcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQzMzpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQzNC1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDM3PXN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2RlYXNzZXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDQxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDQyOlx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQ0My1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00NTctdW5sb2NrOlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDU4Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDU5LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz0zMz1pbnQgYmNtX3BoeV93cml0ZV9leHAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zNi1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjM3Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTM4LVx0cmMgPSBfX2JjbV9waHlfd3JpdGVfZXhwKHBoeWRldiwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Mzk6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy00MC1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz02Mj1pbnQgYmNtX3BoeV9yZWFkX2V4cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY1LVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6NjY6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjctXHRyYyA9IF9fYmNtX3BoeV9yZWFkX2V4cChwaHlkZXYsIHJlZyk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo2ODpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTk0PWludCBiY21fcGh5X21vZGlmeV9leHAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtOTctXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo5ODpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy05OS1cdHJldCA9IF9fYmNtX3BoeV9tb2RpZnlfZXhwKHBoeWRldiwgcmVnLCBtYXNrLCBzZXQpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6MTAwOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMTAxLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTI3MT1pbnQgYmNtX3BoeV9yZWFkX3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmRiKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTI3NC1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjI3NTpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0yNzYtXHRyZXQgPSBfX2JjbV9waHlfcmVhZF9yZGIocGh5ZGV2LCByZGIpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Mjc3Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMjc4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTI5NT1pbnQgYmNtX3BoeV93cml0ZV9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJkYiwgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0yOTgtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzoyOTk6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzAwLVx0cmV0ID0gX19iY21fcGh5X3dyaXRlX3JkYihwaHlkZXYsIHJkYiwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjMwMTpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTMwMi1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz0zMjc9aW50IGJjbV9waHlfbW9kaWZ5X3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmRiLCB1MTYgbWFzaywgdTE2IHNldClcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zMzAtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozMzE6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzMyLVx0cmV0ID0gX19iY21fcGh5X21vZGlmeV9yZGIocGh5ZGV2LCByZGIsIG1hc2ssIHNldCk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozMzM6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zMzQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9NjYwPXN0YXRpYyBpbnQgX2JjbV9waHlfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGlzX3JkYilcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy02NzEtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo2NzI6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjczLVx0aWYgKGlzX3JkYikge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5MC1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjY5MTpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz03NDI9c3RhdGljIGludCBfYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03NDgtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo3NDk6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzUwLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc5OS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjgwMDpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTgwMS1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYz00MzI9c3RhdGljIGludCBiY201NDE0MF9iYXNlX3JlYWRfcmRiKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZGIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDM1LVxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6NDM2Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTQzNy1cdHJldCA9IF9fcGh5X3BhY2thZ2Vfd3JpdGUocGh5ZGV2LCBCQ001NDE0MF9CQVNFX0FERFIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDQ1LW91dDpcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jOjQ0NjpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTQ0Ny1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM9NDUwPXN0YXRpYyBpbnQgYmNtNTQxNDBfYmFzZV93cml0ZV9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00NTQtXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYzo0NTU6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDU2LVx0cmV0ID0gX19waHlfcGFja2FnZV93cml0ZShwaHlkZXYsIEJDTTU0MTQwX0JBU0VfQUREUixcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00NjQtb3V0OlxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6NDY1Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDY2LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz04Nzc9c3RhdGljIGludCBicmNtX2ZldF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTkzMi1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjkzMzpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy05MzQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTM2LVx0aWYgKGVyciBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6OTM3Olx0XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy05MzgtXHRcdHJldHVybiBlcnI7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTczLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6OTc0Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTc1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jPTEwMzY9c3RhdGljIGludCBicmNtX2ZldF9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA1My1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjEwNTQ6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA1NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xMDU3LVx0aWYgKGVyciBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTA1ODpcdFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA1OS1cdFx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xMDc1LVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTA3NjpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTEwNzctXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM9NzY9c3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTc5LVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6ODA6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtODEtXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtODYtb3V0OlxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6ODc6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy04OC1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM9MTA0PXN0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcbi0tXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMDctXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzoxMDg6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTA5LVx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTExNC1vdXQ6XG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzoxMTU6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMTYtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xOTM9RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3VucmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE5NC1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxOTU6c3RhdGljIGludCBfX2luaXQgZml4ZWRfbWRpb19idXNfaW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE5Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTIxOC19XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MjE5Om1vZHVsZV9pbml0KGZpeGVkX21kaW9fYnVzX2luaXQpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTIyMC1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoyMjE6c3RhdGljIHZvaWQgX19leGl0IGZpeGVkX21kaW9fYnVzX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMjIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMjUtfVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjIyNjptb2R1bGVfZXhpdChmaXhlZF9tZGlvX2J1c19leGl0KTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMjctXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmM9NTk9RVhQT1JUX1NZTUJPTChtZGlvYnVzX2lzX3JlZ2lzdGVyZWRfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jLTYwLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmM6NjE6c3RhdGljIHZvaWQgbWRpb2J1c19zdGF0c19hY2N0KHN0cnVjdCBtZGlvX2J1c19zdGF0cyAqc3RhdHMsIGJvb2wgb3AsIGludCByZXQpXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXMuYy02Mi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NDA9c3RhdGljIHZvaWQgbWRpb2J1c19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTUtXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NjpzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyIHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU3LVx0c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgYXR0cjtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02MS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjYyOnN0YXRpYyBzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyICp0b19zYXR0cihzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cilcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTYzLXtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjY0Olx0cmV0dXJuIGNvbnRhaW5lcl9vZihhdHRyLCBzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyLCBhdHRyKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY1LX1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY2LVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6Njc6c3RhdGljIHU2NCBtZGlvX2J1c19nZXRfc3RhdChzdHJ1Y3QgbWRpb19idXNfc3RhdHMgKnMsIHVuc2lnbmVkIGludCBvZmZzZXQpXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtODAtXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo4MTpzdGF0aWMgc3NpemVfdCBtZGlvX2J1c19zdGF0X2ZpZWxkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtODItXHRcdFx0XHRcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTg0LXtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjg1Olx0c3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciAqc2F0dHIgPSB0b19zYXR0cihhdHRyKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTg2LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHRvX21paV9idXMoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy05MS1cdFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIFBIWV9NQVhfQUREUjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo5MjpcdFx0XHR2YWwgJiM0Mzs9IG1kaW9fYnVzX2dldF9zdGF0KFx1MDAyNmJ1cy1cdTAwM2VzdGF0c1tpXSxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTkzLVx0XHRcdFx0XHRcdCBzYXR0ci1cdTAwM2VmaWVsZF9vZmZzZXQpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtOTQtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6OTU6XHRcdHZhbCA9IG1kaW9fYnVzX2dldF9zdGF0KFx1MDAyNmJ1cy1cdTAwM2VzdGF0c1tzYXR0ci1cdTAwM2VhZGRyZXNzXSxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTk2LVx0XHRcdFx0XHRzYXR0ci1cdTAwM2VmaWVsZF9vZmZzZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEwMS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEwMjpzdGF0aWMgc3NpemVfdCBtZGlvX2J1c19kZXZpY2Vfc3RhdF9maWVsZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEwMy1cdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEwNS17XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMDY6XHRzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyICpzYXR0ciA9IHRvX3NhdHRyKGF0dHIpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTA3LVx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2ID0gdG9fbWRpb19kZXZpY2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMTEtXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMTI6XHR2YWwgPSBtZGlvX2J1c19nZXRfc3RhdChcdTAwMjZidXMtXHUwMDNlc3RhdHNbYWRkcl0sIHNhdHRyLVx1MDAzZWZpZWxkX29mZnNldCk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMTMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTE3LSNkZWZpbmUgTURJT19CVVNfU1RBVFNfQVRUUihmaWVsZClcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjExODpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciBkZXZfYXR0cl9tZGlvX2J1c18jI2ZpZWxkID0ge1x0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjExOTpcdC5hdHRyID0gX19BVFRSKGZpZWxkLCAwNDQ0LCBtZGlvX2J1c19zdGF0X2ZpZWxkX3Nob3csIE5VTEwpLFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEyMC1cdC5hZGRyZXNzID0gLTEsXHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTIxOlx0LmZpZWxkX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBtZGlvX2J1c19zdGF0cywgZmllbGQpLFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTIyLX07XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEyMzpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciBkZXZfYXR0cl9tZGlvX2J1c19kZXZpY2VfIyNmaWVsZCA9IHsgXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEyNDpcdC5hdHRyID0gX19BVFRSKGZpZWxkLCAwNDQ0LCBtZGlvX2J1c19kZXZpY2Vfc3RhdF9maWVsZF9zaG93LCBOVUxMKSwgXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEyNTpcdC5maWVsZF9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgbWRpb19idXNfc3RhdHMsIGZpZWxkKSxcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEyNi19XG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9MTMxPU1ESU9fQlVTX1NUQVRTX0FUVFIocmVhZHMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEzMy0jZGVmaW5lIE1ESU9fQlVTX1NUQVRTX0FERFJfQVRUUl9ERUNMKGZpZWxkLCBhZGRyLCBmaWxlKVx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyXHRcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMzU6ZGV2X2F0dHJfbWRpb19idXNfYWRkcl8jI2ZpZWxkIyNfIyNhZGRyID0ge1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEzNi1cdC5hdHRyID0geyAuYXR0ciA9IHsgLm5hbWUgPSBmaWxlLCAubW9kZSA9IDA0NDQgfSxcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEzNzpcdFx0ICAgICAuc2hvdyA9IG1kaW9fYnVzX3N0YXRfZmllbGRfc2hvdyxcdFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTM4LVx0fSxcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEzOS1cdC5hZGRyZXNzID0gYWRkcixcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTQwOlx0LmZpZWxkX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBtZGlvX2J1c19zdGF0cywgZmllbGQpLFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTQxLX1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz0xODQ9TURJT19CVVNfU1RBVFNfQUREUl9BVFRSX0dST1VQX0RFQ0woMzEpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTE4Ni0jZGVmaW5lIE1ESU9fQlVTX1NUQVRTX0FERFJfQVRUUl9HUk9VUChhZGRyKVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE4NzpcdFx1MDAyNihkZXZfYXR0cl9tZGlvX2J1c19hZGRyX3RyYW5zZmVyc18jI2FkZHIpLmF0dHIuYXR0cixcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE4ODpcdFx1MDAyNihkZXZfYXR0cl9tZGlvX2J1c19hZGRyX2Vycm9yc18jI2FkZHIpLmF0dHIuYXR0cixcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE4OTpcdFx1MDAyNihkZXZfYXR0cl9tZGlvX2J1c19hZGRyX3dyaXRlc18jI2FkZHIpLmF0dHIuYXR0cixcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE5MDpcdFx1MDAyNihkZXZfYXR0cl9tZGlvX2J1c19hZGRyX3JlYWRzXyMjYWRkcikuYXR0ci5hdHRyXHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTE5MS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE5MjpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqY29uc3QgbWRpb19idXNfc3RhdGlzdGljc19hdHRyc1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTkzOlx0XHUwMDI2ZGV2X2F0dHJfbWRpb19idXNfdHJhbnNmZXJzLmF0dHIuYXR0cixcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE5NDpcdFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX2Vycm9ycy5hdHRyLmF0dHIsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxOTU6XHRcdTAwMjZkZXZfYXR0cl9tZGlvX2J1c193cml0ZXMuYXR0ci5hdHRyLFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTk2Olx0XHUwMDI2ZGV2X2F0dHJfbWRpb19idXNfcmVhZHMuYXR0ci5hdHRyLFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTk3LVx0TURJT19CVVNfU1RBVFNfQUREUl9BVFRSX0dST1VQKDApLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTIzMS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjIzMjpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBtZGlvX2J1c19zdGF0aXN0aWNzX2dyb3VwID0ge1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjMzLVx0Lm5hbWVcdFx0PSBcJiMzNDtzdGF0aXN0aWNzXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MjM0Olx0LmF0dHJzX2NvbnN0XHQ9IG1kaW9fYnVzX3N0YXRpc3RpY3NfYXR0cnMsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yMzUtfTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjIzNjpfX0FUVFJJQlVURV9HUk9VUFMobWRpb19idXNfc3RhdGlzdGljcyk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yMzctXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyMzg6Y29uc3Qgc3RydWN0IGNsYXNzIG1kaW9fYnVzX2NsYXNzID0ge1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MjM5Olx0Lm5hbWVcdFx0PSBcJiMzNDttZGlvX2J1c1wmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0MC1cdC5kZXZfcmVsZWFzZVx0PSBtZGlvYnVzX3JlbGVhc2UsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyNDE6XHQuZGV2X2dyb3Vwc1x0PSBtZGlvX2J1c19zdGF0aXN0aWNzX2dyb3VwcyxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0Mi19O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0NC0vKipcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI0NTogKiBtZGlvX2J1c19tYXRjaCAtIGRldGVybWluZSBpZiBnaXZlbiBNRElPIGRyaXZlciBzdXBwb3J0cyB0aGUgZ2l2ZW5cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0Ni0gKlx0XHQgICAgTURJTyBkZXZpY2Vcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yNTQtICovXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyNTU6c3RhdGljIGludCBtZGlvX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yNTYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTI3ND1zdGF0aWMgaW50IG1kaW9fdWV2ZW50KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI4NS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI4NjpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqY29uc3QgbWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3NfYXR0cnNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI4NzpcdFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX2RldmljZV90cmFuc2ZlcnMuYXR0ci5hdHRyLFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6Mjg4Olx0XHUwMDI2ZGV2X2F0dHJfbWRpb19idXNfZGV2aWNlX2Vycm9ycy5hdHRyLmF0dHIsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyODk6XHRcdTAwMjZkZXZfYXR0cl9tZGlvX2J1c19kZXZpY2Vfd3JpdGVzLmF0dHIuYXR0cixcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI5MDpcdFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX2RldmljZV9yZWFkcy5hdHRyLmF0dHIsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yOTEtXHROVUxMLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5My1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI5NDpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBtZGlvX2J1c19kZXZpY2Vfc3RhdGlzdGljc19ncm91cCA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5NS1cdC5uYW1lXHRcdD0gXCYjMzQ7c3RhdGlzdGljc1wmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI5NjpcdC5hdHRyc19jb25zdFx0PSBtZGlvX2J1c19kZXZpY2Vfc3RhdGlzdGljc19hdHRycyxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5Ny19O1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6Mjk4Ol9fQVRUUklCVVRFX0dST1VQUyhtZGlvX2J1c19kZXZpY2Vfc3RhdGlzdGljcyk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yOTktXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzozMDA6Y29uc3Qgc3RydWN0IGJ1c190eXBlIG1kaW9fYnVzX3R5cGUgPSB7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzozMDE6XHQubmFtZVx0XHQ9IFwmIzM0O21kaW9fYnVzXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MzAyOlx0LmRldl9ncm91cHNcdD0gbWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3NfZ3JvdXBzLFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MzAzOlx0Lm1hdGNoXHRcdD0gbWRpb19idXNfbWF0Y2gsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0zMDQtXHQudWV2ZW50XHRcdD0gbWRpb191ZXZlbnQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTUzPWludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTgwLVx0YnVzLVx1MDAzZWRldi5wYXJlbnQgPSBidXMtXHUwMDNlcGFyZW50O1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NTgxOlx0YnVzLVx1MDAzZWRldi5jbGFzcyA9IFx1MDAyNm1kaW9fYnVzX2NsYXNzO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTgyLVx0YnVzLVx1MDAzZWRldi5ncm91cHMgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTcyNz1zdHJ1Y3QgbWlpX2J1cyAqbWRpb19maW5kX2J1cyhjb25zdCBjaGFyICptZGlvX25hbWUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzMwLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzMxOlx0ZCA9IGNsYXNzX2ZpbmRfZGV2aWNlX2J5X25hbWUoXHUwMDI2bWRpb19idXNfY2xhc3MsIG1kaW9fbmFtZSk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03MzItXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTczND1FWFBPUlRfU1lNQk9MKG1kaW9fZmluZF9idXMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTczOC0gKiBvZl9tZGlvX2ZpbmRfYnVzIC0gR2l2ZW4gYW4gbWlpX2J1cyBub2RlLCBmaW5kIHRoZSBtaWlfYnVzLlxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzM5OiAqIEBtZGlvX2J1c19ucDogUG9pbnRlciB0byB0aGUgbWlpX2J1cy5cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc0MC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc0OS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjc1MDpzdHJ1Y3QgbWlpX2J1cyAqb2ZfbWRpb19maW5kX2J1cyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fYnVzX25wKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzUxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTMtXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo3NTQ6XHRpZiAoIW1kaW9fYnVzX25wKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzU1LVx0XHRyZXR1cm4gTlVMTDtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc1Ni1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjc1NzpcdGQgPSBjbGFzc19maW5kX2RldmljZV9ieV9vZl9ub2RlKFx1MDAyNm1kaW9fYnVzX2NsYXNzLCBtZGlvX2J1c19ucCk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTgtXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTExOT1zdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9fZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xMjktXHRtZGlvZGV2LVx1MDAzZWRldi5wYXJlbnQgPSBcdTAwMjZidXMtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTMwOlx0bWRpb2Rldi1cdTAwM2VkZXYuYnVzID0gXHUwMDI2bWRpb19idXNfdHlwZTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTEzMS1cdG1kaW9kZXYtXHUwMDNlZGV2aWNlX2ZyZWUgPSBtZGlvX2RldmljZV9mcmVlO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTI4NT1pbnQgbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMjkxLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MjkyOlx0bWRpb2Rydi1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2bWRpb19idXNfdHlwZTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTI5My1cdG1kaW9kcnYtXHUwMDNlZHJpdmVyLnByb2JlID0gbWRpb19wcm9iZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM9MzE0Nj1zdGF0aWMgaW50IGxhbnBoeV9yZWFkX3BhZ2VfcmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MzIgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE0OS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzozMTUwOlx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTUxLVx0X19waHlfd3JpdGUocGh5ZGV2LCBMQU5fRVhUX1BBR0VfQUNDRVNTX0NPTlRST0wsIHBhZ2UpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTU1LVx0ZGF0YSA9IF9fcGh5X3JlYWQocGh5ZGV2LCBMQU5fRVhUX1BBR0VfQUNDRVNTX0FERFJFU1NfREFUQSk7XG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM6MzE1NjpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTU3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz0zMTYxPXN0YXRpYyBpbnQgbGFucGh5X3dyaXRlX3BhZ2VfcmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MTYgYWRkcixcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE2My17XG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM6MzE2NDpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE2NS1cdF9fcGh5X3dyaXRlKHBoeWRldiwgTEFOX0VYVF9QQUdFX0FDQ0VTU19DT05UUk9MLCBwYWdlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE3My1cdFx0XHQgICB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjMxNzQ6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE3NS1cdHJldHVybiB2YWw7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jPTMxNzg9c3RhdGljIGludCBsYW5waHlfbW9kaWZ5X3BhZ2VfcmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MTYgYWRkcixcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE4Mi1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzozMTgzOlx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTg0LVx0X19waHlfd3JpdGUocGh5ZGV2LCBMQU5fRVhUX1BBR0VfQUNDRVNTX0NPTlRST0wsIHBhZ2UpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTg5LVx0XHRcdFx0ICAgbWFzaywgc2V0KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzozMTkwOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTMxOTEtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTQyND1zdGF0aWMgaW50IHl0cGh5X3JlYWRfZXh0X3dpdGhfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00MjctXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NDI4Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00MjktXHRyZXQgPSB5dHBoeV9yZWFkX2V4dChwaHlkZXYsIHJlZ251bSk7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NDMwOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTQzMS1cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9NDY0PXN0YXRpYyBpbnQgeXRwaHlfd3JpdGVfZXh0X3dpdGhfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00NjgtXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NDY5Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00NzAtXHRyZXQgPSB5dHBoeV93cml0ZV9leHQocGh5ZGV2LCByZWdudW0sIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NDcxOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTQ3Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9NTEzPXN0YXRpYyBpbnQgeXRwaHlfbW9kaWZ5X2V4dF93aXRoX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZ251bSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtNTE3LVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjUxODpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtNTE5LVx0cmV0ID0geXRwaHlfbW9kaWZ5X2V4dChwaHlkZXYsIHJlZ251bSwgbWFzaywgc2V0KTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzo1MjA6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtNTIxLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz05NDA9c3RhdGljIGludCB5dHBoeV9yZ21paV9jbGtfZGVsYXlfY29uZmlnX3dpdGhfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05NDMtXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6OTQ0Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05NDUtXHRyZXQgPSB5dHBoeV9yZ21paV9jbGtfZGVsYXlfY29uZmlnKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6OTQ2Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTk0Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTgzMD1zdGF0aWMgaW50IHl0ODUzMV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODU2LVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4NTc6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4NTgtXHRyZXQgPSB5dDg1MzFfc2V0X2RzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTg1OTpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODYwLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYz0xNTM4PXN0YXRpYyB2b2lkIHZzYzg1ODRfZ2V0X2Jhc2VfYWRkcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE1NDItXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoxNTQzOlx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE1NDQtXHRfX3BoeV93cml0ZShwaHlkZXYsIE1TQ0NfRVhUX1BBR0VfQUNDRVNTLCBNU0NDX1BIWV9QQUdFX0VYVEVOREVEKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0xNTUxLVx0X19waHlfd3JpdGUocGh5ZGV2LCBNU0NDX0VYVF9QQUdFX0FDQ0VTUywgTVNDQ19QSFlfUEFHRV9TVEFOREFSRCk7XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoxNTUyOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMTU1My1cbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYz0xNzIzPXN0YXRpYyBpbnQgdnNjODU4NF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE3MzAtXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoxNzMxOlx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE3MzItXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMTc3OS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjE3ODA6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0xNzgxLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE4MTYtZXJyOlxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MTgxNzpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE4MTgtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTIwODU9c3RhdGljIGludCB2c2M4NTE0X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjA5MS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjIwOTI6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjA5My1cbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yMTE0LVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MjExNTpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTIxMTYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjEzNi1lcnI6XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyMTM3Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjEzOC1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz02Mz1zdGF0aWMgdTMyIHZzYzg1eHhfdHNfcmVhZF9jc3Ioc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgZW51bSB0c19ibGsgYmxrLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtODMtXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jOjg0Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtODUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMDEtXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jOjEwMjpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTAzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM9MTA3PXN0YXRpYyB2b2lkIHZzYzg1eHhfdHNfd3JpdGVfY3NyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGVudW0gdHNfYmxrIGJsayxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTEzMy1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM6MTM0Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTM1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTU3LVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYzoxNTg6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTE1OS19XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz0xMzA3PXN0YXRpYyBpbnQgX192c2M4NTg0X2luaXRfcHRwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMzEzLVx0aWYgKCF2c2M4NTg0X2lzXzE1ODhfaW5wdXRfY2xrX2NvbmZpZ3VyZWQocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYzoxMzE0Olx0XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMzE1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTMyNS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM6MTMyNjpcdFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMzI3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYz0yNzY9c3RhdGljIGludCBteGw4NjExMF93cml0ZV9leHRlbmRlZF9yZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmMtMjgwLVxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jOjI4MTpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmMtMjgyLVx0cmV0ID0gX19teGw4NjExMF93cml0ZV9leHRlbmRlZF9yZWcocGh5ZGV2LCByZWdudW0sIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmM6MjgzOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTI4NC1cbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmM9Mjk5PXN0YXRpYyBpbnQgbXhsODYxMTBfcmVhZF9leHRlbmRlZF9yZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmMtMzAyLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzAyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFRob3VnaHQgUHJvY2VzcyBvbiBRQ0E4MDh4IFBIWSBEcml2ZXIgSW5zdGFudGlhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaWxlIEkmIzM5O20gbG9va2luZyBhdCBpcyBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCBleGFjdGx5IGlzIGBxY2E4MDh4YD8mIzM0OyBSaWdodCwgaXQmIzM5O3MgYSBQSFkgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGEgZHJpdmVyIGZvciB0aGUgUXVhbGNvbW0gUUNBODA4MSBFdGhlcm5ldCBQSFkgY2hpcHMuIEdvdCBpdC4KCk5vdywgaG93IGRvZXMgdGhpcyBkcml2ZXIsIGxpa2UgYW55IFBIWSBkcml2ZXIsIGFjdHVhbGx5ICpnZXQqIGluc3RhbnRpYXRlZCBhbmQgcHJvYmVkIHdpdGhpbiBhIExpbnV4IHN5c3RlbT8gSSBrbm93IGl0IGhpbmdlcyBvbiB0aGUgTURJTyBidXMuIE15IG1pbmQganVtcHMgdG8gdGhlIHByb2Nlc3M6IHRoZSBNRElPIGJ1cyBpcyBzY2FubmVkLiBUaGF0IGhhcHBlbnMgZWl0aGVyIGF0IGJvb3QtdXAsIG9yIHdoZW4gYSBuZXR3b3JrIGRldmljZSBkcml2ZXIsIGxpa2UgdGhlIGBzdG1tYWNgIG9yIGBmZWNgIGRyaXZlcnMsIHJlZ2lzdGVyIGFuIE1ESU8gYnVzLiBUaGVuIHRoZSBzeXN0ZW0gc2NhbnMgdGhvc2UgMzIgYWRkcmVzc2VzIGZvciB0aG9zZSBgTUlJX1BIWVNJRDFgIGFuZCBgTUlJX1BIWVNJRDJgIGlkZW50aWZpZXJzLiBBbHRlcm5hdGl2ZWx5LCB0aGUgUEhZIGNhbiBiZSBkZXNjcmliZWQgZGlyZWN0bHkgdmlhIHRoZSBEZXZpY2UgVHJlZSBhbmQgcmVnaXN0ZXJlZCB3aXRoIGBvZl9tZGlvYnVzX3JlZ2lzdGVyYC4KClNvLCB0aGUga2V5IG11c3QgYmUgaW4gdGhlIG1hdGNoaW5nIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYG1kaW9fYnVzX21hdGNoYC4gTGV0JiMzOTtzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jYC4gSGVyZSYjMzk7cyB0aGUgcmVsZXZhbnQgY29kZToKCmBgYGMKc3RhdGljIGludCBtZGlvX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCnsKCXN0cnVjdCBtZGlvX2RldmljZSAqbWRpbyA9IHRvX21kaW9fZGV2aWNlKGRldik7CgoJaWYgKG9mX2RyaXZlcl9tYXRjaF9kZXZpY2UoZGV2LCBkcnYpKQoJCXJldHVybiAxOwoKCWlmIChtZGlvLSZndDtidXNfbWF0Y2gpCgkJcmV0dXJuIG1kaW8tJmd0O2J1c19tYXRjaChkZXYsIGRydik7CgoJcmV0dXJuIDA7Cn0KYGBgCgpUaGUgbWF0Y2hpbmcgc2VlbXMgdG8gZGVwZW5kIG9uIERldmljZSBUcmVlIG1hdGNoaW5nLCBvciB0aGUgYG1kaW8tJmd0O2J1c19tYXRjaGAgZnVuY3Rpb24gcG9pbnRlci4gVGhpcyBzdHJ1Y3R1cmUsIHdoZW4gdGFsa2luZyBhYm91dCB0aGUgYHBoeV9kZXZpY2VgLCB0cmFuc2xhdGVzIGludG8gYSBgcGh5X2J1c19tYXRjaGAgZnVuY3Rpb24uIEkgc2hvdWxkIHByb2JhYmx5IGdyZXAgZm9yIGBwaHlfYnVzX21hdGNoYCB0byBzZWUgaG93IGl0JiMzOTtzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9idXNfbWF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01NDQ9RVhQT1JUX1NZTUJPTF9HUEwoZ2VucGh5X21hdGNoX3BoeV9kZXZpY2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01NDUtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjU0NjpzdGF0aWMgaW50IHBoeV9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01NDcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NzQ4PXN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc2NS1cdG1kaW9kZXYtXHUwMDNlYnVzID0gYnVzO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo3NjY6XHRtZGlvZGV2LVx1MDAzZWJ1c19tYXRjaCA9IHBoeV9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc2Ny1cdG1kaW9kZXYtXHUwMDNlYWRkciA9IGFkZHI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzcyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZC4KCioqRGVlcCBEaXZlOiBDaGVja2luZyBgcGh5X2J1c19tYXRjaGAqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGNvcmUgb2YgdGhpcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgcGh5X2J1c19tYXRjaGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgbWF0Y2hpbmcgaXMgc3VwcG9zZWQgdG8gZnVuY3Rpb24gYW5kIHRoZSBjb250ZXh0cyB0aGF0IG1pZ2h0IGNhdXNlIGl0IHRvIGZhaWwuIFRoZSB0eXBpY2FsIGZhaWx1cmUgbW9kZXMgaW4gdGhpcyBhcmVhIGFyZSB1c3VhbGx5IHJlbGF0ZWQgdG8gaW5jb3JyZWN0IGFkZHJlc3Mgc3BhY2UgYXNzaWdubWVudHMsIHJlc291cmNlIGNvbmZsaWN0cyBvciwgbGVzcyBjb21tb25seSwgZHJpdmVyIGNvbmZpZ3VyYXRpb24gZXJyb3JzLgoKSSYjMzk7bGwgd2FudCB0byByZXZpZXcgdGhlIGV4YWN0IGxvZ2ljIG9mIHRoZSBmdW5jdGlvbi4gSXMgaXQgcmVseWluZyBvbiBzb21ldGhpbmcgdGhhdCBtaWdodCBiZSBvdXRkYXRlZCBvciBpbmNvcnJlY3Q/IEFyZSB0aGVyZSBzcGVjaWZpYyBoYXJkd2FyZSBmbGFncyBvciBjYXBhYmlsaXRpZXMgdGhhdCB0aGUgbWF0Y2hpbmcgaXMga2V5ZWQgb24/IElzIHRoZSBtYXRjaGluZyBhbGdvcml0aG0gdG9vIHN0cmljdCwgcHJldmVudGluZyBsZWdpdGltYXRlIGRldmljZXMgZnJvbSBiZWluZyBpZGVudGlmaWVkLCBvciB0b28gbG9vc2UsIGFsbG93aW5nIHBvdGVudGlhbGx5IGluY29tcGF0aWJsZSBkZXZpY2VzIHRvIGJlIGluY29ycmVjdGx5IGFzc29jaWF0ZWQ/IEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGF0IGtpbmQgb2YgZGV2aWNlIGl0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIG1hdGNoaW5nLiBJcyB0aGVyZSBhbnkgZXhpc3RpbmcgZG9jdW1lbnRhdGlvbiBvciBhc3NvY2lhdGVkIHRlc3QgY2FzZXMgSSBjYW4gcmVseSBvbj8KCkkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBjcml0aWNhbCBkZXBlbmRlbmNpZXMgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZXkgYXJlIGFjY291bnRlZCBmb3IuIEFsc28sIGFueSByZWNlbnQgY2hhbmdlcyBvciBjb21taXRzIGluIHRoZSBjb2RlIGJhc2UgdGhhdCBpbnZvbHZlIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBvZiBpbW1lZGlhdGUgaW50ZXJlc3QuIFRoaXMgaGFzIHByb2JhYmx5IGJlZW4gdGhlIGNhdXNlIG9mIGFueSByZXBvcnRlZCBmYWlsdXJlcy4gRmluYWxseSwgSSYjMzk7bGwga2VlcCBhbiBvcGVuIG1pbmQgZm9yIGFueSBlZGdlIGNhc2VzIHRoYXQgbWlnaHQgYmUgdGhlIGNhdXNlIGZvciBhIHJlZ3Jlc3Npb24gaW4gZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTQ2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NDY6XHRzdGF0aWMgaW50IHBoeV9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuIDU0NzpcdHtcbiA1NDg6XHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XG4gNTQ5Olx0XHRjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2ID0gdG9fcGh5X2RyaXZlcihkcnYpO1xuIDU1MDpcdFxuIDU1MTpcdFx0aWYgKCEocGh5ZHJ2LVx1MDAzZW1kaW9kcnYuZmxhZ3MgXHUwMDI2IE1ESU9fREVWSUNFX0lTX1BIWSkpXG4gNTUyOlx0XHRcdHJldHVybiAwO1xuIDU1MzpcdFxuIDU1NDpcdFx0aWYgKHBoeWRydi1cdTAwM2VtYXRjaF9waHlfZGV2aWNlKVxuIDU1NTpcdFx0XHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZW1hdGNoX3BoeV9kZXZpY2UocGh5ZGV2LCBwaHlkcnYpO1xuIDU1NjpcdFxuIDU1NzpcdFx0cmV0dXJuIGdlbnBoeV9tYXRjaF9waHlfZGV2aWNlKHBoeWRldiwgcGh5ZHJ2KTtcbiA1NTg6XHR9XG4gNTU5Olx0XG4gNTYwOlx0c3RhdGljIHNzaXplX3RcbiA1NjE6XHRwaHlfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4gNTYyOlx0e1xuIDU2MzpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbiA1NjQ6XHRcbiA1NjU6XHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MHglLjhseFxcblwmIzM0OywgKHVuc2lnbmVkIGxvbmcpcGh5ZGV2LVx1MDAzZXBoeV9pZCk7XG4gNTY2Olx0fVxuIDU2NzpcdHN0YXRpYyBERVZJQ0VfQVRUUl9STyhwaHlfaWQpO1xuIDU2ODpcdFxuIDU2OTpcdHN0YXRpYyBzc2l6ZV90XG4gNTcwOlx0cGh5X2ludGVyZmFjZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcbiA1NzE6XHR7XG4gNTcyOlx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdG9fcGh5X2RldmljZShkZXYpO1xuIDU3MzpcdFx0Y29uc3QgY2hhciAqbW9kZSA9IE5VTEw7XG4gNTc0Olx0XG4gNTc1Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWlzX2ludGVybmFsKVxuIDU3NjpcdFx0XHRtb2RlID0gXCYjMzQ7aW50ZXJuYWxcJiMzNDs7XG4gNTc3Olx0XHRlbHNlXG4gNTc4Olx0XHRcdG1vZGUgPSBwaHlfbW9kZXMocGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4gNTc5Olx0XG4gNTgwOlx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVzXFxuXCYjMzQ7LCBtb2RlKTtcbiA1ODE6XHR9XG4gNTgyOlx0c3RhdGljIERFVklDRV9BVFRSX1JPKHBoeV9pbnRlcmZhY2UpO1xuIDU4MzpcdFxuIDU4NDpcdHN0YXRpYyBzc2l6ZV90XG4gNTg1Olx0cGh5X2hhc19maXh1cHNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTc0OAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1ESU8gQnVzIEVtdWxhdGlvbiBhbmQgdGhlIFFDQTgwODEgUEhZKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBvciB2aXJ0dWFsIGVudmlyb25tZW50IG91dCB0aGVyZSB0aGF0IGNhbiBlbXVsYXRlIGFuIE1ESU8gYnVzLCBzcGVjaWZpY2FsbHkgd2l0aCBhIFFDQTgwODEgUEhZLiBNeSB1c3VhbCBzZWFyY2ggdGVybXMgaGF2ZW4mIzM5O3QgdHVybmVkIHVwIGFueXRoaW5nIGRlZmluaXRpdmUgeWV0LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIGtleSBwaWVjZSBvZiB0ZXJtaW5vbG9neSBvciBhIHN1YnRsZSBwcm9qZWN0LgoKVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSAqaG93KiBgUUNBODA4MV9QSFlfSURgIGlzIGJlaW5nIHVzZWQgaW4gY29kZSBvciBjb25maWd1cmF0aW9ucy4gVGhhdCBpZGVudGlmaWVyIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIGludGVncmF0aW9uIHBvaW50cyBhbmQgZGVwZW5kZW5jaWVzLiBPbmNlIEkmIzM5O3ZlIGdvdCB0aGF0LCBJIHNob3VsZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBpdCBhbGwgd29ya3MhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1FDQTgwODFfUEhZX0lEJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy04Ny1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo4ODojZGVmaW5lIFFDQTgwODFfUEhZX0lEXHRcdFx0XHQweDAwNGRkMTAxXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtODktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY0OT1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcWNhODA4eF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUxLVx0LyogUXVhbGNvbW0gUUNBODA4MSAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY1MjpcdFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MDgxX1BIWV9JRCksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUzLVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1F1YWxjb21tIFFDQTgwODFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY4ND1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHFjYTgwOHhfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njg1Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODA4MV9QSFlfSUQpIH0sXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjg2LVx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzQ4CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlIGZvciB0aGUgUUNBODA4MSBQSFkgRHJpdmVyKioKCk9rYXksIHNvIHRoZSBgUUNBODA4MV9QSFlfSURgIHNlZW1zIHRvIGJlIHNvbGVseSBkZWZpbmVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguY2AgZmlsZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgb3IgYSB1c2VyIHJ1bm5pbmcgd2l0aGluIGEgdmlydHVhbCBtYWNoaW5lIGxpa2UgUUVNVSBvciBHQ0UgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIGRyaXZlcj8gSXMgdGhlcmUgYW55IHdheSBmb3IgdGhlbSB0byBpbnRlcmFjdCB3aXRoIGl0LCB0byBpbnN0YW50aWF0ZSBpdCwgb3IgdHJpZ2dlciBpdHMgZXhlY3V0aW9uPyBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbi4KClRvIGZpZ3VyZSB0aGlzIG91dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4gTXkgcGxhbiBpcyB0byBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHVzZXJzcGFjZSBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gY3JlYXRlIE1ESU8gb3IgUEhZIGRldmljZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzeXNmcyBpbnRlcmZhY2VzLCBpb2N0bHMsIG5ldGxpbmsgaW50ZXJhY3Rpb25zLCBvciBjb25maWdmcyBjb25maWd1cmF0aW9ucyB0aGF0IHdvdWxkIGFsbG93IHRoaXMuIEJhc2ljYWxseSwgSSB3YW50IHRvIHRyYWNlIGEgcGF0aCBmcm9tIHVzZXJzcGFjZSB0byB0aGUgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIHRoaXMgc3BlY2lmaWMgUEhZIGRyaXZlci4KClNwZWNpZmljYWxseSwgSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIGhvdyBgcGh5X2RldmljZV9jcmVhdGVgLCBgcGh5X2RldmljZV9yZWdpc3RlcmAsIGFuZCBgbWRpb2J1c19yZWdpc3RlcmAgYXJlIHVzZWQgYWNyb3NzIHRoZSBlbnRpcmUga2VybmVsLiBUaGlzIHNob3VsZCBoZWxwIG1lIGRldGVybWluZSB3aGF0IG1lY2hhbmlzbXMgZXhpc3QgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlc2UgUEhZLXJlbGF0ZWQgb2JqZWN0cyBhbmQgd2hldGhlciBhbnkgb2YgdGhvc2UgbWVjaGFuaXNtcyBjb3VsZCBwb3NzaWJseSBiZSBsZXZlcmFnZWQgdG8gdHJpZ2dlciB0aGUgYHFjYTgwOHhgIGRyaXZlciYjMzk7cyBjb2RlIHBhdGhzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfZGV2aWNlX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9OTMxPXN0YXRpYyBpbnQgeGdiZV9waHlfZmluZF9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6OTc2Olx0cmV0ID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05NzctXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk3ODpcdFx0bmV0ZGV2X2VycihwZGF0YS1cdTAwM2VuZXRkZXYsIFwmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTc5LVx0XHRwaHlfZGV2aWNlX2ZyZWUocGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jPTcxNj1obnNfbWFjX3JlZ2lzdGVyX3BoeWRldihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGhuc19tYWNfY2IgKm1hY19jYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jLTc0NC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9tYWMuYzo3NDU6XHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWFjLmMtNzQ2LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jPTE5Mjk9c3RhdGljIGludCBuZXRzZWNfcmVnaXN0ZXJfbWRpbyhzdHJ1Y3QgbmV0c2VjX3ByaXYgKnByaXYsIHUzMiBwaHlfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYzoxOTg0Olx0XHRyZXQgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHByaXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTg1LVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5ODgtXHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYzoxOTg5Olx0XHRcdFx0XCYjMzQ7cGh5X2RldmljZV9yZWdpc3RlciBlcnIoJWQpXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5OTAtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9NDI9Zndub2RlX2ZpbmRfbWlpX3RpbWVzdGFtcGVyKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTY5LVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjcwOmludCBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTcxLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEwMy1cdCAqL1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjEwNDpcdHJjID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEwNS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMTQtfVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjExNTpFWFBPUlRfU1lNQk9MKGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTExNi1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYz0xMTc9aW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNDktXHRcdC8qIEFsbCBkYXRhIGlzIG5vdyBzdG9yZWQgaW4gdGhlIHBoeSBzdHJ1Y3QsIHNvIHJlZ2lzdGVyIGl0ICovXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTUwOlx0XHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNTEtXHRcdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNTYtXHR9IGVsc2UgaWYgKGlzX29mX25vZGUoY2hpbGQpKSB7XG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTU3Olx0XHRyYyA9IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoYnVzLCBwaHksIGNoaWxkLCBhZGRyKTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNTgtXHRcdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYz0yNjM9c3RydWN0IHBoeV9kZXZpY2UgKnhnZW5lX2VuZXRfcGh5X3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYy0yNzAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYzoyNzE6XHRpZiAocGh5X2RldmljZV9yZWdpc3RlcihwaHlfZGV2KSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby14Z2VuZS5jLTI3Mi1cdFx0cGh5X2RldmljZV9mcmVlKHBoeV9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTMyPXN0YXRpYyBpbnQgb2ZfZ2V0X3BoeV9pZChzdHJ1Y3QgZGV2aWNlX25vZGUgKmRldmljZSwgdTMyICpwaHlfaWQpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzYtXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozNzppbnQgb2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzgtXHRcdFx0XHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM5LXtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQwOlx0cmV0dXJuIGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIobWRpbywgcGh5LFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDEtXHRcdFx0XHRcdFx0ICBvZl9md25vZGVfaGFuZGxlKGNoaWxkKSxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00My19XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NDpFWFBPUlRfU1lNQk9MKG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM9MTMxPXN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTYyLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE2MzpcdHJldCA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNjQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NDA4PXN0YXRpYyBzdHJ1Y3QgcGh5X2RldmljZSAqbWRpb2J1c19zY2FuKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGM0NSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00MzctXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0Mzg6XHRlcnIgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00MzktXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9NTUxPXN0YXRpYyB2b2lkIHRqYTExMDJfcDFfcmVnaXN0ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5Ny1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5ODpcdFx0cmV0ID0gb2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKGJ1cywgcGh5LCBjaGlsZCwgYWRkcik7XG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTktXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTExMDM9RVhQT1JUX1NZTUJPTChnZXRfcGh5X2RldmljZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTA1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTA2OiAqIHBoeV9kZXZpY2VfcmVnaXN0ZXIgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwNy0gKiBAcGh5ZGV2OiBwaHlfZGV2aWNlIHN0cnVjdHVyZSB0byBiZSBhZGRlZCB0byB0aGUgTURJTyBidXNcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwOC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTEwOTppbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTEwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExNDEtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTQyOkVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExNDMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTQ4LSAqIFRoaXMgZG9lc24mIzM5O3QgZnJlZSB0aGUgcGh5X2RldmljZSBpdHNlbGYsIGl0IG1lcmVseSByZXZlcnNlcyB0aGUgZWZmZWN0c1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTQ5OiAqIG9mIHBoeV9kZXZpY2VfcmVnaXN0ZXIoKS4gVXNlIHBoeV9kZXZpY2VfZnJlZSgpIHRvIGZyZWUgdGhlIGRldmljZVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTUwLSAqIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9MjEwNT1zdGF0aWMgaW50IHNmcF9zbV9wcm9iZV9waHkoc3RydWN0IHNmcCAqc2ZwLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTIxMjAtXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM6MjEyMTpcdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMTIyLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTIxMjMtXHRcdHBoeV9kZXZpY2VfZnJlZShwaHkpO1xuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjIxMjQ6XHRcdGRldl9lcnIoc2ZwLVx1MDAzZWRldiwgXCYjMzQ7cGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWQ6ICVwZVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMTI1LVx0XHRcdEVSUl9QVFIoZXJyKSk7XG4tLVxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTExLSNpZiBJU19FTkFCTEVEKENPTkZJR19GV05PREVfTURJTylcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaDoxMjppbnQgZndub2RlX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xMy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaD0xNj1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXG4tLVxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTE5LSNlbHNlIC8qIENPTkZJR19GV05PREVfTURJTyAqL1xuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oOjIwOmludCBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTIxLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg9NDk9Ym9vbCBvZl9waHlfaXNfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oOjUwOmludCBvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC01MS1cdFx0XHRcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQsIHUzMiBhZGRyKTtcbi0tXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaD0xNDA9c3RhdGljIGlubGluZSBib29sIG9mX3BoeV9pc19maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmgtMTQ0LVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6MTQ1OnN0YXRpYyBpbmxpbmUgaW50IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTE0Ni1cdFx0XHRcdFx0ICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0yMTU5PXN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpO1xuaW5jbHVkZS9saW51eC9waHkuaDoyMTYwOmludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpO1xuaW5jbHVkZS9saW51eC9waHkuaC0yMTYxLXZvaWQgcGh5X2RldmljZV9mcmVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzk0OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDk3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiBhIFFDQTgwODEgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIGEgcGF0Y2ggYWZmZWN0aW5nIHRoZSBgbWRpb2J1c19zY2FuYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4MSBQSFksIGlzIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBjaGFuZ2VzIGFyZSAqcmVhY2hhYmxlKiBjb2RlLgoKRmlyc3QsIHRoZSBgbWRpb2J1c19zY2FuYCBmdW5jdGlvbiByZWFkcyBQSFkgSURzIChNSUlfUEhZU0lEMSwgTUlJX1BIWVNJRDIpIHRvIGlkZW50aWZ5IGNvbm5lY3RlZCBQSFlzLiBUaGUgUUNBODA4MSBpcyBhIHBoeXNpY2FsIFBIWSwgdHlwaWNhbGx5IGZvdW5kIG9uIFF1YWxjb21tIG5ldHdvcmtpbmcgU29DcyBsaWtlIHRoZSBJUFE1MDE4LCBJUFE4MDc0LCBvciByb3V0ZXIgYm9hcmRzIHdpdGggdGhhdCBzcGVjaWZpYyBjaGlwLCB3aXJlZCB2aWEgTURJTyBhbmQgU0dNSUkvMjUwMEJhc2VYLgoKTm93IHRoZSBxdWVzdGlvbiBpcywgKmNhbiBJIHJlYWNoIHRoaXMgUEhZIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8qIE5vLCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIFFDQTgwODEuIEl0IGVtdWxhdGVzIHN0YW5kYXJkIE5JQ3MuIEFuZCB3aGF0IGFib3V0IFVTQiBFdGhlcm5ldD8gV2hpbGUgc29tZSBVU0IgYWRhcHRlcnMgdXNlIGludGVybmFsIFBIWXMsIHRoZSBRQ0E4MDgxIGlzIG5vdCBvbmUgb2YgdGhlbS4gVVNCIGdhZGdldCBhbHNvIGRvZXNuJiMzOTt0IHByb3ZpZGUgZW11bGF0aW9uIG9mIE1ESU8gUEhZcy4KCkNvdWxkIEkgcmVhY2ggdGhlIFFDQTgwODEgdmlhIGEgbW9jayBNRElPIGJ1cyBvciBuZXRkZXY/IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgTURJTyBidXMgb3IgZHVtbXkgUEhZIGFuZCBpZiB0aGUgUEhZIGRyaXZlciBpcyBjb25zaWRlcmVkIGhhcmR3YXJlLXNwZWNpZmljLgoKTGV0JiMzOTtzIHJlZmVyIHRvIHRoZSBpbnN0cnVjdGlvbnMgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzLiBJIG5lZWQgdG8gY2hlY2sgZm9yIHRoZSBuZWdhdGl2ZSBhbmQgcG9zaXRpdmUgY3JpdGVyaWEgdGhhdCBkZXRlcm1pbmUgZnV6emluZyB3b3J0aGluZXNzLgoKVGhlIGluc3RydWN0aW9ucyBzYXkgdGhhdCBpdCYjMzk7cyAqbm90KiB3b3J0aCBmdXp6aW5nIGlmIHRoZSBjb2RlIGZhbGxzIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzLiBJIG5lZWQgdG8gZm9jdXMgb24gJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OzogJiMzNDtWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7CgpJcyBRQ0E4MDgxICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDs/IExldCYjMzk7cyB2ZXJpZnkgd2hhdCB0aGUgUUNBODA4MSBpcy4gSXQmIzM5O3MgYSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVyLiBJIHNob3VsZCBub3cgY2hlY2sgdGhlIGRyaXZlciBjb2RlIGluIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgIHRvIHNlZSBob3cgaXQmIzM5O3MgaW1wbGVtZW50ZWQuIFRoZW4gSSBjYW4gZGV0ZXJtaW5lIGlmIGl0IGZhbGxzIHVuZGVyIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5IHNpbmNlIEkga25vdyBpdCYjMzk7cyBhIHBoeXNpY2FsIGNoaXAgYW5kIEkgY2Fubm90IHJlYWNoIGl0IHVzaW5nIHN0YW5kYXJkIFFFTVUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAmIzQzO1xuICAgMjpcdFxuICAgMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDU6XHRcbiAgIDY6XHQjaW5jbHVkZSBcJiMzNDtxY29tLmhcJiMzNDtcbiAgIDc6XHRcbiAgIDg6XHQvKiBBREMgdGhyZXNob2xkICovXG4gICA5Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9ERUJVR19BRENfVEhSRVNIT0xEXHRcdDB4MmM4MFxuICAxMDpcdCNkZWZpbmUgUUNBODA4WF9BRENfVEhSRVNIT0xEX01BU0tcdFx0R0VOTUFTSyg3LCAwKVxuICAxMTpcdCNkZWZpbmUgUUNBODA4WF9BRENfVEhSRVNIT0xEXzgwTVZcdFx0MFxuICAxMjpcdCNkZWZpbmUgUUNBODA4WF9BRENfVEhSRVNIT0xEXzEwME1WXHRcdDB4ZjBcbiAgMTM6XHQjZGVmaW5lIFFDQTgwOFhfQURDX1RIUkVTSE9MRF8yMDBNVlx0XHQweDBmXG4gIDE0Olx0I2RlZmluZSBRQ0E4MDhYX0FEQ19USFJFU0hPTERfMzAwTVZcdFx0MHhmZlxuICAxNTpcdFxuICAxNjpcdC8qIENMRCBjb250cm9sICovXG4gIDE3Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0FERFJfQ0xEX0NUUkw3XHRcdDB4ODAwN1xuICAxODpcdCNkZWZpbmUgUUNBODA4WF84MDIzQVpfQUZFX0NUUkxfTUFTS1x0XHRHRU5NQVNLKDgsIDQpXG4gIDE5Olx0I2RlZmluZSBRQ0E4MDhYXzgwMjNBWl9BRkVfRU5cdFx0XHQweDkwXG4gIDIwOlx0XG4gIDIxOlx0LyogQVogY29udHJvbCAqL1xuICAyMjpcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EM19BWl9UUkFJTklOR19DVFJMXHQweDgwMDhcbiAgMjM6XHQjZGVmaW5lIFFDQTgwOFhfTU1EM19BWl9UUkFJTklOR19WQUxcdFx0MHgxYzMyXG4gIDI0Olx0XG4gIDI1Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQxX01TRV9USFJFU0hPTERfMjBEQlx0MHg4MDE0XG4gIDI2Olx0I2RlZmluZSBRQ0E4MDhYX01TRV9USFJFU0hPTERfMjBEQl9WQUxVRVx0MHg1MjlcbiAgMjc6XHRcbiAgMjg6XHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDFfTVNFX1RIUkVTSE9MRF8xN0RCXHQweDgwMEVcbiAgMjk6XHQjZGVmaW5lIFFDQTgwOFhfTVNFX1RIUkVTSE9MRF8xN0RCX1ZBTFVFXHQweDM0MVxuICAzMDpcdFxuICAzMTpcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EMV9NU0VfVEhSRVNIT0xEXzI3REJcdDB4ODAxRVxuICAzMjpcdCNkZWZpbmUgUUNBODA4WF9NU0VfVEhSRVNIT0xEXzI3REJfVkFMVUVcdDB4NDE5XG4gIDMzOlx0XG4gIDM0Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQxX01TRV9USFJFU0hPTERfMjhEQlx0MHg4MDIwXG4gIDM1Olx0I2RlZmluZSBRQ0E4MDhYX01TRV9USFJFU0hPTERfMjhEQl9WQUxVRVx0MHgzNDFcbiAgMzY6XHRcbiAgMzc6XHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDdfVE9QX09QVElPTjFcdFx0MHg5MDFjXG4gIDM4Olx0I2RlZmluZSBRQ0E4MDhYX1RPUF9PUFRJT04xX0RBVEFcdFx0MHgwXG4gIDM5Olx0XG4gIDQwOlx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0RFQlVHXzFcdFx0MHhhMTAwXG4gIDQxOlx0I2RlZmluZSBRQ0E4MDhYX01NRDNfREVCVUdfMV9WQUxVRVx0XHQweDkyMDNcbiAgNDI6XHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDNfREVCVUdfMlx0XHQweGExMDFcbiAgNDM6XHQjZGVmaW5lIFFDQTgwOFhfTU1EM19ERUJVR18yX1ZBTFVFXHRcdDB4NDhhZFxuICA0NDpcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EM19ERUJVR18zXHRcdDB4YTEwM1xuICA0NTpcdCNkZWZpbmUgUUNBODA4WF9NTUQzX0RFQlVHXzNfVkFMVUVcdFx0MHgxNjk4XG4gIDQ2Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0RFQlVHXzRcdFx0MHhhMTA1XG4gIDQ3Olx0I2RlZmluZSBRQ0E4MDhYX01NRDNfREVCVUdfNF9WQUxVRVx0XHQweDgwMDFcbiAgNDg6XHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDNfREVCVUdfNVx0XHQweGExMDZcbiAgNDk6XHQjZGVmaW5lIFFDQTgwOFhfTU1EM19ERUJVR181X1ZBTFVFXHRcdDB4MTExMVxuICA1MDpcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EM19ERUJVR182XHRcdDB4YTAxMVxuICA1MTpcdCNkZWZpbmUgUUNBODA4WF9NTUQzX0RFQlVHXzZfVkFMVUVcdFx0MHg1Zjg1XG4gIDUyOlx0XG4gIDUzOlx0LyogbWFzdGVyL3NsYXZlIHNlZWQgY29uZmlnICovXG4gIDU0Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9ERUJVR19MT0NBTF9TRUVEXHRcdDlcbiAgNTU6XHQjZGVmaW5lIFFDQTgwOFhfTUFTVEVSX1NMQVZFX1NFRURfRU5BQkxFXHRCSVQoMSlcbiAgNTY6XHQjZGVmaW5lIFFDQTgwOFhfTUFTVEVSX1NMQVZFX1NFRURfQ0ZHXHRcdEdFTk1BU0soMTIsIDIpXG4gIDU3Olx0I2RlZmluZSBRQ0E4MDhYX01BU1RFUl9TTEFWRV9TRUVEX1JBTkdFXHRcdDB4MzJcbiAgNTg6XHRcbiAgNTk6XHQvKiBIaWJlcm5hdGlvbiB5aWVsZHMgbG93ZXIgcG93ZXIgY29uc3VtcGl0b24gaW4gY29udHJhc3Qgd2l0aCBub3JtYWwgb3BlcmF0aW9uIG1vZGUuXG4gIDYwOlx0ICogd2hlbiB0aGUgY29wcGVyIGNhYmxlIGlzIHVucGx1Z2dlZCwgdGhlIFBIWSBlbnRlcnMgaW50byBoaWJlcm5hdGlvbiBtb2RlIGluIGFib3V0IDEwcy5cbiAgNjE6XHQgKi9cbiAgNjI6XHQjZGVmaW5lIFFDQTgwOFhfREJHX0FOX1RFU1RcdFx0XHQweGJcbiAgNjM6XHQjZGVmaW5lIFFDQTgwOFhfSElCRVJOQVRJT05fRU5cdFx0XHRCSVQoMTUpXG4gIDY0Olx0XG4gIDY1Olx0I2RlZmluZSBRQ0E4MDhYX01NRDdfTEVEMl9DVFJMXHRcdFx0MHg4MDc0XG4gIDY2Olx0I2RlZmluZSBRQ0E4MDhYX01NRDdfTEVEMl9GT1JDRV9DVFJMXHRcdDB4ODA3NVxuICA2NzpcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRDFfQ1RSTFx0XHRcdDB4ODA3NlxuICA2ODpcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRDFfRk9SQ0VfQ1RSTFx0XHQweDgwNzdcbiAgNjk6XHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRUQwX0NUUkxcdFx0XHQweDgwNzhcbiAgNzA6XHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRURfQ1RSTCh4KVx0XHQoMHg4MDc4IC0gKCh4KSAqIDIpKVxuICA3MTpcdFxuICA3MjpcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRDBfRk9SQ0VfQ1RSTFx0XHQweDgwNzlcbiAgNzM6XHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRURfRk9SQ0VfQ1RSTCh4KVx0XHQoMHg4MDc5IC0gKCh4KSAqIDIpKVxuICA3NDpcdFxuICA3NTpcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRF9QT0xBUklUWV9DVFJMXHRcdDB4OTAxYVxuICA3NjpcdC8qIFFTREsgc2V0cyBieSBkZWZhdWx0IDB4NDYgdG8gdGhpcyByZWcgdGhhdCBzZXRzIEJJVCA2IGZvclxuICA3NzpcdCAqIExFRCB0byBhY3RpdmUgaGlnaC4gSXQmIzM5O3Mgbm90IGNsZWFyIHdoYXQgQklUIDMgYW5kIEJJVCA0IGRvZXMuXG4gIDc4Olx0ICovXG4gIDc5Olx0I2RlZmluZSBRQ0E4MDhYX0xFRF9BQ1RJVkVfSElHSFx0XHRcdEJJVCg2KVxuICA4MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzMxOAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aW9uIGludG8gdGhlIFFDQTgwOHggUEhZIFByb2JlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBxY2E4MDh4YCBQSFkgZ2V0cyBpbml0aWFsaXplZC4gRmlyc3QsIHRoZSBjb2RlIHNuaXBwZXQgZnJvbSBsaW5lIDE4MSBzaG93cyB0aGUgYHFjYTgwOHhfcHJvYmVgIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBhbGxvY2F0ZSBzb21lIHByaXZhdGUgZGF0YSAoYHFjYTgwOHhfcHJpdmApLCBpbml0aWFsaXplIGBsZWRfcG9sYXJpdHlfbW9kZWAgdG8gLTEsIGFuZCBhdHRhY2ggdGhlIHByaXZhdGUgZGF0YSB0byB0aGUgYHBoeV9kZXZpY2VgLiBOb3RoaW5nIHRvbyBleGNpdGluZyB0aGVyZS4KClRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0IHRyaWdnZXJzICp0aGlzKiBmdW5jdGlvbiB0byBydW4/IFRoYXQmIzM5O3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZywgdGhlIHByb2JlIG1lY2hhbmlzbSBmb3IgYHBoeV9kcml2ZXJgLiBTbywgYHBoeV9kcml2ZXJfcmVnaXN0ZXJgIGdldHMgdGhlIGJhbGwgcm9sbGluZy4gVGhpcyByZWdpc3RlcnMgdGhlIGBwaHlfZHJpdmVyYCB3aXRoIHRoZSBgbWRpb19idXNfdHlwZWAuIE1ha2VzIHNlbnNlLiBOb3csIGZvciBhbiBhY3R1YWwgYHBoeV9kZXZpY2VgIHRvIGNvbWUgaW50byBleGlzdGVuY2UgYW5kIGdldCBwcm9wZXJseSBib3VuZCwgYSBmZXcgdGhpbmdzIG5lZWQgdG8gaGFwcGVuLgoKRmlyc3QsIGFuIE1ESU8gYnVzIGhhcyB0byBiZSByZWdpc3RlcmVkIHVzaW5nIGBtZGlvYnVzX3JlZ2lzdGVyYC4gIFRoZW4sIHRoYXQgTURJTyBidXMgbmVlZHMgdG8gZG8gaXRzIGpvYjogc2NhbiBvciBlbnVtZXJhdGUgZGV2aWNlcy4gVGhlIGBtZGlvYnVzX3NjYW5gIGZ1bmN0aW9uIGlzIHRoZSBrZXkgaGVyZS4gSXQgcmVhZHMgTU1EL01JSSByZWdpc3RlcnMgZnJvbSB0aGUgaGFyZHdhcmUsIGxvb2tpbmcgYXQgYWRkcmVzc2VzIDAgdGhyb3VnaCAzMS4gIElmIHRoZSB2YWx1ZXMgaW4gYE1JSV9QSFlTSUQxYCBhbmQgYE1JSV9QSFlTSUQyYCBtYXRjaCBgUUNBODA4MV9QSFlfSURgICgweDAwNGRkMTAxKSwgdGhlIHN5c3RlbSBhbGxvY2F0ZXMgYSBgcGh5X2RldmljZWAgYW5kIHJlZ2lzdGVycyBpdC4gRXNzZW50aWFsbHksIGl0IGZpbmRzIGl0IHZpYSB0aGUgaGFyZHdhcmUuCgpBbHRlcm5hdGl2ZWx5LCB0aGUgZGV2aWNlIHRyZWUgY291bGQgcGxheSBhIHJvbGUuIERldmljZSBUcmVlIG5vZGVzIGNhbiBkZXNjcmliZSB0aGUgTURJTyBidXMgYW5kIFBIWSBjaGlsZCBub2Rlcy4gQSBgY29tcGF0aWJsZWAgc3RyaW5nIGxpa2UgJiMzNDtldGhlcm5ldC1waHktaWQwMDRkLmQxMDEmIzM0OyB3b3VsZCBmbGFnIHRoZSBQSFkuIFRoZSBNRElPIGJ1cyBjb250cm9sbGVyIHBhcnNlcyB0aGUgZGV2aWNlIHRyZWUsIGFuZCB0aGF0JiMzOTtzIHdoZW4gdGhlIFBIWSB3b3VsZCBiZSBwcm9iZWQuCgpOb3csIGEgY3J1Y2lhbCBxdWVzdGlvbiwgYW5kIHRoaXMgaXMgd2hlcmUgSSBzdGFydCB0byBnZXQgcmVhbGx5IGN1cmlvdXMsIGlzIHdoZXRoZXIgdGhlcmUmIzM5O3MgYW55ICpzb2Z0d2FyZSogTURJTyBkcml2ZXIgb3IgdmlydHVhbCBkZXZpY2UgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgdGhhdCBhY3R1YWxseSBjcmVhdGVzIGEgUUNBODA4MSBQSFkuIEkgY2FuJiMzOTt0IGltYWdpbmUgdGhpcyBleGlzdGluZyB3aXRob3V0IGEgc3BlY2lmaWMgZHJpdmVyLCBzbyBJIG5lZWQgdG8gY2hlY2sgYWxsIG9jY3VycmVuY2VzIG9mICYjMzQ7bWRpb2J1cyYjMzQ7IHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2YgdmlydHVhbCBvciBlbXVsYXRlZCBuZXRkZXYgb3IgTURJTyBidXMgc2V0IHVwLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSYjMzk7cyBhbnkgc2ltdWxhdGlvbiB0aGF0JiMzOTtzIHJlbGV2YW50IHRvIHRoaXMgcHJvYmUgc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMzggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdD0zNDk9TURJT1xuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTEtICBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZSgpXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUyOiAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1NC1cbi0tXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0OjEzOmBgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KClgYCkuIE1BQy1zaWRlIGNvbm5lY3Rpb24gcHJvcGVydGllcyBzdWNoIGFzXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdC0xNC1gYHBoeS1oYW5kbGVgYCBhbmQgYGBwaHktbW9kZWBgIGFyZSBkb2N1bWVudGVkIGluIFthY3BpLW1kaW8tcGh5XV8uXG4tLVxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0PTc9VGhlIFBIWXMgb24gYW4gTURJTyBidXMgW3BoeV0gYXJlIHByb2JlZCBhbmQgcmVnaXN0ZXJlZCB1c2luZ1xuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0Ojg6Zndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KCkuXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD00MD1yZWdpc3RlcmVkIGFzIGEgZGlzdGluY3QgZGV2aWNlLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTU2LSAgIGRyaXZlciBuZWVkcywgc2V0dXAgdGhlIG1paV9idXMgc3RydWN0dXJlLCBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgUEFMIHVzaW5nXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1NzogICBtZGlvYnVzX3JlZ2lzdGVyLiAgU2ltaWxhcmx5LCB0aGVyZSYjMzk7cyBhIHJlbW92ZSBmdW5jdGlvbiB0byB1bmRvIGFsbCBvZlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTgtICAgdGhhdCAodXNlIG1kaW9idXNfdW5yZWdpc3RlcikuXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYz0xMDk9c3RhdGljIGludCBlcDgyNDhlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jOjEzMzpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzNC1cdGlmIChyZXQpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM9MjA3PXN0YXRpYyBpbnQgZ3Bpb19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jOjI0NDpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4My1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6Njg0Olx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMTQ6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYtXHUwMDNlZGV2LCBidXMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzIxPWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzkzOlx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTc1NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwOT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NDQtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ0NTpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDQ2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYz0yNDI9c3RhdGljIGludCBtdDc2Mjhfc2V0dXBfaW50ZXJuYWxfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTI2MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYzoyNjI6XHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYy0yNjMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4NDI9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5Ny1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yNjc9c3RhdGljIGludCBteGw4NjJ4eF9zZXR1cF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTItXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjk0LVx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MTQ5PXN0YXRpYyBpbnQgbmV0Y19wb3J0X2NyZWF0ZV9lbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6MTgwOlx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxMy1cdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MTAxNDpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTA0Olx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDUtXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jPTM1Nz1zdGF0aWMgaW50IGFyOTMzMV9zd19tYnVzX2luaXQoc3RydWN0IGFyOTMzMV9zd19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgxLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYzozODI6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODMtXHRvZl9ub2RlX3B1dChtbnApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk0Nz1xY2E4a19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk4NzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpbyk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jPTc0PWludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTk5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jOjEwMDpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy0xMDEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYz0xMTE3PXN0YXRpYyBpbnQgYTVwc3dfcHJvYmVfbWRpbyhzdHJ1Y3QgYTVwc3cgKmE1cHN3LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQzLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTQ0Olx0cmV0dXJuIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDUtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD0zMDc9dm9pZCBzamExMTA1X2ZyYW1lX21lbW9yeV9wYXJ0aXRpb25pbmcoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oLTMwOS0vKiBGcm9tIHNqYTExMDVfbWRpby5jICovXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6MzEwOmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMTEtdm9pZCBzamExMTA1X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMwMjY9c3RhdGljIGludCBzamExMTA1X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMDY3LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6MzA2ODpcdHJjID0gc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjktXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4Ny1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4OS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTMxMj1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3QxX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQzLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MzQ0Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQ1LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzY4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX3Bjc19yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5NS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM5NjpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk3LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NDM5PXN0YXRpYyB2b2lkIHNqYTExMDVfbWRpb2J1c19wY3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ1OC1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjQ1OTppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTItXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTQtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03MjY9eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQzLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc0NDpcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQ1LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz00NTk9c3RhdGljIGludCBheF9taWlfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ3OTpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYXgtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xMzIxPXN0YXRpYyBpbnQgb3dsX2VtYWNfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM0NjpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9NTA5PXN0YXRpYyBpbnQgYWRpbjExMTBfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy01MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzo1MzA6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9NjE3PXN0YXRpYyBpbnQgYWRpbjExNDBfbWRpb19yZWdpc3RlcihzdHJ1Y3QgYWRpbjExNDBfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzo2Mzc6XHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNnNwaWRldi1cdTAwM2VkZXYsIHByaXYtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTI5MD1zdGF0aWMgaW50IGdyZXRoX21kaW9faW5pdChzdHJ1Y3QgZ3JldGhfcHJpdmF0ZSAqZ3JldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYzoxMzA3Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihncmV0aC1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwOC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zOTMxPXN0YXRpYyBpbnQgZXQxMzF4X3BjaV9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM6NDAyNzpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyOC1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMjE9c3RhdGljIGludCBhbHRlcmFfdHNlX21kaW9fY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE1ODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTktXHRpZiAocmV0ICE9IDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jPTEwNjE9c3RhdGljIGludCBhdTEwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTEyMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjEyMjI6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF1cC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMy1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTM0Mjg9c3RhdGljIGludCB4Z2JlX3BoeV9pbml0KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTctXHRzbnByaW50ZihtaWktXHUwMDNlaWQsIHNpemVvZihtaWktXHUwMDNlaWQpLCBcJiMzNDslc1wmIzM0OywgZGV2X25hbWUocGRhdGEtXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MTg6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTktXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MjA6XHRcdGRldl9lcnIocGRhdGEtXHUwMDNlZGV2LCBcJiMzNDttZGlvYnVzX3JlZ2lzdGVyIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MjEtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYz05OD1pbnQgeGdlX21kaW9fY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTE4LVx0bWRpb19idXMtXHUwMDNlcGh5X21hc2sgPSAweDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9ODM3PWludCB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo4ODg6c3RhdGljIGludCB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg5LVx0XHRcdFx0ICBzdHJ1Y3QgbWlpX2J1cyAqbWRpbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTEzOlx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTQtXHRcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIxLVx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkyMjpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTg6XHRyZXQgPSB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLCBtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM9MTMxPWludCBhcmNfbWRpb19wcm9iZShzdHJ1Y3QgYXJjX2VtYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jOjE3MzpcdGVycm9yID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTc0LVx0b2Zfbm9kZV9wdXQobWRpb19ub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYz05NjY9c3RhdGljIGludCBheDg4Nzk2Y19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMDExOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIGF4X2xvY2FsLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMi1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTY4Nz1zdGF0aWMgaW50IGFnNzF4eF9tZGlvX3Byb2JlKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI3LVx0bW5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFwmIzM0O21kaW9cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Mjg6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjktXHRvZl9ub2RlX3B1dChtbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI2MDpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIobWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjYxLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTE3MTM9c3RhdGljIGludCBiY21fZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxODMwOlx0XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODMxLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM9MjExPXN0cnVjdCBtaWlfYnVzICpiY21hX21kaW9fbWlpX3JlZ2lzdGVyKHN0cnVjdCBiZ21hYyAqYmdtYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM6MjM2Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzctXHRvZl9ub2RlX3B1dChucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MTkzPWludCBiY21nZW5ldF9taWlfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgaW5pdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzMtXHRcdHBoeV9uYW1lID0gXCYjMzQ7ZXh0ZXJuYWwgUnZNSUlcJiMzNDs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoyMzQ6XHRcdC8qIG9mX21kaW9idXNfcmVnaXN0ZXIgdG9vayBjYXJlIG9mIHJlYWRpbmcgdGhlICYjMzk7bWF4LXNwZWVkJiMzOTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzNS1cdFx0ICogUEhZIHByb3BlcnR5IGZvciB1cywgZWZmZWN0aXZlbHkgbGltaXRpbmcgdGhlIFBIWSBzdXBwb3J0ZWRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM9MjE1Nz1zdGF0aWMgaW50IHNibWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxkZXYsIGxvbmcgbG9uZyBiYXNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI3LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM6MjIyODpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoc2MtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyOS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNTA1PXN0YXRpYyBpbnQgdGczX21kaW9faW5pdChzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTU1ODpcdGkgPSBtZGlvYnVzX3JlZ2lzdGVyKHRwLVx1MDAzZW1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTktXHRpZiAoaSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDk3OnN0YXRpYyBpbnQgbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDQtXHRpZiAobWRpb19ucClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEwNTpcdFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTE5Olx0XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVx1MDAzZW1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMC1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTIyOlx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjMtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTEyNT1zdGF0aWMgaW50IG1hY2JfbWlpX2luaXQoc3RydWN0IG1hY2IgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE1OTpcdGVyciA9IG1hY2JfbWRpb2J1c19yZWdpc3RlcihicCwgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNjAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTEwNz1zdGF0aWMgaW50IGRtOTA1MV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBib2FyZF9pbmZvICpkYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExMjU6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpLVx1MDAzZWRldiwgZGItXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNDIzPXN0YXRpYyBpbnQgdHNuZXBfbWRpb19pbml0KHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI0NTU6XHRyZXR2YWwgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWRpb2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYz0xMDI0PXN0YXRpYyBpbnQgZXRob2NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jOjEyMDg6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xNzM0PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3NldHVwX21kaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3NzA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIHByaXYtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzEtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0zNj1zdGF0aWMgaW50IGVuZXRjX3BjaV9tZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM6OTE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZGV2LVx1MDAzZW9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0yNjY9c3RhdGljIGludCBlbmV0Y19tZGlvX3Byb2JlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzoyOTM6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTI5NC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTMwOD1zdGF0aWMgaW50IGVuZXRjX2ltZGlvX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQzOlx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0NC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zMDQyPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzE2MTpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZmVwLVx1MDAzZW1paV9idXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jPTY1PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jOjEwNjpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jPTE0OT1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM6MTc2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jPTk3PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM6MTY3Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYz00MDk9c3RhdGljIGludCBmc2xfcHFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jOjQ5NDpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDk1LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM9MzcxPXN0YXRpYyBpbnQgeGdtYWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI2LVx0aWYgKGlzX29mX25vZGUoZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI3Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgdG9fb2Zfbm9kZShmd25vZGUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI4LVx0ZWxzZSBpZiAoaXNfYWNwaV9ub2RlKGZ3bm9kZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyOTpcdFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZndub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDMwLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjY2PWludCBoYmdfbWRpb19pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjkyOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz0xMDk0PXN0YXRpYyBpbnQgaGl4NWhkMl9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzoxMTg2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM9MTIzPWludCBoY2xnZV9tYWNfbWRpb19jb25maWcoc3RydWN0IGhjbGdlX2RldiAqaGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1NC1cdG1kaW9fYnVzLVx1MDAzZXBoeV9tYXNrID0gfigxVSBcdTAwM2NcdTAwM2MgbWFjLVx1MDAzZXBoeV9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM6MTU1Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1Ni1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYz00OTU9c3RhdGljIGludCBobnNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU4NDpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4NS1cdH0gZWxzZSBpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTItXHRcdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTkzOlx0XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTk0LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjU2MD1zdGF0aWMgaW50IGVtYWNfZHRfbWRpb19wcm9iZShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg0LVx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0OyVzXCYjMzQ7LCBkZXYtXHUwMDNlb2ZkZXYtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjU4NTpcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihcdTAwMjZkZXYtXHUwMDNlb2ZkZXYtXHUwMDNlZGV2LCBidXMsIG1paV9ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4Ni1cdGlmIChyZXMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYz0xMDI2PWludCBpeGdiZV9taWlfYnVzX2luaXQoc3RydWN0IGl4Z2JlX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDg4LVx0YWRhcHRlci1cdTAwM2VtaWlfYnVzID0gYnVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM6MTA4OTpcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDkwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jPTM4NT1sdHFfZXRvcF9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwMi1cdFx0IHByaXYtXHUwMDNlcGRldi1cdTAwM2VuYW1lLCBwcml2LVx1MDAzZXBkZXYtXHUwMDNlaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYzo0MDM6XHRpZiAobWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1paV9idXMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwNC1cdFx0ZXJyID0gLUVOWElPO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM9MjgzPXN0YXRpYyBpbnQgb3Jpb25fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgxLVx0LyogRm9yIHRoZSBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRFQvQUNQSSBmYWxsLWJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlx0ICogdG8gbWRpb2J1c19yZWdpc3RlciB2aWEgb2ZfbWRpb2J1c19yZWdpc3Rlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgzLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4NC1cdGlmIChpc19hY3BpX25vZGUocGRldi1cdTAwM2VkZXYuZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg1Olx0XHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVx1MDAzZWRldi5md25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODYtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODgtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM9MTM4Nz1zdGF0aWMgaW50IHB4YTE2OF9ldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA0LVx0cGVwLVx1MDAzZXNtaV9idXMtXHUwMDNlcGh5X21hc2sgPSAweGZmZmZmZmZmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM6MTUwNTpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIocGVwLVx1MDAzZXNtaV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM3LVx0ZGV2X2RiZyhldGgtXHUwMDNlZGV2LCBcJiMzNDtNREMgaXMgcnVubmluZyBvbiAlZCBIelxcblwmIzM0OywgTURDX01BWF9GUkVRIC8gZXRoLVx1MDAzZW1kY19kaXZpZGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6MTAzODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZXRoLVx1MDAzZW1paV9idXMsIG1paV9ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYz0yODc9aW50IG1seGJmX2dpZ2VfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbWx4YmZfZ2lnZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM6MzMzOlx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jPTI1Mz1pbnQgZmJuaWNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jLTI3Mi1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTE3NwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBRQ0E4MDhYIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBRQ0E4MDhYLCBzcGVjaWZpY2FsbHkgdGhlIFFDQTgwODEuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB3aGF0JiMzOTtzIGJlaW5nIG1vZGlmaWVkIGhlcmUuIExvb2tzIGxpa2UgdGhlIGBxY2E4MDh4X2NvbmZpZ19pbml0YCBhbmQgYHFjYTgwOHhfbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb25zIGluIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgIGFyZSB0aGUgdGFyZ2V0cy4KCk5vdywgbGV0JiMzOTtzIHRyYWNlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC4gYHFjYTgwOHhfY29uZmlnX2luaXRgIGlzIGNsZWFybHkgdGhlIGAuY29uZmlnX2luaXRgIGNhbGxiYWNrIHdpdGhpbiB0aGUgYHFjYTgwOHhfZHJpdmVyYCBzdHJ1Y3R1cmUuIFJpZ2h0LCBzbyB0aGlzIGRyaXZlciBnZXRzIGluc3RhbnRpYXRlZCB3aGVuIHRoZSBzeXN0ZW0gZGV0ZWN0cyBhIFBIWSB3aXRoIHRoZSBgUUNBODA4MV9QSFlfSURgIOKAkyAweDAwNGRkMTAxIOKAkyBvbiBhbiBNRElPIGJ1cy4gVGhhdCYjMzk7cyB0aGUgdHJpZ2dlci4KClRoZSBidXJuaW5nIHF1ZXN0aW9uIHRoZW4gaXMsIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgZG8gd2UgaGF2ZSBhbnkgdmlydHVhbCBidXMgb3IgZW11bGF0ZWQgZGV2aWNlcyB0aGF0IHdvdWxkIHNpbXVsYXRlIG9yIGluc3RhbnRpYXRlIHRoZSBRQ0E4MDgxIFBIWT8gVGhhdCB3b3VsZCBhbGxvdyBhIHRlc3Qgd2l0aCB0aGUgZGV2aWNlLiBMZXQmIzM5O3MgbG9vayBhdCBRRU1VIGZpcnN0LiBObywgUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBhbnkgUXVhbGNvbW0gQXRoZXJvcyBFdGhlcm5ldCBQSFkgZW11bGF0aW9uLCBhbmQgY2VydGFpbmx5IG5vdCB0aGUgUUNBODA4MS4KCk9rYXksIGxldCYjMzk7cyBwaXZvdC4gSWYgZGlyZWN0IGVtdWxhdGlvbiBpcyBvdXQsIGNhbiB1c2Vyc3BhY2Ugc29tZWhvdyBjcmVhdGUgYW4gTURJTyBkZXZpY2Ugd2l0aCBhbiBhcmJpdHJhcnkgUEhZIElEPyBJcyB0aGVyZSBhIHVzZXJzcGFjZSBpbnRlcmZhY2UsIG1heWJlIHRocm91Z2ggbmV0bGluaywgc3lzZnMsIG9yIGlvY3RscywgdGhhdCBhbGxvd3MgTURJTyBkZXZpY2UgY3JlYXRpb24/IFRpbWUgdG8gc2VhcmNoIGZvciB0aGF0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgTURJTyBpbnRlcmZhY2UsIGFzIGl0IGlzLCBoYXMgYSBsb29waG9sZSB3aGVyZSBhIHRlc3Qgc2NlbmFyaW8gY2FuIGJlIGNyZWF0ZWQsIHdpdGhvdXQgbmVlZGluZyB0byBkZXBlbmQgb24gaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV3X2RldmljZS4qbWRpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyODM0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBNRElPIEJ1cyBUeXBlIFN1cHBvcnQqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYG1kaW9fYnVzX3R5cGVgIHN0cnVjdHVyZSBoYXMgcHJvcGVyIHN1cHBvcnQgZm9yIGNyZWF0aW5nIG5ldyBkZXZpY2VzIHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayBpZiBpdCBpbXBsZW1lbnRzIGEgYG5ld19kZXZpY2VgIG9wZXJhdGlvbiB0aGF0IGlzIGV4cG9zZWQgdmlhIHN5c2ZzLiBUaGlzIGlzIHdoZXJlIEkgd291bGQgc3RhcnQgbXkgZGVidWcuCgpJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AsIGFzIHRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdGhlIGBtZGlvX2J1c190eXBlYCBkZWZpbml0aW9uIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyB0byByZXNpZGUuIEkmIzM5O2xsIHplcm8gaW4gb24gdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGhvcGluZyB0byBzZWUgdGhlIHJlbGV2YW50IHN5c2ZzIGF0dHJpYnV0ZXMgb3IgY2FsbGJhY2tzIHRoYXQgbWFuYWdlIHRoZSBkZXZpY2UgaW5zdGFudGlhdGlvbiBwcm9jZXNzLiBIb3BlZnVsbHksIGl0JiMzOTtzIGFsbCBzdHJhaWdodGZvcndhcmQgYW5kIHdlbGwtZG9jdW1lbnRlZC4gT3RoZXJ3aXNlLCBJIG1pZ2h0IGJlIGhlcmUgZm9yIGEgd2hpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI5NTpcdFx0Lm5hbWVcdFx0PSBcJiMzNDtzdGF0aXN0aWNzXCYjMzQ7LFxuIDI5NjpcdFx0LmF0dHJzX2NvbnN0XHQ9IG1kaW9fYnVzX2RldmljZV9zdGF0aXN0aWNzX2F0dHJzLFxuIDI5NzpcdH07XG4gMjk4Olx0X19BVFRSSUJVVEVfR1JPVVBTKG1kaW9fYnVzX2RldmljZV9zdGF0aXN0aWNzKTtcbiAyOTk6XHRcbiAzMDA6XHRjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgbWRpb19idXNfdHlwZSA9IHtcbiAzMDE6XHRcdC5uYW1lXHRcdD0gXCYjMzQ7bWRpb19idXNcJiMzNDssXG4gMzAyOlx0XHQuZGV2X2dyb3Vwc1x0PSBtZGlvX2J1c19kZXZpY2Vfc3RhdGlzdGljc19ncm91cHMsXG4gMzAzOlx0XHQubWF0Y2hcdFx0PSBtZGlvX2J1c19tYXRjaCxcbiAzMDQ6XHRcdC51ZXZlbnRcdFx0PSBtZGlvX3VldmVudCxcbiAzMDU6XHR9O1xuIDMwNjpcdFxuIDMwNzpcdC8qKlxuIDMwODpcdCAqIG1kaW9idXNfYWxsb2Nfc2l6ZSAtIGFsbG9jYXRlIGEgbWlpX2J1cyBzdHJ1Y3R1cmVcbiAzMDk6XHQgKiBAc2l6ZTogZXh0cmEgYW1vdW50IG9mIG1lbW9yeSB0byBhbGxvY2F0ZSBmb3IgcHJpdmF0ZSBzdG9yYWdlLlxuIDMxMDpcdCAqIElmIG5vbi16ZXJvLCB0aGVuIGJ1cy1cdTAwM2Vwcml2IGlzIHBvaW50cyB0byB0aGF0IG1lbW9yeS5cbiAzMTE6XHQgKlxuIDMxMjpcdCAqIERlc2NyaXB0aW9uOiBjYWxsZWQgYnkgYSBidXMgZHJpdmVyIHRvIGFsbG9jYXRlIGFuIG1paV9idXNcbiAzMTM6XHQgKiBzdHJ1Y3R1cmUgdG8gZmlsbCBpbi5cbiAzMTQ6XHQgKi9cbiAzMTU6XHRzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1c19hbGxvY19zaXplKHNpemVfdCBzaXplKVxuIDMxNjpcdHtcbiAzMTc6XHRcdHN0cnVjdCBtaWlfYnVzICpidXM7XG4gMzE4Olx0XHRzaXplX3QgYWxpZ25lZF9zaXplID0gQUxJR04oc2l6ZW9mKCpidXMpLCBORVRERVZfQUxJR04pO1xuIDMxOTpcdFx0c2l6ZV90IGFsbG9jX3NpemU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNTMwCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgRGV2aWNlIERpc2NvdmVyeSBhbmQgTmV0bGluayoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBoYW5kbGUgbmV3IGRldmljZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3Qgc2VlaW5nIGFueSBgYnVzX3R5cGVgIGNhbGxiYWNrcywgc2ltaWxhciB0byB0aGUgSTJDJiMzOTtzIGBuZXdfZGV2aWNlYCwgZm9yIG5ldyBkZXZpY2VzIGluIHRoaXMgY29udGV4dC4gVGhhdCYjMzk7cyBhIGJpdCBwdXp6bGluZy4gVGhlbiBpdCBoaXRzIG1lIC0gY291bGQgdGhlIGBwaHlfZGV2aWNlYCBhY3R1YWxseSBiZSBjcmVhdGVkIHZpYSBOZXRsaW5rPyBJdCYjMzk7cyB3b3J0aCBleHBsb3JpbmcuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYG5ldC9ldGh0b29sL2AgZGlyZWN0b3J5LCBhbmQgbWF5YmUgZXZlbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyBwcm9iYWJseSB3aGVyZSBJJiMzOTtsbCBmaW5kIE5ldGxpbmsgY29tbWFuZHMgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jPTExNz1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEzNC1cdGVsc2VcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzoxMzU6XHRcdHBoeSA9IHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLCAwLCBOVUxMKTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMzYtXHRpZiAoSVNfRVJSKHBoeSkpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYz01NTE9c3RhdGljIHZvaWQgdGphMTEwMl9wMV9yZWdpc3RlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg1LVx0XHQvKiBSZWFsIFBIWSBJRCBvZiBQb3J0IDEgaXMgMCAqL1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTg2Olx0XHRwaHkgPSBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIFBIWV9JRF9USkExMTAyLCBmYWxzZSwgTlVMTCk7XG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01ODctXHRcdGlmIChJU19FUlIocGh5KSkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5Mi1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5MzpcdFx0LyogT3ZlcndyaXRlIHBhcmVudCBkZXZpY2UuIHBoeV9kZXZpY2VfY3JlYXRlKCkgc2V0IHBhcmVudCB0b1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk0LVx0XHQgKiB0aGUgbWlpX2J1cy1cdTAwM2VkZXYsIHdoaWNoIGlzIG5vdCBjb3JyZWN0IGluIGNhc2UuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz03Mjg9c3RhdGljIGludCBwaHlfcmVxdWVzdF9kcml2ZXJfbW9kdWxlKHN0cnVjdCBwaHlfZGV2aWNlICpkZXYsIHUzMiBwaHlfaWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NDctXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjc0ODpzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0OS1cdFx0XHRcdCAgICAgYm9vbCBpc19jNDUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04MzktfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo4NDA6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTg0MS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEwNzE9c3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTYtXHRcdGlmICghcilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA5NzpcdFx0XHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTgtXHRcdFx0XHRcdFx0IHRydWUsIFx1MDAyNmM0NV9pZHMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMC1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTEwMTpcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCwgaXNfYzQ1LCBcdTAwMjZjNDVfaWRzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMi19XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0yMTQ5PWludCBwaHlfbW9kaWZ5X3BhZ2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MzIgcmVnbnVtLFxuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMjE1MS1cbmluY2x1ZGUvbGludXgvcGh5Lmg6MjE1MjpzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTIxNTMtXHRcdFx0XHQgICAgIGJvb2wgaXNfYzQ1LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDczMwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQ5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBRQ0E4MDgxIERyaXZlciYjMzk7cyBWaXJ0dWFsIEVudmlyb25tZW50IENvbXBhdGliaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBgcGh5X2RldmljZV9jcmVhdGVgIGZ1bmN0aW9uIGlzIHRoZSBnYXRla2VlcGVyIGZvciBjcmVhdGluZyBQSFkgZGV2aWNlcyB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGNvZGUgc2hvd3MgaXQmIzM5O3Mgb25seSBjYWxsZWQgaW4gc3BlY2lmaWMgc2NlbmFyaW9zOiB3aGVuIHNjYW5uaW5nIGEgcmVhbCBNSUkgYnVzLCB3aGVuIHBhcnNpbmcgYSBkZXZpY2UgdHJlZSBub2RlIGZvciBhIFBIWSwgb3IgZGlyZWN0bHkgd2l0aGluIHRoZSB0amExMXh4IFBIWSBkcml2ZXIuIEl0IHNlZW1zIHRoZXJlJiMzOTtzIG5vIHdheSB0byBjb25qdXJlIGEgUUNBODA4MSBQSFkgZGV2aWNlIGZyb20gdXNlcnNwYWNlIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBkZXZpY2UgdHJlZSBkZXNjcmlwdGlvbi4gU2luY2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIGFuZCBJIGtub3cgYSBiaXQgYWJvdXQgdGhlIHR5cGljYWwgeDg2L2FtZDY0IHZpcnR1YWwgbWFjaGluZSBsYW5kc2NhcGUgKFFFTVUvS1ZNLCBHQ0UpLCB0aGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuCgpNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlc2UgZW52aXJvbm1lbnRzIGRvbiYjMzk7dCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgZm9yIGEgUUNBODA4MS4gU3BlY2lmaWNhbGx5OgoKKiAgIFRoZXJlIGFyZSBubyBoYXJkd2FyZSBNRElPIGJ1c2VzIGZvciBRdWFsY29tbSBjaGlwcyBpbiB0aGVzZSB2aXJ0dWFsIGVudmlyb25tZW50cy4KKiAgIFN0YW5kYXJkIGVtdWxhdGVkIG5ldHdvcmsgY2FyZHMgaW4gdGhlc2UgVk1zIGRvbiYjMzk7dCByZWx5IG9uIFBIWSBkcml2ZXJzIGxpa2UgdGhlIFFDQTgwODEuIFRoZXkgZWl0aGVyIGhhdmUgaW50ZXJuYWwgUEhZcywgZG9uJiMzOTt0IHVzZSBwaHlsaWIgYXQgYWxsLCBvciBlbXBsb3kgZml4ZWQtbGluayBjb25maWd1cmF0aW9ucy4KKiAgIFRoZSBRQ0E4MDgxIGlzIGEgZGlzY3JldGUgRXRoZXJuZXQgUEhZIGNoaXAg4oCTIGEgcGh5c2ljYWwgcGllY2Ugb2YgaGFyZHdhcmUgZnJvbSBRdWFsY29tbSDigJMgdHlwaWNhbGx5IHNlZW4gYWxvbmdzaWRlIFF1YWxjb21tIEF0aGVyb3MgY2hpcHMgb3IgU29Dcy4KCkV2ZW4gaWYgd2Ugd2VyZSBvbiBhbiBBUk0gb3IgTUlQUyBwbGF0Zm9ybSB3aGVyZSBhIFFDQTgwODEgKm1pZ2h0KiBiZSBwcmVzZW50LCBpdCB3b3VsZCBzdGlsbCBuZWNlc3NpdGF0ZSB0aGUgcGh5c2ljYWwgUEhZIGhhcmR3YXJlIGNvbm5lY3RlZCB2aWEgYW4gTURJTyBidXMuIFNvLCBpbiBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgUUNBODA4MSBQSFkgc2ltcGx5IGRvZXNuJiMzOTt0IGV4aXN0LCBub3IgaXMgaXQgZW11bGF0ZWQuCgpMb29raW5nIGF0IHRoZSBwcm9tcHQsIHNlY3Rpb24gMiBkZXNjcmliZXMgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgVGhpcyBhcHBsaWVzIHBlcmZlY3RseSB0byB0aGVzZSB0eXBlcyBvZiB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlcnMsIGxpa2UgdGhlIG9uZSBmb3IgdGhlIGBxY2E4MDh4YC4gV2l0aG91dCB0aGF0IHBoeXNpY2FsIFF1YWxjb21tIFFDQTgwODEgUEhZIGFuZCB0aGUgTURJTyBidXMgdG8gd2hpY2ggaXQgY29ubmVjdHMsIHRoZSBkcml2ZXIgY29kZSBpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYCBjYW5ub3QgYmUgbG9hZGVkLCBwcm9iZWQsIG9yIGV4ZWN1dGVkIHdpdGhpbiB0aGUgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBrZXJuZWwgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSB0ZXN0IGZyYW1ld29yayBvciBhIG1vY2sgTURJTyBidXMgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qbW9ja3xtb2NrLiptZGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3NzAKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBNRElPL0dQSU8gSW50ZXJhY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGJhc2VkIG9uIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCwgdGhlIGN1cnJlbnQgaXNzdWUgbGlrZWx5IGhhcyBzb21lIGNvbm5lY3Rpb24gdG8gdGhlIE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQgKE1ESU8pIGludGVyZmFjZSBvciBHZW5lcmFsIFB1cnBvc2UgSW5wdXQvT3V0cHV0IChHUElPKSBwaW5zLiBHaXZlbiB0aGUgb2JzZXJ2ZWQgYmVoYXZpb3IsIGl0JiMzOTtzIGEgaHVuY2ggd29ydGggcHVyc3VpbmcuIFRoZSBjb25uZWN0aW9uIGNvdWxkIG1hbmlmZXN0IGluIGEgZmV3IGRpZmZlcmVudCB3YXlzLiBQZXJoYXBzIHRoZXJlJiMzOTtzIGFuIGlzc3VlIHdpdGggdGhlIHRpbWluZyBvZiBNRElPIHRyYW5zYWN0aW9ucywgY2F1c2luZyBpbmNvcnJlY3QgY29uZmlndXJhdGlvbiBvZiBhbiBhc3NvY2lhdGVkIFBIWSBvciBvdGhlciBkZXZpY2UuIEFsdGVybmF0aXZlbHksIGEgR1BJTyBwaW4gbWlnaHQgYmUgbWlzY29uZmlndXJlZCwgaW1wYWN0aW5nIHRoZSBNRElPIGNvbW11bmljYXRpb24gaW5kaXJlY3RseSwgYnkgaW5mbHVlbmNpbmcgdGhlIHJlc2V0IGxpbmUgb3IgaW50ZXJydXB0IHNpZ25hbCBvZiB0aGUgbWFuYWdlZCBkZXZpY2UsIG9yIHBlcmhhcHMgYSBzaWduYWwgaXMgYmVpbmcgc2hhcmVkIGJldHdlZW4gdGhlbSwgYW5kIHRoZSBjb250ZW50aW9uIGlzIGNhdXNpbmcgdGhlIGZhaWx1cmUuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGRyaXZlciBjb2RlIGFuZCBoYXJkd2FyZSBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgaW50ZXJhY3Rpb24gYW5kIHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBtZGlvLWdwaW9gIGRyaXZlciBvciBzaW1pbGFyIGltcGxlbWVudGF0aW9ucyBpbiB0aGUga2VybmVsIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXZpY2UgdHJlZSBiaW5kaW5ncy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTURJTyBzaWduYWxzIGFyZSBtYXBwZWQgdG8gR1BJTyBwaW5zIGFuZCBob3cgdGhleSBhcmUgaGFuZGxlZC4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIGNoZWNraW5nIGZvciBwb3RlbnRpYWwgcGluLW11eGluZyBjb25mbGljdHMsIHRpbWluZyBkaXNjcmVwYW5jaWVzLCBhbmQgYW55IGludGVycnVwdCBoYW5kbGluZyBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8tZ3BpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw9Mzc9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtNTMtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw6NTQ6ICBtZGlvLWdwaW9zOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTU1LSAgICBkZXNjcmlwdGlvbjogR1BJTyBsaW5lIGZvciB0aGUgTURJTyBkYXRhIGxpbmUuXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sPTExNT10aGVuOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMTktICAgICAgLSBtZGMtZ3Bpb3NcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbDoxMjA6ICAgICAgLSBtZGlvLWdwaW9zXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTIxLSAgICAgIC0gbWRpb1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMjQtICAgIG1kYy1ncGlvczogZmFsc2VcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbDoxMjU6ICAgIG1kaW8tZ3Bpb3M6IGZhbHNlXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTI2LSAgICBtZGlvOiBmYWxzZVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbD0xMjg9ZWxzZTpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTMwLSAgICAtIG1kYy1ncGlvc1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjEzMTogICAgLSBtZGlvLWdwaW9zXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTMyLSAgICAtIG1kaW9cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw9MTM0PXJlcXVpcmVkOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMzctICAgICMgIC0gbWRjLWdwaW9zXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw6MTM4OiAgICAjICAtIG1kaW8tZ3Bpb3NcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMzktICAgICMgIC0gcmVzZXQtZ3Bpb3Ncbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw9MTQ0PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xNTMtICAgICAgICAgICAgICAgICAgICBtZGMtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMCAyMSBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjE1NDogICAgICAgICAgICAgICAgICAgIG1kaW8tZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMCAyMiBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTE1NS0gICAgICAgICAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMTQgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0yNDYtICAgICAgICAgICAgICAgICAgICBtZGMtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMSAxNiBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjI0NzogICAgICAgICAgICAgICAgICAgIG1kaW8tZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMSAxNyBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTI0OC0gICAgICAgICAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzUgMCBHUElPX0FDVElWRV9MT1dcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC0zLS0tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L21kaW8tZ3Bpby55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw9MTc9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTE5LSAgICBlbnVtOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbDoyMDogICAgICAtIHZpcnR1YWwsbWRpby1ncGlvXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTIxLSAgICAgIC0gbWljcm9jaGlwLG1kaW8tc21pMFxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw9NDE9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC00My0gICAgYWxpYXNlcyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sOjQ0OiAgICAgICAgbWRpby1ncGlvMCA9IFx1MDAyNm1kaW8wO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC00NS0gICAgfTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTQ3LSAgICBtZGlvMDogbWRpbyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sOjQ4OiAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDktICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTI3MTEuZHRzaT05Mzg9XHRcdHBpbi1pcnEge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTI3MTEuZHRzaS05NDItXHR9O1xuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtMjcxMS5kdHNpOjk0MzpcdHJnbWlpX21kaW9fZ3BpbzI4OiByZ21paS1tZGlvLWdwaW8yOCB7XG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY20yNzExLmR0c2ktOTQ0LVx0XHRwaW5zLW1kaW8ge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTI3MTEuZHRzaS05NDktXHR9O1xuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtMjcxMS5kdHNpOjk1MDpcdHJnbWlpX21kaW9fZ3BpbzM3OiByZ21paS1tZGlvLWdwaW8zNyB7XG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY20yNzExLmR0c2ktOTUxLVx0XHRwaW5zLW1kaW8ge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTQ3MDk0LWFzdXMtcnQtYWM4OHUuZHRzPTIwPVx0c3dpdGNoIHtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY200NzA5NC1hc3VzLXJ0LWFjODh1LmR0cy0yMi1cdFx0bWRjLWdwaW9zID0gXHUwMDNjXHUwMDI2Y2hpcGNvbW1vbiA2IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY200NzA5NC1hc3VzLXJ0LWFjODh1LmR0czoyMzpcdFx0bWRpby1ncGlvcyA9IFx1MDAzY1x1MDAyNmNoaXBjb21tb24gNyBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtNDcwOTQtYXN1cy1ydC1hYzg4dS5kdHMtMjQtXHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Y2hpcGNvbW1vbiAxMCBHUElPX0FDVElWRV9MT1dcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kaXItNjg1LmR0cz0xOTA9XHRldGhlcm5ldC1zd2l0Y2gge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZGlyLTY4NS5kdHMtMTkzLVx0XHRtZGMtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMCAyMSBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kaXItNjg1LmR0czoxOTQ6XHRcdG1kaW8tZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMCAyMiBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kaXItNjg1LmR0cy0xOTUtXHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMTQgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHM9MjQ9XHRhbGlhc2VzIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHM6MjU6XHRcdG1kaW8tZ3BpbzAgPSBcdTAwMjZtZGlvMDtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHMtMjYtXHR9O1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHM9MTUyPVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0czoxNTM6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHMtMTU0LVx0XHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIxMGIuZHRzPTY3PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjEwYi5kdHM6Njg6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIxMGIuZHRzLTY5LVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIyMGIuZHRzPTY2PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjIwYi5kdHM6Njc6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIyMGIuZHRzLTY4LVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0cz0yMz1cdGFsaWFzZXMge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzOjI0Olx0XHRtZGlvLWdwaW8wID0gXHUwMDI2bWRpbzA7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5zMjUwMi5kdHMtMjUtXHR9O1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0cz0zMj1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0czozMzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzLTM0LVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktcnV0MXh4LmR0cz01OT1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktcnV0MXh4LmR0czo2MDpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1ydXQxeHguZHRzLTYxLVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc2w5MzUxMnIuZHRzPTcxPVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zbDkzNTEyci5kdHM6NzI6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc2w5MzUxMnIuZHRzLTczLVx0XHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3EyMDEuZHRzPTU2PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHM6NTc6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3EyMDEuZHRzLTU4LVx0XHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM9MjM9XHRhbGlhc2VzIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM6MjQ6XHRcdG1kaW8tZ3BpbzAgPSBcdTAwMjZtZGlvMDtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHMtMjUtXHR9O1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM9MzI9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzOjMzOlx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzLTM0LVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktdmVyYmF0aW0tczA4djE5MDEtZDEuZHRzPTU3PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS12ZXJiYXRpbS1zMDh2MTkwMS1kMS5kdHM6NTg6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktdmVyYmF0aW0tczA4djE5MDEtZDEuZHRzLTU5LVx0XHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMTExLmR0cz03MT1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMTExLmR0czo3MjpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQxMTEuZHRzLTczLVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMjIyLmR0cz03MD1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMjIyLmR0czo3MTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQyMjIuZHRzLTcyLVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzPTI0PVx0YWxpYXNlcyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDUxLXppaS1yZHUxLmR0czoyNTpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW9fZ3BpbztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzLTI2LVx0XHRydGMwID0gXHUwMDI2ZHMxMzQxO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzPTE2Mz1cdG1kaW9fZ3BpbzogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDUxLXppaS1yZHUxLmR0czoxNjQ6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzLTE2NS1cdFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0cz0yNT1cdGFsaWFzZXMge1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0czoyNjpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW9fZ3BpbztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHMtMjctXHR9O1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHM9NDA9XHRtZGlvX2dwaW86IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0czo0MTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0cy00Mi1cdFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaT05Mz1cdGFsaWFzZXMge1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaTo5NDpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW8wO1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaS05NS1cdH07XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaT05Nz1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2k6OTg6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2ktOTktXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzIgNSBHUElPX0FDVElWRV9ISUdIXHUwMDNlLCAvKiBtZGMgKi9cbi0tXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtc2tvdi1jcHUuZHRzaT0xMz1cdGFsaWFzZXMge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC1za292LWNwdS5kdHNpLTE4LVx0XHRldGhlcm5ldDIgPSBcdTAwMjZsYW4yO1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXNrb3YtY3B1LmR0c2k6MTk6XHRcdG1kaW8tZ3BpbzAgPSBcdTAwMjZtZGlvO1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXNrb3YtY3B1LmR0c2ktMjAtXHRcdG5hbmQgPSBcdTAwMjZncG1pO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC16aWktcmR1Mi5kdHNpPTE0PVx0YWxpYXNlcyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaToxNTpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW8xO1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2ktMTYtXHRcdHJ0YzAgPSBcdTAwMjZkczEzNDE7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2k9MTk9XHRtZGlvMTogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaToyMDpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2ktMjEtXHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzPTUzPVx0bWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzOjU0Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzLTU1LVx0XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi0tXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzPTEwPVx0YWxpYXNlcyB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy0xMy1cdFx0ZXRoZXJuZXQxID0gXHUwMDI2Z21hYzM7XG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzOjE0Olx0XHRtZGlvLWdwaW8wID0gXHUwMDI2bWRpbzA7XG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzOjE1Olx0XHRtZGlvLWdwaW8xID0gXHUwMDI2bWRpbzE7XG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTE2LVx0fTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzPTU1PVx0bWRpbzA6IG1kaW8tMCB7XG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTU2LVx0XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czo1NzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy01OC1cdFx0Z3Bpb3MgPSBcdTAwM2NcdTAwMjZxY29tX3Bpbm11eCAxIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cz0xODA9XHRtZGlvMTogbWRpby0xIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgxLVx0XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czoxODI6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgzLVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNnFjb21fcGlubXV4IDExIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cz0xNj1cdGFsaWFzZXMge1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cy0xNy1cdFx0ZXRoZXJuZXQwID0gXHUwMDI2ZXRoZXJuZXQxO1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0czoxODpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW8wO1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cy0xOS1cdFx0bW1jMCA9IFx1MDAyNnNkbW1jMTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzYy1wcmlobWIuZHRzPTExOD1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzNjLXByaWhtYi5kdHM6MTE5Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzYy1wcmlobWIuZHRzLTEyMC1cdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxYy5kdHM9Mzg9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzOjM5Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzLTQwLVx0XHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2k9MTY9XHRhbGlhc2VzIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxbC5kdHNpLTE3LVx0XHRldGhlcm5ldDAgPSBcdTAwMjZldGhlcm5ldDA7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaToxODpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW8wO1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2ktMTktXHRcdHNlcmlhbDAgPSBcdTAwMjZ1YXJ0NDtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaT00ND1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxbC5kdHNpOjQ1Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaS00Ni1cdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS16aWktdWx0cmEuZHRzaT05PVx0YWxpYXNlcyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k6MTA6XHRcdG1kaW8tZ3BpbzAgPSBcdTAwMjZtZGlvMDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS16aWktdWx0cmEuZHRzaS0xMS1cdFx0cnRjMCA9IFx1MDAyNmRzMTM0MTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k9MTg9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k6MTk6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS16aWktdWx0cmEuZHRzaS0yMC1cdFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnPTkwPWNvbmZpZyBNRElPX0dQSU9cbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctOTctXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzo5ODpcdCAgd2lsbCBiZSBjYWxsZWQgbWRpby1ncGlvLlxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTk5LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX01ESU9fQ0FWSVVNKVx0XHQmIzQzOz0gbWRpby1jYXZpdW0ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTURJT19HUElPKVx0XHRcdCYjNDM7PSBtZGlvLWdwaW8ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfTURJT19ISVNJX0ZFTUFDKVx0XHQmIzQzOz0gbWRpby1oaXNpLWZlbWFjLm9cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jPTE1Nz1zdGF0aWMgaW50IG1kaW9fZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTcxLVx0aWYgKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpIHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTcyOlx0XHRidXNfaWQgPSBvZl9hbGlhc19nZXRfaWQocGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bWRpby1ncGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTczLVx0XHRpZiAoYnVzX2lkIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz0xOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWRpb19ncGlvX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE5ODpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OywgfSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTk5LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxtZGlvLXNtaTBcJiMzNDsgfSxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jPTIwND1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZGlvX2dwaW9fZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjA3LVx0LmRyaXZlclx0XHQ9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjA4Olx0XHQubmFtZVx0PSBcJiMzNDttZGlvLWdwaW9cJiMzNDssXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIwOS1cdFx0Lm9mX21hdGNoX3RhYmxlID0gbWRpb19ncGlvX29mX21hdGNoLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9MjEzPW1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWRpb19ncGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIxNC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjE1Ok1PRFVMRV9BTElBUyhcJiMzNDtwbGF0Zm9ybTptZGlvLWdwaW9cJiMzNDspO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMTYtTU9EVUxFX0FVVEhPUihcJiMzNDtMYXVyZW50IFBpbmNoYXJ0LCBQYXVsaXVzIFphbGVja2FzXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMzNDIKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogNDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFRoaXMgQ29kZSBpcyBVbmZ1enphYmxlIGluIFN0YW5kYXJkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHRoZSBzaXR1YXRpb24uIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYG1kaW8tZ3Bpb2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgUUNBODA4MSBQSFkuIEkgY2FuIHNlZSB0aGF0IHRoaXMgYG1kaW8tZ3Bpb2AgZHJpdmVyIGlzIGRlc2lnbmVkIGZvciBiaXRiYW5naW5nIE1ESU8gb3ZlciBHUElPLCBhbmQgb24gYW1kNjQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCB0aGVyZSYjMzk7cyBubyBkZXZpY2UgdHJlZSBlbnRyeSB0aGF0IGV2ZW4gZGVmaW5lcyBhIFFDQTgwODEgUEhZLiBFdmVuIGlmIHRoZSBgQ09ORklHX1FDQTgwOFhfUEhZYCBvcHRpb24gaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZywgdGhlIGRyaXZlciBjYW4mIzM5O3QgcG9zc2libHkgYmluZCB0byBhbnkgaGFyZHdhcmUgYmVjYXVzZSB0aGUgKmFjdHVhbCogUXVhbGNvbW0gUUNBODA4MSBFdGhlcm5ldCBQSFkgc2ltcGx5IGlzbiYjMzk7dCBwcmVzZW50IGluIHRoZXNlIHZpcnR1YWxpemVkIHNldHRpbmdzLgoKTGV0IG1lIGJyZWFrIGl0IGRvd246CgoqICAgVGhlIGNoYW5nZXMgYXJlIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYC4KKiAgIFRoaXMgc3BlY2lmaWMgZmlsZSBpcyBhIGRldmljZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZLgoqICAgVGhlIGRyaXZlciBmdW5kYW1lbnRhbGx5IHJlbGllcyBvbiB0aGUgcHJlc2VuY2Ugb2YgcGh5c2ljYWwgaGFyZHdhcmUg4oCTIHRoZSBRQ0E4MDgxIE1ESU8gdHJhbnNjZWl2ZXIgQVNJQy4gVGhhdCBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZSBpcyAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuCiogICBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NC4KCkJhc2VkIG9uIHRoZXNlIGZhY3RzLCBhbmQgY29uc2lkZXJpbmcgdGhlICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgY3JpdGVyaWEgaW4gc2VjdGlvbiAyICh0aGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcyBvciBOSUNzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSksIGl0JiMzOTtzIGNsZWFyIHRoYXQgdGhpcyBjb2RlIGlzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIGZvciBzeXprYWxsZXIgZnV6emluZy4gSXQmIzM5O3Mgc2ltcGx5IG5vdCBnb2luZyB0byBiZSB0cmlnZ2VyZWQgaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIGZhbHNlLgoKTGV0JiMzOTtzIG5haWwgZG93biB0aGUgbWV0YWRhdGE6CgoqICAgYFdvcnRoRnV6emluZ2A6IGZhbHNlIOKAkyBPYnZpb3VzbHkhCiogICBgUmVhc29uaW5nYDogRHJpdmVyIGZvciBRdWFsY29tbSBRQ0E4MDgxIEV0aGVybmV0IFBIWSB0cmFuc2NlaXZlci4gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgZHVlIHRvIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQuIFRoaXMgaXMgcm9jayBzb2xpZCByZWFzb25pbmcuCiogICBgRm9jdXNTeW1ib2xzYDogXFsgXSDigJMgRW1wdHksIGJlY2F1c2UgaXQmIzM5O3Mgbm90IHdvcnRoIGZ1enppbmcuCiogICBgRW5hYmxlQ29uZmlnc2A6IFxbIF0g4oCTIEFsc28gZW1wdHksIGJlY2F1c2UgaXQmIzM5O3Mgbm90IHdvcnRoIGZ1enppbmcuCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIGFsbCB2ZXJ5IGNsZWFyLiBFdmVyeXRoaW5nIGlzIGluIG9yZGVyLCBhbmQgaXQmIzM5O3MgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2hlZCBmaWxlIChkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMpIGlzIGEgaGFyZHdhcmUgZGV2aWNlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4MSBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXIuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGNvbm5lY3RlZCB0byBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2hlZCBmaWxlIChkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMpIGlzIGEgaGFyZHdhcmUgZGV2aWNlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4MSBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXIuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGNvbm5lY3RlZCB0byBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ3OjQyLjA4MzkwMjIxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNzMyNjMxODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2hlZCBmaWxlIChkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMpIGlzIGEgaGFyZHdhcmUgZGV2aWNlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4MSBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXIuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGNvbm5lY3RlZCB0byBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDc6NDIuMDgzOTA3OTI5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTgwNTkyMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkMmQ3ZTQxZjRhOTAzNjY2MWRkYjg5OGIzYTc5YTc5N2JiNDQ4ZWUzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgU2VwIDEyIDAyOjQ3OjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYyBiL2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguY1xcbmluZGV4IDhlYjUxYjFhMDA2YzQuLjY4ZmQ0ZDBmZTMxYjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jXFxuQEAgLTIwMCw4ICsyMDAsOCBAQCBzdGF0aWMgaW50IHFjYTgwOHhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0c3RydWN0IHFjYTgwOHhfcHJpdiAqcHJpdiA9IHBoeWRldi1cXHUwMDNlcHJpdjtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdC8qIERlZmF1bHQgdG8gTEVEIEFjdGl2ZSBIaWdoIGlmIGFjdGl2ZS1sb3cgbm90IGluIERUICovXFxuLVxcdGlmIChwcml2LVxcdTAwM2VsZWRfcG9sYXJpdHlfbW9kZSA9PSAtMSkge1xcbitcXHQvKiBTZXQgTEVEIEFjdGl2ZSBIaWdoIHVubGVzcyBhY3RpdmUtbG93IHdhcyByZXF1ZXN0ZWQgaW4gRFQgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZWxlZF9wb2xhcml0eV9tb2RlICE9IDEpIHtcXG4gXFx0XFx0cmV0ID0gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgUUNBODA4WF9NTUQ3X0xFRF9QT0xBUklUWV9DVFJMLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgUUNBODA4WF9MRURfQUNUSVZFX0hJR0gpO1xcbkBAIC02MDMsNiArNjAzLDkgQEAgc3RhdGljIGludCBxY2E4MDh4X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbiBcXHRcXHRjYXNlIFBIWV9MRURfQUNUSVZFX0xPVzpcXG4gXFx0XFx0XFx0YWN0aXZlX2xvdyA9IHRydWU7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRjYXNlIFBIWV9MRURfQUNUSVZFX0hJR0g6XFxuK1xcdFxcdFxcdGFjdGl2ZV9sb3cgPSBmYWxzZTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ3OjQyLjU0MjU4MzAxMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6OTMyNzM5NDAyOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoZWQgZmlsZSAoZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jKSBpcyBhIGhhcmR3YXJlIGRldmljZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVyLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBjb25uZWN0ZWQgdG8gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDJkN2U0MWY0YTkwMzY2NjFkZGI4OThiM2E3OWE3OTdiYjQ0OGVlM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDEyIDAyOjQ3OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jIGIvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jXG5pbmRleCA4ZWI1MWIxYTAwNmM0Li42OGZkNGQwZmUzMWI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNcbkBAIC0yMDAsOCArMjAwLDggQEAgc3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4gXHRpbnQgcmV0O1xuIFxuLVx0LyogRGVmYXVsdCB0byBMRUQgQWN0aXZlIEhpZ2ggaWYgYWN0aXZlLWxvdyBub3QgaW4gRFQgKi9cbi1cdGlmIChwcml2LVx1MDAzZWxlZF9wb2xhcml0eV9tb2RlID09IC0xKSB7XG4rXHQvKiBTZXQgTEVEIEFjdGl2ZSBIaWdoIHVubGVzcyBhY3RpdmUtbG93IHdhcyByZXF1ZXN0ZWQgaW4gRFQgKi9cbitcdGlmIChwcml2LVx1MDAzZWxlZF9wb2xhcml0eV9tb2RlICE9IDEpIHtcbiBcdFx0cmV0ID0gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLFxuIFx0XHRcdFx0ICAgICAgIFFDQTgwOFhfTU1EN19MRURfUE9MQVJJVFlfQ1RSTCxcbiBcdFx0XHRcdCAgICAgICBRQ0E4MDhYX0xFRF9BQ1RJVkVfSElHSCk7XG5AQCAtNjAzLDYgKzYwMyw5IEBAIHN0YXRpYyBpbnQgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbiBcdFx0Y2FzZSBQSFlfTEVEX0FDVElWRV9MT1c6XG4gXHRcdFx0YWN0aXZlX2xvdyA9IHRydWU7XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDpcbitcdFx0XHRhY3RpdmVfbG93ID0gZmFsc2U7XG4rXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ3OjQyLjU0MjU4NTAyMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjU2ODg5OTM1MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBRQ0E4MDh4IFBIWSBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4eCBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXIgZHJpdmVyLiBJJ20gc2VlaW5nIGEgbW9kaWZpY2F0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkZXZpY2UgaXMgYW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFNpbmNlIGl0J3MgYSBQSFkgZHJpdmVyLCBpdCdzIHJlc3BvbnNpYmxlIGZvciB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlIG9mIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24uXG5cbk5vdywgbG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgd2UncmUgbW9kaWZ5aW5nIHRoZSBMRUQgcG9sYXJpdHkgY29uZmlndXJhdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRoZSBvcmlnaW5hbCBjb2RlIGRlZmF1bHRlZCB0byBcIkxFRCBBY3RpdmUgSGlnaFwiIGlmIG5vIHNwZWNpZmljIHNldHRpbmcgd2FzIHByb3ZpZGVkIHRocm91Z2ggdGhlIERldmljZSBUcmVlIChEVCkuIFRoZSBjaGFuZ2UgcmVmaW5lcyB0aGlzIGxvZ2ljLiBUaGUgb3JpZ2luYWwgY2hlY2sgd2FzIGlmIGBwcml2LVx1MDAzZWxlZF9wb2xhcml0eV9tb2RlYCB3YXMgc2V0IHRvIC0xLCB3aGVyZWFzIHRoaXMgdXBkYXRlIGlzIGNoZWNraW5nIGlmIGl0IGlzICpub3QqIGVxdWFsIHRvIDEuIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiB3YXMgc2F5aW5nIFwiaWYgbm90IHNwZWNpZmllZCwgdXNlIGhpZ2hcIi4gSSBsaWtlIHRoYXQgdGhpcyBpbXBsZW1lbnRhdGlvbiBjaGFuZ2VzIHRvIFwiaWYgbm90ICpleHBsaWNpdGx5KiBsb3csIHNldCB0byBoaWdoXCIuIFRoZSBjb2RlIGlzIGFsc28gYWRkaW5nIGBQSFlfTEVEX0FDVElWRV9ISUdIYCBpbnRvIHRoZSBgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbi5cblxuSSBzZWUgdGhleSdyZSB1c2luZyBgcGh5X3NldF9iaXRzX21tZGAgdG8gY29uZmlndXJlIHRoZSBNdWx0aS1NZWRpYS1EZXBlbmRlbnQgKE1NRCkgcmVnaXN0ZXJzIG9mIHRoZSBQSFkuIFRoaXMgaXMgc3RhbmRhcmQgcHJhY3RpY2UuXG5cblRoZSBjaGFuZ2Ugc2hvdWxkIGVuc3VyZSB0aGF0IHdlJ3JlIGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgTEVEIHBvbGFyaXR5IGJhc2VkIG9uIHRoZSBEVCBjb25maWd1cmF0aW9uLiBUaGUgYWRkaXRpb24gb2YgdGhlIGBQSFlfTEVEX0FDVElWRV9ISUdIYCBjYXNlIGluIHRoZSBgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbiBpcyBhIGdyZWF0IGFkZGl0aW9uLCBwcm92aWRpbmcgY29uc2lzdGVuY3kuXG5cbk5leHQsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyB0byBjb25maXJtIHRoZSB2aXNpYmlsaXR5IG9mIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDg3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDc6NDguMjMxNTgwODQ2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4Njc4Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInFjYTgwOHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX1FDQTgzWFhfUEhZKVxcdCs9IHFjYTgzeHgub1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1FDQTgwOFhfUEhZKVxcdCs9IHFjYTgwOHgub1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlLTYtb2JqLSQoQ09ORklHX1FDQTgwN1hfUEhZKVxcdCs9IHFjYTgwN3gub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM9MTExMz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXQ4MDN4X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTIxNS1cXHQuY2FibGVfdGVzdF9zdGFydFxcdD0gaXBxNTAxOF9jYWJsZV90ZXN0X3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyMTY6XFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1c1xcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTIxNy1cXHQuc29mdF9yZXNldFxcdFxcdD0gZ2VucGh5X3NvZnRfcmVzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9MTgxPXN0YXRpYyBpbnQgcWNhODA3eF9sZWRfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMTg4LVxcdHJlZyA9IFFDQTgwN1hfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjE4OTpcXHRyZXR1cm4gcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfZW5hYmxlKHBoeWRldiwgcmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMTkwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz0yMzg9c3RhdGljIGJvb2wgcWNhODA3eF9sZWRfaHdfY29udHJvbF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMjQ1LVxcdHJlZyA9IFFDQTgwN1hfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjI0NjpcXHRyZXR1cm4gcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfc3RhdHVzKHBoeWRldiwgcmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMjQ3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz0zMzA9c3RhdGljIGludCBxY2E4MDd4X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTM0Ni1cXHRyZWcgPSBRQ0E4MDdYX01NRDdfTEVEX0ZPUkNFX0NUUkwoaW5kZXgpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzozNDc6XFx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19icmlnaHRuZXNzX3NldChwaHlkZXYsIHJlZywgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy0zNDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTM1MD1zdGF0aWMgaW50IHFjYTgwN3hfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy0zNTktXFx0cmVnID0gUUNBODA3WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKGluZGV4KTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6MzYwOlxcdHJldHVybiBxY2E4MDh4X2xlZF9yZWdfYmxpbmtfc2V0KHBoeWRldiwgcmVnLCBkZWxheV9vbiwgZGVsYXlfb2ZmKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMzYxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz03OTE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwN3hfZHJpdmVyc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTgwNy1cXHRcXHQuY2FibGVfdGVzdF9zdGFydFxcdD0gcWNhODA3eF9jYWJsZV90ZXN0X3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo4MDg6XFx0XFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1c1xcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTgwOS1cXHRcXHQudXBkYXRlX3N0YXRzXFx0XFx0PSBxY2E4MDd4X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MzAtXFx0XFx0LmNhYmxlX3Rlc3Rfc3RhcnRcXHQ9IHFjYTgwN3hfY2FibGVfdGVzdF9zdGFydCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6ODMxOlxcdFxcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXNcXHQ9IHFjYTgwOHhfY2FibGVfdGVzdF9nZXRfc3RhdHVzLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MzItXFx0XFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IHFjYTgwN3hfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTkyPU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtOTMtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjk0OnN0cnVjdCBxY2E4MDh4X3ByaXYge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy05NS1cXHRpbnQgbGVkX3BvbGFyaXR5X21vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtOTgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjk5OnN0YXRpYyBpbnQgcWNhODA4eF9waHlfZmFzdF9yZXRyYWluX2NvbmZpZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xMDAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTEzMy1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MTM0OnN0YXRpYyBpbnQgcWNhODA4eF9waHlfbXNfc2VlZF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTEzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxNDk6c3RhdGljIGJvb2wgcWNhODA4eF9pc19wcmVmZXJfbWFzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTU0LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxNTU6c3RhdGljIGJvb2wgcWNhODA4eF9oYXNfZmFzdF9yZXRyYWluX29yX3NsYXZlX3NlZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xNTktXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE2MDpzdGF0aWMgYm9vbCBxY2E4MDh4X2lzXzFnX29ubHkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xNzAtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE3MTpzdGF0aWMgdm9pZCBxY2E4MDh4X2ZpbGxfcG9zc2libGVfaW50ZXJmYWNlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE3Ni1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MTc3OlxcdGlmICghcWNhODA4eF9pc18xZ19vbmx5KHBoeWRldikpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE3OC1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCwgcG9zc2libGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE4MC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MTgxOnN0YXRpYyBpbnQgcWNhODA4eF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xODIte1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xODMtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXY7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE4NDpcXHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xODUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTk3LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxOTg6c3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE5OS17XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIwMDpcXHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMDEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMjQtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIyNTpcXHRpZiAocWNhODA4eF9oYXNfZmFzdF9yZXRyYWluX29yX3NsYXZlX3NlZWQocGh5ZGV2KSkge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMjYtXFx0XFx0LyogQ29uZmlnIHRoZSBmYXN0IHJldHJhaW4gZm9yIHRoZSBsaW5rIDI1MDBNICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIyNzpcXHRcXHRyZXQgPSBxY2E4MDh4X3BoeV9mYXN0X3JldHJhaW5fY29uZmlnKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTIyOC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTIzNC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MjM1OlxcdFxcdGlmICghcWNhODA4eF9pc19wcmVmZXJfbWFzdGVyKHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjM2LVxcdFxcdFxcdC8qIEVuYWJsZSBzZWVkIGFuZCBjb25maWd1cmUgbG93ZXIgcmFtZG9tIHNlZWQgdG8gbWFrZSBwaHlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMzgtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIzOTpcXHRcXHRcXHRyZXQgPSBxY2E4MDh4X3BoeV9tc19zZWVkX2VuYWJsZShwaHlkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yNDAtXFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yNDQtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjI0NTpcXHRxY2E4MDh4X2ZpbGxfcG9zc2libGVfaW50ZXJmYWNlcyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjU2LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoyNTc6c3RhdGljIGludCBxY2E4MDh4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjk0LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoyOTU6XFx0XFx0aWYgKHFjYTgwOHhfaGFzX2Zhc3RfcmV0cmFpbl9vcl9zbGF2ZV9zZWVkKHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjk2LVxcdFxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZW1hc3Rlcl9zbGF2ZV9zdGF0ZSA9PSBNQVNURVJfU0xBVkVfU1RBVEVfRVJSIHx8XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjI5NzpcXHRcXHRcXHQgICAgcWNhODA4eF9pc19wcmVmZXJfbWFzdGVyKHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Mjk4OlxcdFxcdFxcdFxcdHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yOTktXFx0XFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MzAwOlxcdFxcdFxcdFxcdHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTMwMS1cXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzA3LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozMDg6c3RhdGljIGludCBxY2E4MDh4X3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zMTUtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjMxNjpcXHRpZiAocWNhODA4eF9oYXNfZmFzdF9yZXRyYWluX29yX3NsYXZlX3NlZWQocGh5ZGV2KSlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MzE3OlxcdFxcdHJldCA9IHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTMxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zMjEtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjMyMjpzdGF0aWMgaW50IHFjYTgwOHhfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTM2Mi1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MzYzOnN0YXRpYyBpbnQgcWNhODA4eF9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zNzEtXFx0LyogVGhlIGF1dG9uZWcgYWJpbGl0eSBpcyBub3QgZXhpc3RlZCBpbiBiaXQzIG9mIE1NRDcuMSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MzcyOlxcdCAqIGJ1dCBpdCBpcyBzdXBwb3J0ZWQgYnkgcWNhODA4eCBQSFksIHNvIHdlIGFkZCBpdCBoZXJlXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTM3My1cXHQgKiBtYW51YWxseS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zODAtXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjM4MTpcXHRpZiAocWNhODA4eF9pc18xZ19vbmx5KHBoeWRldikpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTM4Mi1cXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzg2LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozODc6c3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTM4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDEyLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo0MTM6c3RhdGljIHZvaWQgcWNhODA4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00MjMtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQyNDpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX3BhcnNlX25ldGRldihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBsb25nIHJ1bGVzLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00MjUtXFx0XFx0XFx0XFx0ICAgIHUxNiAqb2ZmbG9hZF90cmlnZ2VyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ1NS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDU2OnN0YXRpYyBpbnQgcWNhODA4eF9sZWRfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDYzLVxcdHJlZyA9IFFDQTgwOFhfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ2NDpcXHRyZXR1cm4gcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfZW5hYmxlKHBoeWRldiwgcmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDY1LX1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDY2LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo0Njc6c3RhdGljIGludCBxY2E4MDh4X2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ2OC1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBydWxlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NzQtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ3NTpcXHRyZXR1cm4gcWNhODA4eF9sZWRfcGFyc2VfbmV0ZGV2KHBoeWRldiwgcnVsZXMsIFxcdTAwMjZvZmZsb2FkX3RyaWdnZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NzYtfVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NzctXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ3ODpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NzktXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyBydWxlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00ODgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ4OTpcXHRyZXQgPSBxY2E4MDh4X2xlZF9wYXJzZV9uZXRkZXYocGh5ZGV2LCBydWxlcywgXFx1MDAyNm9mZmxvYWRfdHJpZ2dlcik7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ5MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ5Mi1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDkzOlxcdHJldCA9IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZW5hYmxlKHBoeWRldiwgaW5kZXgpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00OTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MDEtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUwMjpzdGF0aWMgYm9vbCBxY2E4MDh4X2xlZF9od19jb250cm9sX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleClcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MDktXFx0cmVnID0gUUNBODA4WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKGluZGV4KTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTEwOlxcdHJldHVybiBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9zdGF0dXMocGh5ZGV2LCByZWcpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MTEtfVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MTItXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUxMzpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MTQtXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyAqcnVsZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTIyLVxcdC8qIENoZWNrIGlmIHdlIGhhdmUgaHcgY29udHJvbCBlbmFibGVkICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUyMzpcXHRpZiAocWNhODA4eF9sZWRfaHdfY29udHJvbF9zdGF0dXMocGh5ZGV2LCBpbmRleCkpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTUyNC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NDgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU0OTpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTYxLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo1NjI6c3RhdGljIGludCBxY2E4MDh4X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NjMtXFx0XFx0XFx0XFx0ICAgICAgdTggaW5kZXgsIGVudW0gbGVkX2JyaWdodG5lc3MgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTcxLVxcdGlmICghdmFsdWUpIHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTcyOlxcdFxcdHJldCA9IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfcmVzZXQocGh5ZGV2LCBpbmRleCk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU3My1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU3Ny1cXHRyZWcgPSBRQ0E4MDhYX01NRDdfTEVEX0ZPUkNFX0NUUkwoaW5kZXgpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo1Nzg6XFx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19icmlnaHRuZXNzX3NldChwaHlkZXYsIHJlZywgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NzktfVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01ODAtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU4MTpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTgyLVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nICpkZWxheV9vbixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01OTAtXFx0cmVnID0gUUNBODA4WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKGluZGV4KTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTkxOlxcdHJldHVybiBxY2E4MDh4X2xlZF9yZWdfYmxpbmtfc2V0KHBoeWRldiwgcmVnLCBkZWxheV9vbiwgZGVsYXlfb2ZmKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTkyLX1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTkzLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo1OTQ6c3RhdGljIGludCBxY2E4MDh4X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01OTUtXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5Ni17XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU5NzpcXHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01OTgtXFx0Ym9vbCBhY3RpdmVfbG93ID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjMyLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2MzM6c3RhdGljIGludCBxY2E4MDh4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02MzQte1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2MzU6XFx0c3RydWN0IHFjYTgwOHhfcHJpdiAqcHJpdiA9IHBoeWRldi1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjM2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTYzOS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjQwOnN0YXRpYyB2b2lkIHFjYTgwOHhfZ2V0X3BoeV9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NDEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZXRodG9vbF9ldGhfcGh5X3N0YXRzICpldGhfc3RhdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjQzLXtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjQ0OlxcdHN0cnVjdCBxY2E4MDh4X3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NDgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY0OTpzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcWNhODA4eF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NTQtXFx0LmZsYWdzXFx0XFx0XFx0PSBQSFlfUE9MTF9DQUJMRV9URVNULFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NTU6XFx0LnByb2JlXFx0XFx0XFx0PSBxY2E4MDh4X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NTYtXFx0LmNvbmZpZ19pbnRyXFx0XFx0PSBhdDgwM3hfY29uZmlnX2ludHIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjYxLVxcdC5nZXRfd29sXFx0XFx0PSBhdDgwM3hfZ2V0X3dvbCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjYyOlxcdC5nZXRfZmVhdHVyZXNcXHRcXHQ9IHFjYTgwOHhfZ2V0X2ZlYXR1cmVzLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NjM6XFx0LmNvbmZpZ19hbmVnXFx0XFx0PSBxY2E4MDh4X2NvbmZpZ19hbmVnLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NjQtXFx0LnN1c3BlbmRcXHRcXHQ9IGdlbnBoeV9zdXNwZW5kLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NjUtXFx0LnJlc3VtZVxcdFxcdFxcdD0gZ2VucGh5X3Jlc3VtZSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY2OlxcdC5yZWFkX3N0YXR1c1xcdFxcdD0gcWNhODA4eF9yZWFkX3N0YXR1cyxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY3OlxcdC5jb25maWdfaW5pdFxcdFxcdD0gcWNhODA4eF9jb25maWdfaW5pdCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY4OlxcdC5zb2Z0X3Jlc2V0XFx0XFx0PSBxY2E4MDh4X3NvZnRfcmVzZXQsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY2OTpcXHQuY2FibGVfdGVzdF9zdGFydFxcdD0gcWNhODA4eF9jYWJsZV90ZXN0X3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NzA6XFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1c1xcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3MTpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBxY2E4MDh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjcyOlxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IHFjYTgwOHhfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NzM6XFx0LmxlZF9ibGlua19zZXRcXHRcXHQ9IHFjYTgwOHhfbGVkX2JsaW5rX3NldCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njc0OlxcdC5sZWRfaHdfaXNfc3VwcG9ydGVkXFx0PSBxY2E4MDh4X2xlZF9od19pc19zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3NTpcXHQubGVkX2h3X2NvbnRyb2xfc2V0XFx0PSBxY2E4MDh4X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njc2OlxcdC5sZWRfaHdfY29udHJvbF9nZXRcXHQ9IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2Nzc6XFx0LmxlZF9wb2xhcml0eV9zZXRcXHQ9IHFjYTgwOHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njc4OlxcdC51cGRhdGVfc3RhdHNcXHRcXHQ9IHFjYTgwOHhfdXBkYXRlX3N0YXRzLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2Nzk6XFx0LmdldF9waHlfc3RhdHNcXHRcXHQ9IHFjYTgwOHhfZ2V0X3BoeV9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjgwLX0sIH07XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY4MS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjgyOm1vZHVsZV9waHlfZHJpdmVyKHFjYTgwOHhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjgzLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2ODQ6c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBxY2E4MDh4X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODUtXFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODA4MV9QSFlfSUQpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjg4LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2ODk6TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBxY2E4MDh4X3RibCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYz00OTE9RVhQT1JUX1NZTUJPTF9HUEwoYXQ4MDN4X2NkdF93YWl0X2Zvcl9jb21wbGV0aW9uKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy00OTItXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NDkzOnN0YXRpYyBib29sIHFjYTgwOHhfY2R0X2ZhdWx0X2xlbmd0aF92YWxpZChpbnQgY2R0X2NvZGUpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNDk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTUxMi1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo1MTM6c3RhdGljIGludCBxY2E4MDh4X2NhYmxlX3Rlc3RfcmVzdWx0X3RyYW5zKGludCBjZHRfY29kZSlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy01MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTM3LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjUzODpzdGF0aWMgaW50IHFjYTgwOHhfY2R0X2ZhdWx0X2xlbmd0aChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcGFpcixcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy01MzktXFx0XFx0XFx0XFx0ICAgIGludCByZXN1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy01NzItXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NTczOnN0YXRpYyBpbnQgcWNhODA4eF9jYWJsZV90ZXN0X2dldF9wYWlyX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBwYWlyLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTU3NC1cXHRcXHRcXHRcXHRcXHQgICAgICB1MTYgc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTk1LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjU5NjpcXHRyZXN1bHQgPSBxY2E4MDh4X2NhYmxlX3Rlc3RfcmVzdWx0X3RyYW5zKHBhaXJfY29kZSk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTk3LVxcdGV0aG5sX2NhYmxlX3Rlc3RfcmVzdWx0KHBoeWRldiwgcGFpciwgcmVzdWx0KTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy01OTgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NTk5OlxcdGlmIChxY2E4MDh4X2NkdF9mYXVsdF9sZW5ndGhfdmFsaWQocGFpcl9jb2RlKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjYwMDpcXHRcXHRsZW5ndGggPSBxY2E4MDh4X2NkdF9mYXVsdF9sZW5ndGgocGh5ZGV2LCBwYWlyLCByZXN1bHQpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYwMS1cXHRcXHRldGhubF9jYWJsZV90ZXN0X2ZhdWx0X2xlbmd0aChwaHlkZXYsIHBhaXIsIGxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MDYtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjA3OmludCBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpmaW5pc2hlZClcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjI2LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjYyNzpcXHRyZXQgPSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3BhaXJfc3RhdHVzKHBoeWRldiwgRVRIVE9PTF9BX0NBQkxFX1BBSVJfQSwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYzMC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2MzE6XFx0cmV0ID0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9wYWlyX3N0YXR1cyhwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0IsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjMyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MzQtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjM1OlxcdHJldCA9IHFjYTgwOHhfY2FibGVfdGVzdF9nZXRfcGFpcl9zdGF0dXMocGh5ZGV2LCBFVEhUT09MX0FfQ0FCTEVfUEFJUl9DLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYzNi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjM4LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjYzOTpcXHRyZXQgPSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3BhaXJfc3RhdHVzKHBoeWRldiwgRVRIVE9PTF9BX0NBQkxFX1BBSVJfRCwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NDAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY0Ni19XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjQ3OkVYUE9SVF9TWU1CT0xfR1BMKHFjYTgwOHhfY2FibGVfdGVzdF9nZXRfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NDgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjQ5OmludCBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZylcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NTAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjUzLX1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2NTQ6RVhQT1JUX1NZTUJPTF9HUEwocWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NTUtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjU2OmJvb2wgcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY2Mi19XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjYzOkVYUE9SVF9TWU1CT0xfR1BMKHFjYTgwOHhfbGVkX3JlZ19od19jb250cm9sX3N0YXR1cyk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjY0LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjY2NTppbnQgcWNhODA4eF9sZWRfcmVnX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjY2LVxcdFxcdFxcdFxcdCAgIHUxNiByZWcsIGVudW0gbGVkX2JyaWdodG5lc3MgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NzItfVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjY3MzpFWFBPUlRfU1lNQk9MX0dQTChxY2E4MDh4X2xlZF9yZWdfYnJpZ2h0bmVzc19zZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY3NC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2NzU6aW50IHFjYTgwOHhfbGVkX3JlZ19ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZyxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NzYtXFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyAqZGVsYXlfb24sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy03MDAtfVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjcwMTpFWFBPUlRfU1lNQk9MX0dQTChxY2E4MDh4X2xlZF9yZWdfYmxpbmtfc2V0KTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy03MDItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg9MjU3PWludCBhdDgwM3hfY2R0X3dhaXRfZm9yX2NvbXBsZXRpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjU4LVxcdFxcdFxcdFxcdCAgIHUzMiBjZHRfZW4pO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20uaDoyNTk6aW50IHFjYTgwOHhfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgKmZpbmlzaGVkKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjYwOmludCBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZyk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS5oOjI2MTpib29sIHFjYTgwOHhfbGVkX3JlZ19od19jb250cm9sX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjYyOmludCBxY2E4MDh4X2xlZF9yZWdfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjYzLVxcdFxcdFxcdFxcdCAgIHUxNiByZWcsIGVudW0gbGVkX2JyaWdodG5lc3MgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20uaDoyNjQ6aW50IHFjYTgwOHhfbGVkX3JlZ19ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZyxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjY1LVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0Nzo0OC4yODAyNjM3MjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMjc2NzQwNzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBRQ0E4MDhYIFBIWSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhlIGRlZmluaXRpb24gb2YgYENPTkZJR19RQ0E4MDhYX1BIWWAuIE5vIG5lZWQgdG8gcmVpbnZlbnQgdGhlIHdoZWVsLCBzbyBJJ2xsIGp1bXAgc3RyYWlnaHQgaW50byBgZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIFBIWSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLCBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUsIGFuZCB3aGF0IG90aGVyIG9wdGlvbnMgbWlnaHQgYmUgcmVsZXZhbnQgaW4gdGhpcyBjb25maWd1cmF0aW9uIHNwYWNlLiBUaGlzIGlzIGZ1bmRhbWVudGFsOyBJIGNhbid0IHByb2NlZWQgZWZmZWN0aXZlbHkgdW50aWwgSSBrbm93IHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSBleHBlY3RzIGFuZCBob3cgdGhpcyBzcGVjaWZpYyBQSFkgaW50ZWdyYXRlcyBpbnRvIHRoZSBicm9hZGVyIFF1YWxjb21tIG5ldHdvcmtpbmcgZHJpdmVyIGxhbmRzY2FwZS4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBlbnRyeSBpcyB0aGUgZXNzZW50aWFsIGZpcnN0IHN0ZXAgdG8gdW5kZXJzdGFuZGluZyBpdHMgZnVsbCBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Mzg5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDc6NTAuNTU3MDA2MzMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MDU4NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBRQ0E4MDhYX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0xMj1jb25maWcgUUNBODNYWF9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZzoxODpjb25maWcgUUNBODA4WF9QSFlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBRQ0E4MDh4IFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ3OjUwLjYwNjA3MTUxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjAxNDQ1NDY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFFDT00gUEhZIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTguIEknbSBhc3N1bWluZyB0aGF0IGFyZWEgcHJvYmFibHkgZGVhbHMgd2l0aCB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBRdWFsY29tbSBQSFkgZHJpdmVycy4gR2l2ZW4gdGhlIGZpbGUgbmFtZSwgaXQncyBoaWdobHkgbGlrZWx5IHRoaXMgaXMgd2hlcmUgSSdsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBtYXliZSBldmVuIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgZ292ZXJuaW5nIHdoaWNoIHNwZWNpZmljIFFDT00gUEhZIGltcGxlbWVudGF0aW9ucyBhcmUgZW5hYmxlZCBkdXJpbmcgdGhlIGJ1aWxkLiBUaGlzIGlzIHRoZSBwbGFjZSB0byBzdGFydCBpZiBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgb3IgbW9kaWZ5IHRoZSBpbmNsdXNpb24gb2YgYSBwYXJ0aWN1bGFyIFFDT00gUEhZIGluIGEga2VybmVsIGJ1aWxkLiBJIGFudGljaXBhdGUgZmluZGluZyB0aGluZ3MgbGlrZSB3aGV0aGVyIGNlcnRhaW4gUEhZcyBhcmUgZW5hYmxlZCBiYXNlZCBvbiBhcmNoaXRlY3R1cmUsIGJvYXJkIHR5cGUsIG9yIHNwZWNpZmljIFNvQyBmZWF0dXJlcy4gSG9wZWZ1bGx5LCBpdCdzIHdlbGwtY29tbWVudGVkIHNvIEkgY2FuIHF1aWNrbHkgZ3JvayB0aGUgaW50ZW50IGJlaGluZCBlYWNoIG9wdGlvbi4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3MzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0Nzo1Mi42MjA1Mjg1NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBRQ09NX05FVF9QSFlMSUJcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBBVDgwM1hfUEhZXFxuICAgNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZc1xcXCJcXG4gICA3OlxcdFxcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gUkVHVUxBVE9SXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQVI4MDMwLCBBUjgwMzEsIEFSODAzMywgQVI4MDM1LCBJUFE1MDE4IG1vZGVsXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBRQ0E4M1hYX1BIWVxcbiAgMTM6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgUUNBODMzeCBQSFlzXFxcIlxcbiAgMTQ6XFx0XFx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxcbiAgMTU6XFx0XFx0aGVscFxcbiAgMTY6XFx0XFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgdGhlIGludGVybmFsIFFDQTgzMzcoSW50ZXJuYWwgcWNhOGsgUEhZKSBtb2RlbFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgUUNBODA4WF9QSFlcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBRQ0E4MDh4IFBIWXNcXFwiXFxuICAyMDpcXHRcXHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgUUNBODA4MSBtb2RlbFxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgUUNBODA3WF9QSFlcXG4gIDI1OlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBRQ0E4MDd4IFBIWXNcXFwiXFxuICAyNjpcXHRcXHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXFxuICAyNzpcXHRcXHRzZWxlY3QgUEhZX1BBQ0tBR0VcXG4gIDI4OlxcdFxcdGRlcGVuZHMgb24gT0ZfTURJT1xcbiAgMjk6XFx0XFx0aGVscFxcbiAgMzA6XFx0XFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgdGhlIFF1YWxjb21tIFFDQTgwNzIsIFFDQTgwNzUgYW5kIHRoZSBQU0dNSUlcXG4gIDMxOlxcdFxcdCAgY29udHJvbCBQSFkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ3OjUyLjYyMDU5MTk3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzE0NTgzOTg4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQcm9iaW5nIE1ESU8gUEhZcyBpbiBhIFZpcnR1YWwgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBRQ0E4MDhYLCB3aGljaCBpcyBhbiBNRElPIEV0aGVybmV0IFBIWSwgZ2V0cyBwcm9iZWQgYW5kIGJvdW5kIGluIHRoZSBrZXJuZWwuIEkgc2VlIGl0IHVzZXMgYE1PRFVMRV9ERVZJQ0VfVEFCTEVgIGZvciB0aGUgTURJTyBzdWJzeXN0ZW0gYW5kIHRoZW4gcmVnaXN0ZXJzIGl0cyBkcml2ZXIgd2l0aCBgbW9kdWxlX3BoeV9kcml2ZXJgLiBCdXQsIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBvciBwcm9iZSBhbiBNRElPIFBIWSBkcml2ZXIgbGlrZSB0aGlzIHdpdGhpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQsIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdpdGhvdXQgaGF2aW5nIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50P1xuXG5JIG5lZWQgdG8gZXhwbG9yZSBpZiB0aGVyZSBhcmUgd2F5cyB0byBjcmVhdGUgdGhlc2UgTURJTyBQSFlzIHZpcnR1YWxseSwgbWF5YmUgdGhyb3VnaCBzeXNmcyBvciBzb21lIG90aGVyIHZpcnR1YWwgZGV2aWNlIG1lY2hhbmlzbS4gSSdtIHdvbmRlcmluZyBpZiBzb21ldGhpbmcgbGlrZSBgbWRpby1ncGlvYCwgYG1kaW8tYml0YmFuZ2AsIG9yIGV2ZW4gYSBgbWRpby1tb2NrYCBkZXZpY2UgZXhpc3RzIHRvIHNpbXVsYXRlIHRoaXMuIENhbiBJIGNyZWF0ZSB0aGVzZSBNRElPIHBoeSBkZXZpY2VzIGZyb20gdXNlciBzcGFjZSBvciB0aHJvdWdoIGEgdmlydHVhbCBkZXZpY2Ugc29tZWhvdz9cblxuVGltZSB0byBkaWcgaW50byB0aGUgY29kZSBiYXNlLiBJJ2xsIGhpdCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0IGNvbWVzIHVwIHJlZ2FyZGluZyBNRElPIGRyaXZlciByZWdpc3RyYXRpb24sIHN5c2ZzIGludGVyYWN0aW9ucywgYW5kIG1heWJlIGV2ZW4gTmV0bGluayB1c2FnZSBmb3IgY2x1ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTURJTyBkcml2ZXJzIGFyZSBtYW5hZ2VkIGFuZCBpZiB0aGVyZSdzIGEgdmlydHVhbCBwYXRoIHRvIHRlc3Qgb3IgZGV2ZWxvcCB0aGVtIHdpdGhvdXQgbmVlZGluZyBhY3R1YWwgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NDU3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDc6NTUuNzY2NDM0MzkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkyMzM1MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb19idXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzYwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ND1saWJwaHkteVxcdFxcdFxcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXFx0XFx0XFx0XFx0ICAgbGlua21vZGUubyBwaHlfbGlua190b3BvbG9neS5vIFxcXFxcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjpcXHRcXHRcXHRcXHQgICBwaHlfY2Fwcy5vIG1kaW9fYnVzX3Byb3ZpZGVyLm8gcGh5X3BvcnQubyBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTctXFx0XFx0XFx0XFx0ICAgbWRpb19kZXZpY2Uub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE2PWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICs9IG9wZW5fYWxsaWFuY2VfaGVscGVycy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE3LVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fYnVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTktb2JqLSQoQ09ORklHX1BIWUxJTkspXFx0XFx0Kz0gcGh5bGluay5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz00MTM9c3RhdGljIGludCBhbjg4MTFoYl9tY3VfYXNzZXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MTctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDE4OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDE5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDMyLXVubG9jazpcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0MzM6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQzNC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDM3PXN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2RlYXNzZXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00NDEtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDQyOlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDQzLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDU3LXVubG9jazpcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0NTg6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQ1OS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9MzM9aW50IGJjbV9waHlfd3JpdGVfZXhwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcsIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zNi1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozNzpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTM4LVxcdHJjID0gX19iY21fcGh5X3dyaXRlX2V4cChwaHlkZXYsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozOTpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNDAtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz02Mj1pbnQgYmNtX3BoeV9yZWFkX2V4cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjUtXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6NjY6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy02Ny1cXHRyYyA9IF9fYmNtX3BoeV9yZWFkX2V4cChwaHlkZXYsIHJlZyk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Njg6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9OTQ9aW50IGJjbV9waHlfbW9kaWZ5X2V4cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTk3LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjk4OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtOTktXFx0cmV0ID0gX19iY21fcGh5X21vZGlmeV9leHAocGh5ZGV2LCByZWcsIG1hc2ssIHNldCk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6MTAwOlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0xMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz0yNzE9aW50IGJjbV9waHlfcmVhZF9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJkYilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTI3NC1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzoyNzU6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0yNzYtXFx0cmV0ID0gX19iY21fcGh5X3JlYWRfcmRiKHBoeWRldiwgcmRiKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzoyNzc6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTI3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTI5NT1pbnQgYmNtX3BoeV93cml0ZV9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJkYiwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTI5OC1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzoyOTk6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zMDAtXFx0cmV0ID0gX19iY21fcGh5X3dyaXRlX3JkYihwaHlkZXYsIHJkYiwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozMDE6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTMwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTMyNz1pbnQgYmNtX3BoeV9tb2RpZnlfcmRiKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZGIsIHUxNiBtYXNrLCB1MTYgc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzMwLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjMzMTpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTMzMi1cXHRyZXQgPSBfX2JjbV9waHlfbW9kaWZ5X3JkYihwaHlkZXYsIHJkYiwgbWFzaywgc2V0KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozMzM6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTMzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTY2MD1zdGF0aWMgaW50IF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBpc19yZGIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy02NzEtXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6NjcyOlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjczLVxcdGlmIChpc19yZGIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5MC1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo2OTE6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTc0Mj1zdGF0aWMgaW50IF9iY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjc0OTpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc5OS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4MDA6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTgwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jPTQzMj1zdGF0aWMgaW50IGJjbTU0MTQwX2Jhc2VfcmVhZF9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJkYilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTQzNS1cXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYzo0MzY6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00MzctXFx0cmV0ID0gX19waHlfcGFja2FnZV93cml0ZShwaHlkZXYsIEJDTTU0MTQwX0JBU0VfQUREUixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTQ0NS1vdXQ6XFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6NDQ2OlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00NDctXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jPTQ1MD1zdGF0aWMgaW50IGJjbTU0MTQwX2Jhc2Vfd3JpdGVfcmRiKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00NTQtXFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6NDU1OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDU2LVxcdHJldCA9IF9fcGh5X3BhY2thZ2Vfd3JpdGUocGh5ZGV2LCBCQ001NDE0MF9CQVNFX0FERFIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00NjQtb3V0OlxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jOjQ2NTpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDY2LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz04Nzc9c3RhdGljIGludCBicmNtX2ZldF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTMyLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjkzMzpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTkzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTkzNi1cXHRpZiAoZXJyIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjkzNzpcXHRcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTM4LVxcdFxcdHJldHVybiBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy05NzMtXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6OTc0OlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy05NzUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz0xMDM2PXN0YXRpYyBpbnQgYnJjbV9mZXRfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA1My1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxMDU0OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTEwNTctXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxMDU4OlxcdFxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xMDU5LVxcdFxcdHJldHVybiBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xMDc1LVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjEwNzY6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTEwNzctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYz03Nj1zdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy03OS1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzo4MDpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTgxLVxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTg2LW91dDpcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzo4NzpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtODgtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jPTEwND1zdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMDctXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTA4OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTA5LVxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTExNC1vdXQ6XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTE1OlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMTYtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xOTM9RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3VucmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xOTQtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE5NTpzdGF0aWMgaW50IF9faW5pdCBmaXhlZF9tZGlvX2J1c19pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE5Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMjE4LX1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MjE5Om1vZHVsZV9pbml0KGZpeGVkX21kaW9fYnVzX2luaXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMjAtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjIyMTpzdGF0aWMgdm9pZCBfX2V4aXQgZml4ZWRfbWRpb19idXNfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTIyNS19XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjIyNjptb2R1bGVfZXhpdChmaXhlZF9tZGlvX2J1c19leGl0KTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMjI3LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmM9NTk9RVhQT1JUX1NZTUJPTChtZGlvYnVzX2lzX3JlZ2lzdGVyZWRfZGV2aWNlKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXMuYy02MC1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXMuYzo2MTpzdGF0aWMgdm9pZCBtZGlvYnVzX3N0YXRzX2FjY3Qoc3RydWN0IG1kaW9fYnVzX3N0YXRzICpzdGF0cywgYm9vbCBvcCwgaW50IHJldClcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXMuYy02Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz00MD1zdGF0aWMgdm9pZCBtZGlvYnVzX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU1LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU2OnN0cnVjdCBtZGlvX2J1c19zdGF0X2F0dHIge1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU3LVxcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGF0dHI7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02MS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo2MjpzdGF0aWMgc3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciAqdG9fc2F0dHIoc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjMte1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjY0OlxcdHJldHVybiBjb250YWluZXJfb2YoYXR0ciwgc3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciwgYXR0cik7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjUtfVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY2LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjY3OnN0YXRpYyB1NjQgbWRpb19idXNfZ2V0X3N0YXQoc3RydWN0IG1kaW9fYnVzX3N0YXRzICpzLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTgwLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjgxOnN0YXRpYyBzc2l6ZV90IG1kaW9fYnVzX3N0YXRfZmllbGRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtODItXFx0XFx0XFx0XFx0XFx0c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy04NC17XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6ODU6XFx0c3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciAqc2F0dHIgPSB0b19zYXR0cihhdHRyKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy04Ni1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gdG9fbWlpX2J1cyhkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtOTEtXFx0XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBQSFlfTUFYX0FERFI7IGkrKylcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo5MjpcXHRcXHRcXHR2YWwgKz0gbWRpb19idXNfZ2V0X3N0YXQoXFx1MDAyNmJ1cy1cXHUwMDNlc3RhdHNbaV0sXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtOTMtXFx0XFx0XFx0XFx0XFx0XFx0IHNhdHRyLVxcdTAwM2VmaWVsZF9vZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTk0LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6OTU6XFx0XFx0dmFsID0gbWRpb19idXNfZ2V0X3N0YXQoXFx1MDAyNmJ1cy1cXHUwMDNlc3RhdHNbc2F0dHItXFx1MDAzZWFkZHJlc3NdLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTk2LVxcdFxcdFxcdFxcdFxcdHNhdHRyLVxcdTAwM2VmaWVsZF9vZmZzZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTAxLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEwMjpzdGF0aWMgc3NpemVfdCBtZGlvX2J1c19kZXZpY2Vfc3RhdF9maWVsZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMDMtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTA1LXtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMDY6XFx0c3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciAqc2F0dHIgPSB0b19zYXR0cihhdHRyKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMDctXFx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2ID0gdG9fbWRpb19kZXZpY2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTExMS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMTI6XFx0dmFsID0gbWRpb19idXNfZ2V0X3N0YXQoXFx1MDAyNmJ1cy1cXHUwMDNlc3RhdHNbYWRkcl0sIHNhdHRyLVxcdTAwM2VmaWVsZF9vZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTExNy0jZGVmaW5lIE1ESU9fQlVTX1NUQVRTX0FUVFIoZmllbGQpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjExODpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciBkZXZfYXR0cl9tZGlvX2J1c18jI2ZpZWxkID0ge1xcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMTk6XFx0LmF0dHIgPSBfX0FUVFIoZmllbGQsIDA0NDQsIG1kaW9fYnVzX3N0YXRfZmllbGRfc2hvdywgTlVMTCksXFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEyMC1cXHQuYWRkcmVzcyA9IC0xLFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMjE6XFx0LmZpZWxkX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBtZGlvX2J1c19zdGF0cywgZmllbGQpLFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMjItfTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTIzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyIGRldl9hdHRyX21kaW9fYnVzX2RldmljZV8jI2ZpZWxkID0geyBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTI0OlxcdC5hdHRyID0gX19BVFRSKGZpZWxkLCAwNDQ0LCBtZGlvX2J1c19kZXZpY2Vfc3RhdF9maWVsZF9zaG93LCBOVUxMKSwgXFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEyNTpcXHQuZmllbGRfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IG1kaW9fYnVzX3N0YXRzLCBmaWVsZCksXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEyNi19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz0xMzE9TURJT19CVVNfU1RBVFNfQVRUUihyZWFkcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMzMtI2RlZmluZSBNRElPX0JVU19TVEFUU19BRERSX0FUVFJfREVDTChmaWVsZCwgYWRkciwgZmlsZSlcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEzNTpkZXZfYXR0cl9tZGlvX2J1c19hZGRyXyMjZmllbGQjI18jI2FkZHIgPSB7XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEzNi1cXHQuYXR0ciA9IHsgLmF0dHIgPSB7IC5uYW1lID0gZmlsZSwgLm1vZGUgPSAwNDQ0IH0sXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEzNzpcXHRcXHQgICAgIC5zaG93ID0gbWRpb19idXNfc3RhdF9maWVsZF9zaG93LFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMzgtXFx0fSxcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTM5LVxcdC5hZGRyZXNzID0gYWRkcixcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTQwOlxcdC5maWVsZF9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgbWRpb19idXNfc3RhdHMsIGZpZWxkKSxcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTQxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTE4ND1NRElPX0JVU19TVEFUU19BRERSX0FUVFJfR1JPVVBfREVDTCgzMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xODYtI2RlZmluZSBNRElPX0JVU19TVEFUU19BRERSX0FUVFJfR1JPVVAoYWRkcilcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTg3OlxcdFxcdTAwMjYoZGV2X2F0dHJfbWRpb19idXNfYWRkcl90cmFuc2ZlcnNfIyNhZGRyKS5hdHRyLmF0dHIsXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE4ODpcXHRcXHUwMDI2KGRldl9hdHRyX21kaW9fYnVzX2FkZHJfZXJyb3JzXyMjYWRkcikuYXR0ci5hdHRyLFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxODk6XFx0XFx1MDAyNihkZXZfYXR0cl9tZGlvX2J1c19hZGRyX3dyaXRlc18jI2FkZHIpLmF0dHIuYXR0cixcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTkwOlxcdFxcdTAwMjYoZGV2X2F0dHJfbWRpb19idXNfYWRkcl9yZWFkc18jI2FkZHIpLmF0dHIuYXR0clxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xOTEtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTkyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICpjb25zdCBtZGlvX2J1c19zdGF0aXN0aWNzX2F0dHJzW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTkzOlxcdFxcdTAwMjZkZXZfYXR0cl9tZGlvX2J1c190cmFuc2ZlcnMuYXR0ci5hdHRyLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE5NDpcXHRcXHUwMDI2ZGV2X2F0dHJfbWRpb19idXNfZXJyb3JzLmF0dHIuYXR0cixcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxOTU6XFx0XFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX3dyaXRlcy5hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTk2OlxcdFxcdTAwMjZkZXZfYXR0cl9tZGlvX2J1c19yZWFkcy5hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTk3LVxcdE1ESU9fQlVTX1NUQVRTX0FERFJfQVRUUl9HUk9VUCgwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTIzMS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyMzI6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbWRpb19idXNfc3RhdGlzdGljc19ncm91cCA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yMzMtXFx0Lm5hbWVcXHRcXHQ9IFxcXCJzdGF0aXN0aWNzXFxcIixcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyMzQ6XFx0LmF0dHJzX2NvbnN0XFx0PSBtZGlvX2J1c19zdGF0aXN0aWNzX2F0dHJzLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTIzNS19O1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjIzNjpfX0FUVFJJQlVURV9HUk9VUFMobWRpb19idXNfc3RhdGlzdGljcyk7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjM3LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjIzODpjb25zdCBzdHJ1Y3QgY2xhc3MgbWRpb19idXNfY2xhc3MgPSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MjM5OlxcdC5uYW1lXFx0XFx0PSBcXFwibWRpb19idXNcXFwiLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0MC1cXHQuZGV2X3JlbGVhc2VcXHQ9IG1kaW9idXNfcmVsZWFzZSxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyNDE6XFx0LmRldl9ncm91cHNcXHQ9IG1kaW9fYnVzX3N0YXRpc3RpY3NfZ3JvdXBzLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0Mi19O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjQ0LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI0NTogKiBtZGlvX2J1c19tYXRjaCAtIGRldGVybWluZSBpZiBnaXZlbiBNRElPIGRyaXZlciBzdXBwb3J0cyB0aGUgZ2l2ZW5cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yNDYtICpcXHRcXHQgICAgTURJTyBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI1NC0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyNTU6c3RhdGljIGludCBtZGlvX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTI3ND1zdGF0aWMgaW50IG1kaW9fdWV2ZW50KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjg1LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI4NjpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqY29uc3QgbWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3NfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyODc6XFx0XFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX2RldmljZV90cmFuc2ZlcnMuYXR0ci5hdHRyLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI4ODpcXHRcXHUwMDI2ZGV2X2F0dHJfbWRpb19idXNfZGV2aWNlX2Vycm9ycy5hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6Mjg5OlxcdFxcdTAwMjZkZXZfYXR0cl9tZGlvX2J1c19kZXZpY2Vfd3JpdGVzLmF0dHIuYXR0cixcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyOTA6XFx0XFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX2RldmljZV9yZWFkcy5hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjkxLVxcdE5VTEwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yOTMtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6Mjk0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIG1kaW9fYnVzX2RldmljZV9zdGF0aXN0aWNzX2dyb3VwID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5NS1cXHQubmFtZVxcdFxcdD0gXFxcInN0YXRpc3RpY3NcXFwiLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI5NjpcXHQuYXR0cnNfY29uc3RcXHQ9IG1kaW9fYnVzX2RldmljZV9zdGF0aXN0aWNzX2F0dHJzLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5Ny19O1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI5ODpfX0FUVFJJQlVURV9HUk9VUFMobWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3MpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5OS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzozMDA6Y29uc3Qgc3RydWN0IGJ1c190eXBlIG1kaW9fYnVzX3R5cGUgPSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MzAxOlxcdC5uYW1lXFx0XFx0PSBcXFwibWRpb19idXNcXFwiLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjMwMjpcXHQuZGV2X2dyb3Vwc1xcdD0gbWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3NfZ3JvdXBzLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjMwMzpcXHQubWF0Y2hcXHRcXHQ9IG1kaW9fYnVzX21hdGNoLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTMwNC1cXHQudWV2ZW50XFx0XFx0PSBtZGlvX3VldmVudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTU1Mz1pbnQgX19tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICpidXMsIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTgwLVxcdGJ1cy1cXHUwMDNlZGV2LnBhcmVudCA9IGJ1cy1cXHUwMDNlcGFyZW50O1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU4MTpcXHRidXMtXFx1MDAzZWRldi5jbGFzcyA9IFxcdTAwMjZtZGlvX2J1c19jbGFzcztcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01ODItXFx0YnVzLVxcdTAwM2VkZXYuZ3JvdXBzID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTcyNz1zdHJ1Y3QgbWlpX2J1cyAqbWRpb19maW5kX2J1cyhjb25zdCBjaGFyICptZGlvX25hbWUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03MzAtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzMxOlxcdGQgPSBjbGFzc19maW5kX2RldmljZV9ieV9uYW1lKFxcdTAwMjZtZGlvX2J1c19jbGFzcywgbWRpb19uYW1lKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03MzItXFx0cmV0dXJuIGQgPyB0b19taWlfYnVzKGQpIDogTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTczND1FWFBPUlRfU1lNQk9MKG1kaW9fZmluZF9idXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzM4LSAqIG9mX21kaW9fZmluZF9idXMgLSBHaXZlbiBhbiBtaWlfYnVzIG5vZGUsIGZpbmQgdGhlIG1paV9idXMuXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzM5OiAqIEBtZGlvX2J1c19ucDogUG9pbnRlciB0byB0aGUgbWlpX2J1cy5cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NDAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc0OS0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo3NTA6c3RydWN0IG1paV9idXMgKm9mX21kaW9fZmluZF9idXMoc3RydWN0IGRldmljZV9ub2RlICptZGlvX2J1c19ucClcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzUzLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjc1NDpcXHRpZiAoIW1kaW9fYnVzX25wKVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc1NS1cXHRcXHRyZXR1cm4gTlVMTDtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTYtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzU3OlxcdGQgPSBjbGFzc19maW5kX2RldmljZV9ieV9vZl9ub2RlKFxcdTAwMjZtZGlvX2J1c19jbGFzcywgbWRpb19idXNfbnApO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc1OC1cXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM9MTE5PXN0cnVjdCBtZGlvX2RldmljZSAqbWRpb19kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTI5LVxcdG1kaW9kZXYtXFx1MDAzZWRldi5wYXJlbnQgPSBcXHUwMDI2YnVzLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTMwOlxcdG1kaW9kZXYtXFx1MDAzZWRldi5idXMgPSBcXHUwMDI2bWRpb19idXNfdHlwZTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xMzEtXFx0bWRpb2Rldi1cXHUwMDNlZGV2aWNlX2ZyZWUgPSBtZGlvX2RldmljZV9mcmVlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM9Mjg1PWludCBtZGlvX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kcml2ZXIgKmRydilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTI5MS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoyOTI6XFx0bWRpb2Rydi1cXHUwMDNlZHJpdmVyLmJ1cyA9IFxcdTAwMjZtZGlvX2J1c190eXBlO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTI5My1cXHRtZGlvZHJ2LVxcdTAwM2Vkcml2ZXIucHJvYmUgPSBtZGlvX3Byb2JlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jPTMxNDY9c3RhdGljIGludCBsYW5waHlfcmVhZF9wYWdlX3JlZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcGFnZSwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE0OS1cXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM6MzE1MDpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTUxLVxcdF9fcGh5X3dyaXRlKHBoeWRldiwgTEFOX0VYVF9QQUdFX0FDQ0VTU19DT05UUk9MLCBwYWdlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTU1LVxcdGRhdGEgPSBfX3BoeV9yZWFkKHBoeWRldiwgTEFOX0VYVF9QQUdFX0FDQ0VTU19BRERSRVNTX0RBVEEpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzozMTU2OlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz0zMTYxPXN0YXRpYyBpbnQgbGFucGh5X3dyaXRlX3BhZ2VfcmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MTYgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTYzLXtcXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM6MzE2NDpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTY1LVxcdF9fcGh5X3dyaXRlKHBoeWRldiwgTEFOX0VYVF9QQUdFX0FDQ0VTU19DT05UUk9MLCBwYWdlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTczLVxcdFxcdFxcdCAgIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjMxNzQ6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTc1LVxcdHJldHVybiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM9MzE3OD1zdGF0aWMgaW50IGxhbnBoeV9tb2RpZnlfcGFnZV9yZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHBhZ2UsIHUxNiBhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTMxODItXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjMxODM6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE4NC1cXHRfX3BoeV93cml0ZShwaHlkZXYsIExBTl9FWFRfUEFHRV9BQ0NFU1NfQ09OVFJPTCwgcGFnZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE4OS1cXHRcXHRcXHRcXHQgICBtYXNrLCBzZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzozMTkwOlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz00MjQ9c3RhdGljIGludCB5dHBoeV9yZWFkX2V4dF93aXRoX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00MjctXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjQyODpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00MjktXFx0cmV0ID0geXRwaHlfcmVhZF9leHQocGh5ZGV2LCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzo0MzA6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9NDY0PXN0YXRpYyBpbnQgeXRwaHlfd3JpdGVfZXh0X3dpdGhfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTQ2OC1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NDY5OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTQ3MC1cXHRyZXQgPSB5dHBoeV93cml0ZV9leHQocGh5ZGV2LCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjQ3MTpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTQ3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz01MTM9c3RhdGljIGludCB5dHBoeV9tb2RpZnlfZXh0X3dpdGhfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTUxNy1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NTE4OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTUxOS1cXHRyZXQgPSB5dHBoeV9tb2RpZnlfZXh0KHBoeWRldiwgcmVnbnVtLCBtYXNrLCBzZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzo1MjA6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy01MjEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9OTQwPXN0YXRpYyBpbnQgeXRwaHlfcmdtaWlfY2xrX2RlbGF5X2NvbmZpZ193aXRoX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05NDMtXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjk0NDpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05NDUtXFx0cmV0ID0geXRwaHlfcmdtaWlfY2xrX2RlbGF5X2NvbmZpZyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzo5NDY6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05NDctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTgzMD1zdGF0aWMgaW50IHl0ODUzMV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4NTYtXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4NTc6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTg1OC1cXHRyZXQgPSB5dDg1MzFfc2V0X2RzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4NTk6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODYwLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM9MTUzOD1zdGF0aWMgdm9pZCB2c2M4NTg0X2dldF9iYXNlX2FkZHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE1NDItXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MTU0MzpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE1NDQtXFx0X19waHlfd3JpdGUocGh5ZGV2LCBNU0NDX0VYVF9QQUdFX0FDQ0VTUywgTVNDQ19QSFlfUEFHRV9FWFRFTkRFRCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0xNTUxLVxcdF9fcGh5X3dyaXRlKHBoeWRldiwgTVNDQ19FWFRfUEFHRV9BQ0NFU1MsIE1TQ0NfUEhZX1BBR0VfU1RBTkRBUkQpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjE1NTI6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE1NTMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYz0xNzIzPXN0YXRpYyBpbnQgdnNjODU4NF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMTczMC1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoxNzMxOlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMTczMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE3NzktXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MTc4MDpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMTc4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE4MTYtZXJyOlxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjE4MTc6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE4MTgtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTIwODU9c3RhdGljIGludCB2c2M4NTE0X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yMDkxLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjIwOTI6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yMDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjExNC1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyMTE1OlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yMTE2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjEzNi1lcnI6XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MjEzNzpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjEzOC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz02Mz1zdGF0aWMgdTMyIHZzYzg1eHhfdHNfcmVhZF9jc3Ioc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgZW51bSB0c19ibGsgYmxrLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy04My1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jOjg0OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy04NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTAxLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM6MTAyOlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTEwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM9MTA3PXN0YXRpYyB2b2lkIHZzYzg1eHhfdHNfd3JpdGVfY3NyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGVudW0gdHNfYmxrIGJsayxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTMzLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM6MTM0OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMzUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTE1Ny1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jOjE1ODpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xNTktfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz0xMzA3PXN0YXRpYyBpbnQgX192c2M4NTg0X2luaXRfcHRwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTEzMTMtXFx0aWYgKCF2c2M4NTg0X2lzXzE1ODhfaW5wdXRfY2xrX2NvbmZpZ3VyZWQocGh5ZGV2KSkge1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM6MTMxNDpcXHRcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTMyNS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jOjEzMjY6XFx0XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTMyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYz0yNzY9c3RhdGljIGludCBteGw4NjExMF93cml0ZV9leHRlbmRlZF9yZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYy0yODAtXFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jOjI4MTpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYy0yODItXFx0cmV0ID0gX19teGw4NjExMF93cml0ZV9leHRlbmRlZF9yZWcocGh5ZGV2LCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jOjI4MzpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTI4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYz0yOTk9c3RhdGljIGludCBteGw4NjExMF9yZWFkX2V4dGVuZGVkX3JlZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTMwMi1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDc6NTUuOTU1Njc3NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTAxNTcxNDU0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBUaG91Z2h0IFByb2Nlc3Mgb24gUUNBODA4eCBQSFkgRHJpdmVyIEluc3RhbnRpYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGZpbGUgSSdtIGxvb2tpbmcgYXQgaXMgYGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQgZXhhY3RseSBpcyBgcWNhODA4eGA/XCIgUmlnaHQsIGl0J3MgYSBQSFkgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgYSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBRQ0E4MDgxIEV0aGVybmV0IFBIWSBjaGlwcy4gR290IGl0LlxuXG5Ob3csIGhvdyBkb2VzIHRoaXMgZHJpdmVyLCBsaWtlIGFueSBQSFkgZHJpdmVyLCBhY3R1YWxseSAqZ2V0KiBpbnN0YW50aWF0ZWQgYW5kIHByb2JlZCB3aXRoaW4gYSBMaW51eCBzeXN0ZW0/IEkga25vdyBpdCBoaW5nZXMgb24gdGhlIE1ESU8gYnVzLiBNeSBtaW5kIGp1bXBzIHRvIHRoZSBwcm9jZXNzOiB0aGUgTURJTyBidXMgaXMgc2Nhbm5lZC4gVGhhdCBoYXBwZW5zIGVpdGhlciBhdCBib290LXVwLCBvciB3aGVuIGEgbmV0d29yayBkZXZpY2UgZHJpdmVyLCBsaWtlIHRoZSBgc3RtbWFjYCBvciBgZmVjYCBkcml2ZXJzLCByZWdpc3RlciBhbiBNRElPIGJ1cy4gVGhlbiB0aGUgc3lzdGVtIHNjYW5zIHRob3NlIDMyIGFkZHJlc3NlcyBmb3IgdGhvc2UgYE1JSV9QSFlTSUQxYCBhbmQgYE1JSV9QSFlTSUQyYCBpZGVudGlmaWVycy4gQWx0ZXJuYXRpdmVseSwgdGhlIFBIWSBjYW4gYmUgZGVzY3JpYmVkIGRpcmVjdGx5IHZpYSB0aGUgRGV2aWNlIFRyZWUgYW5kIHJlZ2lzdGVyZWQgd2l0aCBgb2ZfbWRpb2J1c19yZWdpc3RlcmAuXG5cblNvLCB0aGUga2V5IG11c3QgYmUgaW4gdGhlIG1hdGNoaW5nIHByb2Nlc3MuIEknbGwgbmVlZCB0byBjaGVjayBgbWRpb19idXNfbWF0Y2hgLiBMZXQncyBsb29rIGF0IGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AuIEhlcmUncyB0aGUgcmVsZXZhbnQgY29kZTpcblxuYGBgY1xuc3RhdGljIGludCBtZGlvX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG57XG5cdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbyA9IHRvX21kaW9fZGV2aWNlKGRldik7XG5cblx0aWYgKG9mX2RyaXZlcl9tYXRjaF9kZXZpY2UoZGV2LCBkcnYpKVxuXHRcdHJldHVybiAxO1xuXG5cdGlmIChtZGlvLVx1MDAzZWJ1c19tYXRjaClcblx0XHRyZXR1cm4gbWRpby1cdTAwM2VidXNfbWF0Y2goZGV2LCBkcnYpO1xuXG5cdHJldHVybiAwO1xufVxuYGBgXG5cblRoZSBtYXRjaGluZyBzZWVtcyB0byBkZXBlbmQgb24gRGV2aWNlIFRyZWUgbWF0Y2hpbmcsIG9yIHRoZSBgbWRpby1cdTAwM2VidXNfbWF0Y2hgIGZ1bmN0aW9uIHBvaW50ZXIuIFRoaXMgc3RydWN0dXJlLCB3aGVuIHRhbGtpbmcgYWJvdXQgdGhlIGBwaHlfZGV2aWNlYCwgdHJhbnNsYXRlcyBpbnRvIGEgYHBoeV9idXNfbWF0Y2hgIGZ1bmN0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBncmVwIGZvciBgcGh5X2J1c19tYXRjaGAgdG8gc2VlIGhvdyBpdCdzIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzAyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjAwLjk3MTM5NTYyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxOTE1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2J1c19tYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01NDQ9RVhQT1JUX1NZTUJPTF9HUEwoZ2VucGh5X21hdGNoX3BoeV9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NTQ2OnN0YXRpYyBpbnQgcGh5X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz03NDg9c3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NjUtXFx0bWRpb2Rldi1cXHUwMDNlYnVzID0gYnVzO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NzY2OlxcdG1kaW9kZXYtXFx1MDAzZWJ1c19tYXRjaCA9IHBoeV9idXNfbWF0Y2g7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NjctXFx0bWRpb2Rldi1cXHUwMDNlYWRkciA9IGFkZHI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjAxLjAyMDU5MzMzNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNzgwNzk4NTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLlxuXG4qKkRlZXAgRGl2ZTogQ2hlY2tpbmcgYHBoeV9idXNfbWF0Y2hgKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGNvcmUgb2YgdGhpcy4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBwaHlfYnVzX21hdGNoYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBtYXRjaGluZyBpcyBzdXBwb3NlZCB0byBmdW5jdGlvbiBhbmQgdGhlIGNvbnRleHRzIHRoYXQgbWlnaHQgY2F1c2UgaXQgdG8gZmFpbC4gVGhlIHR5cGljYWwgZmFpbHVyZSBtb2RlcyBpbiB0aGlzIGFyZWEgYXJlIHVzdWFsbHkgcmVsYXRlZCB0byBpbmNvcnJlY3QgYWRkcmVzcyBzcGFjZSBhc3NpZ25tZW50cywgcmVzb3VyY2UgY29uZmxpY3RzIG9yLCBsZXNzIGNvbW1vbmx5LCBkcml2ZXIgY29uZmlndXJhdGlvbiBlcnJvcnMuXG5cbkknbGwgd2FudCB0byByZXZpZXcgdGhlIGV4YWN0IGxvZ2ljIG9mIHRoZSBmdW5jdGlvbi4gSXMgaXQgcmVseWluZyBvbiBzb21ldGhpbmcgdGhhdCBtaWdodCBiZSBvdXRkYXRlZCBvciBpbmNvcnJlY3Q/IEFyZSB0aGVyZSBzcGVjaWZpYyBoYXJkd2FyZSBmbGFncyBvciBjYXBhYmlsaXRpZXMgdGhhdCB0aGUgbWF0Y2hpbmcgaXMga2V5ZWQgb24/IElzIHRoZSBtYXRjaGluZyBhbGdvcml0aG0gdG9vIHN0cmljdCwgcHJldmVudGluZyBsZWdpdGltYXRlIGRldmljZXMgZnJvbSBiZWluZyBpZGVudGlmaWVkLCBvciB0b28gbG9vc2UsIGFsbG93aW5nIHBvdGVudGlhbGx5IGluY29tcGF0aWJsZSBkZXZpY2VzIHRvIGJlIGluY29ycmVjdGx5IGFzc29jaWF0ZWQ/IEknbGwgbmVlZCB0byBrbm93IHdoYXQga2luZCBvZiBkZXZpY2UgaXQncyBzdXBwb3NlZCB0byBiZSBtYXRjaGluZy4gSXMgdGhlcmUgYW55IGV4aXN0aW5nIGRvY3VtZW50YXRpb24gb3IgYXNzb2NpYXRlZCB0ZXN0IGNhc2VzIEkgY2FuIHJlbHkgb24/XG5cbkkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBjcml0aWNhbCBkZXBlbmRlbmNpZXMgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZXkgYXJlIGFjY291bnRlZCBmb3IuIEFsc28sIGFueSByZWNlbnQgY2hhbmdlcyBvciBjb21taXRzIGluIHRoZSBjb2RlIGJhc2UgdGhhdCBpbnZvbHZlIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBvZiBpbW1lZGlhdGUgaW50ZXJlc3QuIFRoaXMgaGFzIHByb2JhYmx5IGJlZW4gdGhlIGNhdXNlIG9mIGFueSByZXBvcnRlZCBmYWlsdXJlcy4gRmluYWxseSwgSSdsbCBrZWVwIGFuIG9wZW4gbWluZCBmb3IgYW55IGVkZ2UgY2FzZXMgdGhhdCBtaWdodCBiZSB0aGUgY2F1c2UgZm9yIGEgcmVncmVzc2lvbiBpbiBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODc3MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjAzLjgwMTM5NDg3NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NDYsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1NDY6XFx0c3RhdGljIGludCBwaHlfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG4gNTQ3OlxcdHtcXG4gNTQ4OlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XFxuIDU0OTpcXHRcXHRjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2ID0gdG9fcGh5X2RyaXZlcihkcnYpO1xcbiA1NTA6XFx0XFxuIDU1MTpcXHRcXHRpZiAoIShwaHlkcnYtXFx1MDAzZW1kaW9kcnYuZmxhZ3MgXFx1MDAyNiBNRElPX0RFVklDRV9JU19QSFkpKVxcbiA1NTI6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDU1MzpcXHRcXG4gNTU0OlxcdFxcdGlmIChwaHlkcnYtXFx1MDAzZW1hdGNoX3BoeV9kZXZpY2UpXFxuIDU1NTpcXHRcXHRcXHRyZXR1cm4gcGh5ZHJ2LVxcdTAwM2VtYXRjaF9waHlfZGV2aWNlKHBoeWRldiwgcGh5ZHJ2KTtcXG4gNTU2OlxcdFxcbiA1NTc6XFx0XFx0cmV0dXJuIGdlbnBoeV9tYXRjaF9waHlfZGV2aWNlKHBoeWRldiwgcGh5ZHJ2KTtcXG4gNTU4OlxcdH1cXG4gNTU5OlxcdFxcbiA1NjA6XFx0c3RhdGljIHNzaXplX3RcXG4gNTYxOlxcdHBoeV9pZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4gNTYyOlxcdHtcXG4gNTYzOlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XFxuIDU2NDpcXHRcXG4gNTY1OlxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JS44bHhcXFxcblxcXCIsICh1bnNpZ25lZCBsb25nKXBoeWRldi1cXHUwMDNlcGh5X2lkKTtcXG4gNTY2OlxcdH1cXG4gNTY3OlxcdHN0YXRpYyBERVZJQ0VfQVRUUl9STyhwaHlfaWQpO1xcbiA1Njg6XFx0XFxuIDU2OTpcXHRzdGF0aWMgc3NpemVfdFxcbiA1NzA6XFx0cGh5X2ludGVyZmFjZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4gNTcxOlxcdHtcXG4gNTcyOlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XFxuIDU3MzpcXHRcXHRjb25zdCBjaGFyICptb2RlID0gTlVMTDtcXG4gNTc0OlxcdFxcbiA1NzU6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfaW50ZXJuYWwpXFxuIDU3NjpcXHRcXHRcXHRtb2RlID0gXFxcImludGVybmFsXFxcIjtcXG4gNTc3OlxcdFxcdGVsc2VcXG4gNTc4OlxcdFxcdFxcdG1vZGUgPSBwaHlfbW9kZXMocGh5ZGV2LVxcdTAwM2VpbnRlcmZhY2UpO1xcbiA1Nzk6XFx0XFxuIDU4MDpcXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIlc1xcXFxuXFxcIiwgbW9kZSk7XFxuIDU4MTpcXHR9XFxuIDU4MjpcXHRzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X2ludGVyZmFjZSk7XFxuIDU4MzpcXHRcXG4gNTg0OlxcdHN0YXRpYyBzc2l6ZV90XFxuIDU4NTpcXHRwaHlfaGFzX2ZpeHVwc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjAzLjgwMTU2NTIwNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxOTA1ODM2OTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gQnVzIEVtdWxhdGlvbiBhbmQgdGhlIFFDQTgwODEgUEhZKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgb3IgdmlydHVhbCBlbnZpcm9ubWVudCBvdXQgdGhlcmUgdGhhdCBjYW4gZW11bGF0ZSBhbiBNRElPIGJ1cywgc3BlY2lmaWNhbGx5IHdpdGggYSBRQ0E4MDgxIFBIWS4gTXkgdXN1YWwgc2VhcmNoIHRlcm1zIGhhdmVuJ3QgdHVybmVkIHVwIGFueXRoaW5nIGRlZmluaXRpdmUgeWV0LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGEga2V5IHBpZWNlIG9mIHRlcm1pbm9sb2d5IG9yIGEgc3VidGxlIHByb2plY3QuXG5cblRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgKmhvdyogYFFDQTgwODFfUEhZX0lEYCBpcyBiZWluZyB1c2VkIGluIGNvZGUgb3IgY29uZmlndXJhdGlvbnMuIFRoYXQgaWRlbnRpZmllciBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBpbnRlZ3JhdGlvbiBwb2ludHMgYW5kIGRlcGVuZGVuY2llcy4gT25jZSBJJ3ZlIGdvdCB0aGF0LCBJIHNob3VsZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBpdCBhbGwgd29ya3MhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzQ4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODowNS43MDc0MDUxNTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTgyNjk5ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUUNBODA4MV9QSFlfSURcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTg3LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo4ODojZGVmaW5lIFFDQTgwODFfUEhZX0lEXFx0XFx0XFx0XFx0MHgwMDRkZDEwMVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy04OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz02NDk9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwOHhfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUxLVxcdC8qIFF1YWxjb21tIFFDQTgwODEgKi9cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjUyOlxcdFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MDgxX1BIWV9JRCksXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY1My1cXHQubmFtZVxcdFxcdFxcdD0gXFxcIlF1YWxjb21tIFFDQTgwODFcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY4ND1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHFjYTgwOHhfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY4NTpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MDgxX1BIWV9JRCkgfSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjg2LVxcdHsgfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODowNy40MjU2ODE4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjYwOTc4NjYxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgQXR0YWNrIFN1cmZhY2UgZm9yIHRoZSBRQ0E4MDgxIFBIWSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgYFFDQTgwODFfUEhZX0lEYCBzZWVtcyB0byBiZSBzb2xlbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgIGZpbGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIG9yIGEgdXNlciBydW5uaW5nIHdpdGhpbiBhIHZpcnR1YWwgbWFjaGluZSBsaWtlIFFFTVUgb3IgR0NFIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBkcml2ZXI/IElzIHRoZXJlIGFueSB3YXkgZm9yIHRoZW0gdG8gaW50ZXJhY3Qgd2l0aCBpdCwgdG8gaW5zdGFudGlhdGUgaXQsIG9yIHRyaWdnZXIgaXRzIGV4ZWN1dGlvbj8gVGhhdCdzIHRoZSBjcml0aWNhbCBxdWVzdGlvbi5cblxuVG8gZmlndXJlIHRoaXMgb3V0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBNeSBwbGFuIGlzIHRvIGludmVzdGlnYXRlIHdoZXRoZXIgdXNlcnNwYWNlIGhhcyB0aGUgY2FwYWJpbGl0eSB0byBjcmVhdGUgTURJTyBvciBQSFkgZGV2aWNlcy4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3lzZnMgaW50ZXJmYWNlcywgaW9jdGxzLCBuZXRsaW5rIGludGVyYWN0aW9ucywgb3IgY29uZmlnZnMgY29uZmlndXJhdGlvbnMgdGhhdCB3b3VsZCBhbGxvdyB0aGlzLiBCYXNpY2FsbHksIEkgd2FudCB0byB0cmFjZSBhIHBhdGggZnJvbSB1c2Vyc3BhY2UgdG8gdGhlIHJlZ2lzdHJhdGlvbiBhbmQgaW5zdGFudGlhdGlvbiBvZiB0aGlzIHNwZWNpZmljIFBIWSBkcml2ZXIuXG5cblNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIGV4YW1pbmUgaG93IGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCwgYW5kIGBtZGlvYnVzX3JlZ2lzdGVyYCBhcmUgdXNlZCBhY3Jvc3MgdGhlIGVudGlyZSBrZXJuZWwuIFRoaXMgc2hvdWxkIGhlbHAgbWUgZGV0ZXJtaW5lIHdoYXQgbWVjaGFuaXNtcyBleGlzdCBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGVzZSBQSFktcmVsYXRlZCBvYmplY3RzIGFuZCB3aGV0aGVyIGFueSBvZiB0aG9zZSBtZWNoYW5pc21zIGNvdWxkIHBvc3NpYmx5IGJlIGxldmVyYWdlZCB0byB0cmlnZ2VyIHRoZSBgcWNhODA4eGAgZHJpdmVyJ3MgY29kZSBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzNDgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDg6MTMuNTIzNTUxNzE5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc2OTEyMzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kZXZpY2VfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz05MzE9c3RhdGljIGludCB4Z2JlX3BoeV9maW5kX3BoeV9kZXZpY2Uoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5NzY6XFx0cmV0ID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTc3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk3ODpcXHRcXHRuZXRkZXZfZXJyKHBkYXRhLVxcdTAwM2VuZXRkZXYsIFxcXCJwaHlfZGV2aWNlX3JlZ2lzdGVyIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05NzktXFx0XFx0cGh5X2RldmljZV9mcmVlKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jPTcxNj1obnNfbWFjX3JlZ2lzdGVyX3BoeWRldihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGhuc19tYWNfY2IgKm1hY19jYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWFjLmMtNzQ0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWFjLmM6NzQ1OlxcdHJjID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWFjLmMtNzQ2LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jPTE5Mjk9c3RhdGljIGludCBuZXRzZWNfcmVnaXN0ZXJfbWRpbyhzdHJ1Y3QgbmV0c2VjX3ByaXYgKnByaXYsIHUzMiBwaHlfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYzoxOTg0OlxcdFxcdHJldCA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk4NS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk4OC1cXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmM6MTk4OTpcXHRcXHRcXHRcXHRcXFwicGh5X2RldmljZV9yZWdpc3RlciBlcnIoJWQpXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTkwLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYz00Mj1md25vZGVfZmluZF9taWlfdGltZXN0YW1wZXIoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy02OS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6NzA6aW50IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTcxLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEwMy1cXHQgKi9cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTA0OlxcdHJjID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMDUtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTE0LX1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTE1OkVYUE9SVF9TWU1CT0woZndub2RlX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTExNi1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9MTE3PWludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNDktXFx0XFx0LyogQWxsIGRhdGEgaXMgbm93IHN0b3JlZCBpbiB0aGUgcGh5IHN0cnVjdCwgc28gcmVnaXN0ZXIgaXQgKi9cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTUwOlxcdFxcdHJjID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNTEtXFx0XFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTU2LVxcdH0gZWxzZSBpZiAoaXNfb2Zfbm9kZShjaGlsZCkpIHtcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTU3OlxcdFxcdHJjID0gZndub2RlX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihidXMsIHBoeSwgY2hpbGQsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNTgtXFx0XFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmM9MjYzPXN0cnVjdCBwaHlfZGV2aWNlICp4Z2VuZV9lbmV0X3BoeV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYy0yNzAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmM6MjcxOlxcdGlmIChwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeV9kZXYpKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby14Z2VuZS5jLTI3Mi1cXHRcXHRwaHlfZGV2aWNlX2ZyZWUocGh5X2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0zMj1zdGF0aWMgaW50IG9mX2dldF9waHlfaWQoc3RydWN0IGRldmljZV9ub2RlICpkZXZpY2UsIHUzMiAqcGh5X2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzYtXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6Mzc6aW50IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zOC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zOS17XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDA6XFx0cmV0dXJuIGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIobWRpbywgcGh5LFxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxLVxcdFxcdFxcdFxcdFxcdFxcdCAgb2ZfZndub2RlX2hhbmRsZShjaGlsZCksXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00My19XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDQ6RVhQT1JUX1NZTUJPTChvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTEzMT1zdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTYyLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNjM6XFx0cmV0ID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNjQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NDA4PXN0YXRpYyBzdHJ1Y3QgcGh5X2RldmljZSAqbWRpb2J1c19zY2FuKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGM0NSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQzNy1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0Mzg6XFx0ZXJyID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQzOS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYz01NTE9c3RhdGljIHZvaWQgdGphMTEwMl9wMV9yZWdpc3RlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTctXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTk4OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihidXMsIHBoeSwgY2hpbGQsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5OS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTExMDM9RVhQT1JUX1NZTUJPTChnZXRfcGh5X2RldmljZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDUtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTA2OiAqIHBoeV9kZXZpY2VfcmVnaXN0ZXIgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDctICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTA4LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTEwOTppbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTExMC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExNDEtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTE0MjpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTE0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTE0OC0gKiBUaGlzIGRvZXNuJ3QgZnJlZSB0aGUgcGh5X2RldmljZSBpdHNlbGYsIGl0IG1lcmVseSByZXZlcnNlcyB0aGUgZWZmZWN0c1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTE0OTogKiBvZiBwaHlfZGV2aWNlX3JlZ2lzdGVyKCkuIFVzZSBwaHlfZGV2aWNlX2ZyZWUoKSB0byBmcmVlIHRoZSBkZXZpY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExNTAtICogYWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jPTIxMDU9c3RhdGljIGludCBzZnBfc21fcHJvYmVfcGh5KHN0cnVjdCBzZnAgKnNmcCwgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTIxMjAtXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjIxMjE6XFx0ZXJyID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMTIyLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjEyMy1cXHRcXHRwaHlfZGV2aWNlX2ZyZWUocGh5KTtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM6MjEyNDpcXHRcXHRkZXZfZXJyKHNmcC1cXHUwMDNlZGV2LCBcXFwicGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWQ6ICVwZVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjEyNS1cXHRcXHRcXHRFUlJfUFRSKGVycikpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTExLSNpZiBJU19FTkFCTEVEKENPTkZJR19GV05PREVfTURJTylcXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmg6MTI6aW50IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTEzLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oPTE2PWludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4tLVxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xOS0jZWxzZSAvKiBDT05GSUdfRldOT0RFX01ESU8gKi9cXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmg6MjA6aW50IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTIxLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg9NDk9Ym9vbCBvZl9waHlfaXNfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDo1MDppbnQgb2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTUxLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQsIHUzMiBhZGRyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTE0MD1zdGF0aWMgaW5saW5lIGJvb2wgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTE0NC1cXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDoxNDU6c3RhdGljIGlubGluZSBpbnQgb2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTE0Ni1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9MjE1OT1zdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KTtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjIxNjA6aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSk7XFxuaW5jbHVkZS9saW51eC9waHkuaC0yMTYxLXZvaWQgcGh5X2RldmljZV9mcmVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODoxNS4yMDA0NzE2MTNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjI4NzYyMjcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiBhIFFDQTgwODEgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBhIHBhdGNoIGFmZmVjdGluZyB0aGUgYG1kaW9idXNfc2NhbmAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgUEhZLCBpcyB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGUgY2hhbmdlcyBhcmUgKnJlYWNoYWJsZSogY29kZS5cblxuRmlyc3QsIHRoZSBgbWRpb2J1c19zY2FuYCBmdW5jdGlvbiByZWFkcyBQSFkgSURzIChNSUlfUEhZU0lEMSwgTUlJX1BIWVNJRDIpIHRvIGlkZW50aWZ5IGNvbm5lY3RlZCBQSFlzLiBUaGUgUUNBODA4MSBpcyBhIHBoeXNpY2FsIFBIWSwgdHlwaWNhbGx5IGZvdW5kIG9uIFF1YWxjb21tIG5ldHdvcmtpbmcgU29DcyBsaWtlIHRoZSBJUFE1MDE4LCBJUFE4MDc0LCBvciByb3V0ZXIgYm9hcmRzIHdpdGggdGhhdCBzcGVjaWZpYyBjaGlwLCB3aXJlZCB2aWEgTURJTyBhbmQgU0dNSUkvMjUwMEJhc2VYLlxuXG5Ob3cgdGhlIHF1ZXN0aW9uIGlzLCAqY2FuIEkgcmVhY2ggdGhpcyBQSFkgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyogTm8sIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBRQ0E4MDgxLiBJdCBlbXVsYXRlcyBzdGFuZGFyZCBOSUNzLiBBbmQgd2hhdCBhYm91dCBVU0IgRXRoZXJuZXQ/IFdoaWxlIHNvbWUgVVNCIGFkYXB0ZXJzIHVzZSBpbnRlcm5hbCBQSFlzLCB0aGUgUUNBODA4MSBpcyBub3Qgb25lIG9mIHRoZW0uIFVTQiBnYWRnZXQgYWxzbyBkb2Vzbid0IHByb3ZpZGUgZW11bGF0aW9uIG9mIE1ESU8gUEhZcy5cblxuQ291bGQgSSByZWFjaCB0aGUgUUNBODA4MSB2aWEgYSBtb2NrIE1ESU8gYnVzIG9yIG5ldGRldj8gSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJ3MgYSB2aXJ0dWFsIE1ESU8gYnVzIG9yIGR1bW15IFBIWSBhbmQgaWYgdGhlIFBIWSBkcml2ZXIgaXMgY29uc2lkZXJlZCBoYXJkd2FyZS1zcGVjaWZpYy5cblxuTGV0J3MgcmVmZXIgdG8gdGhlIGluc3RydWN0aW9ucyBmb3IgdGhlIGZ1enppbmcgYW5hbHlzaXMuIEkgbmVlZCB0byBjaGVjayBmb3IgdGhlIG5lZ2F0aXZlIGFuZCBwb3NpdGl2ZSBjcml0ZXJpYSB0aGF0IGRldGVybWluZSBmdXp6aW5nIHdvcnRoaW5lc3MuXG5cblRoZSBpbnN0cnVjdGlvbnMgc2F5IHRoYXQgaXQncyAqbm90KiB3b3J0aCBmdXp6aW5nIGlmIHRoZSBjb2RlIGZhbGxzIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzLiBJIG5lZWQgdG8gZm9jdXMgb24gXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIjogXCJWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiXG5cbklzIFFDQTgwODEgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIj8gTGV0J3MgdmVyaWZ5IHdoYXQgdGhlIFFDQTgwODEgaXMuIEl0J3MgYSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVyLiBJIHNob3VsZCBub3cgY2hlY2sgdGhlIGRyaXZlciBjb2RlIGluIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgIHRvIHNlZSBob3cgaXQncyBpbXBsZW1lbnRlZC4gVGhlbiBJIGNhbiBkZXRlcm1pbmUgaWYgaXQgZmFsbHMgdW5kZXIgdGhlIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY2F0ZWdvcnkgc2luY2UgSSBrbm93IGl0J3MgYSBwaHlzaWNhbCBjaGlwIGFuZCBJIGNhbm5vdCByZWFjaCBpdCB1c2luZyBzdGFuZGFyZCBRRU1VLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk0OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODoyMS40ODgwOTc1MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCtcXG4gICAyOlxcdFxcbiAgIDM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDU6XFx0XFxuICAgNjpcXHQjaW5jbHVkZSBcXFwicWNvbS5oXFxcIlxcbiAgIDc6XFx0XFxuICAgODpcXHQvKiBBREMgdGhyZXNob2xkICovXFxuICAgOTpcXHQjZGVmaW5lIFFDQTgwOFhfUEhZX0RFQlVHX0FEQ19USFJFU0hPTERcXHRcXHQweDJjODBcXG4gIDEwOlxcdCNkZWZpbmUgUUNBODA4WF9BRENfVEhSRVNIT0xEX01BU0tcXHRcXHRHRU5NQVNLKDcsIDApXFxuICAxMTpcXHQjZGVmaW5lIFFDQTgwOFhfQURDX1RIUkVTSE9MRF84ME1WXFx0XFx0MFxcbiAgMTI6XFx0I2RlZmluZSBRQ0E4MDhYX0FEQ19USFJFU0hPTERfMTAwTVZcXHRcXHQweGYwXFxuICAxMzpcXHQjZGVmaW5lIFFDQTgwOFhfQURDX1RIUkVTSE9MRF8yMDBNVlxcdFxcdDB4MGZcXG4gIDE0OlxcdCNkZWZpbmUgUUNBODA4WF9BRENfVEhSRVNIT0xEXzMwME1WXFx0XFx0MHhmZlxcbiAgMTU6XFx0XFxuICAxNjpcXHQvKiBDTEQgY29udHJvbCAqL1xcbiAgMTc6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0FERFJfQ0xEX0NUUkw3XFx0XFx0MHg4MDA3XFxuICAxODpcXHQjZGVmaW5lIFFDQTgwOFhfODAyM0FaX0FGRV9DVFJMX01BU0tcXHRcXHRHRU5NQVNLKDgsIDQpXFxuICAxOTpcXHQjZGVmaW5lIFFDQTgwOFhfODAyM0FaX0FGRV9FTlxcdFxcdFxcdDB4OTBcXG4gIDIwOlxcdFxcbiAgMjE6XFx0LyogQVogY29udHJvbCAqL1xcbiAgMjI6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0FaX1RSQUlOSU5HX0NUUkxcXHQweDgwMDhcXG4gIDIzOlxcdCNkZWZpbmUgUUNBODA4WF9NTUQzX0FaX1RSQUlOSU5HX1ZBTFxcdFxcdDB4MWMzMlxcbiAgMjQ6XFx0XFxuICAyNTpcXHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDFfTVNFX1RIUkVTSE9MRF8yMERCXFx0MHg4MDE0XFxuICAyNjpcXHQjZGVmaW5lIFFDQTgwOFhfTVNFX1RIUkVTSE9MRF8yMERCX1ZBTFVFXFx0MHg1MjlcXG4gIDI3OlxcdFxcbiAgMjg6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQxX01TRV9USFJFU0hPTERfMTdEQlxcdDB4ODAwRVxcbiAgMjk6XFx0I2RlZmluZSBRQ0E4MDhYX01TRV9USFJFU0hPTERfMTdEQl9WQUxVRVxcdDB4MzQxXFxuICAzMDpcXHRcXG4gIDMxOlxcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EMV9NU0VfVEhSRVNIT0xEXzI3REJcXHQweDgwMUVcXG4gIDMyOlxcdCNkZWZpbmUgUUNBODA4WF9NU0VfVEhSRVNIT0xEXzI3REJfVkFMVUVcXHQweDQxOVxcbiAgMzM6XFx0XFxuICAzNDpcXHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDFfTVNFX1RIUkVTSE9MRF8yOERCXFx0MHg4MDIwXFxuICAzNTpcXHQjZGVmaW5lIFFDQTgwOFhfTVNFX1RIUkVTSE9MRF8yOERCX1ZBTFVFXFx0MHgzNDFcXG4gIDM2OlxcdFxcbiAgMzc6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQ3X1RPUF9PUFRJT04xXFx0XFx0MHg5MDFjXFxuICAzODpcXHQjZGVmaW5lIFFDQTgwOFhfVE9QX09QVElPTjFfREFUQVxcdFxcdDB4MFxcbiAgMzk6XFx0XFxuICA0MDpcXHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDNfREVCVUdfMVxcdFxcdDB4YTEwMFxcbiAgNDE6XFx0I2RlZmluZSBRQ0E4MDhYX01NRDNfREVCVUdfMV9WQUxVRVxcdFxcdDB4OTIwM1xcbiAgNDI6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0RFQlVHXzJcXHRcXHQweGExMDFcXG4gIDQzOlxcdCNkZWZpbmUgUUNBODA4WF9NTUQzX0RFQlVHXzJfVkFMVUVcXHRcXHQweDQ4YWRcXG4gIDQ0OlxcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EM19ERUJVR18zXFx0XFx0MHhhMTAzXFxuICA0NTpcXHQjZGVmaW5lIFFDQTgwOFhfTU1EM19ERUJVR18zX1ZBTFVFXFx0XFx0MHgxNjk4XFxuICA0NjpcXHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDNfREVCVUdfNFxcdFxcdDB4YTEwNVxcbiAgNDc6XFx0I2RlZmluZSBRQ0E4MDhYX01NRDNfREVCVUdfNF9WQUxVRVxcdFxcdDB4ODAwMVxcbiAgNDg6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0RFQlVHXzVcXHRcXHQweGExMDZcXG4gIDQ5OlxcdCNkZWZpbmUgUUNBODA4WF9NTUQzX0RFQlVHXzVfVkFMVUVcXHRcXHQweDExMTFcXG4gIDUwOlxcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EM19ERUJVR182XFx0XFx0MHhhMDExXFxuICA1MTpcXHQjZGVmaW5lIFFDQTgwOFhfTU1EM19ERUJVR182X1ZBTFVFXFx0XFx0MHg1Zjg1XFxuICA1MjpcXHRcXG4gIDUzOlxcdC8qIG1hc3Rlci9zbGF2ZSBzZWVkIGNvbmZpZyAqL1xcbiAgNTQ6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9ERUJVR19MT0NBTF9TRUVEXFx0XFx0OVxcbiAgNTU6XFx0I2RlZmluZSBRQ0E4MDhYX01BU1RFUl9TTEFWRV9TRUVEX0VOQUJMRVxcdEJJVCgxKVxcbiAgNTY6XFx0I2RlZmluZSBRQ0E4MDhYX01BU1RFUl9TTEFWRV9TRUVEX0NGR1xcdFxcdEdFTk1BU0soMTIsIDIpXFxuICA1NzpcXHQjZGVmaW5lIFFDQTgwOFhfTUFTVEVSX1NMQVZFX1NFRURfUkFOR0VcXHRcXHQweDMyXFxuICA1ODpcXHRcXG4gIDU5OlxcdC8qIEhpYmVybmF0aW9uIHlpZWxkcyBsb3dlciBwb3dlciBjb25zdW1waXRvbiBpbiBjb250cmFzdCB3aXRoIG5vcm1hbCBvcGVyYXRpb24gbW9kZS5cXG4gIDYwOlxcdCAqIHdoZW4gdGhlIGNvcHBlciBjYWJsZSBpcyB1bnBsdWdnZWQsIHRoZSBQSFkgZW50ZXJzIGludG8gaGliZXJuYXRpb24gbW9kZSBpbiBhYm91dCAxMHMuXFxuICA2MTpcXHQgKi9cXG4gIDYyOlxcdCNkZWZpbmUgUUNBODA4WF9EQkdfQU5fVEVTVFxcdFxcdFxcdDB4YlxcbiAgNjM6XFx0I2RlZmluZSBRQ0E4MDhYX0hJQkVSTkFUSU9OX0VOXFx0XFx0XFx0QklUKDE1KVxcbiAgNjQ6XFx0XFxuICA2NTpcXHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRUQyX0NUUkxcXHRcXHRcXHQweDgwNzRcXG4gIDY2OlxcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRDJfRk9SQ0VfQ1RSTFxcdFxcdDB4ODA3NVxcbiAgNjc6XFx0I2RlZmluZSBRQ0E4MDhYX01NRDdfTEVEMV9DVFJMXFx0XFx0XFx0MHg4MDc2XFxuICA2ODpcXHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRUQxX0ZPUkNFX0NUUkxcXHRcXHQweDgwNzdcXG4gIDY5OlxcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRDBfQ1RSTFxcdFxcdFxcdDB4ODA3OFxcbiAgNzA6XFx0I2RlZmluZSBRQ0E4MDhYX01NRDdfTEVEX0NUUkwoeClcXHRcXHQoMHg4MDc4IC0gKCh4KSAqIDIpKVxcbiAgNzE6XFx0XFxuICA3MjpcXHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRUQwX0ZPUkNFX0NUUkxcXHRcXHQweDgwNzlcXG4gIDczOlxcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKHgpXFx0XFx0KDB4ODA3OSAtICgoeCkgKiAyKSlcXG4gIDc0OlxcdFxcbiAgNzU6XFx0I2RlZmluZSBRQ0E4MDhYX01NRDdfTEVEX1BPTEFSSVRZX0NUUkxcXHRcXHQweDkwMWFcXG4gIDc2OlxcdC8qIFFTREsgc2V0cyBieSBkZWZhdWx0IDB4NDYgdG8gdGhpcyByZWcgdGhhdCBzZXRzIEJJVCA2IGZvclxcbiAgNzc6XFx0ICogTEVEIHRvIGFjdGl2ZSBoaWdoLiBJdCdzIG5vdCBjbGVhciB3aGF0IEJJVCAzIGFuZCBCSVQgNCBkb2VzLlxcbiAgNzg6XFx0ICovXFxuICA3OTpcXHQjZGVmaW5lIFFDQTgwOFhfTEVEX0FDVElWRV9ISUdIXFx0XFx0XFx0QklUKDYpXFxuICA4MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDg6MjEuNDg4MTkzNjVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTM1MDcyNjI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbnZlc3RpZ2F0aW9uIGludG8gdGhlIFFDQTgwOHggUEhZIFByb2JlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgcWNhODA4eGAgUEhZIGdldHMgaW5pdGlhbGl6ZWQuIEZpcnN0LCB0aGUgY29kZSBzbmlwcGV0IGZyb20gbGluZSAxODEgc2hvd3MgdGhlIGBxY2E4MDh4X3Byb2JlYCBmdW5jdGlvbi4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYWxsb2NhdGUgc29tZSBwcml2YXRlIGRhdGEgKGBxY2E4MDh4X3ByaXZgKSwgaW5pdGlhbGl6ZSBgbGVkX3BvbGFyaXR5X21vZGVgIHRvIC0xLCBhbmQgYXR0YWNoIHRoZSBwcml2YXRlIGRhdGEgdG8gdGhlIGBwaHlfZGV2aWNlYC4gTm90aGluZyB0b28gZXhjaXRpbmcgdGhlcmUuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0IHRyaWdnZXJzICp0aGlzKiBmdW5jdGlvbiB0byBydW4/IFRoYXQncyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCB0aGUgcHJvYmUgbWVjaGFuaXNtIGZvciBgcGh5X2RyaXZlcmAuIFNvLCBgcGh5X2RyaXZlcl9yZWdpc3RlcmAgZ2V0cyB0aGUgYmFsbCByb2xsaW5nLiBUaGlzIHJlZ2lzdGVycyB0aGUgYHBoeV9kcml2ZXJgIHdpdGggdGhlIGBtZGlvX2J1c190eXBlYC4gTWFrZXMgc2Vuc2UuIE5vdywgZm9yIGFuIGFjdHVhbCBgcGh5X2RldmljZWAgdG8gY29tZSBpbnRvIGV4aXN0ZW5jZSBhbmQgZ2V0IHByb3Blcmx5IGJvdW5kLCBhIGZldyB0aGluZ3MgbmVlZCB0byBoYXBwZW4uXG5cbkZpcnN0LCBhbiBNRElPIGJ1cyBoYXMgdG8gYmUgcmVnaXN0ZXJlZCB1c2luZyBgbWRpb2J1c19yZWdpc3RlcmAuICBUaGVuLCB0aGF0IE1ESU8gYnVzIG5lZWRzIHRvIGRvIGl0cyBqb2I6IHNjYW4gb3IgZW51bWVyYXRlIGRldmljZXMuIFRoZSBgbWRpb2J1c19zY2FuYCBmdW5jdGlvbiBpcyB0aGUga2V5IGhlcmUuIEl0IHJlYWRzIE1NRC9NSUkgcmVnaXN0ZXJzIGZyb20gdGhlIGhhcmR3YXJlLCBsb29raW5nIGF0IGFkZHJlc3NlcyAwIHRocm91Z2ggMzEuICBJZiB0aGUgdmFsdWVzIGluIGBNSUlfUEhZU0lEMWAgYW5kIGBNSUlfUEhZU0lEMmAgbWF0Y2ggYFFDQTgwODFfUEhZX0lEYCAoMHgwMDRkZDEwMSksIHRoZSBzeXN0ZW0gYWxsb2NhdGVzIGEgYHBoeV9kZXZpY2VgIGFuZCByZWdpc3RlcnMgaXQuIEVzc2VudGlhbGx5LCBpdCBmaW5kcyBpdCB2aWEgdGhlIGhhcmR3YXJlLlxuXG5BbHRlcm5hdGl2ZWx5LCB0aGUgZGV2aWNlIHRyZWUgY291bGQgcGxheSBhIHJvbGUuIERldmljZSBUcmVlIG5vZGVzIGNhbiBkZXNjcmliZSB0aGUgTURJTyBidXMgYW5kIFBIWSBjaGlsZCBub2Rlcy4gQSBgY29tcGF0aWJsZWAgc3RyaW5nIGxpa2UgXCJldGhlcm5ldC1waHktaWQwMDRkLmQxMDFcIiB3b3VsZCBmbGFnIHRoZSBQSFkuIFRoZSBNRElPIGJ1cyBjb250cm9sbGVyIHBhcnNlcyB0aGUgZGV2aWNlIHRyZWUsIGFuZCB0aGF0J3Mgd2hlbiB0aGUgUEhZIHdvdWxkIGJlIHByb2JlZC5cblxuTm93LCBhIGNydWNpYWwgcXVlc3Rpb24sIGFuZCB0aGlzIGlzIHdoZXJlIEkgc3RhcnQgdG8gZ2V0IHJlYWxseSBjdXJpb3VzLCBpcyB3aGV0aGVyIHRoZXJlJ3MgYW55ICpzb2Z0d2FyZSogTURJTyBkcml2ZXIgb3IgdmlydHVhbCBkZXZpY2UgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgdGhhdCBhY3R1YWxseSBjcmVhdGVzIGEgUUNBODA4MSBQSFkuIEkgY2FuJ3QgaW1hZ2luZSB0aGlzIGV4aXN0aW5nIHdpdGhvdXQgYSBzcGVjaWZpYyBkcml2ZXIsIHNvIEkgbmVlZCB0byBjaGVjayBhbGwgb2NjdXJyZW5jZXMgb2YgXCJtZGlvYnVzXCIgdG8gc2VlIGlmIHRoZXJlJ3Mgc29tZSBraW5kIG9mIHZpcnR1YWwgb3IgZW11bGF0ZWQgbmV0ZGV2IG9yIE1ESU8gYnVzIHNldCB1cC4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSdzIGFueSBzaW11bGF0aW9uIHRoYXQncyByZWxldmFudCB0byB0aGlzIHByb2JlIHNlcXVlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzMxOCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjI2LjgzODkyMzI4M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NjQ1ODMxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvYnVzX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEzOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0PTM0OT1NRElPXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUxLSAgZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTI6ICBkZXZtX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdDoxMzpgYGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeSgpYGApLiBNQUMtc2lkZSBjb25uZWN0aW9uIHByb3BlcnRpZXMgc3VjaCBhc1xcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0LTE0LWBgcGh5LWhhbmRsZWBgIGFuZCBgYHBoeS1tb2RlYGAgYXJlIGRvY3VtZW50ZWQgaW4gW2FjcGktbWRpby1waHldXy5cXG4tLVxcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvcGh5LnJzdD03PVRoZSBQSFlzIG9uIGFuIE1ESU8gYnVzIFtwaHldIGFyZSBwcm9iZWQgYW5kIHJlZ2lzdGVyZWQgdXNpbmdcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q6ODpmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKS5cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTQwPXJlZ2lzdGVyZWQgYXMgYSBkaXN0aW5jdCBkZXZpY2UuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01Ni0gICBkcml2ZXIgbmVlZHMsIHNldHVwIHRoZSBtaWlfYnVzIHN0cnVjdHVyZSwgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIFBBTCB1c2luZ1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjU3OiAgIG1kaW9idXNfcmVnaXN0ZXIuICBTaW1pbGFybHksIHRoZXJlJ3MgYSByZW1vdmUgZnVuY3Rpb24gdG8gdW5kbyBhbGwgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01OC0gICB0aGF0ICh1c2UgbWRpb2J1c191bnJlZ2lzdGVyKS5cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM9MTA5PXN0YXRpYyBpbnQgZXA4MjQ4ZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYzoxMzM6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG9mZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzQtXFx0aWYgKHJldClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jPTIwNz1zdGF0aWMgaW50IGdwaW9fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYzoyNDQ6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02ODMtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LVxcdTAwM2VkZXYsIGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzIxPWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzkzOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwOT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ0NC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ0NTpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NDYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jPTI0Mj1zdGF0aWMgaW50IG10NzYyOF9zZXR1cF9pbnRlcm5hbF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYy0yNjEtXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jOjI2MjpcXHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmMtMjYzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4NDI9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODk1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODk3LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjkyLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5NC1cXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jPTE0OT1zdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfZW1kaW9fYnVzKHN0cnVjdCBuZXRjX3BvcnQgKm5wLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE4MDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDEzLVxcdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjEwMTQ6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg3OD1zdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXFx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MDQ6XFx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTA1LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MzU3PXN0YXRpYyBpbnQgYXI5MzMxX3N3X21idXNfaW5pdChzdHJ1Y3QgYXI5MzMxX3N3X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4MS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjM4MjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgzLVxcdG9mX25vZGVfcHV0KG1ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5ODc6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvKTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9NzQ9aW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy05OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MTAwOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExMTc9c3RhdGljIGludCBhNXBzd19wcm9iZV9tZGlvKHN0cnVjdCBhNXBzdyAqYTVwc3csIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0My1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNDQ6XFx0cmV0dXJuIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQ1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD0zMDc9dm9pZCBzamExMTA1X2ZyYW1lX21lbW9yeV9wYXJ0aXRpb25pbmcoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzA5LS8qIEZyb20gc2phMTEwNV9tZGlvLmMgKi9cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6MzEwOmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzExLXZvaWQgc2phMTEwNV9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMwMjY9c3RhdGljIGludCBzamExMTA1X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjctXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6MzA2ODpcXHRyYyA9IHNqYTExMDVfbWRpb2J1c19yZWdpc3Rlcihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2OS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg3LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg5LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0My1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNDQ6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0NS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5NS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozOTY6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk3LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NDM5PXN0YXRpYyB2b2lkIHNqYTExMDVfbWRpb2J1c19wY3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjQ1OTppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxMi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxNC1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTcyNj15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0My1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0NS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NDU5PXN0YXRpYyBpbnQgYXhfbWlpX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0Nzk6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTMyMT1zdGF0aWMgaW50IG93bF9lbWFjX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjEzNDY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9NTA5PXN0YXRpYyBpbnQgYWRpbjExMTBfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzo1MzA6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz02MTc9c3RhdGljIGludCBhZGluMTE0MF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjYzNzpcXHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZzcGlkZXYtXFx1MDAzZWRldiwgcHJpdi1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjM4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTI5MD1zdGF0aWMgaW50IGdyZXRoX21kaW9faW5pdChzdHJ1Y3QgZ3JldGhfcHJpdmF0ZSAqZ3JldGgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYzoxMzA3OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoZ3JldGgtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwOC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zOTMxPXN0YXRpYyBpbnQgZXQxMzF4X3BjaV9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM6NDAyNzpcXHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyOC1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTIxPXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9tZGlvX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNTg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTktXFx0aWYgKHJldCAhPSAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jPTEwNjE9c3RhdGljIGludCBhdTEwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjEyMjI6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihhdXAtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMy1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTM0Mjg9c3RhdGljIGludCB4Z2JlX3BoeV9pbml0KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxNy1cXHRzbnByaW50ZihtaWktXFx1MDAzZWlkLCBzaXplb2YobWlpLVxcdTAwM2VpZCksIFxcXCIlc1xcXCIsIGRldl9uYW1lKHBkYXRhLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MTg6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtaWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxOS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzozNzIwOlxcdFxcdGRldl9lcnIocGRhdGEtXFx1MDAzZWRldiwgXFxcIm1kaW9idXNfcmVnaXN0ZXIgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MjEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM9OTg9aW50IHhnZV9tZGlvX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTE4LVxcdG1kaW9fYnVzLVxcdTAwM2VwaHlfbWFzayA9IDB4MTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz04Mzc9aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjg4ODpzdGF0aWMgaW50IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg5LVxcdFxcdFxcdFxcdCAgc3RydWN0IG1paV9idXMgKm1kaW8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkxMzpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTE0LVxcdFxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjEtXFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MjI6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTg6XFx0cmV0ID0geGdlbmVfbWRpb2J1c19yZWdpc3RlcihwZGF0YSwgbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYz0xMzE9aW50IGFyY19tZGlvX3Byb2JlKHN0cnVjdCBhcmNfZW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM6MTczOlxcdGVycm9yID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3NC1cXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM6MTAxMTpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBheF9sb2NhbC1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMi1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz02ODc9c3RhdGljIGludCBhZzcxeHhfbWRpb19wcm9iZShzdHJ1Y3QgYWc3MXh4ICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI3LVxcdG1ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcXFwibWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzI4OlxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjktXFx0b2Zfbm9kZV9wdXQobW5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI2MDpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNjEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MTcxMz1zdGF0aWMgaW50IGJjbV9lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjE4MzA6XFx0XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MzEtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM9MjExPXN0cnVjdCBtaWlfYnVzICpiY21hX21kaW9fbWlpX3JlZ2lzdGVyKHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM6MjM2OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWlpX2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNy1cXHRvZl9ub2RlX3B1dChucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz0xOTM9aW50IGJjbWdlbmV0X21paV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBpbml0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjMzLVxcdFxcdHBoeV9uYW1lID0gXFxcImV4dGVybmFsIFJ2TUlJXFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoyMzQ6XFx0XFx0Lyogb2ZfbWRpb2J1c19yZWdpc3RlciB0b29rIGNhcmUgb2YgcmVhZGluZyB0aGUgJ21heC1zcGVlZCdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzUtXFx0XFx0ICogUEhZIHByb3BlcnR5IGZvciB1cywgZWZmZWN0aXZlbHkgbGltaXRpbmcgdGhlIFBIWSBzdXBwb3J0ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yMTU3PXN0YXRpYyBpbnQgc2JtYWNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGRldiwgbG9uZyBsb25nIGJhc2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyNy1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM6MjIyODpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHNjLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyOS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNTA1PXN0YXRpYyBpbnQgdGczX21kaW9faW5pdChzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTU1ODpcXHRpID0gbWRpb2J1c19yZWdpc3Rlcih0cC1cXHUwMDNlbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTktXFx0aWYgKGkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDk3OnN0YXRpYyBpbnQgbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDQtXFx0aWYgKG1kaW9fbnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTA1OlxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTE5OlxcdFxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIwLVxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTIyOlxcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMTI1PXN0YXRpYyBpbnQgbWFjYl9taWlfaW5pdChzdHJ1Y3QgbWFjYiAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTU5OlxcdGVyciA9IG1hY2JfbWRpb2J1c19yZWdpc3RlcihicCwgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTYwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jPTExMDc9c3RhdGljIGludCBkbTkwNTFfbWRpb19yZWdpc3RlcihzdHJ1Y3QgYm9hcmRfaW5mbyAqZGIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMTI1OlxcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIGRiLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNDIzPXN0YXRpYyBpbnQgdHNuZXBfbWRpb19pbml0KHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI0NTU6XFx0cmV0dmFsID0gb2ZfbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVxcdTAwM2VtZGlvYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTEwMjQ9c3RhdGljIGludCBldGhvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTIwODpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwOS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3MzQ9c3RhdGljIGludCBmdGdtYWMxMDBfc2V0dXBfbWRpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTc3MDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlZGV2LCBwcml2LVxcdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzEtXFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0zNj1zdGF0aWMgaW50IGVuZXRjX3BjaV9tZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM6OTE6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0yNjY9c3RhdGljIGludCBlbmV0Y19tZGlvX3Byb2JlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzoyOTM6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjk0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzA4PXN0YXRpYyBpbnQgZW5ldGNfaW1kaW9fY3JlYXRlKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDM6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDQtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MzA0Mj1zdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMxNjE6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihmZXAtXFx1MDAzZW1paV9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYz02NT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2YpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYzoxMDY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jPTE0OT1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM6MTc2OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jPTk3PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM6MTY3OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYz00MDk9c3RhdGljIGludCBmc2xfcHFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jOjQ5NDpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYz0zNzE9c3RhdGljIGludCB4Z21hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyNi1cXHRpZiAoaXNfb2Zfbm9kZShmd25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI3OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCB0b19vZl9ub2RlKGZ3bm9kZSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI4LVxcdGVsc2UgaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI5OlxcdFxcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIGZ3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MzAtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yNjY9aW50IGhiZ19tZGlvX2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyOTI6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM9MTA5ND1zdGF0aWMgaW50IGhpeDVoZDJfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM6MTE4NjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM9MTIzPWludCBoY2xnZV9tYWNfbWRpb19jb25maWcoc3RydWN0IGhjbGdlX2RldiAqaGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU0LVxcdG1kaW9fYnVzLVxcdTAwM2VwaHlfbWFzayA9IH4oMVUgXFx1MDAzY1xcdTAwM2MgbWFjLVxcdTAwM2VwaHlfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYzoxNTU6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM9NDk1PXN0YXRpYyBpbnQgaG5zX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1ODQ6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTg1LVxcdH0gZWxzZSBpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXFx1MDAzZWRldi5md25vZGUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTItXFx0XFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTkzOlxcdFxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobmV3X2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTk0LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjU2MD1zdGF0aWMgaW50IGVtYWNfZHRfbWRpb19wcm9iZShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODQtXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwiJXNcXFwiLCBkZXYtXFx1MDAzZW9mZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjU4NTpcXHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNmRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZWRldiwgYnVzLCBtaWlfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg2LVxcdGlmIChyZXMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jPTEwMjY9aW50IGl4Z2JlX21paV9idXNfaW5pdChzdHJ1Y3QgaXhnYmVfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmMtMTA4OC1cXHRhZGFwdGVyLVxcdTAwM2VtaWlfYnVzID0gYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jOjEwODk6XFx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDkwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9Mzg1PWx0cV9ldG9wX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDItXFx0XFx0IHByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZW5hbWUsIHByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jOjQwMzpcXHRpZiAobWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtaWlfYnVzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDA0LVxcdFxcdGVyciA9IC1FTlhJTztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM9MjgzPXN0YXRpYyBpbnQgb3Jpb25fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODEtXFx0LyogRm9yIHRoZSBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRFQvQUNQSSBmYWxsLWJhY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4MjpcXHQgKiB0byBtZGlvYnVzX3JlZ2lzdGVyIHZpYSBvZl9tZGlvYnVzX3JlZ2lzdGVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg0LVxcdGlmIChpc19hY3BpX25vZGUocGRldi1cXHUwMDNlZGV2LmZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODU6XFx0XFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODYtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg3OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODgtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jPTEzODc9c3RhdGljIGludCBweGExNjhfZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA0LVxcdHBlcC1cXHUwMDNlc21pX2J1cy1cXHUwMDNlcGh5X21hc2sgPSAweGZmZmZmZmZmO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jOjE1MDU6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihwZXAtXFx1MDAzZXNtaV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9OTk4PXN0YXRpYyBpbnQgbXRrX21kaW9faW5pdChzdHJ1Y3QgbXRrX2V0aCAqZXRoKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM3LVxcdGRldl9kYmcoZXRoLVxcdTAwM2VkZXYsIFxcXCJNREMgaXMgcnVubmluZyBvbiAlZCBIelxcXFxuXFxcIiwgTURDX01BWF9GUkVRIC8gZXRoLVxcdTAwM2VtZGNfZGl2aWRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzoxMDM4OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZXRoLVxcdTAwM2VtaWlfYnVzLCBtaWlfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNDIyPXN0YXRpYyBpbnQgbXRrX3N0YXJfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jOjE0NDg6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNDQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYz0yODc9aW50IG1seGJmX2dpZ2VfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbWx4YmZfZ2lnZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM6MzMzOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jPTI1Mz1pbnQgZmJuaWNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmMtMjcyLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODoyOC40MTUzOTA2MzhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6OTEyMjE0MTMzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFFDQTgwOFggUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBRQ0E4MDhYLCBzcGVjaWZpY2FsbHkgdGhlIFFDQTgwODEuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB3aGF0J3MgYmVpbmcgbW9kaWZpZWQgaGVyZS4gTG9va3MgbGlrZSB0aGUgYHFjYTgwOHhfY29uZmlnX2luaXRgIGFuZCBgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguY2AgYXJlIHRoZSB0YXJnZXRzLlxuXG5Ob3csIGxldCdzIHRyYWNlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC4gYHFjYTgwOHhfY29uZmlnX2luaXRgIGlzIGNsZWFybHkgdGhlIGAuY29uZmlnX2luaXRgIGNhbGxiYWNrIHdpdGhpbiB0aGUgYHFjYTgwOHhfZHJpdmVyYCBzdHJ1Y3R1cmUuIFJpZ2h0LCBzbyB0aGlzIGRyaXZlciBnZXRzIGluc3RhbnRpYXRlZCB3aGVuIHRoZSBzeXN0ZW0gZGV0ZWN0cyBhIFBIWSB3aXRoIHRoZSBgUUNBODA4MV9QSFlfSURgIOKAkyAweDAwNGRkMTAxIOKAkyBvbiBhbiBNRElPIGJ1cy4gVGhhdCdzIHRoZSB0cmlnZ2VyLlxuXG5UaGUgYnVybmluZyBxdWVzdGlvbiB0aGVuIGlzLCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIGRvIHdlIGhhdmUgYW55IHZpcnR1YWwgYnVzIG9yIGVtdWxhdGVkIGRldmljZXMgdGhhdCB3b3VsZCBzaW11bGF0ZSBvciBpbnN0YW50aWF0ZSB0aGUgUUNBODA4MSBQSFk/IFRoYXQgd291bGQgYWxsb3cgYSB0ZXN0IHdpdGggdGhlIGRldmljZS4gTGV0J3MgbG9vayBhdCBRRU1VIGZpcnN0LiBObywgUUVNVSBkb2Vzbid0IG9mZmVyIGFueSBRdWFsY29tbSBBdGhlcm9zIEV0aGVybmV0IFBIWSBlbXVsYXRpb24sIGFuZCBjZXJ0YWlubHkgbm90IHRoZSBRQ0E4MDgxLlxuXG5Pa2F5LCBsZXQncyBwaXZvdC4gSWYgZGlyZWN0IGVtdWxhdGlvbiBpcyBvdXQsIGNhbiB1c2Vyc3BhY2Ugc29tZWhvdyBjcmVhdGUgYW4gTURJTyBkZXZpY2Ugd2l0aCBhbiBhcmJpdHJhcnkgUEhZIElEPyBJcyB0aGVyZSBhIHVzZXJzcGFjZSBpbnRlcmZhY2UsIG1heWJlIHRocm91Z2ggbmV0bGluaywgc3lzZnMsIG9yIGlvY3RscywgdGhhdCBhbGxvd3MgTURJTyBkZXZpY2UgY3JlYXRpb24/IFRpbWUgdG8gc2VhcmNoIGZvciB0aGF0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgTURJTyBpbnRlcmZhY2UsIGFzIGl0IGlzLCBoYXMgYSBsb29waG9sZSB3aGVyZSBhIHRlc3Qgc2NlbmFyaW8gY2FuIGJlIGNyZWF0ZWQsIHdpdGhvdXQgbmVlZGluZyB0byBkZXBlbmQgb24gaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMTc3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODozNy41Mzc1MzUyMjNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjUxMTA1MDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2UuKm1kaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjM5LjcwMjY1NTMwMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMTkxMjY4NTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgTURJTyBCdXMgVHlwZSBTdXBwb3J0KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBgbWRpb19idXNfdHlwZWAgc3RydWN0dXJlIGhhcyBwcm9wZXIgc3VwcG9ydCBmb3IgY3JlYXRpbmcgbmV3IGRldmljZXMgdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIGl0IGltcGxlbWVudHMgYSBgbmV3X2RldmljZWAgb3BlcmF0aW9uIHRoYXQgaXMgZXhwb3NlZCB2aWEgc3lzZnMuIFRoaXMgaXMgd2hlcmUgSSB3b3VsZCBzdGFydCBteSBkZWJ1Zy5cblxuSSdtIGdvaW5nIHRvIHF1aWNrbHkgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AsIGFzIHRoYXQncyB3aGVyZSBJIGV4cGVjdCB0aGUgYG1kaW9fYnVzX3R5cGVgIGRlZmluaXRpb24gYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIHJlc2lkZS4gSSdsbCB6ZXJvIGluIG9uIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBob3BpbmcgdG8gc2VlIHRoZSByZWxldmFudCBzeXNmcyBhdHRyaWJ1dGVzIG9yIGNhbGxiYWNrcyB0aGF0IG1hbmFnZSB0aGUgZGV2aWNlIGluc3RhbnRpYXRpb24gcHJvY2Vzcy4gSG9wZWZ1bGx5LCBpdCdzIGFsbCBzdHJhaWdodGZvcndhcmQgYW5kIHdlbGwtZG9jdW1lbnRlZC4gT3RoZXJ3aXNlLCBJIG1pZ2h0IGJlIGhlcmUgZm9yIGEgd2hpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyODM0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDg6NDEuODkzOTI3MjM4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5NSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI5NTpcXHRcXHQubmFtZVxcdFxcdD0gXFxcInN0YXRpc3RpY3NcXFwiLFxcbiAyOTY6XFx0XFx0LmF0dHJzX2NvbnN0XFx0PSBtZGlvX2J1c19kZXZpY2Vfc3RhdGlzdGljc19hdHRycyxcXG4gMjk3OlxcdH07XFxuIDI5ODpcXHRfX0FUVFJJQlVURV9HUk9VUFMobWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3MpO1xcbiAyOTk6XFx0XFxuIDMwMDpcXHRjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgbWRpb19idXNfdHlwZSA9IHtcXG4gMzAxOlxcdFxcdC5uYW1lXFx0XFx0PSBcXFwibWRpb19idXNcXFwiLFxcbiAzMDI6XFx0XFx0LmRldl9ncm91cHNcXHQ9IG1kaW9fYnVzX2RldmljZV9zdGF0aXN0aWNzX2dyb3VwcyxcXG4gMzAzOlxcdFxcdC5tYXRjaFxcdFxcdD0gbWRpb19idXNfbWF0Y2gsXFxuIDMwNDpcXHRcXHQudWV2ZW50XFx0XFx0PSBtZGlvX3VldmVudCxcXG4gMzA1OlxcdH07XFxuIDMwNjpcXHRcXG4gMzA3OlxcdC8qKlxcbiAzMDg6XFx0ICogbWRpb2J1c19hbGxvY19zaXplIC0gYWxsb2NhdGUgYSBtaWlfYnVzIHN0cnVjdHVyZVxcbiAzMDk6XFx0ICogQHNpemU6IGV4dHJhIGFtb3VudCBvZiBtZW1vcnkgdG8gYWxsb2NhdGUgZm9yIHByaXZhdGUgc3RvcmFnZS5cXG4gMzEwOlxcdCAqIElmIG5vbi16ZXJvLCB0aGVuIGJ1cy1cXHUwMDNlcHJpdiBpcyBwb2ludHMgdG8gdGhhdCBtZW1vcnkuXFxuIDMxMTpcXHQgKlxcbiAzMTI6XFx0ICogRGVzY3JpcHRpb246IGNhbGxlZCBieSBhIGJ1cyBkcml2ZXIgdG8gYWxsb2NhdGUgYW4gbWlpX2J1c1xcbiAzMTM6XFx0ICogc3RydWN0dXJlIHRvIGZpbGwgaW4uXFxuIDMxNDpcXHQgKi9cXG4gMzE1OlxcdHN0cnVjdCBtaWlfYnVzICptZGlvYnVzX2FsbG9jX3NpemUoc2l6ZV90IHNpemUpXFxuIDMxNjpcXHR7XFxuIDMxNzpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbiAzMTg6XFx0XFx0c2l6ZV90IGFsaWduZWRfc2l6ZSA9IEFMSUdOKHNpemVvZigqYnVzKSwgTkVUREVWX0FMSUdOKTtcXG4gMzE5OlxcdFxcdHNpemVfdCBhbGxvY19zaXplO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODo0MS44OTQwMDg4NjhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDQ0MjU3MjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBEZXZpY2UgRGlzY292ZXJ5IGFuZCBOZXRsaW5rKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBoYW5kbGUgbmV3IGRldmljZXMuIFNwZWNpZmljYWxseSwgSSdtIG5vdCBzZWVpbmcgYW55IGBidXNfdHlwZWAgY2FsbGJhY2tzLCBzaW1pbGFyIHRvIHRoZSBJMkMncyBgbmV3X2RldmljZWAsIGZvciBuZXcgZGV2aWNlcyBpbiB0aGlzIGNvbnRleHQuIFRoYXQncyBhIGJpdCBwdXp6bGluZy4gVGhlbiBpdCBoaXRzIG1lIC0gY291bGQgdGhlIGBwaHlfZGV2aWNlYCBhY3R1YWxseSBiZSBjcmVhdGVkIHZpYSBOZXRsaW5rPyBJdCdzIHdvcnRoIGV4cGxvcmluZy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYG5ldC9ldGh0b29sL2AgZGlyZWN0b3J5LCBhbmQgbWF5YmUgZXZlbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIGRpcmVjdG9yeS4gVGhhdCdzIHByb2JhYmx5IHdoZXJlIEknbGwgZmluZCBOZXRsaW5rIGNvbW1hbmRzIHJlbGF0ZWQgdG8gdGhpcyBmdW5jdGlvbmFsaXR5LiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzUzMCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDg6NDYuMzM2NTg0ODUyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzY1MTI0MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kZXZpY2VfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYz0xMTc9aW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEzNC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjEzNTpcXHRcXHRwaHkgPSBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCwgMCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEzNi1cXHRpZiAoSVNfRVJSKHBoeSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jPTU1MT1zdGF0aWMgdm9pZCB0amExMTAyX3AxX3JlZ2lzdGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU4NS1cXHRcXHQvKiBSZWFsIFBIWSBJRCBvZiBQb3J0IDEgaXMgMCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU4NjpcXHRcXHRwaHkgPSBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIFBIWV9JRF9USkExMTAyLCBmYWxzZSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg3LVxcdFxcdGlmIChJU19FUlIocGh5KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTkyLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5MzpcXHRcXHQvKiBPdmVyd3JpdGUgcGFyZW50IGRldmljZS4gcGh5X2RldmljZV9jcmVhdGUoKSBzZXQgcGFyZW50IHRvXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk0LVxcdFxcdCAqIHRoZSBtaWlfYnVzLVxcdTAwM2VkZXYsIHdoaWNoIGlzIG5vdCBjb3JyZWN0IGluIGNhc2UuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTcyOD1zdGF0aWMgaW50IHBoeV9yZXF1ZXN0X2RyaXZlcl9tb2R1bGUoc3RydWN0IHBoeV9kZXZpY2UgKmRldiwgdTMyIHBoeV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNzQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NzQ4OnN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0OS1cXHRcXHRcXHRcXHQgICAgIGJvb2wgaXNfYzQ1LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04MzktfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6ODQwOkVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODQxLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDcxPXN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTYtXFx0XFx0aWYgKCFyKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA5NzpcXHRcXHRcXHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDk4LVxcdFxcdFxcdFxcdFxcdFxcdCB0cnVlLCBcXHUwMDI2YzQ1X2lkcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTAxOlxcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCwgaXNfYzQ1LCBcXHUwMDI2YzQ1X2lkcyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTAyLX1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9MjE0OT1pbnQgcGh5X21vZGlmeV9wYWdlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcGFnZSwgdTMyIHJlZ251bSxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE1MS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjIxNTI6c3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLFxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE1My1cXHRcXHRcXHRcXHQgICAgIGJvb2wgaXNfYzQ1LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODo0OC4xMDE3MTM5OTRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6OTY2ODE2NzI2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBRQ0E4MDgxIERyaXZlcidzIFZpcnR1YWwgRW52aXJvbm1lbnQgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBgcGh5X2RldmljZV9jcmVhdGVgIGZ1bmN0aW9uIGlzIHRoZSBnYXRla2VlcGVyIGZvciBjcmVhdGluZyBQSFkgZGV2aWNlcyB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGNvZGUgc2hvd3MgaXQncyBvbmx5IGNhbGxlZCBpbiBzcGVjaWZpYyBzY2VuYXJpb3M6IHdoZW4gc2Nhbm5pbmcgYSByZWFsIE1JSSBidXMsIHdoZW4gcGFyc2luZyBhIGRldmljZSB0cmVlIG5vZGUgZm9yIGEgUEhZLCBvciBkaXJlY3RseSB3aXRoaW4gdGhlIHRqYTExeHggUEhZIGRyaXZlci4gSXQgc2VlbXMgdGhlcmUncyBubyB3YXkgdG8gY29uanVyZSBhIFFDQTgwODEgUEhZIGRldmljZSBmcm9tIHVzZXJzcGFjZSB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgZGV2aWNlIHRyZWUgZGVzY3JpcHRpb24uIFNpbmNlIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBhbmQgSSBrbm93IGEgYml0IGFib3V0IHRoZSB0eXBpY2FsIHg4Ni9hbWQ2NCB2aXJ0dWFsIG1hY2hpbmUgbGFuZHNjYXBlIChRRU1VL0tWTSwgR0NFKSwgdGhhdCdzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuXG5cbk15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGVzZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIGZvciBhIFFDQTgwODEuIFNwZWNpZmljYWxseTpcblxuKiAgIFRoZXJlIGFyZSBubyBoYXJkd2FyZSBNRElPIGJ1c2VzIGZvciBRdWFsY29tbSBjaGlwcyBpbiB0aGVzZSB2aXJ0dWFsIGVudmlyb25tZW50cy5cbiogICBTdGFuZGFyZCBlbXVsYXRlZCBuZXR3b3JrIGNhcmRzIGluIHRoZXNlIFZNcyBkb24ndCByZWx5IG9uIFBIWSBkcml2ZXJzIGxpa2UgdGhlIFFDQTgwODEuIFRoZXkgZWl0aGVyIGhhdmUgaW50ZXJuYWwgUEhZcywgZG9uJ3QgdXNlIHBoeWxpYiBhdCBhbGwsIG9yIGVtcGxveSBmaXhlZC1saW5rIGNvbmZpZ3VyYXRpb25zLlxuKiAgIFRoZSBRQ0E4MDgxIGlzIGEgZGlzY3JldGUgRXRoZXJuZXQgUEhZIGNoaXAg4oCTIGEgcGh5c2ljYWwgcGllY2Ugb2YgaGFyZHdhcmUgZnJvbSBRdWFsY29tbSDigJMgdHlwaWNhbGx5IHNlZW4gYWxvbmdzaWRlIFF1YWxjb21tIEF0aGVyb3MgY2hpcHMgb3IgU29Dcy5cblxuRXZlbiBpZiB3ZSB3ZXJlIG9uIGFuIEFSTSBvciBNSVBTIHBsYXRmb3JtIHdoZXJlIGEgUUNBODA4MSAqbWlnaHQqIGJlIHByZXNlbnQsIGl0IHdvdWxkIHN0aWxsIG5lY2Vzc2l0YXRlIHRoZSBwaHlzaWNhbCBQSFkgaGFyZHdhcmUgY29ubmVjdGVkIHZpYSBhbiBNRElPIGJ1cy4gU28sIGluIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBRQ0E4MDgxIFBIWSBzaW1wbHkgZG9lc24ndCBleGlzdCwgbm9yIGlzIGl0IGVtdWxhdGVkLlxuXG5Mb29raW5nIGF0IHRoZSBwcm9tcHQsIHNlY3Rpb24gMiBkZXNjcmliZXMgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXCIgVGhpcyBhcHBsaWVzIHBlcmZlY3RseSB0byB0aGVzZSB0eXBlcyBvZiB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlcnMsIGxpa2UgdGhlIG9uZSBmb3IgdGhlIGBxY2E4MDh4YC4gV2l0aG91dCB0aGF0IHBoeXNpY2FsIFF1YWxjb21tIFFDQTgwODEgUEhZIGFuZCB0aGUgTURJTyBidXMgdG8gd2hpY2ggaXQgY29ubmVjdHMsIHRoZSBkcml2ZXIgY29kZSBpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYCBjYW5ub3QgYmUgbG9hZGVkLCBwcm9iZWQsIG9yIGV4ZWN1dGVkIHdpdGhpbiB0aGUgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGtlcm5lbCB0byBzZWUgaWYgdGhlcmUncyBhbnkgdGVzdCBmcmFtZXdvcmsgb3IgYSBtb2NrIE1ESU8gYnVzIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDczMywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODo1Ny43Njk4ODM5OVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAzMTk0NjM2MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja3xtb2NrLiptZGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODo1OS44MDE4MzY4OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo5MjI1NjU2NDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBNRElPL0dQSU8gSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBiYXNlZCBvbiB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCwgdGhlIGN1cnJlbnQgaXNzdWUgbGlrZWx5IGhhcyBzb21lIGNvbm5lY3Rpb24gdG8gdGhlIE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQgKE1ESU8pIGludGVyZmFjZSBvciBHZW5lcmFsIFB1cnBvc2UgSW5wdXQvT3V0cHV0IChHUElPKSBwaW5zLiBHaXZlbiB0aGUgb2JzZXJ2ZWQgYmVoYXZpb3IsIGl0J3MgYSBodW5jaCB3b3J0aCBwdXJzdWluZy4gVGhlIGNvbm5lY3Rpb24gY291bGQgbWFuaWZlc3QgaW4gYSBmZXcgZGlmZmVyZW50IHdheXMuIFBlcmhhcHMgdGhlcmUncyBhbiBpc3N1ZSB3aXRoIHRoZSB0aW1pbmcgb2YgTURJTyB0cmFuc2FjdGlvbnMsIGNhdXNpbmcgaW5jb3JyZWN0IGNvbmZpZ3VyYXRpb24gb2YgYW4gYXNzb2NpYXRlZCBQSFkgb3Igb3RoZXIgZGV2aWNlLiBBbHRlcm5hdGl2ZWx5LCBhIEdQSU8gcGluIG1pZ2h0IGJlIG1pc2NvbmZpZ3VyZWQsIGltcGFjdGluZyB0aGUgTURJTyBjb21tdW5pY2F0aW9uIGluZGlyZWN0bHksIGJ5IGluZmx1ZW5jaW5nIHRoZSByZXNldCBsaW5lIG9yIGludGVycnVwdCBzaWduYWwgb2YgdGhlIG1hbmFnZWQgZGV2aWNlLCBvciBwZXJoYXBzIGEgc2lnbmFsIGlzIGJlaW5nIHNoYXJlZCBiZXR3ZWVuIHRoZW0sIGFuZCB0aGUgY29udGVudGlvbiBpcyBjYXVzaW5nIHRoZSBmYWlsdXJlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGRyaXZlciBjb2RlIGFuZCBoYXJkd2FyZSBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgaW50ZXJhY3Rpb24gYW5kIHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cy4gU3BlY2lmaWNhbGx5LCBJJ2xsIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgYG1kaW8tZ3Bpb2AgZHJpdmVyIG9yIHNpbWlsYXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBrZXJuZWwgYW5kIGFueSBhc3NvY2lhdGVkIGRldmljZSB0cmVlIGJpbmRpbmdzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1ESU8gc2lnbmFscyBhcmUgbWFwcGVkIHRvIEdQSU8gcGlucyBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQuIE15IGZpcnN0IG1vdmUgd2lsbCBiZSBjaGVja2luZyBmb3IgcG90ZW50aWFsIHBpbi1tdXhpbmcgY29uZmxpY3RzLCB0aW1pbmcgZGlzY3JlcGFuY2llcywgYW5kIGFueSBpbnRlcnJ1cHQgaGFuZGxpbmcgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTc3MCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ5OjA5LjAyNzQ5Njc2MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwMDU4NDczNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLWdwaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sPTM3PXByb3BlcnRpZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtNTMtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjU0OiAgbWRpby1ncGlvczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtNTUtICAgIGRlc2NyaXB0aW9uOiBHUElPIGxpbmUgZm9yIHRoZSBNRElPIGRhdGEgbGluZS5cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbD0xMTU9dGhlbjpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMTktICAgICAgLSBtZGMtZ3Bpb3NcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw6MTIwOiAgICAgIC0gbWRpby1ncGlvc1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMjEtICAgICAgLSBtZGlvXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTI0LSAgICBtZGMtZ3Bpb3M6IGZhbHNlXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjEyNTogICAgbWRpby1ncGlvczogZmFsc2VcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTI2LSAgICBtZGlvOiBmYWxzZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sPTEyOD1lbHNlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTEzMC0gICAgLSBtZGMtZ3Bpb3NcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw6MTMxOiAgICAtIG1kaW8tZ3Bpb3NcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTMyLSAgICAtIG1kaW9cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbD0xMzQ9cmVxdWlyZWQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTM3LSAgICAjICAtIG1kYy1ncGlvc1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbDoxMzg6ICAgICMgIC0gbWRpby1ncGlvc1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMzktICAgICMgIC0gcmVzZXQtZ3Bpb3NcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbD0xNDQ9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTUzLSAgICAgICAgICAgICAgICAgICAgbWRjLWdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAyMSBHUElPX0FDVElWRV9ISUdIXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw6MTU0OiAgICAgICAgICAgICAgICAgICAgbWRpby1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTE1NS0gICAgICAgICAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAxNCBHUElPX0FDVElWRV9MT1dcXHUwMDNlO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTI0Ni0gICAgICAgICAgICAgICAgICAgIG1kYy1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzEgMTYgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjI0NzogICAgICAgICAgICAgICAgICAgIG1kaW8tZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8xIDE3IEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0yNDgtICAgICAgICAgICAgICAgICAgICByZXNldC1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzUgMCBHUElPX0FDVElWRV9MT1dcXHUwMDNlO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC0zLS0tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw6NDokaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9tZGlvLWdwaW8ueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sPTE3PXByb3BlcnRpZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTE5LSAgICBlbnVtOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw6MjA6ICAgICAgLSB2aXJ0dWFsLG1kaW8tZ3Bpb1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtMjEtICAgICAgLSBtaWNyb2NoaXAsbWRpby1zbWkwXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sPTQxPWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC00My0gICAgYWxpYXNlcyB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbDo0NDogICAgICAgIG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpbzA7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC00NS0gICAgfTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDctICAgIG1kaW8wOiBtZGlvIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sOjQ4OiAgICAgIGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDktICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY20yNzExLmR0c2k9OTM4PVxcdFxcdHBpbi1pcnEge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtMjcxMS5kdHNpLTk0Mi1cXHR9O1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTI3MTEuZHRzaTo5NDM6XFx0cmdtaWlfbWRpb19ncGlvMjg6IHJnbWlpLW1kaW8tZ3BpbzI4IHtcXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY20yNzExLmR0c2ktOTQ0LVxcdFxcdHBpbnMtbWRpbyB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY20yNzExLmR0c2ktOTQ5LVxcdH07XFxuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtMjcxMS5kdHNpOjk1MDpcXHRyZ21paV9tZGlvX2dwaW8zNzogcmdtaWktbWRpby1ncGlvMzcge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTI3MTEuZHRzaS05NTEtXFx0XFx0cGlucy1tZGlvIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTQ3MDk0LWFzdXMtcnQtYWM4OHUuZHRzPTIwPVxcdHN3aXRjaCB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY200NzA5NC1hc3VzLXJ0LWFjODh1LmR0cy0yMi1cXHRcXHRtZGMtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmNoaXBjb21tb24gNiBHUElPX0FDVElWRV9ISUdIXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY200NzA5NC1hc3VzLXJ0LWFjODh1LmR0czoyMzpcXHRcXHRtZGlvLWdwaW9zID0gXFx1MDAzY1xcdTAwMjZjaGlwY29tbW9uIDcgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2U7XFxuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtNDcwOTQtYXN1cy1ydC1hYzg4dS5kdHMtMjQtXFx0XFx0cmVzZXQtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmNoaXBjb21tb24gMTAgR1BJT19BQ1RJVkVfTE9XXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZGlyLTY4NS5kdHM9MTkwPVxcdGV0aGVybmV0LXN3aXRjaCB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLWRsaW5rLWRpci02ODUuZHRzLTE5My1cXHRcXHRtZGMtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIxIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZGlyLTY4NS5kdHM6MTk0OlxcdFxcdG1kaW8tZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZGlyLTY4NS5kdHMtMTk1LVxcdFxcdHJlc2V0LWdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAxNCBHUElPX0FDVElWRV9MT1dcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cz0yND1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLWRsaW5rLWRucy0zMTMuZHRzOjI1OlxcdFxcdG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpbzA7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cy0yNi1cXHR9O1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cz0xNTI9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHM6MTUzOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHMtMTU0LVxcdFxcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMTBiLmR0cz02Nz1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjEwYi5kdHM6Njg6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjEwYi5kdHMtNjktXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIyMGIuZHRzPTY2PVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMjBiLmR0czo2NzpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMjBiLmR0cy02OC1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsIC8qIE1EQyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzPTIzPVxcdGFsaWFzZXMge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0czoyNDpcXHRcXHRtZGlvLWdwaW8wID0gXFx1MDAyNm1kaW8wO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0cy0yNS1cXHR9O1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzPTMyPVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5zMjUwMi5kdHM6MzM6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzLTM0LVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAyMiBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSwgLyogTURDICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXJ1dDF4eC5kdHM9NTk9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktcnV0MXh4LmR0czo2MDpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXJ1dDF4eC5kdHMtNjEtXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc2w5MzUxMnIuZHRzPTcxPVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNsOTM1MTJyLmR0czo3MjpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNsOTM1MTJyLmR0cy03My1cXHRcXHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHM9NTY9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3EyMDEuZHRzOjU3OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3EyMDEuZHRzLTU4LVxcdFxcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzPTIzPVxcdGFsaWFzZXMge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM6MjQ6XFx0XFx0bWRpby1ncGlvMCA9IFxcdTAwMjZtZGlvMDtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzLTI1LVxcdH07XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzPTMyPVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzOjMzOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHMtMzQtXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktdmVyYmF0aW0tczA4djE5MDEtZDEuZHRzPTU3PVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXZlcmJhdGltLXMwOHYxOTAxLWQxLmR0czo1ODpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXZlcmJhdGltLXMwOHYxOTAxLWQxLmR0cy01OS1cXHRcXHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQxMTEuZHRzPTcxPVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDExMS5kdHM6NzI6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQxMTEuZHRzLTczLVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAyMiBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSwgLyogTURDICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDIyMi5kdHM9NzA9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMjIyLmR0czo3MTpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDIyMi5kdHMtNzItXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzPTI0PVxcdGFsaWFzZXMge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzOjI1OlxcdFxcdG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpb19ncGlvO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzLTI2LVxcdFxcdHJ0YzAgPSBcXHUwMDI2ZHMxMzQxO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHM9MTYzPVxcdG1kaW9fZ3BpbzogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHM6MTY0OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzLTE2NS1cXHRcXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0cz0yNT1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDUxLXppaS1zY3UyLW1lenouZHRzOjI2OlxcdFxcdG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpb19ncGlvO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHMtMjctXFx0fTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHM9NDA9XFx0bWRpb19ncGlvOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDUxLXppaS1zY3UyLW1lenouZHRzOjQxOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHMtNDItXFx0XFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2k9OTM9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaTo5NDpcXHRcXHRtZGlvLWdwaW8wID0gXFx1MDAyNm1kaW8wO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2ktOTUtXFx0fTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2k9OTc9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2k6OTg6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaS05OS1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzIgNSBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSwgLyogbWRjICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtc2tvdi1jcHUuZHRzaT0xMz1cXHRhbGlhc2VzIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC1za292LWNwdS5kdHNpLTE4LVxcdFxcdGV0aGVybmV0MiA9IFxcdTAwMjZsYW4yO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC1za292LWNwdS5kdHNpOjE5OlxcdFxcdG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpbztcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtc2tvdi1jcHUuZHRzaS0yMC1cXHRcXHRuYW5kID0gXFx1MDAyNmdwbWk7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaT0xND1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaToxNTpcXHRcXHRtZGlvLWdwaW8wID0gXFx1MDAyNm1kaW8xO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC16aWktcmR1Mi5kdHNpLTE2LVxcdFxcdHJ0YzAgPSBcXHUwMDI2ZHMxMzQxO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2k9MTk9XFx0bWRpbzE6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC16aWktcmR1Mi5kdHNpOjIwOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC16aWktcmR1Mi5kdHNpLTIxLVxcdFxcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cXAtcHJ0d2QzLmR0cz01Mz1cXHRtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzOjU0OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFwLXBydHdkMy5kdHMtNTUtXFx0XFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHM9MTA9XFx0YWxpYXNlcyB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTEzLVxcdFxcdGV0aGVybmV0MSA9IFxcdTAwMjZnbWFjMztcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzOjE0OlxcdFxcdG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpbzA7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czoxNTpcXHRcXHRtZGlvLWdwaW8xID0gXFx1MDAyNm1kaW8xO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTYtXFx0fTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHM9NTU9XFx0bWRpbzA6IG1kaW8tMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy01Ni1cXHRcXHRzdGF0dXMgPSBcXFwib2theVxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czo1NzpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTU4LVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZxY29tX3Bpbm11eCAxIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLFxcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cz0xODA9XFx0bWRpbzE6IG1kaW8tMSB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy0xODEtXFx0XFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHM6MTgyOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgzLVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZxY29tX3Bpbm11eCAxMSBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSxcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzNjLXByaWhtYi5kdHM9MTY9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cy0xNy1cXHRcXHRldGhlcm5ldDAgPSBcXHUwMDI2ZXRoZXJuZXQxO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzNjLXByaWhtYi5kdHM6MTg6XFx0XFx0bWRpby1ncGlvMCA9IFxcdTAwMjZtZGlvMDtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzYy1wcmlobWIuZHRzLTE5LVxcdFxcdG1tYzAgPSBcXHUwMDI2c2RtbWMxO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cz0xMTg9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzNjLXByaWhtYi5kdHM6MTE5OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzNjLXByaWhtYi5kdHMtMTIwLVxcdFxcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFjLmR0cz0zOD1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFjLmR0czozOTpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzLTQwLVxcdFxcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2k9MTY9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2ktMTctXFx0XFx0ZXRoZXJuZXQwID0gXFx1MDAyNmV0aGVybmV0MDtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaToxODpcXHRcXHRtZGlvLWdwaW8wID0gXFx1MDAyNm1kaW8wO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxbC5kdHNpLTE5LVxcdFxcdHNlcmlhbDAgPSBcXHUwMDI2dWFydDQ7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaT00ND1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2k6NDU6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2ktNDYtXFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k9OT1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k6MTA6XFx0XFx0bWRpby1ncGlvMCA9IFxcdTAwMjZtZGlvMDtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2ktMTEtXFx0XFx0cnRjMCA9IFxcdTAwMjZkczEzNDE7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k9MTg9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS16aWktdWx0cmEuZHRzaToxOTpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2ktMjAtXFx0XFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz05MD1jb25maWcgTURJT19HUElPXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctOTctXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjk4OlxcdCAgd2lsbCBiZSBjYWxsZWQgbWRpby1ncGlvLlxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy05OS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX01ESU9fQ0FWSVVNKVxcdFxcdCs9IG1kaW8tY2F2aXVtLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19NRElPX0dQSU8pXFx0XFx0XFx0Kz0gbWRpby1ncGlvLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19NRElPX0hJU0lfRkVNQUMpXFx0XFx0Kz0gbWRpby1oaXNpLWZlbWFjLm9cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9MTU3PXN0YXRpYyBpbnQgbWRpb19ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE3MS1cXHRpZiAocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE3MjpcXHRcXHRidXNfaWQgPSBvZl9hbGlhc19nZXRfaWQocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJtZGlvLWdwaW9cXFwiKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE3My1cXHRcXHRpZiAoYnVzX2lkIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz0xOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWRpb19ncGlvX29mX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxOTg6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCIsIH0sXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xOTktXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsbWRpby1zbWkwXFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz0yMDQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWRpb19ncGlvX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjA3LVxcdC5kcml2ZXJcXHRcXHQ9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwODpcXHRcXHQubmFtZVxcdD0gXFxcIm1kaW8tZ3Bpb1xcXCIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMDktXFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gbWRpb19ncGlvX29mX21hdGNoLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz0yMTM9bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZGlvX2dwaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIxNC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIxNTpNT0RVTEVfQUxJQVMoXFxcInBsYXRmb3JtOm1kaW8tZ3Bpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjE2LU1PRFVMRV9BVVRIT1IoXFxcIkxhdXJlbnQgUGluY2hhcnQsIFBhdWxpdXMgWmFsZWNrYXNcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDk6MTAuNTI4MDg3Mzg5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjUyODg0MTE1MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVGhpcyBDb2RlIGlzIFVuZnV6emFibGUgaW4gU3RhbmRhcmQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBzaXR1YXRpb24uIEknbSBsb29raW5nIGF0IHRoZSBgbWRpby1ncGlvYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBRQ0E4MDgxIFBIWS4gSSBjYW4gc2VlIHRoYXQgdGhpcyBgbWRpby1ncGlvYCBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGJpdGJhbmdpbmcgTURJTyBvdmVyIEdQSU8sIGFuZCBvbiBhbWQ2NCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFuZCBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIHRoZXJlJ3Mgbm8gZGV2aWNlIHRyZWUgZW50cnkgdGhhdCBldmVuIGRlZmluZXMgYSBRQ0E4MDgxIFBIWS4gRXZlbiBpZiB0aGUgYENPTkZJR19RQ0E4MDhYX1BIWWAgb3B0aW9uIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcsIHRoZSBkcml2ZXIgY2FuJ3QgcG9zc2libHkgYmluZCB0byBhbnkgaGFyZHdhcmUgYmVjYXVzZSB0aGUgKmFjdHVhbCogUXVhbGNvbW0gUUNBODA4MSBFdGhlcm5ldCBQSFkgc2ltcGx5IGlzbid0IHByZXNlbnQgaW4gdGhlc2UgdmlydHVhbGl6ZWQgc2V0dGluZ3MuXG5cbkxldCBtZSBicmVhayBpdCBkb3duOlxuXG4qICAgVGhlIGNoYW5nZXMgYXJlIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYC5cbiogICBUaGlzIHNwZWNpZmljIGZpbGUgaXMgYSBkZXZpY2UgZHJpdmVyIGZvciB0aGUgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4MDgxIEV0aGVybmV0IFBIWS5cbiogICBUaGUgZHJpdmVyIGZ1bmRhbWVudGFsbHkgcmVsaWVzIG9uIHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBoYXJkd2FyZSDigJMgdGhlIFFDQTgwODEgTURJTyB0cmFuc2NlaXZlciBBU0lDLiBUaGF0IHNwZWNpZmljIHBpZWNlIG9mIGhhcmR3YXJlIGlzICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy5cbiogICBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NC5cblxuQmFzZWQgb24gdGhlc2UgZmFjdHMsIGFuZCBjb25zaWRlcmluZyB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjcml0ZXJpYSBpbiBzZWN0aW9uIDIgKHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIG9yIE5JQ3MgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VKSwgaXQncyBjbGVhciB0aGF0IHRoaXMgY29kZSBpcyAqc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlKiBmb3Igc3l6a2FsbGVyIGZ1enppbmcuIEl0J3Mgc2ltcGx5IG5vdCBnb2luZyB0byBiZSB0cmlnZ2VyZWQgaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5UaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIG11c3QgYmUgZmFsc2UuXG5cbkxldCdzIG5haWwgZG93biB0aGUgbWV0YWRhdGE6XG5cbiogICBgV29ydGhGdXp6aW5nYDogZmFsc2Ug4oCTIE9idmlvdXNseSFcbiogICBgUmVhc29uaW5nYDogRHJpdmVyIGZvciBRdWFsY29tbSBRQ0E4MDgxIEV0aGVybmV0IFBIWSB0cmFuc2NlaXZlci4gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgZHVlIHRvIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQuIFRoaXMgaXMgcm9jayBzb2xpZCByZWFzb25pbmcuXG4qICAgYEZvY3VzU3ltYm9sc2A6IFxcWyBdIOKAkyBFbXB0eSwgYmVjYXVzZSBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLlxuKiAgIGBFbmFibGVDb25maWdzYDogXFxbIF0g4oCTIEFsc28gZW1wdHksIGJlY2F1c2UgaXQncyBub3Qgd29ydGggZnV6emluZy5cblxuQWxyaWdodCwgdGhhdCdzIGFsbCB2ZXJ5IGNsZWFyLiBFdmVyeXRoaW5nIGlzIGluIG9yZGVyLCBhbmQgaXQncyB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzNDIsIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ5OjE1LjgxNjUwMDc4M1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoZWQgZmlsZSAoZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jKSBpcyBhIGhhcmR3YXJlIGRldmljZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVyLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBjb25uZWN0ZWQgdG8gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoZWQgZmlsZSAoZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jKSBpcyBhIGhhcmR3YXJlIGRldmljZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVyLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBjb25uZWN0ZWQgdG8gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ5OjE1LjgxNjUyNTEzM1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjzzgt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-12 01:32:58 +0000 UTC FinishedAt: 2026-09-12 02:49: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+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2hlZCBmaWxlIChkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMpIGlzIGEgaGFyZHdhcmUgZGV2aWNlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4MSBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXIuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGNvbm5lY3RlZCB0byBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQyZDdlNDFmNGE5MDM2NjYxZGRiODk4YjNhNzlhNzk3YmI0NDhlZTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCAxMiAwMjo0Nzo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNcbmluZGV4IDhlYjUxYjFhMDA2YzQuLjY4ZmQ0ZDBmZTMxYjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguY1xuQEAgLTIwMCw4ICYjNDM7MjAwLDggQEAgc3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4gXHRpbnQgcmV0O1xuIFxuLVx0LyogRGVmYXVsdCB0byBMRUQgQWN0aXZlIEhpZ2ggaWYgYWN0aXZlLWxvdyBub3QgaW4gRFQgKi9cbi1cdGlmIChwcml2LVx1MDAzZWxlZF9wb2xhcml0eV9tb2RlID09IC0xKSB7XG4mIzQzO1x0LyogU2V0IExFRCBBY3RpdmUgSGlnaCB1bmxlc3MgYWN0aXZlLWxvdyB3YXMgcmVxdWVzdGVkIGluIERUICovXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlbGVkX3BvbGFyaXR5X21vZGUgIT0gMSkge1xuIFx0XHRyZXQgPSBwaHlfc2V0X2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfQU4sXG4gXHRcdFx0XHQgICAgICAgUUNBODA4WF9NTUQ3X0xFRF9QT0xBUklUWV9DVFJMLFxuIFx0XHRcdFx0ICAgICAgIFFDQTgwOFhfTEVEX0FDVElWRV9ISUdIKTtcbkBAIC02MDMsNiAmIzQzOzYwMyw5IEBAIHN0YXRpYyBpbnQgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbiBcdFx0Y2FzZSBQSFlfTEVEX0FDVElWRV9MT1c6XG4gXHRcdFx0YWN0aXZlX2xvdyA9IHRydWU7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIFBIWV9MRURfQUNUSVZFX0hJR0g6XG4mIzQzO1x0XHRcdGFjdGl2ZV9sb3cgPSBmYWxzZTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaGVkIGZpbGUgKGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYykgaXMgYSBoYXJkd2FyZSBkZXZpY2UgZHJpdmVyIGZvciB0aGUgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4MDgxIEV0aGVybmV0IFBIWSB0cmFuc2NlaXZlci4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgY29ubmVjdGVkIHRvIGFuIE1ESU8gYnVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDJkN2U0MWY0YTkwMzY2NjFkZGI4OThiM2E3OWE3OTdiYjQ0OGVlMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgU2VwIDEyIDAyOjQ3OjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jIGIvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jCmluZGV4IDhlYjUxYjFhMDA2YzQuLjY4ZmQ0ZDBmZTMxYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMKQEAgLTIwMCw4ICYjNDM7MjAwLDggQEAgc3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJc3RydWN0IHFjYTgwOHhfcHJpdiAqcHJpdiA9IHBoeWRldi0mZ3Q7cHJpdjsKIAlpbnQgcmV0OwogCi0JLyogRGVmYXVsdCB0byBMRUQgQWN0aXZlIEhpZ2ggaWYgYWN0aXZlLWxvdyBub3QgaW4gRFQgKi8KLQlpZiAocHJpdi0mZ3Q7bGVkX3BvbGFyaXR5X21vZGUgPT0gLTEpIHsKJiM0MzsJLyogU2V0IExFRCBBY3RpdmUgSGlnaCB1bmxlc3MgYWN0aXZlLWxvdyB3YXMgcmVxdWVzdGVkIGluIERUICovCiYjNDM7CWlmIChwcml2LSZndDtsZWRfcG9sYXJpdHlfbW9kZSAhPSAxKSB7CiAJCXJldCA9IHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwKIAkJCQkgICAgICAgUUNBODA4WF9NTUQ3X0xFRF9QT0xBUklUWV9DVFJMLAogCQkJCSAgICAgICBRQ0E4MDhYX0xFRF9BQ1RJVkVfSElHSCk7CkBAIC02MDMsNiAmIzQzOzYwMyw5IEBAIHN0YXRpYyBpbnQgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwKIAkJY2FzZSBQSFlfTEVEX0FDVElWRV9MT1c6CiAJCQlhY3RpdmVfbG93ID0gdHJ1ZTsKIAkJCWJyZWFrOwomIzQzOwkJY2FzZSBQSFlfTEVEX0FDVElWRV9ISUdIOgomIzQzOwkJCWFjdGl2ZV9sb3cgPSBmYWxzZTsKJiM0MzsJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBRQ0E4MDh4IFBIWSBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGZvciB0aGUgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4MDh4IEV0aGVybmV0IFBIWSB0cmFuc2NlaXZlciBkcml2ZXIuIEkmIzM5O20gc2VlaW5nIGEgbW9kaWZpY2F0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkZXZpY2UgaXMgYW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFNpbmNlIGl0JiMzOTtzIGEgUEhZIGRyaXZlciwgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2Ugb2YgdGhlIG5ldHdvcmsgY29ubmVjdGlvbi4KCk5vdywgbG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgd2UmIzM5O3JlIG1vZGlmeWluZyB0aGUgTEVEIHBvbGFyaXR5IGNvbmZpZ3VyYXRpb24uIFNwZWNpZmljYWxseSwgaXQgYXBwZWFycyB0aGUgb3JpZ2luYWwgY29kZSBkZWZhdWx0ZWQgdG8gJiMzNDtMRUQgQWN0aXZlIEhpZ2gmIzM0OyBpZiBubyBzcGVjaWZpYyBzZXR0aW5nIHdhcyBwcm92aWRlZCB0aHJvdWdoIHRoZSBEZXZpY2UgVHJlZSAoRFQpLiBUaGUgY2hhbmdlIHJlZmluZXMgdGhpcyBsb2dpYy4gVGhlIG9yaWdpbmFsIGNoZWNrIHdhcyBpZiBgcHJpdi0mZ3Q7bGVkX3BvbGFyaXR5X21vZGVgIHdhcyBzZXQgdG8gLTEsIHdoZXJlYXMgdGhpcyB1cGRhdGUgaXMgY2hlY2tpbmcgaWYgaXQgaXMgKm5vdCogZXF1YWwgdG8gMS4gVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIHdhcyBzYXlpbmcgJiMzNDtpZiBub3Qgc3BlY2lmaWVkLCB1c2UgaGlnaCYjMzQ7LiBJIGxpa2UgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGNoYW5nZXMgdG8gJiMzNDtpZiBub3QgKmV4cGxpY2l0bHkqIGxvdywgc2V0IHRvIGhpZ2gmIzM0Oy4gVGhlIGNvZGUgaXMgYWxzbyBhZGRpbmcgYFBIWV9MRURfQUNUSVZFX0hJR0hgIGludG8gdGhlIGBxY2E4MDh4X2xlZF9wb2xhcml0eV9zZXRgIGZ1bmN0aW9uLgoKSSBzZWUgdGhleSYjMzk7cmUgdXNpbmcgYHBoeV9zZXRfYml0c19tbWRgIHRvIGNvbmZpZ3VyZSB0aGUgTXVsdGktTWVkaWEtRGVwZW5kZW50IChNTUQpIHJlZ2lzdGVycyBvZiB0aGUgUEhZLiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlLgoKVGhlIGNoYW5nZSBzaG91bGQgZW5zdXJlIHRoYXQgd2UmIzM5O3JlIGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgTEVEIHBvbGFyaXR5IGJhc2VkIG9uIHRoZSBEVCBjb25maWd1cmF0aW9uLiBUaGUgYWRkaXRpb24gb2YgdGhlIGBQSFlfTEVEX0FDVElWRV9ISUdIYCBjYXNlIGluIHRoZSBgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbiBpcyBhIGdyZWF0IGFkZGl0aW9uLCBwcm92aWRpbmcgY29uc2lzdGVuY3kuCgpOZXh0LCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIHRvIGNvbmZpcm0gdGhlIHZpc2liaWxpdHkgb2YgdGhpcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cWNhODA4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZT00PW9iai0kKENPTkZJR19RQ0E4M1hYX1BIWSlcdCYjNDM7PSBxY2E4M3h4Lm9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1FDQTgwOFhfUEhZKVx0JiM0Mzs9IHFjYTgwOHgub1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGUtNi1vYmotJChDT05GSUdfUUNBODA3WF9QSFkpXHQmIzQzOz0gcWNhODA3eC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM9MTExMz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXQ4MDN4X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMTUtXHQuY2FibGVfdGVzdF9zdGFydFx0PSBpcHE1MDE4X2NhYmxlX3Rlc3Rfc3RhcnQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjE2Olx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1c1x0PSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMTctXHQuc29mdF9yZXNldFx0XHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz0xODE9c3RhdGljIGludCBxY2E4MDd4X2xlZF9od19jb250cm9sX2VuYWJsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleClcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMTg4LVx0cmVnID0gUUNBODA3WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKGluZGV4KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzoxODk6XHRyZXR1cm4gcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfZW5hYmxlKHBoeWRldiwgcmVnKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy0xOTAtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz0yMzg9c3RhdGljIGJvb2wgcWNhODA3eF9sZWRfaHdfY29udHJvbF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTI0NS1cdHJlZyA9IFFDQTgwN1hfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6MjQ2Olx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19od19jb250cm9sX3N0YXR1cyhwaHlkZXYsIHJlZyk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMjQ3LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9MzMwPXN0YXRpYyBpbnQgcWNhODA3eF9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMzQ2LVx0cmVnID0gUUNBODA3WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKGluZGV4KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzozNDc6XHRyZXR1cm4gcWNhODA4eF9sZWRfcmVnX2JyaWdodG5lc3Nfc2V0KHBoeWRldiwgcmVnLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMzQ4LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9MzUwPXN0YXRpYyBpbnQgcWNhODA3eF9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy0zNTktXHRyZWcgPSBRQ0E4MDdYX01NRDdfTEVEX0ZPUkNFX0NUUkwoaW5kZXgpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjM2MDpcdHJldHVybiBxY2E4MDh4X2xlZF9yZWdfYmxpbmtfc2V0KHBoeWRldiwgcmVnLCBkZWxheV9vbiwgZGVsYXlfb2ZmKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy0zNjEtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz03OTE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwN3hfZHJpdmVyc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MDctXHRcdC5jYWJsZV90ZXN0X3N0YXJ0XHQ9IHFjYTgwN3hfY2FibGVfdGVzdF9zdGFydCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo4MDg6XHRcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXNcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtODA5LVx0XHQudXBkYXRlX3N0YXRzXHRcdD0gcWNhODA3eF91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTgzMC1cdFx0LmNhYmxlX3Rlc3Rfc3RhcnRcdD0gcWNhODA3eF9jYWJsZV90ZXN0X3N0YXJ0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjgzMTpcdFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1c1x0PSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MzItXHRcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBxY2E4MDd4X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM9OTI9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy05My1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo5NDpzdHJ1Y3QgcWNhODA4eF9wcml2IHtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy05NS1cdGludCBsZWRfcG9sYXJpdHlfbW9kZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtOTgtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6OTk6c3RhdGljIGludCBxY2E4MDh4X3BoeV9mYXN0X3JldHJhaW5fY29uZmlnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTAwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTMzLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjEzNDpzdGF0aWMgaW50IHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTEzNS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE0OC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxNDk6c3RhdGljIGJvb2wgcWNhODA4eF9pc19wcmVmZXJfbWFzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTUwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTU0LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE1NTpzdGF0aWMgYm9vbCBxY2E4MDh4X2hhc19mYXN0X3JldHJhaW5fb3Jfc2xhdmVfc2VlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE1Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE1OS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxNjA6c3RhdGljIGJvb2wgcWNhODA4eF9pc18xZ19vbmx5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTYxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTcwLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE3MTpzdGF0aWMgdm9pZCBxY2E4MDh4X2ZpbGxfcG9zc2libGVfaW50ZXJmYWNlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE3Mi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE3Ni1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxNzc6XHRpZiAoIXFjYTgwOHhfaXNfMWdfb25seShwaHlkZXYpKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE3OC1cdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsIHBvc3NpYmxlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTgwLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE4MTpzdGF0aWMgaW50IHFjYTgwOHhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xODIte1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE4My1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldjtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxODQ6XHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE4NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTk3LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE5ODpzdGF0aWMgaW50IHFjYTgwOHhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xOTkte1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIwMDpcdHN0cnVjdCBxY2E4MDh4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMDEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMjQtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MjI1Olx0aWYgKHFjYTgwOHhfaGFzX2Zhc3RfcmV0cmFpbl9vcl9zbGF2ZV9zZWVkKHBoeWRldikpIHtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMjYtXHRcdC8qIENvbmZpZyB0aGUgZmFzdCByZXRyYWluIGZvciB0aGUgbGluayAyNTAwTSAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIyNzpcdFx0cmV0ID0gcWNhODA4eF9waHlfZmFzdF9yZXRyYWluX2NvbmZpZyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTIyOC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjM0LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIzNTpcdFx0aWYgKCFxY2E4MDh4X2lzX3ByZWZlcl9tYXN0ZXIocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTIzNi1cdFx0XHQvKiBFbmFibGUgc2VlZCBhbmQgY29uZmlndXJlIGxvd2VyIHJhbWRvbSBzZWVkIHRvIG1ha2UgcGh5XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTIzOC1cdFx0XHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoyMzk6XHRcdFx0cmV0ID0gcWNhODA4eF9waHlfbXNfc2VlZF9lbmFibGUocGh5ZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yNDAtXHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjQ0LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjI0NTpcdHFjYTgwOHhfZmlsbF9wb3NzaWJsZV9pbnRlcmZhY2VzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjQ2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yNTYtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MjU3OnN0YXRpYyBpbnQgcWNhODA4eF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI1OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI5NC1cdFx0ICovXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Mjk1Olx0XHRpZiAocWNhODA4eF9oYXNfZmFzdF9yZXRyYWluX29yX3NsYXZlX3NlZWQocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI5Ni1cdFx0XHRpZiAocGh5ZGV2LVx1MDAzZW1hc3Rlcl9zbGF2ZV9zdGF0ZSA9PSBNQVNURVJfU0xBVkVfU1RBVEVfRVJSIHx8XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Mjk3Olx0XHRcdCAgICBxY2E4MDh4X2lzX3ByZWZlcl9tYXN0ZXIocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjI5ODpcdFx0XHRcdHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI5OS1cdFx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjMwMDpcdFx0XHRcdHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzAxLVx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzA3LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjMwODpzdGF0aWMgaW50IHFjYTgwOHhfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTMwOS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTMxNS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozMTY6XHRpZiAocWNhODA4eF9oYXNfZmFzdF9yZXRyYWluX29yX3NsYXZlX3NlZWQocGh5ZGV2KSlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozMTc6XHRcdHJldCA9IHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzE4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zMjEtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MzIyOnN0YXRpYyBpbnQgcWNhODA4eF9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzIzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzYyLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjM2MzpzdGF0aWMgaW50IHFjYTgwOHhfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzY0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzcxLVx0LyogVGhlIGF1dG9uZWcgYWJpbGl0eSBpcyBub3QgZXhpc3RlZCBpbiBiaXQzIG9mIE1NRDcuMSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozNzI6XHQgKiBidXQgaXQgaXMgc3VwcG9ydGVkIGJ5IHFjYTgwOHggUEhZLCBzbyB3ZSBhZGQgaXQgaGVyZVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTM3My1cdCAqIG1hbnVhbGx5LlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zODAtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozODE6XHRpZiAocWNhODA4eF9pc18xZ19vbmx5KHBoeWRldikpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzgyLVx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzg2LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjM4NzpzdGF0aWMgaW50IHFjYTgwOHhfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zODgte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00MTItXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDEzOnN0YXRpYyB2b2lkIHFjYTgwOHhfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDE0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDIzLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQyNDpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX3BhcnNlX25ldGRldihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBsb25nIHJ1bGVzLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQyNS1cdFx0XHRcdCAgICB1MTYgKm9mZmxvYWRfdHJpZ2dlcilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDU1LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ1NjpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZW5hYmxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ1Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ2My1cdHJlZyA9IFFDQTgwOFhfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDY0Olx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19od19jb250cm9sX2VuYWJsZShwaHlkZXYsIHJlZyk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDY1LX1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NjYtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDY3OnN0YXRpYyBpbnQgcWNhODA4eF9sZWRfaHdfaXNfc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ2OC1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIHJ1bGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NzQtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDc1Olx0cmV0dXJuIHFjYTgwOHhfbGVkX3BhcnNlX25ldGRldihwaHlkZXYsIHJ1bGVzLCBcdTAwMjZvZmZsb2FkX3RyaWdnZXIpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ3Ni19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDc3LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ3ODpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ3OS1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ4OC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo0ODk6XHRyZXQgPSBxY2E4MDh4X2xlZF9wYXJzZV9uZXRkZXYocGh5ZGV2LCBydWxlcywgXHUwMDI2b2ZmbG9hZF90cmlnZ2VyKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00OTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00OTItXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDkzOlx0cmV0ID0gcWNhODA4eF9sZWRfaHdfY29udHJvbF9lbmFibGUocGh5ZGV2LCBpbmRleCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDk0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTAxLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUwMjpzdGF0aWMgYm9vbCBxY2E4MDh4X2xlZF9od19jb250cm9sX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleClcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MDMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MDktXHRyZWcgPSBRQ0E4MDhYX01NRDdfTEVEX0ZPUkNFX0NUUkwoaW5kZXgpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUxMDpcdHJldHVybiBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9zdGF0dXMocGh5ZGV2LCByZWcpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTUxMS19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTEyLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUxMzpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTUxNC1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgKnJ1bGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MjItXHQvKiBDaGVjayBpZiB3ZSBoYXZlIGh3IGNvbnRyb2wgZW5hYmxlZCAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUyMzpcdGlmIChxY2E4MDh4X2xlZF9od19jb250cm9sX3N0YXR1cyhwaHlkZXYsIGluZGV4KSlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MjQtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NDgtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTQ5OnN0YXRpYyBpbnQgcWNhODA4eF9sZWRfaHdfY29udHJvbF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleClcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NTAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NjEtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTYyOnN0YXRpYyBpbnQgcWNhODA4eF9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NjMtXHRcdFx0XHQgICAgICB1OCBpbmRleCwgZW51bSBsZWRfYnJpZ2h0bmVzcyB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTcxLVx0aWYgKCF2YWx1ZSkge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU3MjpcdFx0cmV0ID0gcWNhODA4eF9sZWRfaHdfY29udHJvbF9yZXNldChwaHlkZXYsIGluZGV4KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NzMtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU3Ny1cdHJlZyA9IFFDQTgwOFhfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTc4Olx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19icmlnaHRuZXNzX3NldChwaHlkZXYsIHJlZywgdmFsdWUpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU3OS19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTgwLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU4MTpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01ODItXHRcdFx0XHQgdW5zaWduZWQgbG9uZyAqZGVsYXlfb24sXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5MC1cdHJlZyA9IFFDQTgwOFhfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTkxOlx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19ibGlua19zZXQocGh5ZGV2LCByZWcsIGRlbGF5X29uLCBkZWxheV9vZmYpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5Mi19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTkzLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU5NDpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTk1LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTk2LXtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo1OTc6XHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTk4LVx0Ym9vbCBhY3RpdmVfbG93ID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTYzMi1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2MzM6c3RhdGljIGludCBxY2E4MDh4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTYzNC17XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjM1Olx0c3RydWN0IHFjYTgwOHhfcHJpdiAqcHJpdiA9IHBoeWRldi1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTYzNi1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjM5LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY0MDpzdGF0aWMgdm9pZCBxY2E4MDh4X2dldF9waHlfc3RhdHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NDEtXHRcdFx0XHQgIHN0cnVjdCBldGh0b29sX2V0aF9waHlfc3RhdHMgKmV0aF9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjQzLXtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NDQ6XHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjQ1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NDgtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjQ5OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBxY2E4MDh4X2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY1MC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY1NC1cdC5mbGFnc1x0XHRcdD0gUEhZX1BPTExfQ0FCTEVfVEVTVCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NTU6XHQucHJvYmVcdFx0XHQ9IHFjYTgwOHhfcHJvYmUsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjU2LVx0LmNvbmZpZ19pbnRyXHRcdD0gYXQ4MDN4X2NvbmZpZ19pbnRyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NjEtXHQuZ2V0X3dvbFx0XHQ9IGF0ODAzeF9nZXRfd29sLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY2MjpcdC5nZXRfZmVhdHVyZXNcdFx0PSBxY2E4MDh4X2dldF9mZWF0dXJlcyxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NjM6XHQuY29uZmlnX2FuZWdcdFx0PSBxY2E4MDh4X2NvbmZpZ19hbmVnLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY2NC1cdC5zdXNwZW5kXHRcdD0gZ2VucGh5X3N1c3BlbmQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjY1LVx0LnJlc3VtZVx0XHRcdD0gZ2VucGh5X3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NjY6XHQucmVhZF9zdGF0dXNcdFx0PSBxY2E4MDh4X3JlYWRfc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY2NzpcdC5jb25maWdfaW5pdFx0XHQ9IHFjYTgwOHhfY29uZmlnX2luaXQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY4Olx0LnNvZnRfcmVzZXRcdFx0PSBxY2E4MDh4X3NvZnRfcmVzZXQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY5Olx0LmNhYmxlX3Rlc3Rfc3RhcnRcdD0gcWNhODA4eF9jYWJsZV90ZXN0X3N0YXJ0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3MDpcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXNcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjcxOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBxY2E4MDh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NzI6XHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IHFjYTgwOHhfbGVkX2JyaWdodG5lc3Nfc2V0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3MzpcdC5sZWRfYmxpbmtfc2V0XHRcdD0gcWNhODA4eF9sZWRfYmxpbmtfc2V0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3NDpcdC5sZWRfaHdfaXNfc3VwcG9ydGVkXHQ9IHFjYTgwOHhfbGVkX2h3X2lzX3N1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NzU6XHQubGVkX2h3X2NvbnRyb2xfc2V0XHQ9IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3NjpcdC5sZWRfaHdfY29udHJvbF9nZXRcdD0gcWNhODA4eF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njc3Olx0LmxlZF9wb2xhcml0eV9zZXRcdD0gcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3ODpcdC51cGRhdGVfc3RhdHNcdFx0PSBxY2E4MDh4X3VwZGF0ZV9zdGF0cyxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2Nzk6XHQuZ2V0X3BoeV9zdGF0c1x0XHQ9IHFjYTgwOHhfZ2V0X3BoeV9zdGF0cyxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODAtfSwgfTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODEtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjgyOm1vZHVsZV9waHlfZHJpdmVyKHFjYTgwOHhfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODMtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njg0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgcWNhODA4eF90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODUtXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MDgxX1BIWV9JRCkgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjg4LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY4OTpNT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIHFjYTgwOHhfdGJsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYz00OTE9RVhQT1JUX1NZTUJPTF9HUEwoYXQ4MDN4X2NkdF93YWl0X2Zvcl9jb21wbGV0aW9uKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTQ5Mi1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjQ5MzpzdGF0aWMgYm9vbCBxY2E4MDh4X2NkdF9mYXVsdF9sZW5ndGhfdmFsaWQoaW50IGNkdF9jb2RlKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNDk0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy01MTItXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo1MTM6c3RhdGljIGludCBxY2E4MDh4X2NhYmxlX3Rlc3RfcmVzdWx0X3RyYW5zKGludCBjZHRfY29kZSlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTUxNC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTM3LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NTM4OnN0YXRpYyBpbnQgcWNhODA4eF9jZHRfZmF1bHRfbGVuZ3RoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWlyLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTM5LVx0XHRcdFx0ICAgIGludCByZXN1bHQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTcyLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NTczOnN0YXRpYyBpbnQgcWNhODA4eF9jYWJsZV90ZXN0X2dldF9wYWlyX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBwYWlyLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTc0LVx0XHRcdFx0XHQgICAgICB1MTYgc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTU5NS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjU5NjpcdHJlc3VsdCA9IHFjYTgwOHhfY2FibGVfdGVzdF9yZXN1bHRfdHJhbnMocGFpcl9jb2RlKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTU5Ny1cdGV0aG5sX2NhYmxlX3Rlc3RfcmVzdWx0KHBoeWRldiwgcGFpciwgcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTU5OC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjU5OTpcdGlmIChxY2E4MDh4X2NkdF9mYXVsdF9sZW5ndGhfdmFsaWQocGFpcl9jb2RlKSkge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjAwOlx0XHRsZW5ndGggPSBxY2E4MDh4X2NkdF9mYXVsdF9sZW5ndGgocGh5ZGV2LCBwYWlyLCByZXN1bHQpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjAxLVx0XHRldGhubF9jYWJsZV90ZXN0X2ZhdWx0X2xlbmd0aChwaHlkZXYsIHBhaXIsIGxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjA2LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjA3OmludCBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpmaW5pc2hlZClcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYwOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjI2LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjI3Olx0cmV0ID0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9wYWlyX3N0YXR1cyhwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0EsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYzMC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjYzMTpcdHJldCA9IHFjYTgwOHhfY2FibGVfdGVzdF9nZXRfcGFpcl9zdGF0dXMocGh5ZGV2LCBFVEhUT09MX0FfQ0FCTEVfUEFJUl9CLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjMyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MzQtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2MzU6XHRyZXQgPSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3BhaXJfc3RhdHVzKHBoeWRldiwgRVRIVE9PTF9BX0NBQkxFX1BBSVJfQywgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYzNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjM4LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjM5Olx0cmV0ID0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9wYWlyX3N0YXR1cyhwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0QsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NDAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY0Ni19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2NDc6RVhQT1JUX1NZTUJPTF9HUEwocWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjQ4LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjQ5OmludCBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZylcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY1MC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjUzLX1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjY1NDpFWFBPUlRfU1lNQk9MX0dQTChxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9lbmFibGUpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjU1LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjU2OmJvb2wgcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NTcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY2Mi19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2NjM6RVhQT1JUX1NZTUJPTF9HUEwocWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY2NC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjY2NTppbnQgcWNhODA4eF9sZWRfcmVnX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NjYtXHRcdFx0XHQgICB1MTYgcmVnLCBlbnVtIGxlZF9icmlnaHRuZXNzIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY3Mi19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2NzM6RVhQT1JUX1NZTUJPTF9HUEwocWNhODA4eF9sZWRfcmVnX2JyaWdodG5lc3Nfc2V0KTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY3NC1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjY3NTppbnQgcWNhODA4eF9sZWRfcmVnX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjc2LVx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTcwMC19XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo3MDE6RVhQT1JUX1NZTUJPTF9HUEwocWNhODA4eF9sZWRfcmVnX2JsaW5rX3NldCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy03MDItXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS5oPTI1Nz1pbnQgYXQ4MDN4X2NkdF93YWl0X2Zvcl9jb21wbGV0aW9uKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjU4LVx0XHRcdFx0ICAgdTMyIGNkdF9lbik7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjU5OmludCBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpmaW5pc2hlZCk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjYwOmludCBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZyk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjYxOmJvb2wgcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS5oOjI2MjppbnQgcWNhODA4eF9sZWRfcmVnX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjYzLVx0XHRcdFx0ICAgdTE2IHJlZywgZW51bSBsZWRfYnJpZ2h0bmVzcyB2YWx1ZSk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjY0OmludCBxY2E4MDh4X2xlZF9yZWdfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjY1LVx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0Mzg5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgUUNBODA4WCBQSFkgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhlIGRlZmluaXRpb24gb2YgYENPTkZJR19RQ0E4MDhYX1BIWWAuIE5vIG5lZWQgdG8gcmVpbnZlbnQgdGhlIHdoZWVsLCBzbyBJJiMzOTtsbCBqdW1wIHN0cmFpZ2h0IGludG8gYGRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBQSFkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIG1pZ2h0IGJlIHJlbGV2YW50IGluIHRoaXMgY29uZmlndXJhdGlvbiBzcGFjZS4gVGhpcyBpcyBmdW5kYW1lbnRhbDsgSSBjYW4mIzM5O3QgcHJvY2VlZCBlZmZlY3RpdmVseSB1bnRpbCBJIGtub3cgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIGV4cGVjdHMgYW5kIGhvdyB0aGlzIHNwZWNpZmljIFBIWSBpbnRlZ3JhdGVzIGludG8gdGhlIGJyb2FkZXIgUXVhbGNvbW0gbmV0d29ya2luZyBkcml2ZXIgbGFuZHNjYXBlLiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIGVudHJ5IGlzIHRoZSBlc3NlbnRpYWwgZmlyc3Qgc3RlcCB0byB1bmRlcnN0YW5kaW5nIGl0cyBmdWxsIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUUNBODA4WF9QSFkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0xMj1jb25maWcgUUNBODNYWF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZzoxODpjb25maWcgUUNBODA4WF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBRQ0E4MDh4IFBIWXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDczMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBRQ09NIFBIWSBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTguIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBhcmVhIHByb2JhYmx5IGRlYWxzIHdpdGggdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgUXVhbGNvbW0gUEhZIGRyaXZlcnMuIEdpdmVuIHRoZSBmaWxlIG5hbWUsIGl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgdGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBtYXliZSBldmVuIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgZ292ZXJuaW5nIHdoaWNoIHNwZWNpZmljIFFDT00gUEhZIGltcGxlbWVudGF0aW9ucyBhcmUgZW5hYmxlZCBkdXJpbmcgdGhlIGJ1aWxkLiBUaGlzIGlzIHRoZSBwbGFjZSB0byBzdGFydCBpZiBJJiMzOTttIHRyeWluZyB0byB1bmRlcnN0YW5kIG9yIG1vZGlmeSB0aGUgaW5jbHVzaW9uIG9mIGEgcGFydGljdWxhciBRQ09NIFBIWSBpbiBhIGtlcm5lbCBidWlsZC4gSSBhbnRpY2lwYXRlIGZpbmRpbmcgdGhpbmdzIGxpa2Ugd2hldGhlciBjZXJ0YWluIFBIWXMgYXJlIGVuYWJsZWQgYmFzZWQgb24gYXJjaGl0ZWN0dXJlLCBib2FyZCB0eXBlLCBvciBzcGVjaWZpYyBTb0MgZmVhdHVyZXMuIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1jb21tZW50ZWQgc28gSSBjYW4gcXVpY2tseSBncm9rIHRoZSBpbnRlbnQgYmVoaW5kIGVhY2ggb3B0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFFDT01fTkVUX1BIWUxJQlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgQVQ4MDNYX1BIWVxuICAgNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZc1wmIzM0O1xuICAgNzpcdFx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxuICAgODpcdFx0ZGVwZW5kcyBvbiBSRUdVTEFUT1JcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBBUjgwMzAsIEFSODAzMSwgQVI4MDMzLCBBUjgwMzUsIElQUTUwMTggbW9kZWxcbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgUUNBODNYWF9QSFlcbiAgMTM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgUUNBODMzeCBQSFlzXCYjMzQ7XG4gIDE0Olx0XHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXG4gIDE1Olx0XHRoZWxwXG4gIDE2Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgUUNBODMzNyhJbnRlcm5hbCBxY2E4ayBQSFkpIG1vZGVsXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIFFDQTgwOFhfUEhZXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBRQ0E4MDh4IFBIWXNcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBRQ0E4MDgxIG1vZGVsXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIFFDQTgwN1hfUEhZXG4gIDI1Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBRQ0E4MDd4IFBIWXNcJiMzNDtcbiAgMjY6XHRcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcbiAgMjc6XHRcdHNlbGVjdCBQSFlfUEFDS0FHRVxuICAyODpcdFx0ZGVwZW5kcyBvbiBPRl9NRElPXG4gIDI5Olx0XHRoZWxwXG4gIDMwOlx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgUXVhbGNvbW0gUUNBODA3MiwgUUNBODA3NSBhbmQgdGhlIFBTR01JSVxuICAzMTpcdFx0ICBjb250cm9sIFBIWS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTQ1NwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQcm9iaW5nIE1ESU8gUEhZcyBpbiBhIFZpcnR1YWwgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdGhlIFFDQTgwOFgsIHdoaWNoIGlzIGFuIE1ESU8gRXRoZXJuZXQgUEhZLCBnZXRzIHByb2JlZCBhbmQgYm91bmQgaW4gdGhlIGtlcm5lbC4gSSBzZWUgaXQgdXNlcyBgTU9EVUxFX0RFVklDRV9UQUJMRWAgZm9yIHRoZSBNRElPIHN1YnN5c3RlbSBhbmQgdGhlbiByZWdpc3RlcnMgaXRzIGRyaXZlciB3aXRoIGBtb2R1bGVfcGh5X2RyaXZlcmAuIEJ1dCwgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIG9yIHByb2JlIGFuIE1ESU8gUEhZIGRyaXZlciBsaWtlIHRoaXMgd2l0aGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2l0aG91dCBoYXZpbmcgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/CgpJIG5lZWQgdG8gZXhwbG9yZSBpZiB0aGVyZSBhcmUgd2F5cyB0byBjcmVhdGUgdGhlc2UgTURJTyBQSFlzIHZpcnR1YWxseSwgbWF5YmUgdGhyb3VnaCBzeXNmcyBvciBzb21lIG90aGVyIHZpcnR1YWwgZGV2aWNlIG1lY2hhbmlzbS4gSSYjMzk7bSB3b25kZXJpbmcgaWYgc29tZXRoaW5nIGxpa2UgYG1kaW8tZ3Bpb2AsIGBtZGlvLWJpdGJhbmdgLCBvciBldmVuIGEgYG1kaW8tbW9ja2AgZGV2aWNlIGV4aXN0cyB0byBzaW11bGF0ZSB0aGlzLiBDYW4gSSBjcmVhdGUgdGhlc2UgTURJTyBwaHkgZGV2aWNlcyBmcm9tIHVzZXIgc3BhY2Ugb3IgdGhyb3VnaCBhIHZpcnR1YWwgZGV2aWNlIHNvbWVob3c/CgpUaW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGJhc2UuIEkmIzM5O2xsIGhpdCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0IGNvbWVzIHVwIHJlZ2FyZGluZyBNRElPIGRyaXZlciByZWdpc3RyYXRpb24sIHN5c2ZzIGludGVyYWN0aW9ucywgYW5kIG1heWJlIGV2ZW4gTmV0bGluayB1c2FnZSBmb3IgY2x1ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTURJTyBkcml2ZXJzIGFyZSBtYW5hZ2VkIGFuZCBpZiB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgcGF0aCB0byB0ZXN0IG9yIGRldmVsb3AgdGhlbSB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvX2J1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzYwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ND1saWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXHRcdFx0XHQgICBsaW5rbW9kZS5vIHBoeV9saW5rX3RvcG9sb2d5Lm8gXFxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo2Olx0XHRcdFx0ICAgcGh5X2NhcHMubyBtZGlvX2J1c19wcm92aWRlci5vIHBoeV9wb3J0Lm8gXFxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS03LVx0XHRcdFx0ICAgbWRpb19kZXZpY2Uub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xNj1saWJwaHktJChDT05GSUdfT1BFTl9BTExJQU5DRV9IRUxQRVJTKSAmIzQzOz0gb3Blbl9hbGxpYW5jZV9oZWxwZXJzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xNy1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbWRpb19idXMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE5LW9iai0kKENPTkZJR19QSFlMSU5LKVx0XHQmIzQzOz0gcGh5bGluay5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDEzPXN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2Fzc2VydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQxNy1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQxODpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MTktXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDMyLXVubG9jazpcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQzMzpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQzNC1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDM3PXN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2RlYXNzZXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDQxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDQyOlx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQ0My1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00NTctdW5sb2NrOlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDU4Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDU5LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz0zMz1pbnQgYmNtX3BoeV93cml0ZV9leHAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zNi1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjM3Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTM4LVx0cmMgPSBfX2JjbV9waHlfd3JpdGVfZXhwKHBoeWRldiwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Mzk6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy00MC1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz02Mj1pbnQgYmNtX3BoeV9yZWFkX2V4cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY1LVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6NjY6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjctXHRyYyA9IF9fYmNtX3BoeV9yZWFkX2V4cChwaHlkZXYsIHJlZyk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo2ODpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTk0PWludCBiY21fcGh5X21vZGlmeV9leHAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtOTctXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo5ODpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy05OS1cdHJldCA9IF9fYmNtX3BoeV9tb2RpZnlfZXhwKHBoeWRldiwgcmVnLCBtYXNrLCBzZXQpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6MTAwOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMTAxLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTI3MT1pbnQgYmNtX3BoeV9yZWFkX3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmRiKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTI3NC1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjI3NTpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0yNzYtXHRyZXQgPSBfX2JjbV9waHlfcmVhZF9yZGIocGh5ZGV2LCByZGIpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Mjc3Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMjc4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTI5NT1pbnQgYmNtX3BoeV93cml0ZV9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJkYiwgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0yOTgtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzoyOTk6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzAwLVx0cmV0ID0gX19iY21fcGh5X3dyaXRlX3JkYihwaHlkZXYsIHJkYiwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjMwMTpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTMwMi1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz0zMjc9aW50IGJjbV9waHlfbW9kaWZ5X3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmRiLCB1MTYgbWFzaywgdTE2IHNldClcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zMzAtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozMzE6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzMyLVx0cmV0ID0gX19iY21fcGh5X21vZGlmeV9yZGIocGh5ZGV2LCByZGIsIG1hc2ssIHNldCk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozMzM6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zMzQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9NjYwPXN0YXRpYyBpbnQgX2JjbV9waHlfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGlzX3JkYilcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy02NzEtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo2NzI6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjczLVx0aWYgKGlzX3JkYikge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5MC1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjY5MTpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz03NDI9c3RhdGljIGludCBfYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03NDgtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo3NDk6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzUwLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc5OS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjgwMDpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTgwMS1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYz00MzI9c3RhdGljIGludCBiY201NDE0MF9iYXNlX3JlYWRfcmRiKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZGIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDM1LVxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6NDM2Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTQzNy1cdHJldCA9IF9fcGh5X3BhY2thZ2Vfd3JpdGUocGh5ZGV2LCBCQ001NDE0MF9CQVNFX0FERFIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDQ1LW91dDpcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jOjQ0NjpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTQ0Ny1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM9NDUwPXN0YXRpYyBpbnQgYmNtNTQxNDBfYmFzZV93cml0ZV9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00NTQtXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYzo0NTU6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDU2LVx0cmV0ID0gX19waHlfcGFja2FnZV93cml0ZShwaHlkZXYsIEJDTTU0MTQwX0JBU0VfQUREUixcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00NjQtb3V0OlxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6NDY1Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDY2LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz04Nzc9c3RhdGljIGludCBicmNtX2ZldF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTkzMi1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjkzMzpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy05MzQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTM2LVx0aWYgKGVyciBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6OTM3Olx0XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy05MzgtXHRcdHJldHVybiBlcnI7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTczLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6OTc0Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTc1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jPTEwMzY9c3RhdGljIGludCBicmNtX2ZldF9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA1My1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjEwNTQ6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA1NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xMDU3LVx0aWYgKGVyciBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTA1ODpcdFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA1OS1cdFx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xMDc1LVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTA3NjpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTEwNzctXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM9NzY9c3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTc5LVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6ODA6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtODEtXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtODYtb3V0OlxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6ODc6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy04OC1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM9MTA0PXN0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcbi0tXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMDctXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzoxMDg6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTA5LVx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTExNC1vdXQ6XG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzoxMTU6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMTYtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xOTM9RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3VucmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE5NC1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxOTU6c3RhdGljIGludCBfX2luaXQgZml4ZWRfbWRpb19idXNfaW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE5Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTIxOC19XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MjE5Om1vZHVsZV9pbml0KGZpeGVkX21kaW9fYnVzX2luaXQpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTIyMC1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoyMjE6c3RhdGljIHZvaWQgX19leGl0IGZpeGVkX21kaW9fYnVzX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMjIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMjUtfVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjIyNjptb2R1bGVfZXhpdChmaXhlZF9tZGlvX2J1c19leGl0KTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMjctXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmM9NTk9RVhQT1JUX1NZTUJPTChtZGlvYnVzX2lzX3JlZ2lzdGVyZWRfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jLTYwLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmM6NjE6c3RhdGljIHZvaWQgbWRpb2J1c19zdGF0c19hY2N0KHN0cnVjdCBtZGlvX2J1c19zdGF0cyAqc3RhdHMsIGJvb2wgb3AsIGludCByZXQpXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXMuYy02Mi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NDA9c3RhdGljIHZvaWQgbWRpb2J1c19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTUtXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NjpzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyIHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU3LVx0c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgYXR0cjtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02MS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjYyOnN0YXRpYyBzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyICp0b19zYXR0cihzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cilcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTYzLXtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjY0Olx0cmV0dXJuIGNvbnRhaW5lcl9vZihhdHRyLCBzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyLCBhdHRyKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY1LX1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY2LVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6Njc6c3RhdGljIHU2NCBtZGlvX2J1c19nZXRfc3RhdChzdHJ1Y3QgbWRpb19idXNfc3RhdHMgKnMsIHVuc2lnbmVkIGludCBvZmZzZXQpXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtODAtXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo4MTpzdGF0aWMgc3NpemVfdCBtZGlvX2J1c19zdGF0X2ZpZWxkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtODItXHRcdFx0XHRcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTg0LXtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjg1Olx0c3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciAqc2F0dHIgPSB0b19zYXR0cihhdHRyKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTg2LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHRvX21paV9idXMoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy05MS1cdFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIFBIWV9NQVhfQUREUjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo5MjpcdFx0XHR2YWwgJiM0Mzs9IG1kaW9fYnVzX2dldF9zdGF0KFx1MDAyNmJ1cy1cdTAwM2VzdGF0c1tpXSxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTkzLVx0XHRcdFx0XHRcdCBzYXR0ci1cdTAwM2VmaWVsZF9vZmZzZXQpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtOTQtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6OTU6XHRcdHZhbCA9IG1kaW9fYnVzX2dldF9zdGF0KFx1MDAyNmJ1cy1cdTAwM2VzdGF0c1tzYXR0ci1cdTAwM2VhZGRyZXNzXSxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTk2LVx0XHRcdFx0XHRzYXR0ci1cdTAwM2VmaWVsZF9vZmZzZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEwMS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEwMjpzdGF0aWMgc3NpemVfdCBtZGlvX2J1c19kZXZpY2Vfc3RhdF9maWVsZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEwMy1cdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEwNS17XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMDY6XHRzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyICpzYXR0ciA9IHRvX3NhdHRyKGF0dHIpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTA3LVx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2ID0gdG9fbWRpb19kZXZpY2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMTEtXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMTI6XHR2YWwgPSBtZGlvX2J1c19nZXRfc3RhdChcdTAwMjZidXMtXHUwMDNlc3RhdHNbYWRkcl0sIHNhdHRyLVx1MDAzZWZpZWxkX29mZnNldCk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMTMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTE3LSNkZWZpbmUgTURJT19CVVNfU1RBVFNfQVRUUihmaWVsZClcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjExODpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciBkZXZfYXR0cl9tZGlvX2J1c18jI2ZpZWxkID0ge1x0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjExOTpcdC5hdHRyID0gX19BVFRSKGZpZWxkLCAwNDQ0LCBtZGlvX2J1c19zdGF0X2ZpZWxkX3Nob3csIE5VTEwpLFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEyMC1cdC5hZGRyZXNzID0gLTEsXHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTIxOlx0LmZpZWxkX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBtZGlvX2J1c19zdGF0cywgZmllbGQpLFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTIyLX07XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEyMzpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciBkZXZfYXR0cl9tZGlvX2J1c19kZXZpY2VfIyNmaWVsZCA9IHsgXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEyNDpcdC5hdHRyID0gX19BVFRSKGZpZWxkLCAwNDQ0LCBtZGlvX2J1c19kZXZpY2Vfc3RhdF9maWVsZF9zaG93LCBOVUxMKSwgXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEyNTpcdC5maWVsZF9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgbWRpb19idXNfc3RhdHMsIGZpZWxkKSxcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEyNi19XG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9MTMxPU1ESU9fQlVTX1NUQVRTX0FUVFIocmVhZHMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEzMy0jZGVmaW5lIE1ESU9fQlVTX1NUQVRTX0FERFJfQVRUUl9ERUNMKGZpZWxkLCBhZGRyLCBmaWxlKVx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyXHRcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMzU6ZGV2X2F0dHJfbWRpb19idXNfYWRkcl8jI2ZpZWxkIyNfIyNhZGRyID0ge1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEzNi1cdC5hdHRyID0geyAuYXR0ciA9IHsgLm5hbWUgPSBmaWxlLCAubW9kZSA9IDA0NDQgfSxcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEzNzpcdFx0ICAgICAuc2hvdyA9IG1kaW9fYnVzX3N0YXRfZmllbGRfc2hvdyxcdFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTM4LVx0fSxcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEzOS1cdC5hZGRyZXNzID0gYWRkcixcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTQwOlx0LmZpZWxkX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBtZGlvX2J1c19zdGF0cywgZmllbGQpLFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTQxLX1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz0xODQ9TURJT19CVVNfU1RBVFNfQUREUl9BVFRSX0dST1VQX0RFQ0woMzEpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTE4Ni0jZGVmaW5lIE1ESU9fQlVTX1NUQVRTX0FERFJfQVRUUl9HUk9VUChhZGRyKVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE4NzpcdFx1MDAyNihkZXZfYXR0cl9tZGlvX2J1c19hZGRyX3RyYW5zZmVyc18jI2FkZHIpLmF0dHIuYXR0cixcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE4ODpcdFx1MDAyNihkZXZfYXR0cl9tZGlvX2J1c19hZGRyX2Vycm9yc18jI2FkZHIpLmF0dHIuYXR0cixcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE4OTpcdFx1MDAyNihkZXZfYXR0cl9tZGlvX2J1c19hZGRyX3dyaXRlc18jI2FkZHIpLmF0dHIuYXR0cixcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE5MDpcdFx1MDAyNihkZXZfYXR0cl9tZGlvX2J1c19hZGRyX3JlYWRzXyMjYWRkcikuYXR0ci5hdHRyXHRcdFx0XFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTE5MS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE5MjpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqY29uc3QgbWRpb19idXNfc3RhdGlzdGljc19hdHRyc1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTkzOlx0XHUwMDI2ZGV2X2F0dHJfbWRpb19idXNfdHJhbnNmZXJzLmF0dHIuYXR0cixcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE5NDpcdFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX2Vycm9ycy5hdHRyLmF0dHIsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxOTU6XHRcdTAwMjZkZXZfYXR0cl9tZGlvX2J1c193cml0ZXMuYXR0ci5hdHRyLFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTk2Olx0XHUwMDI2ZGV2X2F0dHJfbWRpb19idXNfcmVhZHMuYXR0ci5hdHRyLFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTk3LVx0TURJT19CVVNfU1RBVFNfQUREUl9BVFRSX0dST1VQKDApLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTIzMS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjIzMjpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBtZGlvX2J1c19zdGF0aXN0aWNzX2dyb3VwID0ge1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjMzLVx0Lm5hbWVcdFx0PSBcJiMzNDtzdGF0aXN0aWNzXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MjM0Olx0LmF0dHJzX2NvbnN0XHQ9IG1kaW9fYnVzX3N0YXRpc3RpY3NfYXR0cnMsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yMzUtfTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjIzNjpfX0FUVFJJQlVURV9HUk9VUFMobWRpb19idXNfc3RhdGlzdGljcyk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yMzctXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyMzg6Y29uc3Qgc3RydWN0IGNsYXNzIG1kaW9fYnVzX2NsYXNzID0ge1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MjM5Olx0Lm5hbWVcdFx0PSBcJiMzNDttZGlvX2J1c1wmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0MC1cdC5kZXZfcmVsZWFzZVx0PSBtZGlvYnVzX3JlbGVhc2UsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyNDE6XHQuZGV2X2dyb3Vwc1x0PSBtZGlvX2J1c19zdGF0aXN0aWNzX2dyb3VwcyxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0Mi19O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0NC0vKipcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI0NTogKiBtZGlvX2J1c19tYXRjaCAtIGRldGVybWluZSBpZiBnaXZlbiBNRElPIGRyaXZlciBzdXBwb3J0cyB0aGUgZ2l2ZW5cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0Ni0gKlx0XHQgICAgTURJTyBkZXZpY2Vcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yNTQtICovXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyNTU6c3RhdGljIGludCBtZGlvX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yNTYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTI3ND1zdGF0aWMgaW50IG1kaW9fdWV2ZW50KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI4NS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI4NjpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqY29uc3QgbWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3NfYXR0cnNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI4NzpcdFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX2RldmljZV90cmFuc2ZlcnMuYXR0ci5hdHRyLFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6Mjg4Olx0XHUwMDI2ZGV2X2F0dHJfbWRpb19idXNfZGV2aWNlX2Vycm9ycy5hdHRyLmF0dHIsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyODk6XHRcdTAwMjZkZXZfYXR0cl9tZGlvX2J1c19kZXZpY2Vfd3JpdGVzLmF0dHIuYXR0cixcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI5MDpcdFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX2RldmljZV9yZWFkcy5hdHRyLmF0dHIsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yOTEtXHROVUxMLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5My1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI5NDpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBtZGlvX2J1c19kZXZpY2Vfc3RhdGlzdGljc19ncm91cCA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5NS1cdC5uYW1lXHRcdD0gXCYjMzQ7c3RhdGlzdGljc1wmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI5NjpcdC5hdHRyc19jb25zdFx0PSBtZGlvX2J1c19kZXZpY2Vfc3RhdGlzdGljc19hdHRycyxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5Ny19O1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6Mjk4Ol9fQVRUUklCVVRFX0dST1VQUyhtZGlvX2J1c19kZXZpY2Vfc3RhdGlzdGljcyk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yOTktXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzozMDA6Y29uc3Qgc3RydWN0IGJ1c190eXBlIG1kaW9fYnVzX3R5cGUgPSB7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzozMDE6XHQubmFtZVx0XHQ9IFwmIzM0O21kaW9fYnVzXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MzAyOlx0LmRldl9ncm91cHNcdD0gbWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3NfZ3JvdXBzLFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MzAzOlx0Lm1hdGNoXHRcdD0gbWRpb19idXNfbWF0Y2gsXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0zMDQtXHQudWV2ZW50XHRcdD0gbWRpb191ZXZlbnQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTUzPWludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTgwLVx0YnVzLVx1MDAzZWRldi5wYXJlbnQgPSBidXMtXHUwMDNlcGFyZW50O1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NTgxOlx0YnVzLVx1MDAzZWRldi5jbGFzcyA9IFx1MDAyNm1kaW9fYnVzX2NsYXNzO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTgyLVx0YnVzLVx1MDAzZWRldi5ncm91cHMgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTcyNz1zdHJ1Y3QgbWlpX2J1cyAqbWRpb19maW5kX2J1cyhjb25zdCBjaGFyICptZGlvX25hbWUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzMwLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzMxOlx0ZCA9IGNsYXNzX2ZpbmRfZGV2aWNlX2J5X25hbWUoXHUwMDI2bWRpb19idXNfY2xhc3MsIG1kaW9fbmFtZSk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03MzItXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTczND1FWFBPUlRfU1lNQk9MKG1kaW9fZmluZF9idXMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTczOC0gKiBvZl9tZGlvX2ZpbmRfYnVzIC0gR2l2ZW4gYW4gbWlpX2J1cyBub2RlLCBmaW5kIHRoZSBtaWlfYnVzLlxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzM5OiAqIEBtZGlvX2J1c19ucDogUG9pbnRlciB0byB0aGUgbWlpX2J1cy5cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc0MC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc0OS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjc1MDpzdHJ1Y3QgbWlpX2J1cyAqb2ZfbWRpb19maW5kX2J1cyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fYnVzX25wKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzUxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTMtXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo3NTQ6XHRpZiAoIW1kaW9fYnVzX25wKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzU1LVx0XHRyZXR1cm4gTlVMTDtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc1Ni1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjc1NzpcdGQgPSBjbGFzc19maW5kX2RldmljZV9ieV9vZl9ub2RlKFx1MDAyNm1kaW9fYnVzX2NsYXNzLCBtZGlvX2J1c19ucCk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTgtXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTExOT1zdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9fZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xMjktXHRtZGlvZGV2LVx1MDAzZWRldi5wYXJlbnQgPSBcdTAwMjZidXMtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTMwOlx0bWRpb2Rldi1cdTAwM2VkZXYuYnVzID0gXHUwMDI2bWRpb19idXNfdHlwZTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTEzMS1cdG1kaW9kZXYtXHUwMDNlZGV2aWNlX2ZyZWUgPSBtZGlvX2RldmljZV9mcmVlO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTI4NT1pbnQgbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMjkxLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MjkyOlx0bWRpb2Rydi1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2bWRpb19idXNfdHlwZTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTI5My1cdG1kaW9kcnYtXHUwMDNlZHJpdmVyLnByb2JlID0gbWRpb19wcm9iZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM9MzE0Nj1zdGF0aWMgaW50IGxhbnBoeV9yZWFkX3BhZ2VfcmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MzIgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE0OS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzozMTUwOlx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTUxLVx0X19waHlfd3JpdGUocGh5ZGV2LCBMQU5fRVhUX1BBR0VfQUNDRVNTX0NPTlRST0wsIHBhZ2UpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTU1LVx0ZGF0YSA9IF9fcGh5X3JlYWQocGh5ZGV2LCBMQU5fRVhUX1BBR0VfQUNDRVNTX0FERFJFU1NfREFUQSk7XG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM6MzE1NjpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTU3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz0zMTYxPXN0YXRpYyBpbnQgbGFucGh5X3dyaXRlX3BhZ2VfcmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MTYgYWRkcixcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE2My17XG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM6MzE2NDpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE2NS1cdF9fcGh5X3dyaXRlKHBoeWRldiwgTEFOX0VYVF9QQUdFX0FDQ0VTU19DT05UUk9MLCBwYWdlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE3My1cdFx0XHQgICB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjMxNzQ6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE3NS1cdHJldHVybiB2YWw7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jPTMxNzg9c3RhdGljIGludCBsYW5waHlfbW9kaWZ5X3BhZ2VfcmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MTYgYWRkcixcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE4Mi1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzozMTgzOlx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTg0LVx0X19waHlfd3JpdGUocGh5ZGV2LCBMQU5fRVhUX1BBR0VfQUNDRVNTX0NPTlRST0wsIHBhZ2UpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTg5LVx0XHRcdFx0ICAgbWFzaywgc2V0KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzozMTkwOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTMxOTEtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTQyND1zdGF0aWMgaW50IHl0cGh5X3JlYWRfZXh0X3dpdGhfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00MjctXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NDI4Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00MjktXHRyZXQgPSB5dHBoeV9yZWFkX2V4dChwaHlkZXYsIHJlZ251bSk7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NDMwOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTQzMS1cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9NDY0PXN0YXRpYyBpbnQgeXRwaHlfd3JpdGVfZXh0X3dpdGhfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00NjgtXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NDY5Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00NzAtXHRyZXQgPSB5dHBoeV93cml0ZV9leHQocGh5ZGV2LCByZWdudW0sIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NDcxOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTQ3Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9NTEzPXN0YXRpYyBpbnQgeXRwaHlfbW9kaWZ5X2V4dF93aXRoX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZ251bSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtNTE3LVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjUxODpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtNTE5LVx0cmV0ID0geXRwaHlfbW9kaWZ5X2V4dChwaHlkZXYsIHJlZ251bSwgbWFzaywgc2V0KTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzo1MjA6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtNTIxLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz05NDA9c3RhdGljIGludCB5dHBoeV9yZ21paV9jbGtfZGVsYXlfY29uZmlnX3dpdGhfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05NDMtXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6OTQ0Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05NDUtXHRyZXQgPSB5dHBoeV9yZ21paV9jbGtfZGVsYXlfY29uZmlnKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6OTQ2Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTk0Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTgzMD1zdGF0aWMgaW50IHl0ODUzMV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODU2LVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4NTc6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4NTgtXHRyZXQgPSB5dDg1MzFfc2V0X2RzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTg1OTpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODYwLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYz0xNTM4PXN0YXRpYyB2b2lkIHZzYzg1ODRfZ2V0X2Jhc2VfYWRkcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE1NDItXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoxNTQzOlx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE1NDQtXHRfX3BoeV93cml0ZShwaHlkZXYsIE1TQ0NfRVhUX1BBR0VfQUNDRVNTLCBNU0NDX1BIWV9QQUdFX0VYVEVOREVEKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0xNTUxLVx0X19waHlfd3JpdGUocGh5ZGV2LCBNU0NDX0VYVF9QQUdFX0FDQ0VTUywgTVNDQ19QSFlfUEFHRV9TVEFOREFSRCk7XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoxNTUyOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMTU1My1cbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYz0xNzIzPXN0YXRpYyBpbnQgdnNjODU4NF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE3MzAtXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoxNzMxOlx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE3MzItXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMTc3OS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjE3ODA6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0xNzgxLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE4MTYtZXJyOlxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MTgxNzpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE4MTgtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTIwODU9c3RhdGljIGludCB2c2M4NTE0X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjA5MS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjIwOTI6XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjA5My1cbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yMTE0LVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MjExNTpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTIxMTYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjEzNi1lcnI6XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyMTM3Olx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjEzOC1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz02Mz1zdGF0aWMgdTMyIHZzYzg1eHhfdHNfcmVhZF9jc3Ioc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgZW51bSB0c19ibGsgYmxrLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtODMtXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jOjg0Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtODUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMDEtXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jOjEwMjpcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTAzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM9MTA3PXN0YXRpYyB2b2lkIHZzYzg1eHhfdHNfd3JpdGVfY3NyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGVudW0gdHNfYmxrIGJsayxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTEzMy1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM6MTM0Olx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTM1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTU3LVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYzoxNTg6XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTE1OS19XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz0xMzA3PXN0YXRpYyBpbnQgX192c2M4NTg0X2luaXRfcHRwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMzEzLVx0aWYgKCF2c2M4NTg0X2lzXzE1ODhfaW5wdXRfY2xrX2NvbmZpZ3VyZWQocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYzoxMzE0Olx0XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMzE1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTMyNS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM6MTMyNjpcdFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMzI3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYz0yNzY9c3RhdGljIGludCBteGw4NjExMF93cml0ZV9leHRlbmRlZF9yZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmMtMjgwLVxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jOjI4MTpcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmMtMjgyLVx0cmV0ID0gX19teGw4NjExMF93cml0ZV9leHRlbmRlZF9yZWcocGh5ZGV2LCByZWdudW0sIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmM6MjgzOlx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTI4NC1cbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmM9Mjk5PXN0YXRpYyBpbnQgbXhsODYxMTBfcmVhZF9leHRlbmRlZF9yZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmMtMzAyLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzAyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFRob3VnaHQgUHJvY2VzcyBvbiBRQ0E4MDh4IFBIWSBEcml2ZXIgSW5zdGFudGlhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaWxlIEkmIzM5O20gbG9va2luZyBhdCBpcyBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCBleGFjdGx5IGlzIGBxY2E4MDh4YD8mIzM0OyBSaWdodCwgaXQmIzM5O3MgYSBQSFkgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGEgZHJpdmVyIGZvciB0aGUgUXVhbGNvbW0gUUNBODA4MSBFdGhlcm5ldCBQSFkgY2hpcHMuIEdvdCBpdC4KCk5vdywgaG93IGRvZXMgdGhpcyBkcml2ZXIsIGxpa2UgYW55IFBIWSBkcml2ZXIsIGFjdHVhbGx5ICpnZXQqIGluc3RhbnRpYXRlZCBhbmQgcHJvYmVkIHdpdGhpbiBhIExpbnV4IHN5c3RlbT8gSSBrbm93IGl0IGhpbmdlcyBvbiB0aGUgTURJTyBidXMuIE15IG1pbmQganVtcHMgdG8gdGhlIHByb2Nlc3M6IHRoZSBNRElPIGJ1cyBpcyBzY2FubmVkLiBUaGF0IGhhcHBlbnMgZWl0aGVyIGF0IGJvb3QtdXAsIG9yIHdoZW4gYSBuZXR3b3JrIGRldmljZSBkcml2ZXIsIGxpa2UgdGhlIGBzdG1tYWNgIG9yIGBmZWNgIGRyaXZlcnMsIHJlZ2lzdGVyIGFuIE1ESU8gYnVzLiBUaGVuIHRoZSBzeXN0ZW0gc2NhbnMgdGhvc2UgMzIgYWRkcmVzc2VzIGZvciB0aG9zZSBgTUlJX1BIWVNJRDFgIGFuZCBgTUlJX1BIWVNJRDJgIGlkZW50aWZpZXJzLiBBbHRlcm5hdGl2ZWx5LCB0aGUgUEhZIGNhbiBiZSBkZXNjcmliZWQgZGlyZWN0bHkgdmlhIHRoZSBEZXZpY2UgVHJlZSBhbmQgcmVnaXN0ZXJlZCB3aXRoIGBvZl9tZGlvYnVzX3JlZ2lzdGVyYC4KClNvLCB0aGUga2V5IG11c3QgYmUgaW4gdGhlIG1hdGNoaW5nIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYG1kaW9fYnVzX21hdGNoYC4gTGV0JiMzOTtzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jYC4gSGVyZSYjMzk7cyB0aGUgcmVsZXZhbnQgY29kZToKCmBgYGMKc3RhdGljIGludCBtZGlvX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCnsKCXN0cnVjdCBtZGlvX2RldmljZSAqbWRpbyA9IHRvX21kaW9fZGV2aWNlKGRldik7CgoJaWYgKG9mX2RyaXZlcl9tYXRjaF9kZXZpY2UoZGV2LCBkcnYpKQoJCXJldHVybiAxOwoKCWlmIChtZGlvLSZndDtidXNfbWF0Y2gpCgkJcmV0dXJuIG1kaW8tJmd0O2J1c19tYXRjaChkZXYsIGRydik7CgoJcmV0dXJuIDA7Cn0KYGBgCgpUaGUgbWF0Y2hpbmcgc2VlbXMgdG8gZGVwZW5kIG9uIERldmljZSBUcmVlIG1hdGNoaW5nLCBvciB0aGUgYG1kaW8tJmd0O2J1c19tYXRjaGAgZnVuY3Rpb24gcG9pbnRlci4gVGhpcyBzdHJ1Y3R1cmUsIHdoZW4gdGFsa2luZyBhYm91dCB0aGUgYHBoeV9kZXZpY2VgLCB0cmFuc2xhdGVzIGludG8gYSBgcGh5X2J1c19tYXRjaGAgZnVuY3Rpb24uIEkgc2hvdWxkIHByb2JhYmx5IGdyZXAgZm9yIGBwaHlfYnVzX21hdGNoYCB0byBzZWUgaG93IGl0JiMzOTtzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9idXNfbWF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01NDQ9RVhQT1JUX1NZTUJPTF9HUEwoZ2VucGh5X21hdGNoX3BoeV9kZXZpY2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01NDUtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjU0NjpzdGF0aWMgaW50IHBoeV9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01NDcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NzQ4PXN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc2NS1cdG1kaW9kZXYtXHUwMDNlYnVzID0gYnVzO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo3NjY6XHRtZGlvZGV2LVx1MDAzZWJ1c19tYXRjaCA9IHBoeV9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc2Ny1cdG1kaW9kZXYtXHUwMDNlYWRkciA9IGFkZHI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzcyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZC4KCioqRGVlcCBEaXZlOiBDaGVja2luZyBgcGh5X2J1c19tYXRjaGAqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGNvcmUgb2YgdGhpcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgcGh5X2J1c19tYXRjaGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgbWF0Y2hpbmcgaXMgc3VwcG9zZWQgdG8gZnVuY3Rpb24gYW5kIHRoZSBjb250ZXh0cyB0aGF0IG1pZ2h0IGNhdXNlIGl0IHRvIGZhaWwuIFRoZSB0eXBpY2FsIGZhaWx1cmUgbW9kZXMgaW4gdGhpcyBhcmVhIGFyZSB1c3VhbGx5IHJlbGF0ZWQgdG8gaW5jb3JyZWN0IGFkZHJlc3Mgc3BhY2UgYXNzaWdubWVudHMsIHJlc291cmNlIGNvbmZsaWN0cyBvciwgbGVzcyBjb21tb25seSwgZHJpdmVyIGNvbmZpZ3VyYXRpb24gZXJyb3JzLgoKSSYjMzk7bGwgd2FudCB0byByZXZpZXcgdGhlIGV4YWN0IGxvZ2ljIG9mIHRoZSBmdW5jdGlvbi4gSXMgaXQgcmVseWluZyBvbiBzb21ldGhpbmcgdGhhdCBtaWdodCBiZSBvdXRkYXRlZCBvciBpbmNvcnJlY3Q/IEFyZSB0aGVyZSBzcGVjaWZpYyBoYXJkd2FyZSBmbGFncyBvciBjYXBhYmlsaXRpZXMgdGhhdCB0aGUgbWF0Y2hpbmcgaXMga2V5ZWQgb24/IElzIHRoZSBtYXRjaGluZyBhbGdvcml0aG0gdG9vIHN0cmljdCwgcHJldmVudGluZyBsZWdpdGltYXRlIGRldmljZXMgZnJvbSBiZWluZyBpZGVudGlmaWVkLCBvciB0b28gbG9vc2UsIGFsbG93aW5nIHBvdGVudGlhbGx5IGluY29tcGF0aWJsZSBkZXZpY2VzIHRvIGJlIGluY29ycmVjdGx5IGFzc29jaWF0ZWQ/IEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGF0IGtpbmQgb2YgZGV2aWNlIGl0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIG1hdGNoaW5nLiBJcyB0aGVyZSBhbnkgZXhpc3RpbmcgZG9jdW1lbnRhdGlvbiBvciBhc3NvY2lhdGVkIHRlc3QgY2FzZXMgSSBjYW4gcmVseSBvbj8KCkkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBjcml0aWNhbCBkZXBlbmRlbmNpZXMgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZXkgYXJlIGFjY291bnRlZCBmb3IuIEFsc28sIGFueSByZWNlbnQgY2hhbmdlcyBvciBjb21taXRzIGluIHRoZSBjb2RlIGJhc2UgdGhhdCBpbnZvbHZlIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBvZiBpbW1lZGlhdGUgaW50ZXJlc3QuIFRoaXMgaGFzIHByb2JhYmx5IGJlZW4gdGhlIGNhdXNlIG9mIGFueSByZXBvcnRlZCBmYWlsdXJlcy4gRmluYWxseSwgSSYjMzk7bGwga2VlcCBhbiBvcGVuIG1pbmQgZm9yIGFueSBlZGdlIGNhc2VzIHRoYXQgbWlnaHQgYmUgdGhlIGNhdXNlIGZvciBhIHJlZ3Jlc3Npb24gaW4gZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTQ2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NDY6XHRzdGF0aWMgaW50IHBoeV9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuIDU0NzpcdHtcbiA1NDg6XHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XG4gNTQ5Olx0XHRjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2ID0gdG9fcGh5X2RyaXZlcihkcnYpO1xuIDU1MDpcdFxuIDU1MTpcdFx0aWYgKCEocGh5ZHJ2LVx1MDAzZW1kaW9kcnYuZmxhZ3MgXHUwMDI2IE1ESU9fREVWSUNFX0lTX1BIWSkpXG4gNTUyOlx0XHRcdHJldHVybiAwO1xuIDU1MzpcdFxuIDU1NDpcdFx0aWYgKHBoeWRydi1cdTAwM2VtYXRjaF9waHlfZGV2aWNlKVxuIDU1NTpcdFx0XHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZW1hdGNoX3BoeV9kZXZpY2UocGh5ZGV2LCBwaHlkcnYpO1xuIDU1NjpcdFxuIDU1NzpcdFx0cmV0dXJuIGdlbnBoeV9tYXRjaF9waHlfZGV2aWNlKHBoeWRldiwgcGh5ZHJ2KTtcbiA1NTg6XHR9XG4gNTU5Olx0XG4gNTYwOlx0c3RhdGljIHNzaXplX3RcbiA1NjE6XHRwaHlfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4gNTYyOlx0e1xuIDU2MzpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbiA1NjQ6XHRcbiA1NjU6XHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MHglLjhseFxcblwmIzM0OywgKHVuc2lnbmVkIGxvbmcpcGh5ZGV2LVx1MDAzZXBoeV9pZCk7XG4gNTY2Olx0fVxuIDU2NzpcdHN0YXRpYyBERVZJQ0VfQVRUUl9STyhwaHlfaWQpO1xuIDU2ODpcdFxuIDU2OTpcdHN0YXRpYyBzc2l6ZV90XG4gNTcwOlx0cGh5X2ludGVyZmFjZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcbiA1NzE6XHR7XG4gNTcyOlx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdG9fcGh5X2RldmljZShkZXYpO1xuIDU3MzpcdFx0Y29uc3QgY2hhciAqbW9kZSA9IE5VTEw7XG4gNTc0Olx0XG4gNTc1Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWlzX2ludGVybmFsKVxuIDU3NjpcdFx0XHRtb2RlID0gXCYjMzQ7aW50ZXJuYWxcJiMzNDs7XG4gNTc3Olx0XHRlbHNlXG4gNTc4Olx0XHRcdG1vZGUgPSBwaHlfbW9kZXMocGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4gNTc5Olx0XG4gNTgwOlx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVzXFxuXCYjMzQ7LCBtb2RlKTtcbiA1ODE6XHR9XG4gNTgyOlx0c3RhdGljIERFVklDRV9BVFRSX1JPKHBoeV9pbnRlcmZhY2UpO1xuIDU4MzpcdFxuIDU4NDpcdHN0YXRpYyBzc2l6ZV90XG4gNTg1Olx0cGh5X2hhc19maXh1cHNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTc0OAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1ESU8gQnVzIEVtdWxhdGlvbiBhbmQgdGhlIFFDQTgwODEgUEhZKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBvciB2aXJ0dWFsIGVudmlyb25tZW50IG91dCB0aGVyZSB0aGF0IGNhbiBlbXVsYXRlIGFuIE1ESU8gYnVzLCBzcGVjaWZpY2FsbHkgd2l0aCBhIFFDQTgwODEgUEhZLiBNeSB1c3VhbCBzZWFyY2ggdGVybXMgaGF2ZW4mIzM5O3QgdHVybmVkIHVwIGFueXRoaW5nIGRlZmluaXRpdmUgeWV0LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIGtleSBwaWVjZSBvZiB0ZXJtaW5vbG9neSBvciBhIHN1YnRsZSBwcm9qZWN0LgoKVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSAqaG93KiBgUUNBODA4MV9QSFlfSURgIGlzIGJlaW5nIHVzZWQgaW4gY29kZSBvciBjb25maWd1cmF0aW9ucy4gVGhhdCBpZGVudGlmaWVyIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIGludGVncmF0aW9uIHBvaW50cyBhbmQgZGVwZW5kZW5jaWVzLiBPbmNlIEkmIzM5O3ZlIGdvdCB0aGF0LCBJIHNob3VsZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBpdCBhbGwgd29ya3MhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1FDQTgwODFfUEhZX0lEJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy04Ny1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo4ODojZGVmaW5lIFFDQTgwODFfUEhZX0lEXHRcdFx0XHQweDAwNGRkMTAxXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtODktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY0OT1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcWNhODA4eF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUxLVx0LyogUXVhbGNvbW0gUUNBODA4MSAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY1MjpcdFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MDgxX1BIWV9JRCksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUzLVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1F1YWxjb21tIFFDQTgwODFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY4ND1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHFjYTgwOHhfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njg1Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODA4MV9QSFlfSUQpIH0sXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjg2LVx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzQ4CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlIGZvciB0aGUgUUNBODA4MSBQSFkgRHJpdmVyKioKCk9rYXksIHNvIHRoZSBgUUNBODA4MV9QSFlfSURgIHNlZW1zIHRvIGJlIHNvbGVseSBkZWZpbmVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguY2AgZmlsZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgb3IgYSB1c2VyIHJ1bm5pbmcgd2l0aGluIGEgdmlydHVhbCBtYWNoaW5lIGxpa2UgUUVNVSBvciBHQ0UgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIGRyaXZlcj8gSXMgdGhlcmUgYW55IHdheSBmb3IgdGhlbSB0byBpbnRlcmFjdCB3aXRoIGl0LCB0byBpbnN0YW50aWF0ZSBpdCwgb3IgdHJpZ2dlciBpdHMgZXhlY3V0aW9uPyBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbi4KClRvIGZpZ3VyZSB0aGlzIG91dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4gTXkgcGxhbiBpcyB0byBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHVzZXJzcGFjZSBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gY3JlYXRlIE1ESU8gb3IgUEhZIGRldmljZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzeXNmcyBpbnRlcmZhY2VzLCBpb2N0bHMsIG5ldGxpbmsgaW50ZXJhY3Rpb25zLCBvciBjb25maWdmcyBjb25maWd1cmF0aW9ucyB0aGF0IHdvdWxkIGFsbG93IHRoaXMuIEJhc2ljYWxseSwgSSB3YW50IHRvIHRyYWNlIGEgcGF0aCBmcm9tIHVzZXJzcGFjZSB0byB0aGUgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIHRoaXMgc3BlY2lmaWMgUEhZIGRyaXZlci4KClNwZWNpZmljYWxseSwgSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIGhvdyBgcGh5X2RldmljZV9jcmVhdGVgLCBgcGh5X2RldmljZV9yZWdpc3RlcmAsIGFuZCBgbWRpb2J1c19yZWdpc3RlcmAgYXJlIHVzZWQgYWNyb3NzIHRoZSBlbnRpcmUga2VybmVsLiBUaGlzIHNob3VsZCBoZWxwIG1lIGRldGVybWluZSB3aGF0IG1lY2hhbmlzbXMgZXhpc3QgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlc2UgUEhZLXJlbGF0ZWQgb2JqZWN0cyBhbmQgd2hldGhlciBhbnkgb2YgdGhvc2UgbWVjaGFuaXNtcyBjb3VsZCBwb3NzaWJseSBiZSBsZXZlcmFnZWQgdG8gdHJpZ2dlciB0aGUgYHFjYTgwOHhgIGRyaXZlciYjMzk7cyBjb2RlIHBhdGhzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfZGV2aWNlX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9OTMxPXN0YXRpYyBpbnQgeGdiZV9waHlfZmluZF9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6OTc2Olx0cmV0ID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05NzctXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk3ODpcdFx0bmV0ZGV2X2VycihwZGF0YS1cdTAwM2VuZXRkZXYsIFwmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTc5LVx0XHRwaHlfZGV2aWNlX2ZyZWUocGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jPTcxNj1obnNfbWFjX3JlZ2lzdGVyX3BoeWRldihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGhuc19tYWNfY2IgKm1hY19jYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jLTc0NC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9tYWMuYzo3NDU6XHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWFjLmMtNzQ2LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jPTE5Mjk9c3RhdGljIGludCBuZXRzZWNfcmVnaXN0ZXJfbWRpbyhzdHJ1Y3QgbmV0c2VjX3ByaXYgKnByaXYsIHUzMiBwaHlfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYzoxOTg0Olx0XHRyZXQgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHByaXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTg1LVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5ODgtXHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYzoxOTg5Olx0XHRcdFx0XCYjMzQ7cGh5X2RldmljZV9yZWdpc3RlciBlcnIoJWQpXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5OTAtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9NDI9Zndub2RlX2ZpbmRfbWlpX3RpbWVzdGFtcGVyKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTY5LVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjcwOmludCBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTcxLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEwMy1cdCAqL1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjEwNDpcdHJjID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEwNS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMTQtfVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjExNTpFWFBPUlRfU1lNQk9MKGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTExNi1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYz0xMTc9aW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNDktXHRcdC8qIEFsbCBkYXRhIGlzIG5vdyBzdG9yZWQgaW4gdGhlIHBoeSBzdHJ1Y3QsIHNvIHJlZ2lzdGVyIGl0ICovXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTUwOlx0XHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNTEtXHRcdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNTYtXHR9IGVsc2UgaWYgKGlzX29mX25vZGUoY2hpbGQpKSB7XG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTU3Olx0XHRyYyA9IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoYnVzLCBwaHksIGNoaWxkLCBhZGRyKTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNTgtXHRcdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYz0yNjM9c3RydWN0IHBoeV9kZXZpY2UgKnhnZW5lX2VuZXRfcGh5X3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYy0yNzAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYzoyNzE6XHRpZiAocGh5X2RldmljZV9yZWdpc3RlcihwaHlfZGV2KSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby14Z2VuZS5jLTI3Mi1cdFx0cGh5X2RldmljZV9mcmVlKHBoeV9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTMyPXN0YXRpYyBpbnQgb2ZfZ2V0X3BoeV9pZChzdHJ1Y3QgZGV2aWNlX25vZGUgKmRldmljZSwgdTMyICpwaHlfaWQpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzYtXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozNzppbnQgb2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzgtXHRcdFx0XHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM5LXtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQwOlx0cmV0dXJuIGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIobWRpbywgcGh5LFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDEtXHRcdFx0XHRcdFx0ICBvZl9md25vZGVfaGFuZGxlKGNoaWxkKSxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00My19XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NDpFWFBPUlRfU1lNQk9MKG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM9MTMxPXN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTYyLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE2MzpcdHJldCA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNjQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NDA4PXN0YXRpYyBzdHJ1Y3QgcGh5X2RldmljZSAqbWRpb2J1c19zY2FuKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGM0NSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00MzctXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0Mzg6XHRlcnIgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00MzktXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9NTUxPXN0YXRpYyB2b2lkIHRqYTExMDJfcDFfcmVnaXN0ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5Ny1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5ODpcdFx0cmV0ID0gb2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKGJ1cywgcGh5LCBjaGlsZCwgYWRkcik7XG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTktXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTExMDM9RVhQT1JUX1NZTUJPTChnZXRfcGh5X2RldmljZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTA1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTA2OiAqIHBoeV9kZXZpY2VfcmVnaXN0ZXIgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwNy0gKiBAcGh5ZGV2OiBwaHlfZGV2aWNlIHN0cnVjdHVyZSB0byBiZSBhZGRlZCB0byB0aGUgTURJTyBidXNcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwOC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTEwOTppbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTEwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExNDEtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTQyOkVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExNDMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTQ4LSAqIFRoaXMgZG9lc24mIzM5O3QgZnJlZSB0aGUgcGh5X2RldmljZSBpdHNlbGYsIGl0IG1lcmVseSByZXZlcnNlcyB0aGUgZWZmZWN0c1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTQ5OiAqIG9mIHBoeV9kZXZpY2VfcmVnaXN0ZXIoKS4gVXNlIHBoeV9kZXZpY2VfZnJlZSgpIHRvIGZyZWUgdGhlIGRldmljZVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTUwLSAqIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9MjEwNT1zdGF0aWMgaW50IHNmcF9zbV9wcm9iZV9waHkoc3RydWN0IHNmcCAqc2ZwLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTIxMjAtXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM6MjEyMTpcdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMTIyLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTIxMjMtXHRcdHBoeV9kZXZpY2VfZnJlZShwaHkpO1xuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjIxMjQ6XHRcdGRldl9lcnIoc2ZwLVx1MDAzZWRldiwgXCYjMzQ7cGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWQ6ICVwZVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMTI1LVx0XHRcdEVSUl9QVFIoZXJyKSk7XG4tLVxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTExLSNpZiBJU19FTkFCTEVEKENPTkZJR19GV05PREVfTURJTylcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaDoxMjppbnQgZndub2RlX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xMy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaD0xNj1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXG4tLVxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTE5LSNlbHNlIC8qIENPTkZJR19GV05PREVfTURJTyAqL1xuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oOjIwOmludCBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTIxLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg9NDk9Ym9vbCBvZl9waHlfaXNfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oOjUwOmludCBvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC01MS1cdFx0XHRcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQsIHUzMiBhZGRyKTtcbi0tXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaD0xNDA9c3RhdGljIGlubGluZSBib29sIG9mX3BoeV9pc19maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmgtMTQ0LVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6MTQ1OnN0YXRpYyBpbmxpbmUgaW50IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTE0Ni1cdFx0XHRcdFx0ICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0yMTU5PXN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpO1xuaW5jbHVkZS9saW51eC9waHkuaDoyMTYwOmludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpO1xuaW5jbHVkZS9saW51eC9waHkuaC0yMTYxLXZvaWQgcGh5X2RldmljZV9mcmVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzk0OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDk3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiBhIFFDQTgwODEgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIGEgcGF0Y2ggYWZmZWN0aW5nIHRoZSBgbWRpb2J1c19zY2FuYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4MSBQSFksIGlzIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBjaGFuZ2VzIGFyZSAqcmVhY2hhYmxlKiBjb2RlLgoKRmlyc3QsIHRoZSBgbWRpb2J1c19zY2FuYCBmdW5jdGlvbiByZWFkcyBQSFkgSURzIChNSUlfUEhZU0lEMSwgTUlJX1BIWVNJRDIpIHRvIGlkZW50aWZ5IGNvbm5lY3RlZCBQSFlzLiBUaGUgUUNBODA4MSBpcyBhIHBoeXNpY2FsIFBIWSwgdHlwaWNhbGx5IGZvdW5kIG9uIFF1YWxjb21tIG5ldHdvcmtpbmcgU29DcyBsaWtlIHRoZSBJUFE1MDE4LCBJUFE4MDc0LCBvciByb3V0ZXIgYm9hcmRzIHdpdGggdGhhdCBzcGVjaWZpYyBjaGlwLCB3aXJlZCB2aWEgTURJTyBhbmQgU0dNSUkvMjUwMEJhc2VYLgoKTm93IHRoZSBxdWVzdGlvbiBpcywgKmNhbiBJIHJlYWNoIHRoaXMgUEhZIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8qIE5vLCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIFFDQTgwODEuIEl0IGVtdWxhdGVzIHN0YW5kYXJkIE5JQ3MuIEFuZCB3aGF0IGFib3V0IFVTQiBFdGhlcm5ldD8gV2hpbGUgc29tZSBVU0IgYWRhcHRlcnMgdXNlIGludGVybmFsIFBIWXMsIHRoZSBRQ0E4MDgxIGlzIG5vdCBvbmUgb2YgdGhlbS4gVVNCIGdhZGdldCBhbHNvIGRvZXNuJiMzOTt0IHByb3ZpZGUgZW11bGF0aW9uIG9mIE1ESU8gUEhZcy4KCkNvdWxkIEkgcmVhY2ggdGhlIFFDQTgwODEgdmlhIGEgbW9jayBNRElPIGJ1cyBvciBuZXRkZXY/IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgTURJTyBidXMgb3IgZHVtbXkgUEhZIGFuZCBpZiB0aGUgUEhZIGRyaXZlciBpcyBjb25zaWRlcmVkIGhhcmR3YXJlLXNwZWNpZmljLgoKTGV0JiMzOTtzIHJlZmVyIHRvIHRoZSBpbnN0cnVjdGlvbnMgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzLiBJIG5lZWQgdG8gY2hlY2sgZm9yIHRoZSBuZWdhdGl2ZSBhbmQgcG9zaXRpdmUgY3JpdGVyaWEgdGhhdCBkZXRlcm1pbmUgZnV6emluZyB3b3J0aGluZXNzLgoKVGhlIGluc3RydWN0aW9ucyBzYXkgdGhhdCBpdCYjMzk7cyAqbm90KiB3b3J0aCBmdXp6aW5nIGlmIHRoZSBjb2RlIGZhbGxzIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzLiBJIG5lZWQgdG8gZm9jdXMgb24gJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OzogJiMzNDtWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7CgpJcyBRQ0E4MDgxICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDs/IExldCYjMzk7cyB2ZXJpZnkgd2hhdCB0aGUgUUNBODA4MSBpcy4gSXQmIzM5O3MgYSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVyLiBJIHNob3VsZCBub3cgY2hlY2sgdGhlIGRyaXZlciBjb2RlIGluIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgIHRvIHNlZSBob3cgaXQmIzM5O3MgaW1wbGVtZW50ZWQuIFRoZW4gSSBjYW4gZGV0ZXJtaW5lIGlmIGl0IGZhbGxzIHVuZGVyIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5IHNpbmNlIEkga25vdyBpdCYjMzk7cyBhIHBoeXNpY2FsIGNoaXAgYW5kIEkgY2Fubm90IHJlYWNoIGl0IHVzaW5nIHN0YW5kYXJkIFFFTVUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAmIzQzO1xuICAgMjpcdFxuICAgMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDU6XHRcbiAgIDY6XHQjaW5jbHVkZSBcJiMzNDtxY29tLmhcJiMzNDtcbiAgIDc6XHRcbiAgIDg6XHQvKiBBREMgdGhyZXNob2xkICovXG4gICA5Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9ERUJVR19BRENfVEhSRVNIT0xEXHRcdDB4MmM4MFxuICAxMDpcdCNkZWZpbmUgUUNBODA4WF9BRENfVEhSRVNIT0xEX01BU0tcdFx0R0VOTUFTSyg3LCAwKVxuICAxMTpcdCNkZWZpbmUgUUNBODA4WF9BRENfVEhSRVNIT0xEXzgwTVZcdFx0MFxuICAxMjpcdCNkZWZpbmUgUUNBODA4WF9BRENfVEhSRVNIT0xEXzEwME1WXHRcdDB4ZjBcbiAgMTM6XHQjZGVmaW5lIFFDQTgwOFhfQURDX1RIUkVTSE9MRF8yMDBNVlx0XHQweDBmXG4gIDE0Olx0I2RlZmluZSBRQ0E4MDhYX0FEQ19USFJFU0hPTERfMzAwTVZcdFx0MHhmZlxuICAxNTpcdFxuICAxNjpcdC8qIENMRCBjb250cm9sICovXG4gIDE3Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0FERFJfQ0xEX0NUUkw3XHRcdDB4ODAwN1xuICAxODpcdCNkZWZpbmUgUUNBODA4WF84MDIzQVpfQUZFX0NUUkxfTUFTS1x0XHRHRU5NQVNLKDgsIDQpXG4gIDE5Olx0I2RlZmluZSBRQ0E4MDhYXzgwMjNBWl9BRkVfRU5cdFx0XHQweDkwXG4gIDIwOlx0XG4gIDIxOlx0LyogQVogY29udHJvbCAqL1xuICAyMjpcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EM19BWl9UUkFJTklOR19DVFJMXHQweDgwMDhcbiAgMjM6XHQjZGVmaW5lIFFDQTgwOFhfTU1EM19BWl9UUkFJTklOR19WQUxcdFx0MHgxYzMyXG4gIDI0Olx0XG4gIDI1Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQxX01TRV9USFJFU0hPTERfMjBEQlx0MHg4MDE0XG4gIDI2Olx0I2RlZmluZSBRQ0E4MDhYX01TRV9USFJFU0hPTERfMjBEQl9WQUxVRVx0MHg1MjlcbiAgMjc6XHRcbiAgMjg6XHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDFfTVNFX1RIUkVTSE9MRF8xN0RCXHQweDgwMEVcbiAgMjk6XHQjZGVmaW5lIFFDQTgwOFhfTVNFX1RIUkVTSE9MRF8xN0RCX1ZBTFVFXHQweDM0MVxuICAzMDpcdFxuICAzMTpcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EMV9NU0VfVEhSRVNIT0xEXzI3REJcdDB4ODAxRVxuICAzMjpcdCNkZWZpbmUgUUNBODA4WF9NU0VfVEhSRVNIT0xEXzI3REJfVkFMVUVcdDB4NDE5XG4gIDMzOlx0XG4gIDM0Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQxX01TRV9USFJFU0hPTERfMjhEQlx0MHg4MDIwXG4gIDM1Olx0I2RlZmluZSBRQ0E4MDhYX01TRV9USFJFU0hPTERfMjhEQl9WQUxVRVx0MHgzNDFcbiAgMzY6XHRcbiAgMzc6XHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDdfVE9QX09QVElPTjFcdFx0MHg5MDFjXG4gIDM4Olx0I2RlZmluZSBRQ0E4MDhYX1RPUF9PUFRJT04xX0RBVEFcdFx0MHgwXG4gIDM5Olx0XG4gIDQwOlx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0RFQlVHXzFcdFx0MHhhMTAwXG4gIDQxOlx0I2RlZmluZSBRQ0E4MDhYX01NRDNfREVCVUdfMV9WQUxVRVx0XHQweDkyMDNcbiAgNDI6XHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDNfREVCVUdfMlx0XHQweGExMDFcbiAgNDM6XHQjZGVmaW5lIFFDQTgwOFhfTU1EM19ERUJVR18yX1ZBTFVFXHRcdDB4NDhhZFxuICA0NDpcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EM19ERUJVR18zXHRcdDB4YTEwM1xuICA0NTpcdCNkZWZpbmUgUUNBODA4WF9NTUQzX0RFQlVHXzNfVkFMVUVcdFx0MHgxNjk4XG4gIDQ2Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0RFQlVHXzRcdFx0MHhhMTA1XG4gIDQ3Olx0I2RlZmluZSBRQ0E4MDhYX01NRDNfREVCVUdfNF9WQUxVRVx0XHQweDgwMDFcbiAgNDg6XHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDNfREVCVUdfNVx0XHQweGExMDZcbiAgNDk6XHQjZGVmaW5lIFFDQTgwOFhfTU1EM19ERUJVR181X1ZBTFVFXHRcdDB4MTExMVxuICA1MDpcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EM19ERUJVR182XHRcdDB4YTAxMVxuICA1MTpcdCNkZWZpbmUgUUNBODA4WF9NTUQzX0RFQlVHXzZfVkFMVUVcdFx0MHg1Zjg1XG4gIDUyOlx0XG4gIDUzOlx0LyogbWFzdGVyL3NsYXZlIHNlZWQgY29uZmlnICovXG4gIDU0Olx0I2RlZmluZSBRQ0E4MDhYX1BIWV9ERUJVR19MT0NBTF9TRUVEXHRcdDlcbiAgNTU6XHQjZGVmaW5lIFFDQTgwOFhfTUFTVEVSX1NMQVZFX1NFRURfRU5BQkxFXHRCSVQoMSlcbiAgNTY6XHQjZGVmaW5lIFFDQTgwOFhfTUFTVEVSX1NMQVZFX1NFRURfQ0ZHXHRcdEdFTk1BU0soMTIsIDIpXG4gIDU3Olx0I2RlZmluZSBRQ0E4MDhYX01BU1RFUl9TTEFWRV9TRUVEX1JBTkdFXHRcdDB4MzJcbiAgNTg6XHRcbiAgNTk6XHQvKiBIaWJlcm5hdGlvbiB5aWVsZHMgbG93ZXIgcG93ZXIgY29uc3VtcGl0b24gaW4gY29udHJhc3Qgd2l0aCBub3JtYWwgb3BlcmF0aW9uIG1vZGUuXG4gIDYwOlx0ICogd2hlbiB0aGUgY29wcGVyIGNhYmxlIGlzIHVucGx1Z2dlZCwgdGhlIFBIWSBlbnRlcnMgaW50byBoaWJlcm5hdGlvbiBtb2RlIGluIGFib3V0IDEwcy5cbiAgNjE6XHQgKi9cbiAgNjI6XHQjZGVmaW5lIFFDQTgwOFhfREJHX0FOX1RFU1RcdFx0XHQweGJcbiAgNjM6XHQjZGVmaW5lIFFDQTgwOFhfSElCRVJOQVRJT05fRU5cdFx0XHRCSVQoMTUpXG4gIDY0Olx0XG4gIDY1Olx0I2RlZmluZSBRQ0E4MDhYX01NRDdfTEVEMl9DVFJMXHRcdFx0MHg4MDc0XG4gIDY2Olx0I2RlZmluZSBRQ0E4MDhYX01NRDdfTEVEMl9GT1JDRV9DVFJMXHRcdDB4ODA3NVxuICA2NzpcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRDFfQ1RSTFx0XHRcdDB4ODA3NlxuICA2ODpcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRDFfRk9SQ0VfQ1RSTFx0XHQweDgwNzdcbiAgNjk6XHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRUQwX0NUUkxcdFx0XHQweDgwNzhcbiAgNzA6XHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRURfQ1RSTCh4KVx0XHQoMHg4MDc4IC0gKCh4KSAqIDIpKVxuICA3MTpcdFxuICA3MjpcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRDBfRk9SQ0VfQ1RSTFx0XHQweDgwNzlcbiAgNzM6XHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRURfRk9SQ0VfQ1RSTCh4KVx0XHQoMHg4MDc5IC0gKCh4KSAqIDIpKVxuICA3NDpcdFxuICA3NTpcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRF9QT0xBUklUWV9DVFJMXHRcdDB4OTAxYVxuICA3NjpcdC8qIFFTREsgc2V0cyBieSBkZWZhdWx0IDB4NDYgdG8gdGhpcyByZWcgdGhhdCBzZXRzIEJJVCA2IGZvclxuICA3NzpcdCAqIExFRCB0byBhY3RpdmUgaGlnaC4gSXQmIzM5O3Mgbm90IGNsZWFyIHdoYXQgQklUIDMgYW5kIEJJVCA0IGRvZXMuXG4gIDc4Olx0ICovXG4gIDc5Olx0I2RlZmluZSBRQ0E4MDhYX0xFRF9BQ1RJVkVfSElHSFx0XHRcdEJJVCg2KVxuICA4MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzMxOAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aW9uIGludG8gdGhlIFFDQTgwOHggUEhZIFByb2JlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBxY2E4MDh4YCBQSFkgZ2V0cyBpbml0aWFsaXplZC4gRmlyc3QsIHRoZSBjb2RlIHNuaXBwZXQgZnJvbSBsaW5lIDE4MSBzaG93cyB0aGUgYHFjYTgwOHhfcHJvYmVgIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBhbGxvY2F0ZSBzb21lIHByaXZhdGUgZGF0YSAoYHFjYTgwOHhfcHJpdmApLCBpbml0aWFsaXplIGBsZWRfcG9sYXJpdHlfbW9kZWAgdG8gLTEsIGFuZCBhdHRhY2ggdGhlIHByaXZhdGUgZGF0YSB0byB0aGUgYHBoeV9kZXZpY2VgLiBOb3RoaW5nIHRvbyBleGNpdGluZyB0aGVyZS4KClRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0IHRyaWdnZXJzICp0aGlzKiBmdW5jdGlvbiB0byBydW4/IFRoYXQmIzM5O3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZywgdGhlIHByb2JlIG1lY2hhbmlzbSBmb3IgYHBoeV9kcml2ZXJgLiBTbywgYHBoeV9kcml2ZXJfcmVnaXN0ZXJgIGdldHMgdGhlIGJhbGwgcm9sbGluZy4gVGhpcyByZWdpc3RlcnMgdGhlIGBwaHlfZHJpdmVyYCB3aXRoIHRoZSBgbWRpb19idXNfdHlwZWAuIE1ha2VzIHNlbnNlLiBOb3csIGZvciBhbiBhY3R1YWwgYHBoeV9kZXZpY2VgIHRvIGNvbWUgaW50byBleGlzdGVuY2UgYW5kIGdldCBwcm9wZXJseSBib3VuZCwgYSBmZXcgdGhpbmdzIG5lZWQgdG8gaGFwcGVuLgoKRmlyc3QsIGFuIE1ESU8gYnVzIGhhcyB0byBiZSByZWdpc3RlcmVkIHVzaW5nIGBtZGlvYnVzX3JlZ2lzdGVyYC4gIFRoZW4sIHRoYXQgTURJTyBidXMgbmVlZHMgdG8gZG8gaXRzIGpvYjogc2NhbiBvciBlbnVtZXJhdGUgZGV2aWNlcy4gVGhlIGBtZGlvYnVzX3NjYW5gIGZ1bmN0aW9uIGlzIHRoZSBrZXkgaGVyZS4gSXQgcmVhZHMgTU1EL01JSSByZWdpc3RlcnMgZnJvbSB0aGUgaGFyZHdhcmUsIGxvb2tpbmcgYXQgYWRkcmVzc2VzIDAgdGhyb3VnaCAzMS4gIElmIHRoZSB2YWx1ZXMgaW4gYE1JSV9QSFlTSUQxYCBhbmQgYE1JSV9QSFlTSUQyYCBtYXRjaCBgUUNBODA4MV9QSFlfSURgICgweDAwNGRkMTAxKSwgdGhlIHN5c3RlbSBhbGxvY2F0ZXMgYSBgcGh5X2RldmljZWAgYW5kIHJlZ2lzdGVycyBpdC4gRXNzZW50aWFsbHksIGl0IGZpbmRzIGl0IHZpYSB0aGUgaGFyZHdhcmUuCgpBbHRlcm5hdGl2ZWx5LCB0aGUgZGV2aWNlIHRyZWUgY291bGQgcGxheSBhIHJvbGUuIERldmljZSBUcmVlIG5vZGVzIGNhbiBkZXNjcmliZSB0aGUgTURJTyBidXMgYW5kIFBIWSBjaGlsZCBub2Rlcy4gQSBgY29tcGF0aWJsZWAgc3RyaW5nIGxpa2UgJiMzNDtldGhlcm5ldC1waHktaWQwMDRkLmQxMDEmIzM0OyB3b3VsZCBmbGFnIHRoZSBQSFkuIFRoZSBNRElPIGJ1cyBjb250cm9sbGVyIHBhcnNlcyB0aGUgZGV2aWNlIHRyZWUsIGFuZCB0aGF0JiMzOTtzIHdoZW4gdGhlIFBIWSB3b3VsZCBiZSBwcm9iZWQuCgpOb3csIGEgY3J1Y2lhbCBxdWVzdGlvbiwgYW5kIHRoaXMgaXMgd2hlcmUgSSBzdGFydCB0byBnZXQgcmVhbGx5IGN1cmlvdXMsIGlzIHdoZXRoZXIgdGhlcmUmIzM5O3MgYW55ICpzb2Z0d2FyZSogTURJTyBkcml2ZXIgb3IgdmlydHVhbCBkZXZpY2UgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgdGhhdCBhY3R1YWxseSBjcmVhdGVzIGEgUUNBODA4MSBQSFkuIEkgY2FuJiMzOTt0IGltYWdpbmUgdGhpcyBleGlzdGluZyB3aXRob3V0IGEgc3BlY2lmaWMgZHJpdmVyLCBzbyBJIG5lZWQgdG8gY2hlY2sgYWxsIG9jY3VycmVuY2VzIG9mICYjMzQ7bWRpb2J1cyYjMzQ7IHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2YgdmlydHVhbCBvciBlbXVsYXRlZCBuZXRkZXYgb3IgTURJTyBidXMgc2V0IHVwLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSYjMzk7cyBhbnkgc2ltdWxhdGlvbiB0aGF0JiMzOTtzIHJlbGV2YW50IHRvIHRoaXMgcHJvYmUgc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMzggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdD0zNDk9TURJT1xuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTEtICBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZSgpXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUyOiAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1NC1cbi0tXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0OjEzOmBgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KClgYCkuIE1BQy1zaWRlIGNvbm5lY3Rpb24gcHJvcGVydGllcyBzdWNoIGFzXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdC0xNC1gYHBoeS1oYW5kbGVgYCBhbmQgYGBwaHktbW9kZWBgIGFyZSBkb2N1bWVudGVkIGluIFthY3BpLW1kaW8tcGh5XV8uXG4tLVxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0PTc9VGhlIFBIWXMgb24gYW4gTURJTyBidXMgW3BoeV0gYXJlIHByb2JlZCBhbmQgcmVnaXN0ZXJlZCB1c2luZ1xuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0Ojg6Zndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KCkuXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD00MD1yZWdpc3RlcmVkIGFzIGEgZGlzdGluY3QgZGV2aWNlLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTU2LSAgIGRyaXZlciBuZWVkcywgc2V0dXAgdGhlIG1paV9idXMgc3RydWN0dXJlLCBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgUEFMIHVzaW5nXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1NzogICBtZGlvYnVzX3JlZ2lzdGVyLiAgU2ltaWxhcmx5LCB0aGVyZSYjMzk7cyBhIHJlbW92ZSBmdW5jdGlvbiB0byB1bmRvIGFsbCBvZlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTgtICAgdGhhdCAodXNlIG1kaW9idXNfdW5yZWdpc3RlcikuXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYz0xMDk9c3RhdGljIGludCBlcDgyNDhlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jOjEzMzpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzNC1cdGlmIChyZXQpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM9MjA3PXN0YXRpYyBpbnQgZ3Bpb19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jOjI0NDpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4My1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6Njg0Olx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMTQ6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYtXHUwMDNlZGV2LCBidXMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzIxPWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzkzOlx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTc1NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwOT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NDQtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ0NTpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDQ2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYz0yNDI9c3RhdGljIGludCBtdDc2Mjhfc2V0dXBfaW50ZXJuYWxfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTI2MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYzoyNjI6XHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYy0yNjMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4NDI9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5Ny1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yNjc9c3RhdGljIGludCBteGw4NjJ4eF9zZXR1cF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTItXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjk0LVx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MTQ5PXN0YXRpYyBpbnQgbmV0Y19wb3J0X2NyZWF0ZV9lbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6MTgwOlx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxMy1cdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MTAxNDpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTA0Olx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDUtXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jPTM1Nz1zdGF0aWMgaW50IGFyOTMzMV9zd19tYnVzX2luaXQoc3RydWN0IGFyOTMzMV9zd19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgxLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYzozODI6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODMtXHRvZl9ub2RlX3B1dChtbnApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk0Nz1xY2E4a19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk4NzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpbyk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jPTc0PWludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTk5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jOjEwMDpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy0xMDEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYz0xMTE3PXN0YXRpYyBpbnQgYTVwc3dfcHJvYmVfbWRpbyhzdHJ1Y3QgYTVwc3cgKmE1cHN3LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQzLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTQ0Olx0cmV0dXJuIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDUtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD0zMDc9dm9pZCBzamExMTA1X2ZyYW1lX21lbW9yeV9wYXJ0aXRpb25pbmcoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oLTMwOS0vKiBGcm9tIHNqYTExMDVfbWRpby5jICovXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6MzEwOmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMTEtdm9pZCBzamExMTA1X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMwMjY9c3RhdGljIGludCBzamExMTA1X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMDY3LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6MzA2ODpcdHJjID0gc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjktXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4Ny1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4OS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTMxMj1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3QxX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQzLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MzQ0Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQ1LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzY4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX3Bjc19yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5NS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM5NjpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk3LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NDM5PXN0YXRpYyB2b2lkIHNqYTExMDVfbWRpb2J1c19wY3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ1OC1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjQ1OTppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTItXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTQtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03MjY9eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQzLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc0NDpcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQ1LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz00NTk9c3RhdGljIGludCBheF9taWlfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ3OTpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYXgtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xMzIxPXN0YXRpYyBpbnQgb3dsX2VtYWNfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM0NjpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9NTA5PXN0YXRpYyBpbnQgYWRpbjExMTBfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy01MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzo1MzA6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9NjE3PXN0YXRpYyBpbnQgYWRpbjExNDBfbWRpb19yZWdpc3RlcihzdHJ1Y3QgYWRpbjExNDBfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzo2Mzc6XHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNnNwaWRldi1cdTAwM2VkZXYsIHByaXYtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTI5MD1zdGF0aWMgaW50IGdyZXRoX21kaW9faW5pdChzdHJ1Y3QgZ3JldGhfcHJpdmF0ZSAqZ3JldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYzoxMzA3Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihncmV0aC1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwOC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zOTMxPXN0YXRpYyBpbnQgZXQxMzF4X3BjaV9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM6NDAyNzpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyOC1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMjE9c3RhdGljIGludCBhbHRlcmFfdHNlX21kaW9fY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE1ODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTktXHRpZiAocmV0ICE9IDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jPTEwNjE9c3RhdGljIGludCBhdTEwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTEyMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjEyMjI6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF1cC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMy1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTM0Mjg9c3RhdGljIGludCB4Z2JlX3BoeV9pbml0KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTctXHRzbnByaW50ZihtaWktXHUwMDNlaWQsIHNpemVvZihtaWktXHUwMDNlaWQpLCBcJiMzNDslc1wmIzM0OywgZGV2X25hbWUocGRhdGEtXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MTg6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTktXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MjA6XHRcdGRldl9lcnIocGRhdGEtXHUwMDNlZGV2LCBcJiMzNDttZGlvYnVzX3JlZ2lzdGVyIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MjEtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYz05OD1pbnQgeGdlX21kaW9fY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTE4LVx0bWRpb19idXMtXHUwMDNlcGh5X21hc2sgPSAweDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9ODM3PWludCB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo4ODg6c3RhdGljIGludCB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg5LVx0XHRcdFx0ICBzdHJ1Y3QgbWlpX2J1cyAqbWRpbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTEzOlx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTQtXHRcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIxLVx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkyMjpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTg6XHRyZXQgPSB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLCBtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM9MTMxPWludCBhcmNfbWRpb19wcm9iZShzdHJ1Y3QgYXJjX2VtYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jOjE3MzpcdGVycm9yID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTc0LVx0b2Zfbm9kZV9wdXQobWRpb19ub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYz05NjY9c3RhdGljIGludCBheDg4Nzk2Y19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMDExOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIGF4X2xvY2FsLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMi1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTY4Nz1zdGF0aWMgaW50IGFnNzF4eF9tZGlvX3Byb2JlKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI3LVx0bW5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFwmIzM0O21kaW9cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Mjg6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjktXHRvZl9ub2RlX3B1dChtbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI2MDpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIobWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjYxLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTE3MTM9c3RhdGljIGludCBiY21fZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxODMwOlx0XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODMxLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM9MjExPXN0cnVjdCBtaWlfYnVzICpiY21hX21kaW9fbWlpX3JlZ2lzdGVyKHN0cnVjdCBiZ21hYyAqYmdtYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM6MjM2Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzctXHRvZl9ub2RlX3B1dChucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MTkzPWludCBiY21nZW5ldF9taWlfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgaW5pdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzMtXHRcdHBoeV9uYW1lID0gXCYjMzQ7ZXh0ZXJuYWwgUnZNSUlcJiMzNDs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoyMzQ6XHRcdC8qIG9mX21kaW9idXNfcmVnaXN0ZXIgdG9vayBjYXJlIG9mIHJlYWRpbmcgdGhlICYjMzk7bWF4LXNwZWVkJiMzOTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzNS1cdFx0ICogUEhZIHByb3BlcnR5IGZvciB1cywgZWZmZWN0aXZlbHkgbGltaXRpbmcgdGhlIFBIWSBzdXBwb3J0ZWRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM9MjE1Nz1zdGF0aWMgaW50IHNibWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxkZXYsIGxvbmcgbG9uZyBiYXNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI3LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM6MjIyODpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoc2MtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyOS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNTA1PXN0YXRpYyBpbnQgdGczX21kaW9faW5pdChzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTU1ODpcdGkgPSBtZGlvYnVzX3JlZ2lzdGVyKHRwLVx1MDAzZW1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTktXHRpZiAoaSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDk3OnN0YXRpYyBpbnQgbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDQtXHRpZiAobWRpb19ucClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEwNTpcdFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTE5Olx0XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVx1MDAzZW1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMC1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTIyOlx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjMtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTEyNT1zdGF0aWMgaW50IG1hY2JfbWlpX2luaXQoc3RydWN0IG1hY2IgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE1OTpcdGVyciA9IG1hY2JfbWRpb2J1c19yZWdpc3RlcihicCwgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNjAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTEwNz1zdGF0aWMgaW50IGRtOTA1MV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBib2FyZF9pbmZvICpkYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExMjU6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpLVx1MDAzZWRldiwgZGItXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNDIzPXN0YXRpYyBpbnQgdHNuZXBfbWRpb19pbml0KHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI0NTU6XHRyZXR2YWwgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWRpb2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYz0xMDI0PXN0YXRpYyBpbnQgZXRob2NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jOjEyMDg6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xNzM0PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3NldHVwX21kaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3NzA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIHByaXYtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzEtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0zNj1zdGF0aWMgaW50IGVuZXRjX3BjaV9tZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM6OTE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZGV2LVx1MDAzZW9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0yNjY9c3RhdGljIGludCBlbmV0Y19tZGlvX3Byb2JlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzoyOTM6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTI5NC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTMwOD1zdGF0aWMgaW50IGVuZXRjX2ltZGlvX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQzOlx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0NC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zMDQyPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzE2MTpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZmVwLVx1MDAzZW1paV9idXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jPTY1PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jOjEwNjpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jPTE0OT1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM6MTc2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jPTk3PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM6MTY3Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYz00MDk9c3RhdGljIGludCBmc2xfcHFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jOjQ5NDpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDk1LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM9MzcxPXN0YXRpYyBpbnQgeGdtYWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI2LVx0aWYgKGlzX29mX25vZGUoZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI3Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgdG9fb2Zfbm9kZShmd25vZGUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI4LVx0ZWxzZSBpZiAoaXNfYWNwaV9ub2RlKGZ3bm9kZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyOTpcdFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZndub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDMwLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjY2PWludCBoYmdfbWRpb19pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjkyOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz0xMDk0PXN0YXRpYyBpbnQgaGl4NWhkMl9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzoxMTg2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM9MTIzPWludCBoY2xnZV9tYWNfbWRpb19jb25maWcoc3RydWN0IGhjbGdlX2RldiAqaGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1NC1cdG1kaW9fYnVzLVx1MDAzZXBoeV9tYXNrID0gfigxVSBcdTAwM2NcdTAwM2MgbWFjLVx1MDAzZXBoeV9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM6MTU1Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1Ni1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYz00OTU9c3RhdGljIGludCBobnNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU4NDpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4NS1cdH0gZWxzZSBpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTItXHRcdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTkzOlx0XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTk0LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjU2MD1zdGF0aWMgaW50IGVtYWNfZHRfbWRpb19wcm9iZShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg0LVx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0OyVzXCYjMzQ7LCBkZXYtXHUwMDNlb2ZkZXYtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjU4NTpcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihcdTAwMjZkZXYtXHUwMDNlb2ZkZXYtXHUwMDNlZGV2LCBidXMsIG1paV9ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4Ni1cdGlmIChyZXMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYz0xMDI2PWludCBpeGdiZV9taWlfYnVzX2luaXQoc3RydWN0IGl4Z2JlX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDg4LVx0YWRhcHRlci1cdTAwM2VtaWlfYnVzID0gYnVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM6MTA4OTpcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDkwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jPTM4NT1sdHFfZXRvcF9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwMi1cdFx0IHByaXYtXHUwMDNlcGRldi1cdTAwM2VuYW1lLCBwcml2LVx1MDAzZXBkZXYtXHUwMDNlaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYzo0MDM6XHRpZiAobWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1paV9idXMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwNC1cdFx0ZXJyID0gLUVOWElPO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM9MjgzPXN0YXRpYyBpbnQgb3Jpb25fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgxLVx0LyogRm9yIHRoZSBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRFQvQUNQSSBmYWxsLWJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlx0ICogdG8gbWRpb2J1c19yZWdpc3RlciB2aWEgb2ZfbWRpb2J1c19yZWdpc3Rlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgzLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4NC1cdGlmIChpc19hY3BpX25vZGUocGRldi1cdTAwM2VkZXYuZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg1Olx0XHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVx1MDAzZWRldi5md25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODYtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODgtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM9MTM4Nz1zdGF0aWMgaW50IHB4YTE2OF9ldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA0LVx0cGVwLVx1MDAzZXNtaV9idXMtXHUwMDNlcGh5X21hc2sgPSAweGZmZmZmZmZmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM6MTUwNTpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIocGVwLVx1MDAzZXNtaV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM3LVx0ZGV2X2RiZyhldGgtXHUwMDNlZGV2LCBcJiMzNDtNREMgaXMgcnVubmluZyBvbiAlZCBIelxcblwmIzM0OywgTURDX01BWF9GUkVRIC8gZXRoLVx1MDAzZW1kY19kaXZpZGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6MTAzODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZXRoLVx1MDAzZW1paV9idXMsIG1paV9ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYz0yODc9aW50IG1seGJmX2dpZ2VfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbWx4YmZfZ2lnZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM6MzMzOlx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jPTI1Mz1pbnQgZmJuaWNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jLTI3Mi1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTE3NwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBRQ0E4MDhYIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBRQ0E4MDhYLCBzcGVjaWZpY2FsbHkgdGhlIFFDQTgwODEuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB3aGF0JiMzOTtzIGJlaW5nIG1vZGlmaWVkIGhlcmUuIExvb2tzIGxpa2UgdGhlIGBxY2E4MDh4X2NvbmZpZ19pbml0YCBhbmQgYHFjYTgwOHhfbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb25zIGluIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgIGFyZSB0aGUgdGFyZ2V0cy4KCk5vdywgbGV0JiMzOTtzIHRyYWNlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC4gYHFjYTgwOHhfY29uZmlnX2luaXRgIGlzIGNsZWFybHkgdGhlIGAuY29uZmlnX2luaXRgIGNhbGxiYWNrIHdpdGhpbiB0aGUgYHFjYTgwOHhfZHJpdmVyYCBzdHJ1Y3R1cmUuIFJpZ2h0LCBzbyB0aGlzIGRyaXZlciBnZXRzIGluc3RhbnRpYXRlZCB3aGVuIHRoZSBzeXN0ZW0gZGV0ZWN0cyBhIFBIWSB3aXRoIHRoZSBgUUNBODA4MV9QSFlfSURgIOKAkyAweDAwNGRkMTAxIOKAkyBvbiBhbiBNRElPIGJ1cy4gVGhhdCYjMzk7cyB0aGUgdHJpZ2dlci4KClRoZSBidXJuaW5nIHF1ZXN0aW9uIHRoZW4gaXMsIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgZG8gd2UgaGF2ZSBhbnkgdmlydHVhbCBidXMgb3IgZW11bGF0ZWQgZGV2aWNlcyB0aGF0IHdvdWxkIHNpbXVsYXRlIG9yIGluc3RhbnRpYXRlIHRoZSBRQ0E4MDgxIFBIWT8gVGhhdCB3b3VsZCBhbGxvdyBhIHRlc3Qgd2l0aCB0aGUgZGV2aWNlLiBMZXQmIzM5O3MgbG9vayBhdCBRRU1VIGZpcnN0LiBObywgUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBhbnkgUXVhbGNvbW0gQXRoZXJvcyBFdGhlcm5ldCBQSFkgZW11bGF0aW9uLCBhbmQgY2VydGFpbmx5IG5vdCB0aGUgUUNBODA4MS4KCk9rYXksIGxldCYjMzk7cyBwaXZvdC4gSWYgZGlyZWN0IGVtdWxhdGlvbiBpcyBvdXQsIGNhbiB1c2Vyc3BhY2Ugc29tZWhvdyBjcmVhdGUgYW4gTURJTyBkZXZpY2Ugd2l0aCBhbiBhcmJpdHJhcnkgUEhZIElEPyBJcyB0aGVyZSBhIHVzZXJzcGFjZSBpbnRlcmZhY2UsIG1heWJlIHRocm91Z2ggbmV0bGluaywgc3lzZnMsIG9yIGlvY3RscywgdGhhdCBhbGxvd3MgTURJTyBkZXZpY2UgY3JlYXRpb24/IFRpbWUgdG8gc2VhcmNoIGZvciB0aGF0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgTURJTyBpbnRlcmZhY2UsIGFzIGl0IGlzLCBoYXMgYSBsb29waG9sZSB3aGVyZSBhIHRlc3Qgc2NlbmFyaW8gY2FuIGJlIGNyZWF0ZWQsIHdpdGhvdXQgbmVlZGluZyB0byBkZXBlbmQgb24gaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV3X2RldmljZS4qbWRpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyODM0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBNRElPIEJ1cyBUeXBlIFN1cHBvcnQqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYG1kaW9fYnVzX3R5cGVgIHN0cnVjdHVyZSBoYXMgcHJvcGVyIHN1cHBvcnQgZm9yIGNyZWF0aW5nIG5ldyBkZXZpY2VzIHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayBpZiBpdCBpbXBsZW1lbnRzIGEgYG5ld19kZXZpY2VgIG9wZXJhdGlvbiB0aGF0IGlzIGV4cG9zZWQgdmlhIHN5c2ZzLiBUaGlzIGlzIHdoZXJlIEkgd291bGQgc3RhcnQgbXkgZGVidWcuCgpJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AsIGFzIHRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdGhlIGBtZGlvX2J1c190eXBlYCBkZWZpbml0aW9uIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyB0byByZXNpZGUuIEkmIzM5O2xsIHplcm8gaW4gb24gdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGhvcGluZyB0byBzZWUgdGhlIHJlbGV2YW50IHN5c2ZzIGF0dHJpYnV0ZXMgb3IgY2FsbGJhY2tzIHRoYXQgbWFuYWdlIHRoZSBkZXZpY2UgaW5zdGFudGlhdGlvbiBwcm9jZXNzLiBIb3BlZnVsbHksIGl0JiMzOTtzIGFsbCBzdHJhaWdodGZvcndhcmQgYW5kIHdlbGwtZG9jdW1lbnRlZC4gT3RoZXJ3aXNlLCBJIG1pZ2h0IGJlIGhlcmUgZm9yIGEgd2hpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI5NTpcdFx0Lm5hbWVcdFx0PSBcJiMzNDtzdGF0aXN0aWNzXCYjMzQ7LFxuIDI5NjpcdFx0LmF0dHJzX2NvbnN0XHQ9IG1kaW9fYnVzX2RldmljZV9zdGF0aXN0aWNzX2F0dHJzLFxuIDI5NzpcdH07XG4gMjk4Olx0X19BVFRSSUJVVEVfR1JPVVBTKG1kaW9fYnVzX2RldmljZV9zdGF0aXN0aWNzKTtcbiAyOTk6XHRcbiAzMDA6XHRjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgbWRpb19idXNfdHlwZSA9IHtcbiAzMDE6XHRcdC5uYW1lXHRcdD0gXCYjMzQ7bWRpb19idXNcJiMzNDssXG4gMzAyOlx0XHQuZGV2X2dyb3Vwc1x0PSBtZGlvX2J1c19kZXZpY2Vfc3RhdGlzdGljc19ncm91cHMsXG4gMzAzOlx0XHQubWF0Y2hcdFx0PSBtZGlvX2J1c19tYXRjaCxcbiAzMDQ6XHRcdC51ZXZlbnRcdFx0PSBtZGlvX3VldmVudCxcbiAzMDU6XHR9O1xuIDMwNjpcdFxuIDMwNzpcdC8qKlxuIDMwODpcdCAqIG1kaW9idXNfYWxsb2Nfc2l6ZSAtIGFsbG9jYXRlIGEgbWlpX2J1cyBzdHJ1Y3R1cmVcbiAzMDk6XHQgKiBAc2l6ZTogZXh0cmEgYW1vdW50IG9mIG1lbW9yeSB0byBhbGxvY2F0ZSBmb3IgcHJpdmF0ZSBzdG9yYWdlLlxuIDMxMDpcdCAqIElmIG5vbi16ZXJvLCB0aGVuIGJ1cy1cdTAwM2Vwcml2IGlzIHBvaW50cyB0byB0aGF0IG1lbW9yeS5cbiAzMTE6XHQgKlxuIDMxMjpcdCAqIERlc2NyaXB0aW9uOiBjYWxsZWQgYnkgYSBidXMgZHJpdmVyIHRvIGFsbG9jYXRlIGFuIG1paV9idXNcbiAzMTM6XHQgKiBzdHJ1Y3R1cmUgdG8gZmlsbCBpbi5cbiAzMTQ6XHQgKi9cbiAzMTU6XHRzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1c19hbGxvY19zaXplKHNpemVfdCBzaXplKVxuIDMxNjpcdHtcbiAzMTc6XHRcdHN0cnVjdCBtaWlfYnVzICpidXM7XG4gMzE4Olx0XHRzaXplX3QgYWxpZ25lZF9zaXplID0gQUxJR04oc2l6ZW9mKCpidXMpLCBORVRERVZfQUxJR04pO1xuIDMxOTpcdFx0c2l6ZV90IGFsbG9jX3NpemU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNTMwCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgRGV2aWNlIERpc2NvdmVyeSBhbmQgTmV0bGluayoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBoYW5kbGUgbmV3IGRldmljZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3Qgc2VlaW5nIGFueSBgYnVzX3R5cGVgIGNhbGxiYWNrcywgc2ltaWxhciB0byB0aGUgSTJDJiMzOTtzIGBuZXdfZGV2aWNlYCwgZm9yIG5ldyBkZXZpY2VzIGluIHRoaXMgY29udGV4dC4gVGhhdCYjMzk7cyBhIGJpdCBwdXp6bGluZy4gVGhlbiBpdCBoaXRzIG1lIC0gY291bGQgdGhlIGBwaHlfZGV2aWNlYCBhY3R1YWxseSBiZSBjcmVhdGVkIHZpYSBOZXRsaW5rPyBJdCYjMzk7cyB3b3J0aCBleHBsb3JpbmcuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYG5ldC9ldGh0b29sL2AgZGlyZWN0b3J5LCBhbmQgbWF5YmUgZXZlbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyBwcm9iYWJseSB3aGVyZSBJJiMzOTtsbCBmaW5kIE5ldGxpbmsgY29tbWFuZHMgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2RldmljZV9jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jPTExNz1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEzNC1cdGVsc2VcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzoxMzU6XHRcdHBoeSA9IHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLCAwLCBOVUxMKTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMzYtXHRpZiAoSVNfRVJSKHBoeSkpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYz01NTE9c3RhdGljIHZvaWQgdGphMTEwMl9wMV9yZWdpc3RlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg1LVx0XHQvKiBSZWFsIFBIWSBJRCBvZiBQb3J0IDEgaXMgMCAqL1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTg2Olx0XHRwaHkgPSBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIFBIWV9JRF9USkExMTAyLCBmYWxzZSwgTlVMTCk7XG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01ODctXHRcdGlmIChJU19FUlIocGh5KSkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5Mi1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5MzpcdFx0LyogT3ZlcndyaXRlIHBhcmVudCBkZXZpY2UuIHBoeV9kZXZpY2VfY3JlYXRlKCkgc2V0IHBhcmVudCB0b1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk0LVx0XHQgKiB0aGUgbWlpX2J1cy1cdTAwM2VkZXYsIHdoaWNoIGlzIG5vdCBjb3JyZWN0IGluIGNhc2UuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz03Mjg9c3RhdGljIGludCBwaHlfcmVxdWVzdF9kcml2ZXJfbW9kdWxlKHN0cnVjdCBwaHlfZGV2aWNlICpkZXYsIHUzMiBwaHlfaWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NDctXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjc0ODpzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0OS1cdFx0XHRcdCAgICAgYm9vbCBpc19jNDUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04MzktfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo4NDA6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTg0MS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEwNzE9c3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTYtXHRcdGlmICghcilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA5NzpcdFx0XHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTgtXHRcdFx0XHRcdFx0IHRydWUsIFx1MDAyNmM0NV9pZHMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMC1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTEwMTpcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCwgaXNfYzQ1LCBcdTAwMjZjNDVfaWRzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMi19XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0yMTQ5PWludCBwaHlfbW9kaWZ5X3BhZ2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MzIgcmVnbnVtLFxuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMjE1MS1cbmluY2x1ZGUvbGludXgvcGh5Lmg6MjE1MjpzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTIxNTMtXHRcdFx0XHQgICAgIGJvb2wgaXNfYzQ1LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAwMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDczMwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQ5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBRQ0E4MDgxIERyaXZlciYjMzk7cyBWaXJ0dWFsIEVudmlyb25tZW50IENvbXBhdGliaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBgcGh5X2RldmljZV9jcmVhdGVgIGZ1bmN0aW9uIGlzIHRoZSBnYXRla2VlcGVyIGZvciBjcmVhdGluZyBQSFkgZGV2aWNlcyB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGNvZGUgc2hvd3MgaXQmIzM5O3Mgb25seSBjYWxsZWQgaW4gc3BlY2lmaWMgc2NlbmFyaW9zOiB3aGVuIHNjYW5uaW5nIGEgcmVhbCBNSUkgYnVzLCB3aGVuIHBhcnNpbmcgYSBkZXZpY2UgdHJlZSBub2RlIGZvciBhIFBIWSwgb3IgZGlyZWN0bHkgd2l0aGluIHRoZSB0amExMXh4IFBIWSBkcml2ZXIuIEl0IHNlZW1zIHRoZXJlJiMzOTtzIG5vIHdheSB0byBjb25qdXJlIGEgUUNBODA4MSBQSFkgZGV2aWNlIGZyb20gdXNlcnNwYWNlIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBkZXZpY2UgdHJlZSBkZXNjcmlwdGlvbi4gU2luY2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIGFuZCBJIGtub3cgYSBiaXQgYWJvdXQgdGhlIHR5cGljYWwgeDg2L2FtZDY0IHZpcnR1YWwgbWFjaGluZSBsYW5kc2NhcGUgKFFFTVUvS1ZNLCBHQ0UpLCB0aGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuCgpNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlc2UgZW52aXJvbm1lbnRzIGRvbiYjMzk7dCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgZm9yIGEgUUNBODA4MS4gU3BlY2lmaWNhbGx5OgoKKiAgIFRoZXJlIGFyZSBubyBoYXJkd2FyZSBNRElPIGJ1c2VzIGZvciBRdWFsY29tbSBjaGlwcyBpbiB0aGVzZSB2aXJ0dWFsIGVudmlyb25tZW50cy4KKiAgIFN0YW5kYXJkIGVtdWxhdGVkIG5ldHdvcmsgY2FyZHMgaW4gdGhlc2UgVk1zIGRvbiYjMzk7dCByZWx5IG9uIFBIWSBkcml2ZXJzIGxpa2UgdGhlIFFDQTgwODEuIFRoZXkgZWl0aGVyIGhhdmUgaW50ZXJuYWwgUEhZcywgZG9uJiMzOTt0IHVzZSBwaHlsaWIgYXQgYWxsLCBvciBlbXBsb3kgZml4ZWQtbGluayBjb25maWd1cmF0aW9ucy4KKiAgIFRoZSBRQ0E4MDgxIGlzIGEgZGlzY3JldGUgRXRoZXJuZXQgUEhZIGNoaXAg4oCTIGEgcGh5c2ljYWwgcGllY2Ugb2YgaGFyZHdhcmUgZnJvbSBRdWFsY29tbSDigJMgdHlwaWNhbGx5IHNlZW4gYWxvbmdzaWRlIFF1YWxjb21tIEF0aGVyb3MgY2hpcHMgb3IgU29Dcy4KCkV2ZW4gaWYgd2Ugd2VyZSBvbiBhbiBBUk0gb3IgTUlQUyBwbGF0Zm9ybSB3aGVyZSBhIFFDQTgwODEgKm1pZ2h0KiBiZSBwcmVzZW50LCBpdCB3b3VsZCBzdGlsbCBuZWNlc3NpdGF0ZSB0aGUgcGh5c2ljYWwgUEhZIGhhcmR3YXJlIGNvbm5lY3RlZCB2aWEgYW4gTURJTyBidXMuIFNvLCBpbiBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgUUNBODA4MSBQSFkgc2ltcGx5IGRvZXNuJiMzOTt0IGV4aXN0LCBub3IgaXMgaXQgZW11bGF0ZWQuCgpMb29raW5nIGF0IHRoZSBwcm9tcHQsIHNlY3Rpb24gMiBkZXNjcmliZXMgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgVGhpcyBhcHBsaWVzIHBlcmZlY3RseSB0byB0aGVzZSB0eXBlcyBvZiB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlcnMsIGxpa2UgdGhlIG9uZSBmb3IgdGhlIGBxY2E4MDh4YC4gV2l0aG91dCB0aGF0IHBoeXNpY2FsIFF1YWxjb21tIFFDQTgwODEgUEhZIGFuZCB0aGUgTURJTyBidXMgdG8gd2hpY2ggaXQgY29ubmVjdHMsIHRoZSBkcml2ZXIgY29kZSBpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYCBjYW5ub3QgYmUgbG9hZGVkLCBwcm9iZWQsIG9yIGV4ZWN1dGVkIHdpdGhpbiB0aGUgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBrZXJuZWwgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSB0ZXN0IGZyYW1ld29yayBvciBhIG1vY2sgTURJTyBidXMgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qbW9ja3xtb2NrLiptZGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3NzAKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBNRElPL0dQSU8gSW50ZXJhY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGJhc2VkIG9uIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCwgdGhlIGN1cnJlbnQgaXNzdWUgbGlrZWx5IGhhcyBzb21lIGNvbm5lY3Rpb24gdG8gdGhlIE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQgKE1ESU8pIGludGVyZmFjZSBvciBHZW5lcmFsIFB1cnBvc2UgSW5wdXQvT3V0cHV0IChHUElPKSBwaW5zLiBHaXZlbiB0aGUgb2JzZXJ2ZWQgYmVoYXZpb3IsIGl0JiMzOTtzIGEgaHVuY2ggd29ydGggcHVyc3VpbmcuIFRoZSBjb25uZWN0aW9uIGNvdWxkIG1hbmlmZXN0IGluIGEgZmV3IGRpZmZlcmVudCB3YXlzLiBQZXJoYXBzIHRoZXJlJiMzOTtzIGFuIGlzc3VlIHdpdGggdGhlIHRpbWluZyBvZiBNRElPIHRyYW5zYWN0aW9ucywgY2F1c2luZyBpbmNvcnJlY3QgY29uZmlndXJhdGlvbiBvZiBhbiBhc3NvY2lhdGVkIFBIWSBvciBvdGhlciBkZXZpY2UuIEFsdGVybmF0aXZlbHksIGEgR1BJTyBwaW4gbWlnaHQgYmUgbWlzY29uZmlndXJlZCwgaW1wYWN0aW5nIHRoZSBNRElPIGNvbW11bmljYXRpb24gaW5kaXJlY3RseSwgYnkgaW5mbHVlbmNpbmcgdGhlIHJlc2V0IGxpbmUgb3IgaW50ZXJydXB0IHNpZ25hbCBvZiB0aGUgbWFuYWdlZCBkZXZpY2UsIG9yIHBlcmhhcHMgYSBzaWduYWwgaXMgYmVpbmcgc2hhcmVkIGJldHdlZW4gdGhlbSwgYW5kIHRoZSBjb250ZW50aW9uIGlzIGNhdXNpbmcgdGhlIGZhaWx1cmUuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGRyaXZlciBjb2RlIGFuZCBoYXJkd2FyZSBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgaW50ZXJhY3Rpb24gYW5kIHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBtZGlvLWdwaW9gIGRyaXZlciBvciBzaW1pbGFyIGltcGxlbWVudGF0aW9ucyBpbiB0aGUga2VybmVsIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXZpY2UgdHJlZSBiaW5kaW5ncy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTURJTyBzaWduYWxzIGFyZSBtYXBwZWQgdG8gR1BJTyBwaW5zIGFuZCBob3cgdGhleSBhcmUgaGFuZGxlZC4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIGNoZWNraW5nIGZvciBwb3RlbnRpYWwgcGluLW11eGluZyBjb25mbGljdHMsIHRpbWluZyBkaXNjcmVwYW5jaWVzLCBhbmQgYW55IGludGVycnVwdCBoYW5kbGluZyBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8tZ3BpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw9Mzc9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtNTMtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw6NTQ6ICBtZGlvLWdwaW9zOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTU1LSAgICBkZXNjcmlwdGlvbjogR1BJTyBsaW5lIGZvciB0aGUgTURJTyBkYXRhIGxpbmUuXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sPTExNT10aGVuOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMTktICAgICAgLSBtZGMtZ3Bpb3NcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbDoxMjA6ICAgICAgLSBtZGlvLWdwaW9zXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTIxLSAgICAgIC0gbWRpb1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMjQtICAgIG1kYy1ncGlvczogZmFsc2VcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbDoxMjU6ICAgIG1kaW8tZ3Bpb3M6IGZhbHNlXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTI2LSAgICBtZGlvOiBmYWxzZVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbD0xMjg9ZWxzZTpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTMwLSAgICAtIG1kYy1ncGlvc1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjEzMTogICAgLSBtZGlvLWdwaW9zXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTMyLSAgICAtIG1kaW9cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw9MTM0PXJlcXVpcmVkOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMzctICAgICMgIC0gbWRjLWdwaW9zXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw6MTM4OiAgICAjICAtIG1kaW8tZ3Bpb3NcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMzktICAgICMgIC0gcmVzZXQtZ3Bpb3Ncbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw9MTQ0PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xNTMtICAgICAgICAgICAgICAgICAgICBtZGMtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMCAyMSBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjE1NDogICAgICAgICAgICAgICAgICAgIG1kaW8tZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMCAyMiBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTE1NS0gICAgICAgICAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMTQgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0yNDYtICAgICAgICAgICAgICAgICAgICBtZGMtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMSAxNiBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjI0NzogICAgICAgICAgICAgICAgICAgIG1kaW8tZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMSAxNyBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTI0OC0gICAgICAgICAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzUgMCBHUElPX0FDVElWRV9MT1dcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC0zLS0tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L21kaW8tZ3Bpby55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw9MTc9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTE5LSAgICBlbnVtOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbDoyMDogICAgICAtIHZpcnR1YWwsbWRpby1ncGlvXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTIxLSAgICAgIC0gbWljcm9jaGlwLG1kaW8tc21pMFxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw9NDE9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC00My0gICAgYWxpYXNlcyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sOjQ0OiAgICAgICAgbWRpby1ncGlvMCA9IFx1MDAyNm1kaW8wO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC00NS0gICAgfTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTQ3LSAgICBtZGlvMDogbWRpbyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sOjQ4OiAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDktICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTI3MTEuZHRzaT05Mzg9XHRcdHBpbi1pcnEge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTI3MTEuZHRzaS05NDItXHR9O1xuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtMjcxMS5kdHNpOjk0MzpcdHJnbWlpX21kaW9fZ3BpbzI4OiByZ21paS1tZGlvLWdwaW8yOCB7XG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY20yNzExLmR0c2ktOTQ0LVx0XHRwaW5zLW1kaW8ge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTI3MTEuZHRzaS05NDktXHR9O1xuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtMjcxMS5kdHNpOjk1MDpcdHJnbWlpX21kaW9fZ3BpbzM3OiByZ21paS1tZGlvLWdwaW8zNyB7XG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY20yNzExLmR0c2ktOTUxLVx0XHRwaW5zLW1kaW8ge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTQ3MDk0LWFzdXMtcnQtYWM4OHUuZHRzPTIwPVx0c3dpdGNoIHtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY200NzA5NC1hc3VzLXJ0LWFjODh1LmR0cy0yMi1cdFx0bWRjLWdwaW9zID0gXHUwMDNjXHUwMDI2Y2hpcGNvbW1vbiA2IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY200NzA5NC1hc3VzLXJ0LWFjODh1LmR0czoyMzpcdFx0bWRpby1ncGlvcyA9IFx1MDAzY1x1MDAyNmNoaXBjb21tb24gNyBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtNDcwOTQtYXN1cy1ydC1hYzg4dS5kdHMtMjQtXHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Y2hpcGNvbW1vbiAxMCBHUElPX0FDVElWRV9MT1dcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kaXItNjg1LmR0cz0xOTA9XHRldGhlcm5ldC1zd2l0Y2gge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZGlyLTY4NS5kdHMtMTkzLVx0XHRtZGMtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMCAyMSBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kaXItNjg1LmR0czoxOTQ6XHRcdG1kaW8tZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMCAyMiBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kaXItNjg1LmR0cy0xOTUtXHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMTQgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHM9MjQ9XHRhbGlhc2VzIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHM6MjU6XHRcdG1kaW8tZ3BpbzAgPSBcdTAwMjZtZGlvMDtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHMtMjYtXHR9O1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHM9MTUyPVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0czoxNTM6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHMtMTU0LVx0XHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIxMGIuZHRzPTY3PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjEwYi5kdHM6Njg6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIxMGIuZHRzLTY5LVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIyMGIuZHRzPTY2PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjIwYi5kdHM6Njc6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIyMGIuZHRzLTY4LVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0cz0yMz1cdGFsaWFzZXMge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzOjI0Olx0XHRtZGlvLWdwaW8wID0gXHUwMDI2bWRpbzA7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5zMjUwMi5kdHMtMjUtXHR9O1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0cz0zMj1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0czozMzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzLTM0LVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktcnV0MXh4LmR0cz01OT1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktcnV0MXh4LmR0czo2MDpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1ydXQxeHguZHRzLTYxLVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc2w5MzUxMnIuZHRzPTcxPVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zbDkzNTEyci5kdHM6NzI6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc2w5MzUxMnIuZHRzLTczLVx0XHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3EyMDEuZHRzPTU2PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHM6NTc6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3EyMDEuZHRzLTU4LVx0XHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM9MjM9XHRhbGlhc2VzIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM6MjQ6XHRcdG1kaW8tZ3BpbzAgPSBcdTAwMjZtZGlvMDtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHMtMjUtXHR9O1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM9MzI9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzOjMzOlx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzLTM0LVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktdmVyYmF0aW0tczA4djE5MDEtZDEuZHRzPTU3PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS12ZXJiYXRpbS1zMDh2MTkwMS1kMS5kdHM6NTg6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktdmVyYmF0aW0tczA4djE5MDEtZDEuZHRzLTU5LVx0XHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMTExLmR0cz03MT1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMTExLmR0czo3MjpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQxMTEuZHRzLTczLVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMjIyLmR0cz03MD1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMjIyLmR0czo3MTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQyMjIuZHRzLTcyLVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsIC8qIE1EQyAqL1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzPTI0PVx0YWxpYXNlcyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDUxLXppaS1yZHUxLmR0czoyNTpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW9fZ3BpbztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzLTI2LVx0XHRydGMwID0gXHUwMDI2ZHMxMzQxO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzPTE2Mz1cdG1kaW9fZ3BpbzogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDUxLXppaS1yZHUxLmR0czoxNjQ6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzLTE2NS1cdFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0cz0yNT1cdGFsaWFzZXMge1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0czoyNjpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW9fZ3BpbztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHMtMjctXHR9O1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHM9NDA9XHRtZGlvX2dwaW86IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0czo0MTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0cy00Mi1cdFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaT05Mz1cdGFsaWFzZXMge1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaTo5NDpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW8wO1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaS05NS1cdH07XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaT05Nz1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2k6OTg6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2ktOTktXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzIgNSBHUElPX0FDVElWRV9ISUdIXHUwMDNlLCAvKiBtZGMgKi9cbi0tXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtc2tvdi1jcHUuZHRzaT0xMz1cdGFsaWFzZXMge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC1za292LWNwdS5kdHNpLTE4LVx0XHRldGhlcm5ldDIgPSBcdTAwMjZsYW4yO1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXNrb3YtY3B1LmR0c2k6MTk6XHRcdG1kaW8tZ3BpbzAgPSBcdTAwMjZtZGlvO1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXNrb3YtY3B1LmR0c2ktMjAtXHRcdG5hbmQgPSBcdTAwMjZncG1pO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC16aWktcmR1Mi5kdHNpPTE0PVx0YWxpYXNlcyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaToxNTpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW8xO1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2ktMTYtXHRcdHJ0YzAgPSBcdTAwMjZkczEzNDE7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2k9MTk9XHRtZGlvMTogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaToyMDpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2ktMjEtXHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzPTUzPVx0bWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzOjU0Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzLTU1LVx0XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi0tXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzPTEwPVx0YWxpYXNlcyB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy0xMy1cdFx0ZXRoZXJuZXQxID0gXHUwMDI2Z21hYzM7XG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzOjE0Olx0XHRtZGlvLWdwaW8wID0gXHUwMDI2bWRpbzA7XG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzOjE1Olx0XHRtZGlvLWdwaW8xID0gXHUwMDI2bWRpbzE7XG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTE2LVx0fTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzPTU1PVx0bWRpbzA6IG1kaW8tMCB7XG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTU2LVx0XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czo1NzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy01OC1cdFx0Z3Bpb3MgPSBcdTAwM2NcdTAwMjZxY29tX3Bpbm11eCAxIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cz0xODA9XHRtZGlvMTogbWRpby0xIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgxLVx0XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czoxODI6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgzLVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNnFjb21fcGlubXV4IDExIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cz0xNj1cdGFsaWFzZXMge1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cy0xNy1cdFx0ZXRoZXJuZXQwID0gXHUwMDI2ZXRoZXJuZXQxO1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0czoxODpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW8wO1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cy0xOS1cdFx0bW1jMCA9IFx1MDAyNnNkbW1jMTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzYy1wcmlobWIuZHRzPTExOD1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzNjLXByaWhtYi5kdHM6MTE5Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzYy1wcmlobWIuZHRzLTEyMC1cdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxYy5kdHM9Mzg9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzOjM5Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzLTQwLVx0XHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2k9MTY9XHRhbGlhc2VzIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxbC5kdHNpLTE3LVx0XHRldGhlcm5ldDAgPSBcdTAwMjZldGhlcm5ldDA7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaToxODpcdFx0bWRpby1ncGlvMCA9IFx1MDAyNm1kaW8wO1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2ktMTktXHRcdHNlcmlhbDAgPSBcdTAwMjZ1YXJ0NDtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaT00ND1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxbC5kdHNpOjQ1Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaS00Ni1cdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS16aWktdWx0cmEuZHRzaT05PVx0YWxpYXNlcyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k6MTA6XHRcdG1kaW8tZ3BpbzAgPSBcdTAwMjZtZGlvMDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS16aWktdWx0cmEuZHRzaS0xMS1cdFx0cnRjMCA9IFx1MDAyNmRzMTM0MTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k9MTg9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k6MTk6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS16aWktdWx0cmEuZHRzaS0yMC1cdFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnPTkwPWNvbmZpZyBNRElPX0dQSU9cbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctOTctXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzo5ODpcdCAgd2lsbCBiZSBjYWxsZWQgbWRpby1ncGlvLlxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTk5LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX01ESU9fQ0FWSVVNKVx0XHQmIzQzOz0gbWRpby1jYXZpdW0ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTURJT19HUElPKVx0XHRcdCYjNDM7PSBtZGlvLWdwaW8ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfTURJT19ISVNJX0ZFTUFDKVx0XHQmIzQzOz0gbWRpby1oaXNpLWZlbWFjLm9cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jPTE1Nz1zdGF0aWMgaW50IG1kaW9fZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTcxLVx0aWYgKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpIHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTcyOlx0XHRidXNfaWQgPSBvZl9hbGlhc19nZXRfaWQocGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bWRpby1ncGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTczLVx0XHRpZiAoYnVzX2lkIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz0xOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWRpb19ncGlvX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE5ODpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OywgfSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTk5LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxtZGlvLXNtaTBcJiMzNDsgfSxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jPTIwND1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZGlvX2dwaW9fZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjA3LVx0LmRyaXZlclx0XHQ9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjA4Olx0XHQubmFtZVx0PSBcJiMzNDttZGlvLWdwaW9cJiMzNDssXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIwOS1cdFx0Lm9mX21hdGNoX3RhYmxlID0gbWRpb19ncGlvX29mX21hdGNoLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9MjEzPW1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWRpb19ncGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIxNC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjE1Ok1PRFVMRV9BTElBUyhcJiMzNDtwbGF0Zm9ybTptZGlvLWdwaW9cJiMzNDspO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMTYtTU9EVUxFX0FVVEhPUihcJiMzNDtMYXVyZW50IFBpbmNoYXJ0LCBQYXVsaXVzIFphbGVja2FzXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMzNDIKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogNDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFRoaXMgQ29kZSBpcyBVbmZ1enphYmxlIGluIFN0YW5kYXJkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHRoZSBzaXR1YXRpb24uIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYG1kaW8tZ3Bpb2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgUUNBODA4MSBQSFkuIEkgY2FuIHNlZSB0aGF0IHRoaXMgYG1kaW8tZ3Bpb2AgZHJpdmVyIGlzIGRlc2lnbmVkIGZvciBiaXRiYW5naW5nIE1ESU8gb3ZlciBHUElPLCBhbmQgb24gYW1kNjQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCB0aGVyZSYjMzk7cyBubyBkZXZpY2UgdHJlZSBlbnRyeSB0aGF0IGV2ZW4gZGVmaW5lcyBhIFFDQTgwODEgUEhZLiBFdmVuIGlmIHRoZSBgQ09ORklHX1FDQTgwOFhfUEhZYCBvcHRpb24gaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZywgdGhlIGRyaXZlciBjYW4mIzM5O3QgcG9zc2libHkgYmluZCB0byBhbnkgaGFyZHdhcmUgYmVjYXVzZSB0aGUgKmFjdHVhbCogUXVhbGNvbW0gUUNBODA4MSBFdGhlcm5ldCBQSFkgc2ltcGx5IGlzbiYjMzk7dCBwcmVzZW50IGluIHRoZXNlIHZpcnR1YWxpemVkIHNldHRpbmdzLgoKTGV0IG1lIGJyZWFrIGl0IGRvd246CgoqICAgVGhlIGNoYW5nZXMgYXJlIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYC4KKiAgIFRoaXMgc3BlY2lmaWMgZmlsZSBpcyBhIGRldmljZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZLgoqICAgVGhlIGRyaXZlciBmdW5kYW1lbnRhbGx5IHJlbGllcyBvbiB0aGUgcHJlc2VuY2Ugb2YgcGh5c2ljYWwgaGFyZHdhcmUg4oCTIHRoZSBRQ0E4MDgxIE1ESU8gdHJhbnNjZWl2ZXIgQVNJQy4gVGhhdCBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZSBpcyAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuCiogICBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NC4KCkJhc2VkIG9uIHRoZXNlIGZhY3RzLCBhbmQgY29uc2lkZXJpbmcgdGhlICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgY3JpdGVyaWEgaW4gc2VjdGlvbiAyICh0aGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcyBvciBOSUNzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSksIGl0JiMzOTtzIGNsZWFyIHRoYXQgdGhpcyBjb2RlIGlzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIGZvciBzeXprYWxsZXIgZnV6emluZy4gSXQmIzM5O3Mgc2ltcGx5IG5vdCBnb2luZyB0byBiZSB0cmlnZ2VyZWQgaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIGZhbHNlLgoKTGV0JiMzOTtzIG5haWwgZG93biB0aGUgbWV0YWRhdGE6CgoqICAgYFdvcnRoRnV6emluZ2A6IGZhbHNlIOKAkyBPYnZpb3VzbHkhCiogICBgUmVhc29uaW5nYDogRHJpdmVyIGZvciBRdWFsY29tbSBRQ0E4MDgxIEV0aGVybmV0IFBIWSB0cmFuc2NlaXZlci4gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgZHVlIHRvIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQuIFRoaXMgaXMgcm9jayBzb2xpZCByZWFzb25pbmcuCiogICBgRm9jdXNTeW1ib2xzYDogXFsgXSDigJMgRW1wdHksIGJlY2F1c2UgaXQmIzM5O3Mgbm90IHdvcnRoIGZ1enppbmcuCiogICBgRW5hYmxlQ29uZmlnc2A6IFxbIF0g4oCTIEFsc28gZW1wdHksIGJlY2F1c2UgaXQmIzM5O3Mgbm90IHdvcnRoIGZ1enppbmcuCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIGFsbCB2ZXJ5IGNsZWFyLiBFdmVyeXRoaW5nIGlzIGluIG9yZGVyLCBhbmQgaXQmIzM5O3MgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDAyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2hlZCBmaWxlIChkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMpIGlzIGEgaGFyZHdhcmUgZGV2aWNlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4MSBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXIuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGNvbm5lY3RlZCB0byBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2hlZCBmaWxlIChkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMpIGlzIGEgaGFyZHdhcmUgZGV2aWNlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4MSBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXIuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGNvbm5lY3RlZCB0byBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMDI6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ3OjQyLjA4MzkwMjIxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNzMyNjMxODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2hlZCBmaWxlIChkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMpIGlzIGEgaGFyZHdhcmUgZGV2aWNlIGRyaXZlciBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4MSBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXIuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGNvbm5lY3RlZCB0byBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDc6NDIuMDgzOTA3OTI5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTgwNTkyMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkMmQ3ZTQxZjRhOTAzNjY2MWRkYjg5OGIzYTc5YTc5N2JiNDQ4ZWUzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgU2VwIDEyIDAyOjQ3OjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYyBiL2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguY1xcbmluZGV4IDhlYjUxYjFhMDA2YzQuLjY4ZmQ0ZDBmZTMxYjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jXFxuQEAgLTIwMCw4ICsyMDAsOCBAQCBzdGF0aWMgaW50IHFjYTgwOHhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0c3RydWN0IHFjYTgwOHhfcHJpdiAqcHJpdiA9IHBoeWRldi1cXHUwMDNlcHJpdjtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdC8qIERlZmF1bHQgdG8gTEVEIEFjdGl2ZSBIaWdoIGlmIGFjdGl2ZS1sb3cgbm90IGluIERUICovXFxuLVxcdGlmIChwcml2LVxcdTAwM2VsZWRfcG9sYXJpdHlfbW9kZSA9PSAtMSkge1xcbitcXHQvKiBTZXQgTEVEIEFjdGl2ZSBIaWdoIHVubGVzcyBhY3RpdmUtbG93IHdhcyByZXF1ZXN0ZWQgaW4gRFQgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZWxlZF9wb2xhcml0eV9tb2RlICE9IDEpIHtcXG4gXFx0XFx0cmV0ID0gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgUUNBODA4WF9NTUQ3X0xFRF9QT0xBUklUWV9DVFJMLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgUUNBODA4WF9MRURfQUNUSVZFX0hJR0gpO1xcbkBAIC02MDMsNiArNjAzLDkgQEAgc3RhdGljIGludCBxY2E4MDh4X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbiBcXHRcXHRjYXNlIFBIWV9MRURfQUNUSVZFX0xPVzpcXG4gXFx0XFx0XFx0YWN0aXZlX2xvdyA9IHRydWU7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRjYXNlIFBIWV9MRURfQUNUSVZFX0hJR0g6XFxuK1xcdFxcdFxcdGFjdGl2ZV9sb3cgPSBmYWxzZTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ3OjQyLjU0MjU4MzAxMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6OTMyNzM5NDAyOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoZWQgZmlsZSAoZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jKSBpcyBhIGhhcmR3YXJlIGRldmljZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVyLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBjb25uZWN0ZWQgdG8gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDJkN2U0MWY0YTkwMzY2NjFkZGI4OThiM2E3OWE3OTdiYjQ0OGVlM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDEyIDAyOjQ3OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jIGIvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jXG5pbmRleCA4ZWI1MWIxYTAwNmM0Li42OGZkNGQwZmUzMWI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNcbkBAIC0yMDAsOCArMjAwLDggQEAgc3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4gXHRpbnQgcmV0O1xuIFxuLVx0LyogRGVmYXVsdCB0byBMRUQgQWN0aXZlIEhpZ2ggaWYgYWN0aXZlLWxvdyBub3QgaW4gRFQgKi9cbi1cdGlmIChwcml2LVx1MDAzZWxlZF9wb2xhcml0eV9tb2RlID09IC0xKSB7XG4rXHQvKiBTZXQgTEVEIEFjdGl2ZSBIaWdoIHVubGVzcyBhY3RpdmUtbG93IHdhcyByZXF1ZXN0ZWQgaW4gRFQgKi9cbitcdGlmIChwcml2LVx1MDAzZWxlZF9wb2xhcml0eV9tb2RlICE9IDEpIHtcbiBcdFx0cmV0ID0gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLFxuIFx0XHRcdFx0ICAgICAgIFFDQTgwOFhfTU1EN19MRURfUE9MQVJJVFlfQ1RSTCxcbiBcdFx0XHRcdCAgICAgICBRQ0E4MDhYX0xFRF9BQ1RJVkVfSElHSCk7XG5AQCAtNjAzLDYgKzYwMyw5IEBAIHN0YXRpYyBpbnQgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbiBcdFx0Y2FzZSBQSFlfTEVEX0FDVElWRV9MT1c6XG4gXHRcdFx0YWN0aXZlX2xvdyA9IHRydWU7XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDpcbitcdFx0XHRhY3RpdmVfbG93ID0gZmFsc2U7XG4rXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ3OjQyLjU0MjU4NTAyMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjU2ODg5OTM1MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBRQ0E4MDh4IFBIWSBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBODA4eCBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXIgZHJpdmVyLiBJJ20gc2VlaW5nIGEgbW9kaWZpY2F0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkZXZpY2UgaXMgYW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFNpbmNlIGl0J3MgYSBQSFkgZHJpdmVyLCBpdCdzIHJlc3BvbnNpYmxlIGZvciB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlIG9mIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24uXG5cbk5vdywgbG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgd2UncmUgbW9kaWZ5aW5nIHRoZSBMRUQgcG9sYXJpdHkgY29uZmlndXJhdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRoZSBvcmlnaW5hbCBjb2RlIGRlZmF1bHRlZCB0byBcIkxFRCBBY3RpdmUgSGlnaFwiIGlmIG5vIHNwZWNpZmljIHNldHRpbmcgd2FzIHByb3ZpZGVkIHRocm91Z2ggdGhlIERldmljZSBUcmVlIChEVCkuIFRoZSBjaGFuZ2UgcmVmaW5lcyB0aGlzIGxvZ2ljLiBUaGUgb3JpZ2luYWwgY2hlY2sgd2FzIGlmIGBwcml2LVx1MDAzZWxlZF9wb2xhcml0eV9tb2RlYCB3YXMgc2V0IHRvIC0xLCB3aGVyZWFzIHRoaXMgdXBkYXRlIGlzIGNoZWNraW5nIGlmIGl0IGlzICpub3QqIGVxdWFsIHRvIDEuIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiB3YXMgc2F5aW5nIFwiaWYgbm90IHNwZWNpZmllZCwgdXNlIGhpZ2hcIi4gSSBsaWtlIHRoYXQgdGhpcyBpbXBsZW1lbnRhdGlvbiBjaGFuZ2VzIHRvIFwiaWYgbm90ICpleHBsaWNpdGx5KiBsb3csIHNldCB0byBoaWdoXCIuIFRoZSBjb2RlIGlzIGFsc28gYWRkaW5nIGBQSFlfTEVEX0FDVElWRV9ISUdIYCBpbnRvIHRoZSBgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbi5cblxuSSBzZWUgdGhleSdyZSB1c2luZyBgcGh5X3NldF9iaXRzX21tZGAgdG8gY29uZmlndXJlIHRoZSBNdWx0aS1NZWRpYS1EZXBlbmRlbnQgKE1NRCkgcmVnaXN0ZXJzIG9mIHRoZSBQSFkuIFRoaXMgaXMgc3RhbmRhcmQgcHJhY3RpY2UuXG5cblRoZSBjaGFuZ2Ugc2hvdWxkIGVuc3VyZSB0aGF0IHdlJ3JlIGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgTEVEIHBvbGFyaXR5IGJhc2VkIG9uIHRoZSBEVCBjb25maWd1cmF0aW9uLiBUaGUgYWRkaXRpb24gb2YgdGhlIGBQSFlfTEVEX0FDVElWRV9ISUdIYCBjYXNlIGluIHRoZSBgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbiBpcyBhIGdyZWF0IGFkZGl0aW9uLCBwcm92aWRpbmcgY29uc2lzdGVuY3kuXG5cbk5leHQsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyB0byBjb25maXJtIHRoZSB2aXNpYmlsaXR5IG9mIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDg3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDc6NDguMjMxNTgwODQ2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4Njc4Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInFjYTgwOHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX1FDQTgzWFhfUEhZKVxcdCs9IHFjYTgzeHgub1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1FDQTgwOFhfUEhZKVxcdCs9IHFjYTgwOHgub1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlLTYtb2JqLSQoQ09ORklHX1FDQTgwN1hfUEhZKVxcdCs9IHFjYTgwN3gub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM9MTExMz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXQ4MDN4X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTIxNS1cXHQuY2FibGVfdGVzdF9zdGFydFxcdD0gaXBxNTAxOF9jYWJsZV90ZXN0X3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyMTY6XFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1c1xcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTIxNy1cXHQuc29mdF9yZXNldFxcdFxcdD0gZ2VucGh5X3NvZnRfcmVzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9MTgxPXN0YXRpYyBpbnQgcWNhODA3eF9sZWRfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMTg4LVxcdHJlZyA9IFFDQTgwN1hfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjE4OTpcXHRyZXR1cm4gcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfZW5hYmxlKHBoeWRldiwgcmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMTkwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz0yMzg9c3RhdGljIGJvb2wgcWNhODA3eF9sZWRfaHdfY29udHJvbF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMjQ1LVxcdHJlZyA9IFFDQTgwN1hfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjI0NjpcXHRyZXR1cm4gcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfc3RhdHVzKHBoeWRldiwgcmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMjQ3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz0zMzA9c3RhdGljIGludCBxY2E4MDd4X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTM0Ni1cXHRyZWcgPSBRQ0E4MDdYX01NRDdfTEVEX0ZPUkNFX0NUUkwoaW5kZXgpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzozNDc6XFx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19icmlnaHRuZXNzX3NldChwaHlkZXYsIHJlZywgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy0zNDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTM1MD1zdGF0aWMgaW50IHFjYTgwN3hfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy0zNTktXFx0cmVnID0gUUNBODA3WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKGluZGV4KTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6MzYwOlxcdHJldHVybiBxY2E4MDh4X2xlZF9yZWdfYmxpbmtfc2V0KHBoeWRldiwgcmVnLCBkZWxheV9vbiwgZGVsYXlfb2ZmKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtMzYxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz03OTE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwN3hfZHJpdmVyc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTgwNy1cXHRcXHQuY2FibGVfdGVzdF9zdGFydFxcdD0gcWNhODA3eF9jYWJsZV90ZXN0X3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo4MDg6XFx0XFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1c1xcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTgwOS1cXHRcXHQudXBkYXRlX3N0YXRzXFx0XFx0PSBxY2E4MDd4X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MzAtXFx0XFx0LmNhYmxlX3Rlc3Rfc3RhcnRcXHQ9IHFjYTgwN3hfY2FibGVfdGVzdF9zdGFydCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6ODMxOlxcdFxcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXNcXHQ9IHFjYTgwOHhfY2FibGVfdGVzdF9nZXRfc3RhdHVzLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MzItXFx0XFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IHFjYTgwN3hfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTkyPU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtOTMtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjk0OnN0cnVjdCBxY2E4MDh4X3ByaXYge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy05NS1cXHRpbnQgbGVkX3BvbGFyaXR5X21vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtOTgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjk5OnN0YXRpYyBpbnQgcWNhODA4eF9waHlfZmFzdF9yZXRyYWluX2NvbmZpZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xMDAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTEzMy1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MTM0OnN0YXRpYyBpbnQgcWNhODA4eF9waHlfbXNfc2VlZF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTEzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxNDk6c3RhdGljIGJvb2wgcWNhODA4eF9pc19wcmVmZXJfbWFzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTU0LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxNTU6c3RhdGljIGJvb2wgcWNhODA4eF9oYXNfZmFzdF9yZXRyYWluX29yX3NsYXZlX3NlZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xNTktXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE2MDpzdGF0aWMgYm9vbCBxY2E4MDh4X2lzXzFnX29ubHkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xNzAtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE3MTpzdGF0aWMgdm9pZCBxY2E4MDh4X2ZpbGxfcG9zc2libGVfaW50ZXJmYWNlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE3Ni1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MTc3OlxcdGlmICghcWNhODA4eF9pc18xZ19vbmx5KHBoeWRldikpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE3OC1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCwgcG9zc2libGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE4MC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MTgxOnN0YXRpYyBpbnQgcWNhODA4eF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xODIte1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xODMtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXY7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjE4NDpcXHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0xODUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMTk3LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoxOTg6c3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTE5OS17XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIwMDpcXHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMDEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMjQtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIyNTpcXHRpZiAocWNhODA4eF9oYXNfZmFzdF9yZXRyYWluX29yX3NsYXZlX3NlZWQocGh5ZGV2KSkge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMjYtXFx0XFx0LyogQ29uZmlnIHRoZSBmYXN0IHJldHJhaW4gZm9yIHRoZSBsaW5rIDI1MDBNICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIyNzpcXHRcXHRyZXQgPSBxY2E4MDh4X3BoeV9mYXN0X3JldHJhaW5fY29uZmlnKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTIyOC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTIzNC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MjM1OlxcdFxcdGlmICghcWNhODA4eF9pc19wcmVmZXJfbWFzdGVyKHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjM2LVxcdFxcdFxcdC8qIEVuYWJsZSBzZWVkIGFuZCBjb25maWd1cmUgbG93ZXIgcmFtZG9tIHNlZWQgdG8gbWFrZSBwaHlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yMzgtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjIzOTpcXHRcXHRcXHRyZXQgPSBxY2E4MDh4X3BoeV9tc19zZWVkX2VuYWJsZShwaHlkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yNDAtXFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yNDQtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjI0NTpcXHRxY2E4MDh4X2ZpbGxfcG9zc2libGVfaW50ZXJmYWNlcyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjU2LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoyNTc6c3RhdGljIGludCBxY2E4MDh4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjk0LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoyOTU6XFx0XFx0aWYgKHFjYTgwOHhfaGFzX2Zhc3RfcmV0cmFpbl9vcl9zbGF2ZV9zZWVkKHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMjk2LVxcdFxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZW1hc3Rlcl9zbGF2ZV9zdGF0ZSA9PSBNQVNURVJfU0xBVkVfU1RBVEVfRVJSIHx8XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjI5NzpcXHRcXHRcXHQgICAgcWNhODA4eF9pc19wcmVmZXJfbWFzdGVyKHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Mjk4OlxcdFxcdFxcdFxcdHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yOTktXFx0XFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MzAwOlxcdFxcdFxcdFxcdHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTMwMS1cXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzA3LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozMDg6c3RhdGljIGludCBxY2E4MDh4X3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zMTUtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjMxNjpcXHRpZiAocWNhODA4eF9oYXNfZmFzdF9yZXRyYWluX29yX3NsYXZlX3NlZWQocGh5ZGV2KSlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MzE3OlxcdFxcdHJldCA9IHFjYTgwOHhfcGh5X21zX3NlZWRfZW5hYmxlKHBoeWRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTMxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zMjEtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjMyMjpzdGF0aWMgaW50IHFjYTgwOHhfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTM2Mi1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MzYzOnN0YXRpYyBpbnQgcWNhODA4eF9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zNzEtXFx0LyogVGhlIGF1dG9uZWcgYWJpbGl0eSBpcyBub3QgZXhpc3RlZCBpbiBiaXQzIG9mIE1NRDcuMSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6MzcyOlxcdCAqIGJ1dCBpdCBpcyBzdXBwb3J0ZWQgYnkgcWNhODA4eCBQSFksIHNvIHdlIGFkZCBpdCBoZXJlXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTM3My1cXHQgKiBtYW51YWxseS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0zODAtXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjM4MTpcXHRpZiAocWNhODA4eF9pc18xZ19vbmx5KHBoeWRldikpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTM4Mi1cXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtMzg2LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzozODc6c3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTM4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDEyLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo0MTM6c3RhdGljIHZvaWQgcWNhODA4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00MjMtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQyNDpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX3BhcnNlX25ldGRldihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBsb25nIHJ1bGVzLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00MjUtXFx0XFx0XFx0XFx0ICAgIHUxNiAqb2ZmbG9hZF90cmlnZ2VyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ1NS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDU2OnN0YXRpYyBpbnQgcWNhODA4eF9sZWRfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDYzLVxcdHJlZyA9IFFDQTgwOFhfTU1EN19MRURfRk9SQ0VfQ1RSTChpbmRleCk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ2NDpcXHRyZXR1cm4gcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfZW5hYmxlKHBoeWRldiwgcmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDY1LX1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNDY2LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo0Njc6c3RhdGljIGludCBxY2E4MDh4X2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ2OC1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBydWxlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NzQtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ3NTpcXHRyZXR1cm4gcWNhODA4eF9sZWRfcGFyc2VfbmV0ZGV2KHBoeWRldiwgcnVsZXMsIFxcdTAwMjZvZmZsb2FkX3RyaWdnZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NzYtfVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NzctXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ3ODpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00NzktXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyBydWxlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00ODgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjQ4OTpcXHRyZXQgPSBxY2E4MDh4X2xlZF9wYXJzZV9uZXRkZXYocGh5ZGV2LCBydWxlcywgXFx1MDAyNm9mZmxvYWRfdHJpZ2dlcik7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ5MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQ5Mi1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDkzOlxcdHJldCA9IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZW5hYmxlKHBoeWRldiwgaW5kZXgpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00OTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MDEtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUwMjpzdGF0aWMgYm9vbCBxY2E4MDh4X2xlZF9od19jb250cm9sX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleClcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MDktXFx0cmVnID0gUUNBODA4WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKGluZGV4KTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTEwOlxcdHJldHVybiBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9zdGF0dXMocGh5ZGV2LCByZWcpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MTEtfVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MTItXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUxMzpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01MTQtXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyAqcnVsZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTIyLVxcdC8qIENoZWNrIGlmIHdlIGhhdmUgaHcgY29udHJvbCBlbmFibGVkICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjUyMzpcXHRpZiAocWNhODA4eF9sZWRfaHdfY29udHJvbF9zdGF0dXMocGh5ZGV2LCBpbmRleCkpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTUyNC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NDgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU0OTpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTYxLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo1NjI6c3RhdGljIGludCBxY2E4MDh4X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NjMtXFx0XFx0XFx0XFx0ICAgICAgdTggaW5kZXgsIGVudW0gbGVkX2JyaWdodG5lc3MgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTcxLVxcdGlmICghdmFsdWUpIHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTcyOlxcdFxcdHJldCA9IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfcmVzZXQocGh5ZGV2LCBpbmRleCk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU3My1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU3Ny1cXHRyZWcgPSBRQ0E4MDhYX01NRDdfTEVEX0ZPUkNFX0NUUkwoaW5kZXgpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo1Nzg6XFx0cmV0dXJuIHFjYTgwOHhfbGVkX3JlZ19icmlnaHRuZXNzX3NldChwaHlkZXYsIHJlZywgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01NzktfVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01ODAtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU4MTpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTgyLVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nICpkZWxheV9vbixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01OTAtXFx0cmVnID0gUUNBODA4WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKGluZGV4KTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NTkxOlxcdHJldHVybiBxY2E4MDh4X2xlZF9yZWdfYmxpbmtfc2V0KHBoeWRldiwgcmVnLCBkZWxheV9vbiwgZGVsYXlfb2ZmKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTkyLX1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNTkzLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo1OTQ6c3RhdGljIGludCBxY2E4MDh4X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01OTUtXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5Ni17XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU5NzpcXHRzdHJ1Y3QgcWNhODA4eF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01OTgtXFx0Ym9vbCBhY3RpdmVfbG93ID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjMyLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2MzM6c3RhdGljIGludCBxY2E4MDh4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02MzQte1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2MzU6XFx0c3RydWN0IHFjYTgwOHhfcHJpdiAqcHJpdiA9IHBoeWRldi1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjM2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTYzOS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjQwOnN0YXRpYyB2b2lkIHFjYTgwOHhfZ2V0X3BoeV9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NDEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZXRodG9vbF9ldGhfcGh5X3N0YXRzICpldGhfc3RhdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjQzLXtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjQ0OlxcdHN0cnVjdCBxY2E4MDh4X3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NDgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY0OTpzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcWNhODA4eF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NTQtXFx0LmZsYWdzXFx0XFx0XFx0PSBQSFlfUE9MTF9DQUJMRV9URVNULFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NTU6XFx0LnByb2JlXFx0XFx0XFx0PSBxY2E4MDh4X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NTYtXFx0LmNvbmZpZ19pbnRyXFx0XFx0PSBhdDgwM3hfY29uZmlnX2ludHIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjYxLVxcdC5nZXRfd29sXFx0XFx0PSBhdDgwM3hfZ2V0X3dvbCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjYyOlxcdC5nZXRfZmVhdHVyZXNcXHRcXHQ9IHFjYTgwOHhfZ2V0X2ZlYXR1cmVzLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NjM6XFx0LmNvbmZpZ19hbmVnXFx0XFx0PSBxY2E4MDh4X2NvbmZpZ19hbmVnLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NjQtXFx0LnN1c3BlbmRcXHRcXHQ9IGdlbnBoeV9zdXNwZW5kLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NjUtXFx0LnJlc3VtZVxcdFxcdFxcdD0gZ2VucGh5X3Jlc3VtZSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY2OlxcdC5yZWFkX3N0YXR1c1xcdFxcdD0gcWNhODA4eF9yZWFkX3N0YXR1cyxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY3OlxcdC5jb25maWdfaW5pdFxcdFxcdD0gcWNhODA4eF9jb25maWdfaW5pdCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY4OlxcdC5zb2Z0X3Jlc2V0XFx0XFx0PSBxY2E4MDh4X3NvZnRfcmVzZXQsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY2OTpcXHQuY2FibGVfdGVzdF9zdGFydFxcdD0gcWNhODA4eF9jYWJsZV90ZXN0X3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NzA6XFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1c1xcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3MTpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBxY2E4MDh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjcyOlxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IHFjYTgwOHhfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NzM6XFx0LmxlZF9ibGlua19zZXRcXHRcXHQ9IHFjYTgwOHhfbGVkX2JsaW5rX3NldCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njc0OlxcdC5sZWRfaHdfaXNfc3VwcG9ydGVkXFx0PSBxY2E4MDh4X2xlZF9od19pc19zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY3NTpcXHQubGVkX2h3X2NvbnRyb2xfc2V0XFx0PSBxY2E4MDh4X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njc2OlxcdC5sZWRfaHdfY29udHJvbF9nZXRcXHQ9IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2Nzc6XFx0LmxlZF9wb2xhcml0eV9zZXRcXHQ9IHFjYTgwOHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njc4OlxcdC51cGRhdGVfc3RhdHNcXHRcXHQ9IHFjYTgwOHhfdXBkYXRlX3N0YXRzLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2Nzk6XFx0LmdldF9waHlfc3RhdHNcXHRcXHQ9IHFjYTgwOHhfZ2V0X3BoeV9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjgwLX0sIH07XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY4MS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjgyOm1vZHVsZV9waHlfZHJpdmVyKHFjYTgwOHhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjgzLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2ODQ6c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBxY2E4MDh4X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODUtXFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODA4MV9QSFlfSUQpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjg4LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2ODk6TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBxY2E4MDh4X3RibCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYz00OTE9RVhQT1JUX1NZTUJPTF9HUEwoYXQ4MDN4X2NkdF93YWl0X2Zvcl9jb21wbGV0aW9uKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy00OTItXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NDkzOnN0YXRpYyBib29sIHFjYTgwOHhfY2R0X2ZhdWx0X2xlbmd0aF92YWxpZChpbnQgY2R0X2NvZGUpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNDk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTUxMi1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo1MTM6c3RhdGljIGludCBxY2E4MDh4X2NhYmxlX3Rlc3RfcmVzdWx0X3RyYW5zKGludCBjZHRfY29kZSlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy01MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTM3LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjUzODpzdGF0aWMgaW50IHFjYTgwOHhfY2R0X2ZhdWx0X2xlbmd0aChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcGFpcixcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy01MzktXFx0XFx0XFx0XFx0ICAgIGludCByZXN1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy01NzItXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NTczOnN0YXRpYyBpbnQgcWNhODA4eF9jYWJsZV90ZXN0X2dldF9wYWlyX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBwYWlyLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTU3NC1cXHRcXHRcXHRcXHRcXHQgICAgICB1MTYgc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTk1LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjU5NjpcXHRyZXN1bHQgPSBxY2E4MDh4X2NhYmxlX3Rlc3RfcmVzdWx0X3RyYW5zKHBhaXJfY29kZSk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNTk3LVxcdGV0aG5sX2NhYmxlX3Rlc3RfcmVzdWx0KHBoeWRldiwgcGFpciwgcmVzdWx0KTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy01OTgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NTk5OlxcdGlmIChxY2E4MDh4X2NkdF9mYXVsdF9sZW5ndGhfdmFsaWQocGFpcl9jb2RlKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjYwMDpcXHRcXHRsZW5ndGggPSBxY2E4MDh4X2NkdF9mYXVsdF9sZW5ndGgocGh5ZGV2LCBwYWlyLCByZXN1bHQpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYwMS1cXHRcXHRldGhubF9jYWJsZV90ZXN0X2ZhdWx0X2xlbmd0aChwaHlkZXYsIHBhaXIsIGxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MDYtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjA3OmludCBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpmaW5pc2hlZClcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjI2LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjYyNzpcXHRyZXQgPSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3BhaXJfc3RhdHVzKHBoeWRldiwgRVRIVE9PTF9BX0NBQkxFX1BBSVJfQSwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYzMC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2MzE6XFx0cmV0ID0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9wYWlyX3N0YXR1cyhwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0IsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjMyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02MzQtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjM1OlxcdHJldCA9IHFjYTgwOHhfY2FibGVfdGVzdF9nZXRfcGFpcl9zdGF0dXMocGh5ZGV2LCBFVEhUT09MX0FfQ0FCTEVfUEFJUl9DLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTYzNi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjM4LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjYzOTpcXHRyZXQgPSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3BhaXJfc3RhdHVzKHBoeWRldiwgRVRIVE9PTF9BX0NBQkxFX1BBSVJfRCwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NDAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY0Ni19XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjQ3OkVYUE9SVF9TWU1CT0xfR1BMKHFjYTgwOHhfY2FibGVfdGVzdF9nZXRfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NDgtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjQ5OmludCBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZylcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NTAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjUzLX1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2NTQ6RVhQT1JUX1NZTUJPTF9HUEwocWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NTUtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjU2OmJvb2wgcWNhODA4eF9sZWRfcmVnX2h3X2NvbnRyb2xfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY2Mi19XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmM6NjYzOkVYUE9SVF9TWU1CT0xfR1BMKHFjYTgwOHhfbGVkX3JlZ19od19jb250cm9sX3N0YXR1cyk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjY0LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjY2NTppbnQgcWNhODA4eF9sZWRfcmVnX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS1waHktbGliLmMtNjY2LVxcdFxcdFxcdFxcdCAgIHUxNiByZWcsIGVudW0gbGVkX2JyaWdodG5lc3MgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NzItfVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjY3MzpFWFBPUlRfU1lNQk9MX0dQTChxY2E4MDh4X2xlZF9yZWdfYnJpZ2h0bmVzc19zZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jLTY3NC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYzo2NzU6aW50IHFjYTgwOHhfbGVkX3JlZ19ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZyxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy02NzYtXFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyAqZGVsYXlfb24sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy03MDAtfVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20tcGh5LWxpYi5jOjcwMTpFWFBPUlRfU1lNQk9MX0dQTChxY2E4MDh4X2xlZF9yZWdfYmxpbmtfc2V0KTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLXBoeS1saWIuYy03MDItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg9MjU3PWludCBhdDgwM3hfY2R0X3dhaXRfZm9yX2NvbXBsZXRpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjU4LVxcdFxcdFxcdFxcdCAgIHUzMiBjZHRfZW4pO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20uaDoyNTk6aW50IHFjYTgwOHhfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgKmZpbmlzaGVkKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjYwOmludCBxY2E4MDh4X2xlZF9yZWdfaHdfY29udHJvbF9lbmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZyk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNvbS5oOjI2MTpib29sIHFjYTgwOHhfbGVkX3JlZ19od19jb250cm9sX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmg6MjYyOmludCBxY2E4MDh4X2xlZF9yZWdfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjYzLVxcdFxcdFxcdFxcdCAgIHUxNiByZWcsIGVudW0gbGVkX2JyaWdodG5lc3MgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3Fjb20uaDoyNjQ6aW50IHFjYTgwOHhfbGVkX3JlZ19ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZyxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY29tLmgtMjY1LVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0Nzo0OC4yODAyNjM3MjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMjc2NzQwNzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBRQ0E4MDhYIFBIWSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhlIGRlZmluaXRpb24gb2YgYENPTkZJR19RQ0E4MDhYX1BIWWAuIE5vIG5lZWQgdG8gcmVpbnZlbnQgdGhlIHdoZWVsLCBzbyBJJ2xsIGp1bXAgc3RyYWlnaHQgaW50byBgZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIFBIWSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLCBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUsIGFuZCB3aGF0IG90aGVyIG9wdGlvbnMgbWlnaHQgYmUgcmVsZXZhbnQgaW4gdGhpcyBjb25maWd1cmF0aW9uIHNwYWNlLiBUaGlzIGlzIGZ1bmRhbWVudGFsOyBJIGNhbid0IHByb2NlZWQgZWZmZWN0aXZlbHkgdW50aWwgSSBrbm93IHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSBleHBlY3RzIGFuZCBob3cgdGhpcyBzcGVjaWZpYyBQSFkgaW50ZWdyYXRlcyBpbnRvIHRoZSBicm9hZGVyIFF1YWxjb21tIG5ldHdvcmtpbmcgZHJpdmVyIGxhbmRzY2FwZS4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBlbnRyeSBpcyB0aGUgZXNzZW50aWFsIGZpcnN0IHN0ZXAgdG8gdW5kZXJzdGFuZGluZyBpdHMgZnVsbCBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Mzg5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDc6NTAuNTU3MDA2MzMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MDU4NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBRQ0E4MDhYX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0xMj1jb25maWcgUUNBODNYWF9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZzoxODpjb25maWcgUUNBODA4WF9QSFlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBRQ0E4MDh4IFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ3OjUwLjYwNjA3MTUxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjAxNDQ1NDY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFFDT00gUEhZIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTguIEknbSBhc3N1bWluZyB0aGF0IGFyZWEgcHJvYmFibHkgZGVhbHMgd2l0aCB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBRdWFsY29tbSBQSFkgZHJpdmVycy4gR2l2ZW4gdGhlIGZpbGUgbmFtZSwgaXQncyBoaWdobHkgbGlrZWx5IHRoaXMgaXMgd2hlcmUgSSdsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBtYXliZSBldmVuIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgZ292ZXJuaW5nIHdoaWNoIHNwZWNpZmljIFFDT00gUEhZIGltcGxlbWVudGF0aW9ucyBhcmUgZW5hYmxlZCBkdXJpbmcgdGhlIGJ1aWxkLiBUaGlzIGlzIHRoZSBwbGFjZSB0byBzdGFydCBpZiBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgb3IgbW9kaWZ5IHRoZSBpbmNsdXNpb24gb2YgYSBwYXJ0aWN1bGFyIFFDT00gUEhZIGluIGEga2VybmVsIGJ1aWxkLiBJIGFudGljaXBhdGUgZmluZGluZyB0aGluZ3MgbGlrZSB3aGV0aGVyIGNlcnRhaW4gUEhZcyBhcmUgZW5hYmxlZCBiYXNlZCBvbiBhcmNoaXRlY3R1cmUsIGJvYXJkIHR5cGUsIG9yIHNwZWNpZmljIFNvQyBmZWF0dXJlcy4gSG9wZWZ1bGx5LCBpdCdzIHdlbGwtY29tbWVudGVkIHNvIEkgY2FuIHF1aWNrbHkgZ3JvayB0aGUgaW50ZW50IGJlaGluZCBlYWNoIG9wdGlvbi4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3MzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0Nzo1Mi42MjA1Mjg1NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBRQ09NX05FVF9QSFlMSUJcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBBVDgwM1hfUEhZXFxuICAgNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZc1xcXCJcXG4gICA3OlxcdFxcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gUkVHVUxBVE9SXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQVI4MDMwLCBBUjgwMzEsIEFSODAzMywgQVI4MDM1LCBJUFE1MDE4IG1vZGVsXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBRQ0E4M1hYX1BIWVxcbiAgMTM6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgUUNBODMzeCBQSFlzXFxcIlxcbiAgMTQ6XFx0XFx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxcbiAgMTU6XFx0XFx0aGVscFxcbiAgMTY6XFx0XFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgdGhlIGludGVybmFsIFFDQTgzMzcoSW50ZXJuYWwgcWNhOGsgUEhZKSBtb2RlbFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgUUNBODA4WF9QSFlcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBRQ0E4MDh4IFBIWXNcXFwiXFxuICAyMDpcXHRcXHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgUUNBODA4MSBtb2RlbFxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgUUNBODA3WF9QSFlcXG4gIDI1OlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBRQ0E4MDd4IFBIWXNcXFwiXFxuICAyNjpcXHRcXHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXFxuICAyNzpcXHRcXHRzZWxlY3QgUEhZX1BBQ0tBR0VcXG4gIDI4OlxcdFxcdGRlcGVuZHMgb24gT0ZfTURJT1xcbiAgMjk6XFx0XFx0aGVscFxcbiAgMzA6XFx0XFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgdGhlIFF1YWxjb21tIFFDQTgwNzIsIFFDQTgwNzUgYW5kIHRoZSBQU0dNSUlcXG4gIDMxOlxcdFxcdCAgY29udHJvbCBQSFkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ3OjUyLjYyMDU5MTk3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzE0NTgzOTg4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQcm9iaW5nIE1ESU8gUEhZcyBpbiBhIFZpcnR1YWwgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBRQ0E4MDhYLCB3aGljaCBpcyBhbiBNRElPIEV0aGVybmV0IFBIWSwgZ2V0cyBwcm9iZWQgYW5kIGJvdW5kIGluIHRoZSBrZXJuZWwuIEkgc2VlIGl0IHVzZXMgYE1PRFVMRV9ERVZJQ0VfVEFCTEVgIGZvciB0aGUgTURJTyBzdWJzeXN0ZW0gYW5kIHRoZW4gcmVnaXN0ZXJzIGl0cyBkcml2ZXIgd2l0aCBgbW9kdWxlX3BoeV9kcml2ZXJgLiBCdXQsIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBvciBwcm9iZSBhbiBNRElPIFBIWSBkcml2ZXIgbGlrZSB0aGlzIHdpdGhpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQsIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdpdGhvdXQgaGF2aW5nIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50P1xuXG5JIG5lZWQgdG8gZXhwbG9yZSBpZiB0aGVyZSBhcmUgd2F5cyB0byBjcmVhdGUgdGhlc2UgTURJTyBQSFlzIHZpcnR1YWxseSwgbWF5YmUgdGhyb3VnaCBzeXNmcyBvciBzb21lIG90aGVyIHZpcnR1YWwgZGV2aWNlIG1lY2hhbmlzbS4gSSdtIHdvbmRlcmluZyBpZiBzb21ldGhpbmcgbGlrZSBgbWRpby1ncGlvYCwgYG1kaW8tYml0YmFuZ2AsIG9yIGV2ZW4gYSBgbWRpby1tb2NrYCBkZXZpY2UgZXhpc3RzIHRvIHNpbXVsYXRlIHRoaXMuIENhbiBJIGNyZWF0ZSB0aGVzZSBNRElPIHBoeSBkZXZpY2VzIGZyb20gdXNlciBzcGFjZSBvciB0aHJvdWdoIGEgdmlydHVhbCBkZXZpY2Ugc29tZWhvdz9cblxuVGltZSB0byBkaWcgaW50byB0aGUgY29kZSBiYXNlLiBJJ2xsIGhpdCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0IGNvbWVzIHVwIHJlZ2FyZGluZyBNRElPIGRyaXZlciByZWdpc3RyYXRpb24sIHN5c2ZzIGludGVyYWN0aW9ucywgYW5kIG1heWJlIGV2ZW4gTmV0bGluayB1c2FnZSBmb3IgY2x1ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTURJTyBkcml2ZXJzIGFyZSBtYW5hZ2VkIGFuZCBpZiB0aGVyZSdzIGEgdmlydHVhbCBwYXRoIHRvIHRlc3Qgb3IgZGV2ZWxvcCB0aGVtIHdpdGhvdXQgbmVlZGluZyBhY3R1YWwgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NDU3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDc6NTUuNzY2NDM0MzkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkyMzM1MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb19idXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzYwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ND1saWJwaHkteVxcdFxcdFxcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXFx0XFx0XFx0XFx0ICAgbGlua21vZGUubyBwaHlfbGlua190b3BvbG9neS5vIFxcXFxcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjpcXHRcXHRcXHRcXHQgICBwaHlfY2Fwcy5vIG1kaW9fYnVzX3Byb3ZpZGVyLm8gcGh5X3BvcnQubyBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTctXFx0XFx0XFx0XFx0ICAgbWRpb19kZXZpY2Uub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE2PWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICs9IG9wZW5fYWxsaWFuY2VfaGVscGVycy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE3LVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fYnVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTktb2JqLSQoQ09ORklHX1BIWUxJTkspXFx0XFx0Kz0gcGh5bGluay5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz00MTM9c3RhdGljIGludCBhbjg4MTFoYl9tY3VfYXNzZXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MTctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDE4OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDE5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDMyLXVubG9jazpcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0MzM6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQzNC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDM3PXN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2RlYXNzZXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00NDEtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDQyOlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDQzLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDU3LXVubG9jazpcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0NTg6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQ1OS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9MzM9aW50IGJjbV9waHlfd3JpdGVfZXhwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcsIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zNi1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozNzpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTM4LVxcdHJjID0gX19iY21fcGh5X3dyaXRlX2V4cChwaHlkZXYsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozOTpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNDAtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz02Mj1pbnQgYmNtX3BoeV9yZWFkX2V4cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjUtXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6NjY6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy02Ny1cXHRyYyA9IF9fYmNtX3BoeV9yZWFkX2V4cChwaHlkZXYsIHJlZyk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Njg6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9OTQ9aW50IGJjbV9waHlfbW9kaWZ5X2V4cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTk3LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjk4OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtOTktXFx0cmV0ID0gX19iY21fcGh5X21vZGlmeV9leHAocGh5ZGV2LCByZWcsIG1hc2ssIHNldCk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6MTAwOlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0xMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYz0yNzE9aW50IGJjbV9waHlfcmVhZF9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJkYilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTI3NC1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzoyNzU6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0yNzYtXFx0cmV0ID0gX19iY21fcGh5X3JlYWRfcmRiKHBoeWRldiwgcmRiKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzoyNzc6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTI3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTI5NT1pbnQgYmNtX3BoeV93cml0ZV9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJkYiwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTI5OC1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzoyOTk6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zMDAtXFx0cmV0ID0gX19iY21fcGh5X3dyaXRlX3JkYihwaHlkZXYsIHJkYiwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozMDE6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTMwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTMyNz1pbnQgYmNtX3BoeV9tb2RpZnlfcmRiKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZGIsIHUxNiBtYXNrLCB1MTYgc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzMwLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjMzMTpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTMzMi1cXHRyZXQgPSBfX2JjbV9waHlfbW9kaWZ5X3JkYihwaHlkZXYsIHJkYiwgbWFzaywgc2V0KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzozMzM6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTMzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTY2MD1zdGF0aWMgaW50IF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBpc19yZGIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy02NzEtXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6NjcyOlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjczLVxcdGlmIChpc19yZGIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5MC1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo2OTE6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTc0Mj1zdGF0aWMgaW50IF9iY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjc0OTpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc5OS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4MDA6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTgwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jPTQzMj1zdGF0aWMgaW50IGJjbTU0MTQwX2Jhc2VfcmVhZF9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJkYilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTQzNS1cXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYzo0MzY6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00MzctXFx0cmV0ID0gX19waHlfcGFja2FnZV93cml0ZShwaHlkZXYsIEJDTTU0MTQwX0JBU0VfQUREUixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTQ0NS1vdXQ6XFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6NDQ2OlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00NDctXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jPTQ1MD1zdGF0aWMgaW50IGJjbTU0MTQwX2Jhc2Vfd3JpdGVfcmRiKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00NTQtXFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6NDU1OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDU2LVxcdHJldCA9IF9fcGh5X3BhY2thZ2Vfd3JpdGUocGh5ZGV2LCBCQ001NDE0MF9CQVNFX0FERFIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy00NjQtb3V0OlxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jOjQ2NTpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNDY2LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz04Nzc9c3RhdGljIGludCBicmNtX2ZldF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTMyLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjkzMzpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTkzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTkzNi1cXHRpZiAoZXJyIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjkzNzpcXHRcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTM4LVxcdFxcdHJldHVybiBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy05NzMtXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6OTc0OlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy05NzUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz0xMDM2PXN0YXRpYyBpbnQgYnJjbV9mZXRfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA1My1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxMDU0OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTEwNTctXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxMDU4OlxcdFxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xMDU5LVxcdFxcdHJldHVybiBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xMDc1LVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjEwNzY6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTEwNzctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYz03Nj1zdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy03OS1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzo4MDpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTgxLVxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTg2LW91dDpcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzo4NzpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtODgtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jPTEwND1zdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMDctXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTA4OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTA5LVxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTExNC1vdXQ6XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTE1OlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMTYtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xOTM9RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3VucmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xOTQtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE5NTpzdGF0aWMgaW50IF9faW5pdCBmaXhlZF9tZGlvX2J1c19pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE5Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMjE4LX1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MjE5Om1vZHVsZV9pbml0KGZpeGVkX21kaW9fYnVzX2luaXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMjAtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjIyMTpzdGF0aWMgdm9pZCBfX2V4aXQgZml4ZWRfbWRpb19idXNfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTIyNS19XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjIyNjptb2R1bGVfZXhpdChmaXhlZF9tZGlvX2J1c19leGl0KTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMjI3LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmM9NTk9RVhQT1JUX1NZTUJPTChtZGlvYnVzX2lzX3JlZ2lzdGVyZWRfZGV2aWNlKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXMuYy02MC1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXMuYzo2MTpzdGF0aWMgdm9pZCBtZGlvYnVzX3N0YXRzX2FjY3Qoc3RydWN0IG1kaW9fYnVzX3N0YXRzICpzdGF0cywgYm9vbCBvcCwgaW50IHJldClcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXMuYy02Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz00MD1zdGF0aWMgdm9pZCBtZGlvYnVzX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU1LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU2OnN0cnVjdCBtZGlvX2J1c19zdGF0X2F0dHIge1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU3LVxcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGF0dHI7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02MS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo2MjpzdGF0aWMgc3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciAqdG9fc2F0dHIoc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjMte1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjY0OlxcdHJldHVybiBjb250YWluZXJfb2YoYXR0ciwgc3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciwgYXR0cik7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjUtfVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY2LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjY3OnN0YXRpYyB1NjQgbWRpb19idXNfZ2V0X3N0YXQoc3RydWN0IG1kaW9fYnVzX3N0YXRzICpzLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTgwLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjgxOnN0YXRpYyBzc2l6ZV90IG1kaW9fYnVzX3N0YXRfZmllbGRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtODItXFx0XFx0XFx0XFx0XFx0c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy04NC17XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6ODU6XFx0c3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciAqc2F0dHIgPSB0b19zYXR0cihhdHRyKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy04Ni1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gdG9fbWlpX2J1cyhkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtOTEtXFx0XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBQSFlfTUFYX0FERFI7IGkrKylcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo5MjpcXHRcXHRcXHR2YWwgKz0gbWRpb19idXNfZ2V0X3N0YXQoXFx1MDAyNmJ1cy1cXHUwMDNlc3RhdHNbaV0sXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtOTMtXFx0XFx0XFx0XFx0XFx0XFx0IHNhdHRyLVxcdTAwM2VmaWVsZF9vZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTk0LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6OTU6XFx0XFx0dmFsID0gbWRpb19idXNfZ2V0X3N0YXQoXFx1MDAyNmJ1cy1cXHUwMDNlc3RhdHNbc2F0dHItXFx1MDAzZWFkZHJlc3NdLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTk2LVxcdFxcdFxcdFxcdFxcdHNhdHRyLVxcdTAwM2VmaWVsZF9vZmZzZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTAxLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEwMjpzdGF0aWMgc3NpemVfdCBtZGlvX2J1c19kZXZpY2Vfc3RhdF9maWVsZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMDMtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTA1LXtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMDY6XFx0c3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciAqc2F0dHIgPSB0b19zYXR0cihhdHRyKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMDctXFx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2ID0gdG9fbWRpb19kZXZpY2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTExMS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMTI6XFx0dmFsID0gbWRpb19idXNfZ2V0X3N0YXQoXFx1MDAyNmJ1cy1cXHUwMDNlc3RhdHNbYWRkcl0sIHNhdHRyLVxcdTAwM2VmaWVsZF9vZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTExNy0jZGVmaW5lIE1ESU9fQlVTX1NUQVRTX0FUVFIoZmllbGQpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjExODpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fYnVzX3N0YXRfYXR0ciBkZXZfYXR0cl9tZGlvX2J1c18jI2ZpZWxkID0ge1xcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMTk6XFx0LmF0dHIgPSBfX0FUVFIoZmllbGQsIDA0NDQsIG1kaW9fYnVzX3N0YXRfZmllbGRfc2hvdywgTlVMTCksXFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEyMC1cXHQuYWRkcmVzcyA9IC0xLFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxMjE6XFx0LmZpZWxkX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBtZGlvX2J1c19zdGF0cywgZmllbGQpLFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMjItfTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTIzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyIGRldl9hdHRyX21kaW9fYnVzX2RldmljZV8jI2ZpZWxkID0geyBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTI0OlxcdC5hdHRyID0gX19BVFRSKGZpZWxkLCAwNDQ0LCBtZGlvX2J1c19kZXZpY2Vfc3RhdF9maWVsZF9zaG93LCBOVUxMKSwgXFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEyNTpcXHQuZmllbGRfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IG1kaW9fYnVzX3N0YXRzLCBmaWVsZCksXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEyNi19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz0xMzE9TURJT19CVVNfU1RBVFNfQVRUUihyZWFkcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMzMtI2RlZmluZSBNRElPX0JVU19TVEFUU19BRERSX0FUVFJfREVDTChmaWVsZCwgYWRkciwgZmlsZSlcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19idXNfc3RhdF9hdHRyXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEzNTpkZXZfYXR0cl9tZGlvX2J1c19hZGRyXyMjZmllbGQjI18jI2FkZHIgPSB7XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTEzNi1cXHQuYXR0ciA9IHsgLmF0dHIgPSB7IC5uYW1lID0gZmlsZSwgLm1vZGUgPSAwNDQ0IH0sXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjEzNzpcXHRcXHQgICAgIC5zaG93ID0gbWRpb19idXNfc3RhdF9maWVsZF9zaG93LFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xMzgtXFx0fSxcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTM5LVxcdC5hZGRyZXNzID0gYWRkcixcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTQwOlxcdC5maWVsZF9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgbWRpb19idXNfc3RhdHMsIGZpZWxkKSxcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTQxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTE4ND1NRElPX0JVU19TVEFUU19BRERSX0FUVFJfR1JPVVBfREVDTCgzMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xODYtI2RlZmluZSBNRElPX0JVU19TVEFUU19BRERSX0FUVFJfR1JPVVAoYWRkcilcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTg3OlxcdFxcdTAwMjYoZGV2X2F0dHJfbWRpb19idXNfYWRkcl90cmFuc2ZlcnNfIyNhZGRyKS5hdHRyLmF0dHIsXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE4ODpcXHRcXHUwMDI2KGRldl9hdHRyX21kaW9fYnVzX2FkZHJfZXJyb3JzXyMjYWRkcikuYXR0ci5hdHRyLFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxODk6XFx0XFx1MDAyNihkZXZfYXR0cl9tZGlvX2J1c19hZGRyX3dyaXRlc18jI2FkZHIpLmF0dHIuYXR0cixcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTkwOlxcdFxcdTAwMjYoZGV2X2F0dHJfbWRpb19idXNfYWRkcl9yZWFkc18jI2FkZHIpLmF0dHIuYXR0clxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0xOTEtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTkyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICpjb25zdCBtZGlvX2J1c19zdGF0aXN0aWNzX2F0dHJzW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTkzOlxcdFxcdTAwMjZkZXZfYXR0cl9tZGlvX2J1c190cmFuc2ZlcnMuYXR0ci5hdHRyLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjE5NDpcXHRcXHUwMDI2ZGV2X2F0dHJfbWRpb19idXNfZXJyb3JzLmF0dHIuYXR0cixcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoxOTU6XFx0XFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX3dyaXRlcy5hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MTk2OlxcdFxcdTAwMjZkZXZfYXR0cl9tZGlvX2J1c19yZWFkcy5hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMTk3LVxcdE1ESU9fQlVTX1NUQVRTX0FERFJfQVRUUl9HUk9VUCgwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTIzMS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyMzI6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbWRpb19idXNfc3RhdGlzdGljc19ncm91cCA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yMzMtXFx0Lm5hbWVcXHRcXHQ9IFxcXCJzdGF0aXN0aWNzXFxcIixcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyMzQ6XFx0LmF0dHJzX2NvbnN0XFx0PSBtZGlvX2J1c19zdGF0aXN0aWNzX2F0dHJzLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTIzNS19O1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjIzNjpfX0FUVFJJQlVURV9HUk9VUFMobWRpb19idXNfc3RhdGlzdGljcyk7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjM3LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjIzODpjb25zdCBzdHJ1Y3QgY2xhc3MgbWRpb19idXNfY2xhc3MgPSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MjM5OlxcdC5uYW1lXFx0XFx0PSBcXFwibWRpb19idXNcXFwiLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0MC1cXHQuZGV2X3JlbGVhc2VcXHQ9IG1kaW9idXNfcmVsZWFzZSxcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyNDE6XFx0LmRldl9ncm91cHNcXHQ9IG1kaW9fYnVzX3N0YXRpc3RpY3NfZ3JvdXBzLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI0Mi19O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjQ0LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI0NTogKiBtZGlvX2J1c19tYXRjaCAtIGRldGVybWluZSBpZiBnaXZlbiBNRElPIGRyaXZlciBzdXBwb3J0cyB0aGUgZ2l2ZW5cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yNDYtICpcXHRcXHQgICAgTURJTyBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI1NC0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyNTU6c3RhdGljIGludCBtZGlvX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTI3ND1zdGF0aWMgaW50IG1kaW9fdWV2ZW50KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjg1LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI4NjpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqY29uc3QgbWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3NfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyODc6XFx0XFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX2RldmljZV90cmFuc2ZlcnMuYXR0ci5hdHRyLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI4ODpcXHRcXHUwMDI2ZGV2X2F0dHJfbWRpb19idXNfZGV2aWNlX2Vycm9ycy5hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6Mjg5OlxcdFxcdTAwMjZkZXZfYXR0cl9tZGlvX2J1c19kZXZpY2Vfd3JpdGVzLmF0dHIuYXR0cixcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzoyOTA6XFx0XFx1MDAyNmRldl9hdHRyX21kaW9fYnVzX2RldmljZV9yZWFkcy5hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjkxLVxcdE5VTEwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy0yOTMtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6Mjk0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIG1kaW9fYnVzX2RldmljZV9zdGF0aXN0aWNzX2dyb3VwID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5NS1cXHQubmFtZVxcdFxcdD0gXFxcInN0YXRpc3RpY3NcXFwiLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI5NjpcXHQuYXR0cnNfY29uc3RcXHQ9IG1kaW9fYnVzX2RldmljZV9zdGF0aXN0aWNzX2F0dHJzLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5Ny19O1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjI5ODpfX0FUVFJJQlVURV9HUk9VUFMobWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3MpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTI5OS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzozMDA6Y29uc3Qgc3RydWN0IGJ1c190eXBlIG1kaW9fYnVzX3R5cGUgPSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MzAxOlxcdC5uYW1lXFx0XFx0PSBcXFwibWRpb19idXNcXFwiLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjMwMjpcXHQuZGV2X2dyb3Vwc1xcdD0gbWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3NfZ3JvdXBzLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjMwMzpcXHQubWF0Y2hcXHRcXHQ9IG1kaW9fYnVzX21hdGNoLFxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTMwNC1cXHQudWV2ZW50XFx0XFx0PSBtZGlvX3VldmVudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTU1Mz1pbnQgX19tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICpidXMsIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTgwLVxcdGJ1cy1cXHUwMDNlZGV2LnBhcmVudCA9IGJ1cy1cXHUwMDNlcGFyZW50O1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU4MTpcXHRidXMtXFx1MDAzZWRldi5jbGFzcyA9IFxcdTAwMjZtZGlvX2J1c19jbGFzcztcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01ODItXFx0YnVzLVxcdTAwM2VkZXYuZ3JvdXBzID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTcyNz1zdHJ1Y3QgbWlpX2J1cyAqbWRpb19maW5kX2J1cyhjb25zdCBjaGFyICptZGlvX25hbWUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03MzAtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzMxOlxcdGQgPSBjbGFzc19maW5kX2RldmljZV9ieV9uYW1lKFxcdTAwMjZtZGlvX2J1c19jbGFzcywgbWRpb19uYW1lKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03MzItXFx0cmV0dXJuIGQgPyB0b19taWlfYnVzKGQpIDogTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTczND1FWFBPUlRfU1lNQk9MKG1kaW9fZmluZF9idXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzM4LSAqIG9mX21kaW9fZmluZF9idXMgLSBHaXZlbiBhbiBtaWlfYnVzIG5vZGUsIGZpbmQgdGhlIG1paV9idXMuXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzM5OiAqIEBtZGlvX2J1c19ucDogUG9pbnRlciB0byB0aGUgbWlpX2J1cy5cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NDAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc0OS0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo3NTA6c3RydWN0IG1paV9idXMgKm9mX21kaW9fZmluZF9idXMoc3RydWN0IGRldmljZV9ub2RlICptZGlvX2J1c19ucClcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzUzLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjc1NDpcXHRpZiAoIW1kaW9fYnVzX25wKVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc1NS1cXHRcXHRyZXR1cm4gTlVMTDtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTYtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzU3OlxcdGQgPSBjbGFzc19maW5kX2RldmljZV9ieV9vZl9ub2RlKFxcdTAwMjZtZGlvX2J1c19jbGFzcywgbWRpb19idXNfbnApO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc1OC1cXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM9MTE5PXN0cnVjdCBtZGlvX2RldmljZSAqbWRpb19kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTI5LVxcdG1kaW9kZXYtXFx1MDAzZWRldi5wYXJlbnQgPSBcXHUwMDI2YnVzLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTMwOlxcdG1kaW9kZXYtXFx1MDAzZWRldi5idXMgPSBcXHUwMDI2bWRpb19idXNfdHlwZTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xMzEtXFx0bWRpb2Rldi1cXHUwMDNlZGV2aWNlX2ZyZWUgPSBtZGlvX2RldmljZV9mcmVlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM9Mjg1PWludCBtZGlvX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kcml2ZXIgKmRydilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTI5MS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoyOTI6XFx0bWRpb2Rydi1cXHUwMDNlZHJpdmVyLmJ1cyA9IFxcdTAwMjZtZGlvX2J1c190eXBlO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTI5My1cXHRtZGlvZHJ2LVxcdTAwM2Vkcml2ZXIucHJvYmUgPSBtZGlvX3Byb2JlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jPTMxNDY9c3RhdGljIGludCBsYW5waHlfcmVhZF9wYWdlX3JlZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcGFnZSwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE0OS1cXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM6MzE1MDpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTUxLVxcdF9fcGh5X3dyaXRlKHBoeWRldiwgTEFOX0VYVF9QQUdFX0FDQ0VTU19DT05UUk9MLCBwYWdlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTU1LVxcdGRhdGEgPSBfX3BoeV9yZWFkKHBoeWRldiwgTEFOX0VYVF9QQUdFX0FDQ0VTU19BRERSRVNTX0RBVEEpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzozMTU2OlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz0zMTYxPXN0YXRpYyBpbnQgbGFucGh5X3dyaXRlX3BhZ2VfcmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MTYgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTYzLXtcXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM6MzE2NDpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTY1LVxcdF9fcGh5X3dyaXRlKHBoeWRldiwgTEFOX0VYVF9QQUdFX0FDQ0VTU19DT05UUk9MLCBwYWdlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTczLVxcdFxcdFxcdCAgIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjMxNzQ6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy0zMTc1LVxcdHJldHVybiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM9MzE3OD1zdGF0aWMgaW50IGxhbnBoeV9tb2RpZnlfcGFnZV9yZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHBhZ2UsIHUxNiBhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTMxODItXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjMxODM6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE4NC1cXHRfX3BoeV93cml0ZShwaHlkZXYsIExBTl9FWFRfUEFHRV9BQ0NFU1NfQ09OVFJPTCwgcGFnZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE4OS1cXHRcXHRcXHRcXHQgICBtYXNrLCBzZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzozMTkwOlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtMzE5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz00MjQ9c3RhdGljIGludCB5dHBoeV9yZWFkX2V4dF93aXRoX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00MjctXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjQyODpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00MjktXFx0cmV0ID0geXRwaHlfcmVhZF9leHQocGh5ZGV2LCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzo0MzA6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy00MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9NDY0PXN0YXRpYyBpbnQgeXRwaHlfd3JpdGVfZXh0X3dpdGhfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTQ2OC1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NDY5OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTQ3MC1cXHRyZXQgPSB5dHBoeV93cml0ZV9leHQocGh5ZGV2LCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjQ3MTpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTQ3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz01MTM9c3RhdGljIGludCB5dHBoeV9tb2RpZnlfZXh0X3dpdGhfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTUxNy1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6NTE4OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTUxOS1cXHRyZXQgPSB5dHBoeV9tb2RpZnlfZXh0KHBoeWRldiwgcmVnbnVtLCBtYXNrLCBzZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzo1MjA6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy01MjEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9OTQwPXN0YXRpYyBpbnQgeXRwaHlfcmdtaWlfY2xrX2RlbGF5X2NvbmZpZ193aXRoX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05NDMtXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjk0NDpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05NDUtXFx0cmV0ID0geXRwaHlfcmdtaWlfY2xrX2RlbGF5X2NvbmZpZyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzo5NDY6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05NDctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTgzMD1zdGF0aWMgaW50IHl0ODUzMV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4NTYtXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4NTc6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTg1OC1cXHRyZXQgPSB5dDg1MzFfc2V0X2RzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4NTk6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODYwLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM9MTUzOD1zdGF0aWMgdm9pZCB2c2M4NTg0X2dldF9iYXNlX2FkZHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE1NDItXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MTU0MzpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE1NDQtXFx0X19waHlfd3JpdGUocGh5ZGV2LCBNU0NDX0VYVF9QQUdFX0FDQ0VTUywgTVNDQ19QSFlfUEFHRV9FWFRFTkRFRCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0xNTUxLVxcdF9fcGh5X3dyaXRlKHBoeWRldiwgTVNDQ19FWFRfUEFHRV9BQ0NFU1MsIE1TQ0NfUEhZX1BBR0VfU1RBTkRBUkQpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjE1NTI6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE1NTMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYz0xNzIzPXN0YXRpYyBpbnQgdnNjODU4NF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMTczMC1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoxNzMxOlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMTczMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE3NzktXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MTc4MDpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMTc4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE4MTYtZXJyOlxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjE4MTc6XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTE4MTgtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTIwODU9c3RhdGljIGludCB2c2M4NTE0X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yMDkxLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjIwOTI6XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yMDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjExNC1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyMTE1OlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yMTE2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjEzNi1lcnI6XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MjEzNzpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjEzOC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz02Mz1zdGF0aWMgdTMyIHZzYzg1eHhfdHNfcmVhZF9jc3Ioc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgZW51bSB0c19ibGsgYmxrLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy04My1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jOjg0OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy04NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTAxLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM6MTAyOlxcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTEwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM9MTA3PXN0YXRpYyB2b2lkIHZzYzg1eHhfdHNfd3JpdGVfY3NyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGVudW0gdHNfYmxrIGJsayxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTMzLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM6MTM0OlxcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMzUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTE1Ny1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jOjE1ODpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xNTktfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz0xMzA3PXN0YXRpYyBpbnQgX192c2M4NTg0X2luaXRfcHRwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTEzMTMtXFx0aWYgKCF2c2M4NTg0X2lzXzE1ODhfaW5wdXRfY2xrX2NvbmZpZ3VyZWQocGh5ZGV2KSkge1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmM6MTMxNDpcXHRcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTMyNS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jOjEzMjY6XFx0XFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTMyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYz0yNzY9c3RhdGljIGludCBteGw4NjExMF93cml0ZV9leHRlbmRlZF9yZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYy0yODAtXFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jOjI4MTpcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYy0yODItXFx0cmV0ID0gX19teGw4NjExMF93cml0ZV9leHRlbmRlZF9yZWcocGh5ZGV2LCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jOjI4MzpcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTI4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYz0yOTk9c3RhdGljIGludCBteGw4NjExMF9yZWFkX2V4dGVuZGVkX3JlZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTMwMi1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDc6NTUuOTU1Njc3NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTAxNTcxNDU0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBUaG91Z2h0IFByb2Nlc3Mgb24gUUNBODA4eCBQSFkgRHJpdmVyIEluc3RhbnRpYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGZpbGUgSSdtIGxvb2tpbmcgYXQgaXMgYGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQgZXhhY3RseSBpcyBgcWNhODA4eGA/XCIgUmlnaHQsIGl0J3MgYSBQSFkgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgYSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBRQ0E4MDgxIEV0aGVybmV0IFBIWSBjaGlwcy4gR290IGl0LlxuXG5Ob3csIGhvdyBkb2VzIHRoaXMgZHJpdmVyLCBsaWtlIGFueSBQSFkgZHJpdmVyLCBhY3R1YWxseSAqZ2V0KiBpbnN0YW50aWF0ZWQgYW5kIHByb2JlZCB3aXRoaW4gYSBMaW51eCBzeXN0ZW0/IEkga25vdyBpdCBoaW5nZXMgb24gdGhlIE1ESU8gYnVzLiBNeSBtaW5kIGp1bXBzIHRvIHRoZSBwcm9jZXNzOiB0aGUgTURJTyBidXMgaXMgc2Nhbm5lZC4gVGhhdCBoYXBwZW5zIGVpdGhlciBhdCBib290LXVwLCBvciB3aGVuIGEgbmV0d29yayBkZXZpY2UgZHJpdmVyLCBsaWtlIHRoZSBgc3RtbWFjYCBvciBgZmVjYCBkcml2ZXJzLCByZWdpc3RlciBhbiBNRElPIGJ1cy4gVGhlbiB0aGUgc3lzdGVtIHNjYW5zIHRob3NlIDMyIGFkZHJlc3NlcyBmb3IgdGhvc2UgYE1JSV9QSFlTSUQxYCBhbmQgYE1JSV9QSFlTSUQyYCBpZGVudGlmaWVycy4gQWx0ZXJuYXRpdmVseSwgdGhlIFBIWSBjYW4gYmUgZGVzY3JpYmVkIGRpcmVjdGx5IHZpYSB0aGUgRGV2aWNlIFRyZWUgYW5kIHJlZ2lzdGVyZWQgd2l0aCBgb2ZfbWRpb2J1c19yZWdpc3RlcmAuXG5cblNvLCB0aGUga2V5IG11c3QgYmUgaW4gdGhlIG1hdGNoaW5nIHByb2Nlc3MuIEknbGwgbmVlZCB0byBjaGVjayBgbWRpb19idXNfbWF0Y2hgLiBMZXQncyBsb29rIGF0IGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AuIEhlcmUncyB0aGUgcmVsZXZhbnQgY29kZTpcblxuYGBgY1xuc3RhdGljIGludCBtZGlvX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG57XG5cdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbyA9IHRvX21kaW9fZGV2aWNlKGRldik7XG5cblx0aWYgKG9mX2RyaXZlcl9tYXRjaF9kZXZpY2UoZGV2LCBkcnYpKVxuXHRcdHJldHVybiAxO1xuXG5cdGlmIChtZGlvLVx1MDAzZWJ1c19tYXRjaClcblx0XHRyZXR1cm4gbWRpby1cdTAwM2VidXNfbWF0Y2goZGV2LCBkcnYpO1xuXG5cdHJldHVybiAwO1xufVxuYGBgXG5cblRoZSBtYXRjaGluZyBzZWVtcyB0byBkZXBlbmQgb24gRGV2aWNlIFRyZWUgbWF0Y2hpbmcsIG9yIHRoZSBgbWRpby1cdTAwM2VidXNfbWF0Y2hgIGZ1bmN0aW9uIHBvaW50ZXIuIFRoaXMgc3RydWN0dXJlLCB3aGVuIHRhbGtpbmcgYWJvdXQgdGhlIGBwaHlfZGV2aWNlYCwgdHJhbnNsYXRlcyBpbnRvIGEgYHBoeV9idXNfbWF0Y2hgIGZ1bmN0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBncmVwIGZvciBgcGh5X2J1c19tYXRjaGAgdG8gc2VlIGhvdyBpdCdzIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzAyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjAwLjk3MTM5NTYyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxOTE1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2J1c19tYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01NDQ9RVhQT1JUX1NZTUJPTF9HUEwoZ2VucGh5X21hdGNoX3BoeV9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NTQ2OnN0YXRpYyBpbnQgcGh5X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz03NDg9c3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NjUtXFx0bWRpb2Rldi1cXHUwMDNlYnVzID0gYnVzO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NzY2OlxcdG1kaW9kZXYtXFx1MDAzZWJ1c19tYXRjaCA9IHBoeV9idXNfbWF0Y2g7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NjctXFx0bWRpb2Rldi1cXHUwMDNlYWRkciA9IGFkZHI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjAxLjAyMDU5MzMzNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNzgwNzk4NTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLlxuXG4qKkRlZXAgRGl2ZTogQ2hlY2tpbmcgYHBoeV9idXNfbWF0Y2hgKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGNvcmUgb2YgdGhpcy4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBwaHlfYnVzX21hdGNoYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBtYXRjaGluZyBpcyBzdXBwb3NlZCB0byBmdW5jdGlvbiBhbmQgdGhlIGNvbnRleHRzIHRoYXQgbWlnaHQgY2F1c2UgaXQgdG8gZmFpbC4gVGhlIHR5cGljYWwgZmFpbHVyZSBtb2RlcyBpbiB0aGlzIGFyZWEgYXJlIHVzdWFsbHkgcmVsYXRlZCB0byBpbmNvcnJlY3QgYWRkcmVzcyBzcGFjZSBhc3NpZ25tZW50cywgcmVzb3VyY2UgY29uZmxpY3RzIG9yLCBsZXNzIGNvbW1vbmx5LCBkcml2ZXIgY29uZmlndXJhdGlvbiBlcnJvcnMuXG5cbkknbGwgd2FudCB0byByZXZpZXcgdGhlIGV4YWN0IGxvZ2ljIG9mIHRoZSBmdW5jdGlvbi4gSXMgaXQgcmVseWluZyBvbiBzb21ldGhpbmcgdGhhdCBtaWdodCBiZSBvdXRkYXRlZCBvciBpbmNvcnJlY3Q/IEFyZSB0aGVyZSBzcGVjaWZpYyBoYXJkd2FyZSBmbGFncyBvciBjYXBhYmlsaXRpZXMgdGhhdCB0aGUgbWF0Y2hpbmcgaXMga2V5ZWQgb24/IElzIHRoZSBtYXRjaGluZyBhbGdvcml0aG0gdG9vIHN0cmljdCwgcHJldmVudGluZyBsZWdpdGltYXRlIGRldmljZXMgZnJvbSBiZWluZyBpZGVudGlmaWVkLCBvciB0b28gbG9vc2UsIGFsbG93aW5nIHBvdGVudGlhbGx5IGluY29tcGF0aWJsZSBkZXZpY2VzIHRvIGJlIGluY29ycmVjdGx5IGFzc29jaWF0ZWQ/IEknbGwgbmVlZCB0byBrbm93IHdoYXQga2luZCBvZiBkZXZpY2UgaXQncyBzdXBwb3NlZCB0byBiZSBtYXRjaGluZy4gSXMgdGhlcmUgYW55IGV4aXN0aW5nIGRvY3VtZW50YXRpb24gb3IgYXNzb2NpYXRlZCB0ZXN0IGNhc2VzIEkgY2FuIHJlbHkgb24/XG5cbkkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBjcml0aWNhbCBkZXBlbmRlbmNpZXMgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZXkgYXJlIGFjY291bnRlZCBmb3IuIEFsc28sIGFueSByZWNlbnQgY2hhbmdlcyBvciBjb21taXRzIGluIHRoZSBjb2RlIGJhc2UgdGhhdCBpbnZvbHZlIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBvZiBpbW1lZGlhdGUgaW50ZXJlc3QuIFRoaXMgaGFzIHByb2JhYmx5IGJlZW4gdGhlIGNhdXNlIG9mIGFueSByZXBvcnRlZCBmYWlsdXJlcy4gRmluYWxseSwgSSdsbCBrZWVwIGFuIG9wZW4gbWluZCBmb3IgYW55IGVkZ2UgY2FzZXMgdGhhdCBtaWdodCBiZSB0aGUgY2F1c2UgZm9yIGEgcmVncmVzc2lvbiBpbiBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODc3MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjAzLjgwMTM5NDg3NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NDYsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1NDY6XFx0c3RhdGljIGludCBwaHlfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG4gNTQ3OlxcdHtcXG4gNTQ4OlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XFxuIDU0OTpcXHRcXHRjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2ID0gdG9fcGh5X2RyaXZlcihkcnYpO1xcbiA1NTA6XFx0XFxuIDU1MTpcXHRcXHRpZiAoIShwaHlkcnYtXFx1MDAzZW1kaW9kcnYuZmxhZ3MgXFx1MDAyNiBNRElPX0RFVklDRV9JU19QSFkpKVxcbiA1NTI6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDU1MzpcXHRcXG4gNTU0OlxcdFxcdGlmIChwaHlkcnYtXFx1MDAzZW1hdGNoX3BoeV9kZXZpY2UpXFxuIDU1NTpcXHRcXHRcXHRyZXR1cm4gcGh5ZHJ2LVxcdTAwM2VtYXRjaF9waHlfZGV2aWNlKHBoeWRldiwgcGh5ZHJ2KTtcXG4gNTU2OlxcdFxcbiA1NTc6XFx0XFx0cmV0dXJuIGdlbnBoeV9tYXRjaF9waHlfZGV2aWNlKHBoeWRldiwgcGh5ZHJ2KTtcXG4gNTU4OlxcdH1cXG4gNTU5OlxcdFxcbiA1NjA6XFx0c3RhdGljIHNzaXplX3RcXG4gNTYxOlxcdHBoeV9pZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4gNTYyOlxcdHtcXG4gNTYzOlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XFxuIDU2NDpcXHRcXG4gNTY1OlxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JS44bHhcXFxcblxcXCIsICh1bnNpZ25lZCBsb25nKXBoeWRldi1cXHUwMDNlcGh5X2lkKTtcXG4gNTY2OlxcdH1cXG4gNTY3OlxcdHN0YXRpYyBERVZJQ0VfQVRUUl9STyhwaHlfaWQpO1xcbiA1Njg6XFx0XFxuIDU2OTpcXHRzdGF0aWMgc3NpemVfdFxcbiA1NzA6XFx0cGh5X2ludGVyZmFjZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4gNTcxOlxcdHtcXG4gNTcyOlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0b19waHlfZGV2aWNlKGRldik7XFxuIDU3MzpcXHRcXHRjb25zdCBjaGFyICptb2RlID0gTlVMTDtcXG4gNTc0OlxcdFxcbiA1NzU6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfaW50ZXJuYWwpXFxuIDU3NjpcXHRcXHRcXHRtb2RlID0gXFxcImludGVybmFsXFxcIjtcXG4gNTc3OlxcdFxcdGVsc2VcXG4gNTc4OlxcdFxcdFxcdG1vZGUgPSBwaHlfbW9kZXMocGh5ZGV2LVxcdTAwM2VpbnRlcmZhY2UpO1xcbiA1Nzk6XFx0XFxuIDU4MDpcXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIlc1xcXFxuXFxcIiwgbW9kZSk7XFxuIDU4MTpcXHR9XFxuIDU4MjpcXHRzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X2ludGVyZmFjZSk7XFxuIDU4MzpcXHRcXG4gNTg0OlxcdHN0YXRpYyBzc2l6ZV90XFxuIDU4NTpcXHRwaHlfaGFzX2ZpeHVwc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjAzLjgwMTU2NTIwNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxOTA1ODM2OTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gQnVzIEVtdWxhdGlvbiBhbmQgdGhlIFFDQTgwODEgUEhZKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgb3IgdmlydHVhbCBlbnZpcm9ubWVudCBvdXQgdGhlcmUgdGhhdCBjYW4gZW11bGF0ZSBhbiBNRElPIGJ1cywgc3BlY2lmaWNhbGx5IHdpdGggYSBRQ0E4MDgxIFBIWS4gTXkgdXN1YWwgc2VhcmNoIHRlcm1zIGhhdmVuJ3QgdHVybmVkIHVwIGFueXRoaW5nIGRlZmluaXRpdmUgeWV0LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGEga2V5IHBpZWNlIG9mIHRlcm1pbm9sb2d5IG9yIGEgc3VidGxlIHByb2plY3QuXG5cblRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgKmhvdyogYFFDQTgwODFfUEhZX0lEYCBpcyBiZWluZyB1c2VkIGluIGNvZGUgb3IgY29uZmlndXJhdGlvbnMuIFRoYXQgaWRlbnRpZmllciBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBpbnRlZ3JhdGlvbiBwb2ludHMgYW5kIGRlcGVuZGVuY2llcy4gT25jZSBJJ3ZlIGdvdCB0aGF0LCBJIHNob3VsZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBpdCBhbGwgd29ya3MhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzQ4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODowNS43MDc0MDUxNTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTgyNjk5ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUUNBODA4MV9QSFlfSURcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTg3LVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo4ODojZGVmaW5lIFFDQTgwODFfUEhZX0lEXFx0XFx0XFx0XFx0MHgwMDRkZDEwMVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy04OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz02NDk9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwOHhfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUxLVxcdC8qIFF1YWxjb21tIFFDQTgwODEgKi9cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjUyOlxcdFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MDgxX1BIWV9JRCksXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY1My1cXHQubmFtZVxcdFxcdFxcdD0gXFxcIlF1YWxjb21tIFFDQTgwODFcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY4ND1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHFjYTgwOHhfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY4NTpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MDgxX1BIWV9JRCkgfSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjg2LVxcdHsgfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODowNy40MjU2ODE4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjYwOTc4NjYxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgQXR0YWNrIFN1cmZhY2UgZm9yIHRoZSBRQ0E4MDgxIFBIWSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgYFFDQTgwODFfUEhZX0lEYCBzZWVtcyB0byBiZSBzb2xlbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgIGZpbGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIG9yIGEgdXNlciBydW5uaW5nIHdpdGhpbiBhIHZpcnR1YWwgbWFjaGluZSBsaWtlIFFFTVUgb3IgR0NFIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBkcml2ZXI/IElzIHRoZXJlIGFueSB3YXkgZm9yIHRoZW0gdG8gaW50ZXJhY3Qgd2l0aCBpdCwgdG8gaW5zdGFudGlhdGUgaXQsIG9yIHRyaWdnZXIgaXRzIGV4ZWN1dGlvbj8gVGhhdCdzIHRoZSBjcml0aWNhbCBxdWVzdGlvbi5cblxuVG8gZmlndXJlIHRoaXMgb3V0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBNeSBwbGFuIGlzIHRvIGludmVzdGlnYXRlIHdoZXRoZXIgdXNlcnNwYWNlIGhhcyB0aGUgY2FwYWJpbGl0eSB0byBjcmVhdGUgTURJTyBvciBQSFkgZGV2aWNlcy4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3lzZnMgaW50ZXJmYWNlcywgaW9jdGxzLCBuZXRsaW5rIGludGVyYWN0aW9ucywgb3IgY29uZmlnZnMgY29uZmlndXJhdGlvbnMgdGhhdCB3b3VsZCBhbGxvdyB0aGlzLiBCYXNpY2FsbHksIEkgd2FudCB0byB0cmFjZSBhIHBhdGggZnJvbSB1c2Vyc3BhY2UgdG8gdGhlIHJlZ2lzdHJhdGlvbiBhbmQgaW5zdGFudGlhdGlvbiBvZiB0aGlzIHNwZWNpZmljIFBIWSBkcml2ZXIuXG5cblNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIGV4YW1pbmUgaG93IGBwaHlfZGV2aWNlX2NyZWF0ZWAsIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCwgYW5kIGBtZGlvYnVzX3JlZ2lzdGVyYCBhcmUgdXNlZCBhY3Jvc3MgdGhlIGVudGlyZSBrZXJuZWwuIFRoaXMgc2hvdWxkIGhlbHAgbWUgZGV0ZXJtaW5lIHdoYXQgbWVjaGFuaXNtcyBleGlzdCBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGVzZSBQSFktcmVsYXRlZCBvYmplY3RzIGFuZCB3aGV0aGVyIGFueSBvZiB0aG9zZSBtZWNoYW5pc21zIGNvdWxkIHBvc3NpYmx5IGJlIGxldmVyYWdlZCB0byB0cmlnZ2VyIHRoZSBgcWNhODA4eGAgZHJpdmVyJ3MgY29kZSBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzNDgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDg6MTMuNTIzNTUxNzE5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc2OTEyMzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kZXZpY2VfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz05MzE9c3RhdGljIGludCB4Z2JlX3BoeV9maW5kX3BoeV9kZXZpY2Uoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5NzY6XFx0cmV0ID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTc3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk3ODpcXHRcXHRuZXRkZXZfZXJyKHBkYXRhLVxcdTAwM2VuZXRkZXYsIFxcXCJwaHlfZGV2aWNlX3JlZ2lzdGVyIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05NzktXFx0XFx0cGh5X2RldmljZV9mcmVlKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jPTcxNj1obnNfbWFjX3JlZ2lzdGVyX3BoeWRldihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGhuc19tYWNfY2IgKm1hY19jYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWFjLmMtNzQ0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWFjLmM6NzQ1OlxcdHJjID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWFjLmMtNzQ2LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jPTE5Mjk9c3RhdGljIGludCBuZXRzZWNfcmVnaXN0ZXJfbWRpbyhzdHJ1Y3QgbmV0c2VjX3ByaXYgKnByaXYsIHUzMiBwaHlfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYzoxOTg0OlxcdFxcdHJldCA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk4NS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk4OC1cXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmM6MTk4OTpcXHRcXHRcXHRcXHRcXFwicGh5X2RldmljZV9yZWdpc3RlciBlcnIoJWQpXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTkwLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYz00Mj1md25vZGVfZmluZF9taWlfdGltZXN0YW1wZXIoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy02OS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6NzA6aW50IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTcxLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEwMy1cXHQgKi9cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTA0OlxcdHJjID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMDUtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTE0LX1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTE1OkVYUE9SVF9TWU1CT0woZndub2RlX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTExNi1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9MTE3PWludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNDktXFx0XFx0LyogQWxsIGRhdGEgaXMgbm93IHN0b3JlZCBpbiB0aGUgcGh5IHN0cnVjdCwgc28gcmVnaXN0ZXIgaXQgKi9cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTUwOlxcdFxcdHJjID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNTEtXFx0XFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTU2LVxcdH0gZWxzZSBpZiAoaXNfb2Zfbm9kZShjaGlsZCkpIHtcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTU3OlxcdFxcdHJjID0gZndub2RlX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihidXMsIHBoeSwgY2hpbGQsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xNTgtXFx0XFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmM9MjYzPXN0cnVjdCBwaHlfZGV2aWNlICp4Z2VuZV9lbmV0X3BoeV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYy0yNzAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmM6MjcxOlxcdGlmIChwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeV9kZXYpKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby14Z2VuZS5jLTI3Mi1cXHRcXHRwaHlfZGV2aWNlX2ZyZWUocGh5X2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0zMj1zdGF0aWMgaW50IG9mX2dldF9waHlfaWQoc3RydWN0IGRldmljZV9ub2RlICpkZXZpY2UsIHUzMiAqcGh5X2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzYtXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6Mzc6aW50IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zOC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zOS17XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDA6XFx0cmV0dXJuIGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIobWRpbywgcGh5LFxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxLVxcdFxcdFxcdFxcdFxcdFxcdCAgb2ZfZndub2RlX2hhbmRsZShjaGlsZCksXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00My19XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDQ6RVhQT1JUX1NZTUJPTChvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTEzMT1zdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTYyLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNjM6XFx0cmV0ID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNjQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NDA4PXN0YXRpYyBzdHJ1Y3QgcGh5X2RldmljZSAqbWRpb2J1c19zY2FuKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGM0NSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQzNy1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0Mzg6XFx0ZXJyID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQzOS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYz01NTE9c3RhdGljIHZvaWQgdGphMTEwMl9wMV9yZWdpc3RlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTctXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTk4OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihidXMsIHBoeSwgY2hpbGQsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU5OS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTExMDM9RVhQT1JUX1NZTUJPTChnZXRfcGh5X2RldmljZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDUtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTA2OiAqIHBoeV9kZXZpY2VfcmVnaXN0ZXIgLSBSZWdpc3RlciB0aGUgcGh5IGRldmljZSBvbiB0aGUgTURJTyBidXNcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDctICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTA4LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTEwOTppbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTExMC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExNDEtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTE0MjpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTE0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTE0OC0gKiBUaGlzIGRvZXNuJ3QgZnJlZSB0aGUgcGh5X2RldmljZSBpdHNlbGYsIGl0IG1lcmVseSByZXZlcnNlcyB0aGUgZWZmZWN0c1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTE0OTogKiBvZiBwaHlfZGV2aWNlX3JlZ2lzdGVyKCkuIFVzZSBwaHlfZGV2aWNlX2ZyZWUoKSB0byBmcmVlIHRoZSBkZXZpY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExNTAtICogYWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jPTIxMDU9c3RhdGljIGludCBzZnBfc21fcHJvYmVfcGh5KHN0cnVjdCBzZnAgKnNmcCwgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTIxMjAtXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjIxMjE6XFx0ZXJyID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHkpO1xcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMTIyLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjEyMy1cXHRcXHRwaHlfZGV2aWNlX2ZyZWUocGh5KTtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM6MjEyNDpcXHRcXHRkZXZfZXJyKHNmcC1cXHUwMDNlZGV2LCBcXFwicGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWQ6ICVwZVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjEyNS1cXHRcXHRcXHRFUlJfUFRSKGVycikpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTExLSNpZiBJU19FTkFCTEVEKENPTkZJR19GV05PREVfTURJTylcXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmg6MTI6aW50IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTEzLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oPTE2PWludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4tLVxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xOS0jZWxzZSAvKiBDT05GSUdfRldOT0RFX01ESU8gKi9cXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmg6MjA6aW50IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oLTIxLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg9NDk9Ym9vbCBvZl9waHlfaXNfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDo1MDppbnQgb2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTUxLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQsIHUzMiBhZGRyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTE0MD1zdGF0aWMgaW5saW5lIGJvb2wgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTE0NC1cXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDoxNDU6c3RhdGljIGlubGluZSBpbnQgb2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTE0Ni1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9MjE1OT1zdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KTtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjIxNjA6aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeSk7XFxuaW5jbHVkZS9saW51eC9waHkuaC0yMTYxLXZvaWQgcGh5X2RldmljZV9mcmVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODoxNS4yMDA0NzE2MTNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjI4NzYyMjcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiBhIFFDQTgwODEgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBhIHBhdGNoIGFmZmVjdGluZyB0aGUgYG1kaW9idXNfc2NhbmAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgUEhZLCBpcyB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGUgY2hhbmdlcyBhcmUgKnJlYWNoYWJsZSogY29kZS5cblxuRmlyc3QsIHRoZSBgbWRpb2J1c19zY2FuYCBmdW5jdGlvbiByZWFkcyBQSFkgSURzIChNSUlfUEhZU0lEMSwgTUlJX1BIWVNJRDIpIHRvIGlkZW50aWZ5IGNvbm5lY3RlZCBQSFlzLiBUaGUgUUNBODA4MSBpcyBhIHBoeXNpY2FsIFBIWSwgdHlwaWNhbGx5IGZvdW5kIG9uIFF1YWxjb21tIG5ldHdvcmtpbmcgU29DcyBsaWtlIHRoZSBJUFE1MDE4LCBJUFE4MDc0LCBvciByb3V0ZXIgYm9hcmRzIHdpdGggdGhhdCBzcGVjaWZpYyBjaGlwLCB3aXJlZCB2aWEgTURJTyBhbmQgU0dNSUkvMjUwMEJhc2VYLlxuXG5Ob3cgdGhlIHF1ZXN0aW9uIGlzLCAqY2FuIEkgcmVhY2ggdGhpcyBQSFkgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyogTm8sIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBRQ0E4MDgxLiBJdCBlbXVsYXRlcyBzdGFuZGFyZCBOSUNzLiBBbmQgd2hhdCBhYm91dCBVU0IgRXRoZXJuZXQ/IFdoaWxlIHNvbWUgVVNCIGFkYXB0ZXJzIHVzZSBpbnRlcm5hbCBQSFlzLCB0aGUgUUNBODA4MSBpcyBub3Qgb25lIG9mIHRoZW0uIFVTQiBnYWRnZXQgYWxzbyBkb2Vzbid0IHByb3ZpZGUgZW11bGF0aW9uIG9mIE1ESU8gUEhZcy5cblxuQ291bGQgSSByZWFjaCB0aGUgUUNBODA4MSB2aWEgYSBtb2NrIE1ESU8gYnVzIG9yIG5ldGRldj8gSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJ3MgYSB2aXJ0dWFsIE1ESU8gYnVzIG9yIGR1bW15IFBIWSBhbmQgaWYgdGhlIFBIWSBkcml2ZXIgaXMgY29uc2lkZXJlZCBoYXJkd2FyZS1zcGVjaWZpYy5cblxuTGV0J3MgcmVmZXIgdG8gdGhlIGluc3RydWN0aW9ucyBmb3IgdGhlIGZ1enppbmcgYW5hbHlzaXMuIEkgbmVlZCB0byBjaGVjayBmb3IgdGhlIG5lZ2F0aXZlIGFuZCBwb3NpdGl2ZSBjcml0ZXJpYSB0aGF0IGRldGVybWluZSBmdXp6aW5nIHdvcnRoaW5lc3MuXG5cblRoZSBpbnN0cnVjdGlvbnMgc2F5IHRoYXQgaXQncyAqbm90KiB3b3J0aCBmdXp6aW5nIGlmIHRoZSBjb2RlIGZhbGxzIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzLiBJIG5lZWQgdG8gZm9jdXMgb24gXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIjogXCJWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiXG5cbklzIFFDQTgwODEgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIj8gTGV0J3MgdmVyaWZ5IHdoYXQgdGhlIFFDQTgwODEgaXMuIEl0J3MgYSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVyLiBJIHNob3VsZCBub3cgY2hlY2sgdGhlIGRyaXZlciBjb2RlIGluIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgIHRvIHNlZSBob3cgaXQncyBpbXBsZW1lbnRlZC4gVGhlbiBJIGNhbiBkZXRlcm1pbmUgaWYgaXQgZmFsbHMgdW5kZXIgdGhlIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY2F0ZWdvcnkgc2luY2UgSSBrbm93IGl0J3MgYSBwaHlzaWNhbCBjaGlwIGFuZCBJIGNhbm5vdCByZWFjaCBpdCB1c2luZyBzdGFuZGFyZCBRRU1VLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk0OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODoyMS40ODgwOTc1MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCtcXG4gICAyOlxcdFxcbiAgIDM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDU6XFx0XFxuICAgNjpcXHQjaW5jbHVkZSBcXFwicWNvbS5oXFxcIlxcbiAgIDc6XFx0XFxuICAgODpcXHQvKiBBREMgdGhyZXNob2xkICovXFxuICAgOTpcXHQjZGVmaW5lIFFDQTgwOFhfUEhZX0RFQlVHX0FEQ19USFJFU0hPTERcXHRcXHQweDJjODBcXG4gIDEwOlxcdCNkZWZpbmUgUUNBODA4WF9BRENfVEhSRVNIT0xEX01BU0tcXHRcXHRHRU5NQVNLKDcsIDApXFxuICAxMTpcXHQjZGVmaW5lIFFDQTgwOFhfQURDX1RIUkVTSE9MRF84ME1WXFx0XFx0MFxcbiAgMTI6XFx0I2RlZmluZSBRQ0E4MDhYX0FEQ19USFJFU0hPTERfMTAwTVZcXHRcXHQweGYwXFxuICAxMzpcXHQjZGVmaW5lIFFDQTgwOFhfQURDX1RIUkVTSE9MRF8yMDBNVlxcdFxcdDB4MGZcXG4gIDE0OlxcdCNkZWZpbmUgUUNBODA4WF9BRENfVEhSRVNIT0xEXzMwME1WXFx0XFx0MHhmZlxcbiAgMTU6XFx0XFxuICAxNjpcXHQvKiBDTEQgY29udHJvbCAqL1xcbiAgMTc6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0FERFJfQ0xEX0NUUkw3XFx0XFx0MHg4MDA3XFxuICAxODpcXHQjZGVmaW5lIFFDQTgwOFhfODAyM0FaX0FGRV9DVFJMX01BU0tcXHRcXHRHRU5NQVNLKDgsIDQpXFxuICAxOTpcXHQjZGVmaW5lIFFDQTgwOFhfODAyM0FaX0FGRV9FTlxcdFxcdFxcdDB4OTBcXG4gIDIwOlxcdFxcbiAgMjE6XFx0LyogQVogY29udHJvbCAqL1xcbiAgMjI6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0FaX1RSQUlOSU5HX0NUUkxcXHQweDgwMDhcXG4gIDIzOlxcdCNkZWZpbmUgUUNBODA4WF9NTUQzX0FaX1RSQUlOSU5HX1ZBTFxcdFxcdDB4MWMzMlxcbiAgMjQ6XFx0XFxuICAyNTpcXHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDFfTVNFX1RIUkVTSE9MRF8yMERCXFx0MHg4MDE0XFxuICAyNjpcXHQjZGVmaW5lIFFDQTgwOFhfTVNFX1RIUkVTSE9MRF8yMERCX1ZBTFVFXFx0MHg1MjlcXG4gIDI3OlxcdFxcbiAgMjg6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQxX01TRV9USFJFU0hPTERfMTdEQlxcdDB4ODAwRVxcbiAgMjk6XFx0I2RlZmluZSBRQ0E4MDhYX01TRV9USFJFU0hPTERfMTdEQl9WQUxVRVxcdDB4MzQxXFxuICAzMDpcXHRcXG4gIDMxOlxcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EMV9NU0VfVEhSRVNIT0xEXzI3REJcXHQweDgwMUVcXG4gIDMyOlxcdCNkZWZpbmUgUUNBODA4WF9NU0VfVEhSRVNIT0xEXzI3REJfVkFMVUVcXHQweDQxOVxcbiAgMzM6XFx0XFxuICAzNDpcXHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDFfTVNFX1RIUkVTSE9MRF8yOERCXFx0MHg4MDIwXFxuICAzNTpcXHQjZGVmaW5lIFFDQTgwOFhfTVNFX1RIUkVTSE9MRF8yOERCX1ZBTFVFXFx0MHgzNDFcXG4gIDM2OlxcdFxcbiAgMzc6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQ3X1RPUF9PUFRJT04xXFx0XFx0MHg5MDFjXFxuICAzODpcXHQjZGVmaW5lIFFDQTgwOFhfVE9QX09QVElPTjFfREFUQVxcdFxcdDB4MFxcbiAgMzk6XFx0XFxuICA0MDpcXHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDNfREVCVUdfMVxcdFxcdDB4YTEwMFxcbiAgNDE6XFx0I2RlZmluZSBRQ0E4MDhYX01NRDNfREVCVUdfMV9WQUxVRVxcdFxcdDB4OTIwM1xcbiAgNDI6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0RFQlVHXzJcXHRcXHQweGExMDFcXG4gIDQzOlxcdCNkZWZpbmUgUUNBODA4WF9NTUQzX0RFQlVHXzJfVkFMVUVcXHRcXHQweDQ4YWRcXG4gIDQ0OlxcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EM19ERUJVR18zXFx0XFx0MHhhMTAzXFxuICA0NTpcXHQjZGVmaW5lIFFDQTgwOFhfTU1EM19ERUJVR18zX1ZBTFVFXFx0XFx0MHgxNjk4XFxuICA0NjpcXHQjZGVmaW5lIFFDQTgwOFhfUEhZX01NRDNfREVCVUdfNFxcdFxcdDB4YTEwNVxcbiAgNDc6XFx0I2RlZmluZSBRQ0E4MDhYX01NRDNfREVCVUdfNF9WQUxVRVxcdFxcdDB4ODAwMVxcbiAgNDg6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9NTUQzX0RFQlVHXzVcXHRcXHQweGExMDZcXG4gIDQ5OlxcdCNkZWZpbmUgUUNBODA4WF9NTUQzX0RFQlVHXzVfVkFMVUVcXHRcXHQweDExMTFcXG4gIDUwOlxcdCNkZWZpbmUgUUNBODA4WF9QSFlfTU1EM19ERUJVR182XFx0XFx0MHhhMDExXFxuICA1MTpcXHQjZGVmaW5lIFFDQTgwOFhfTU1EM19ERUJVR182X1ZBTFVFXFx0XFx0MHg1Zjg1XFxuICA1MjpcXHRcXG4gIDUzOlxcdC8qIG1hc3Rlci9zbGF2ZSBzZWVkIGNvbmZpZyAqL1xcbiAgNTQ6XFx0I2RlZmluZSBRQ0E4MDhYX1BIWV9ERUJVR19MT0NBTF9TRUVEXFx0XFx0OVxcbiAgNTU6XFx0I2RlZmluZSBRQ0E4MDhYX01BU1RFUl9TTEFWRV9TRUVEX0VOQUJMRVxcdEJJVCgxKVxcbiAgNTY6XFx0I2RlZmluZSBRQ0E4MDhYX01BU1RFUl9TTEFWRV9TRUVEX0NGR1xcdFxcdEdFTk1BU0soMTIsIDIpXFxuICA1NzpcXHQjZGVmaW5lIFFDQTgwOFhfTUFTVEVSX1NMQVZFX1NFRURfUkFOR0VcXHRcXHQweDMyXFxuICA1ODpcXHRcXG4gIDU5OlxcdC8qIEhpYmVybmF0aW9uIHlpZWxkcyBsb3dlciBwb3dlciBjb25zdW1waXRvbiBpbiBjb250cmFzdCB3aXRoIG5vcm1hbCBvcGVyYXRpb24gbW9kZS5cXG4gIDYwOlxcdCAqIHdoZW4gdGhlIGNvcHBlciBjYWJsZSBpcyB1bnBsdWdnZWQsIHRoZSBQSFkgZW50ZXJzIGludG8gaGliZXJuYXRpb24gbW9kZSBpbiBhYm91dCAxMHMuXFxuICA2MTpcXHQgKi9cXG4gIDYyOlxcdCNkZWZpbmUgUUNBODA4WF9EQkdfQU5fVEVTVFxcdFxcdFxcdDB4YlxcbiAgNjM6XFx0I2RlZmluZSBRQ0E4MDhYX0hJQkVSTkFUSU9OX0VOXFx0XFx0XFx0QklUKDE1KVxcbiAgNjQ6XFx0XFxuICA2NTpcXHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRUQyX0NUUkxcXHRcXHRcXHQweDgwNzRcXG4gIDY2OlxcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRDJfRk9SQ0VfQ1RSTFxcdFxcdDB4ODA3NVxcbiAgNjc6XFx0I2RlZmluZSBRQ0E4MDhYX01NRDdfTEVEMV9DVFJMXFx0XFx0XFx0MHg4MDc2XFxuICA2ODpcXHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRUQxX0ZPUkNFX0NUUkxcXHRcXHQweDgwNzdcXG4gIDY5OlxcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRDBfQ1RSTFxcdFxcdFxcdDB4ODA3OFxcbiAgNzA6XFx0I2RlZmluZSBRQ0E4MDhYX01NRDdfTEVEX0NUUkwoeClcXHRcXHQoMHg4MDc4IC0gKCh4KSAqIDIpKVxcbiAgNzE6XFx0XFxuICA3MjpcXHQjZGVmaW5lIFFDQTgwOFhfTU1EN19MRUQwX0ZPUkNFX0NUUkxcXHRcXHQweDgwNzlcXG4gIDczOlxcdCNkZWZpbmUgUUNBODA4WF9NTUQ3X0xFRF9GT1JDRV9DVFJMKHgpXFx0XFx0KDB4ODA3OSAtICgoeCkgKiAyKSlcXG4gIDc0OlxcdFxcbiAgNzU6XFx0I2RlZmluZSBRQ0E4MDhYX01NRDdfTEVEX1BPTEFSSVRZX0NUUkxcXHRcXHQweDkwMWFcXG4gIDc2OlxcdC8qIFFTREsgc2V0cyBieSBkZWZhdWx0IDB4NDYgdG8gdGhpcyByZWcgdGhhdCBzZXRzIEJJVCA2IGZvclxcbiAgNzc6XFx0ICogTEVEIHRvIGFjdGl2ZSBoaWdoLiBJdCdzIG5vdCBjbGVhciB3aGF0IEJJVCAzIGFuZCBCSVQgNCBkb2VzLlxcbiAgNzg6XFx0ICovXFxuICA3OTpcXHQjZGVmaW5lIFFDQTgwOFhfTEVEX0FDVElWRV9ISUdIXFx0XFx0XFx0QklUKDYpXFxuICA4MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDg6MjEuNDg4MTkzNjVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTM1MDcyNjI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbnZlc3RpZ2F0aW9uIGludG8gdGhlIFFDQTgwOHggUEhZIFByb2JlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgcWNhODA4eGAgUEhZIGdldHMgaW5pdGlhbGl6ZWQuIEZpcnN0LCB0aGUgY29kZSBzbmlwcGV0IGZyb20gbGluZSAxODEgc2hvd3MgdGhlIGBxY2E4MDh4X3Byb2JlYCBmdW5jdGlvbi4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYWxsb2NhdGUgc29tZSBwcml2YXRlIGRhdGEgKGBxY2E4MDh4X3ByaXZgKSwgaW5pdGlhbGl6ZSBgbGVkX3BvbGFyaXR5X21vZGVgIHRvIC0xLCBhbmQgYXR0YWNoIHRoZSBwcml2YXRlIGRhdGEgdG8gdGhlIGBwaHlfZGV2aWNlYC4gTm90aGluZyB0b28gZXhjaXRpbmcgdGhlcmUuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0IHRyaWdnZXJzICp0aGlzKiBmdW5jdGlvbiB0byBydW4/IFRoYXQncyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCB0aGUgcHJvYmUgbWVjaGFuaXNtIGZvciBgcGh5X2RyaXZlcmAuIFNvLCBgcGh5X2RyaXZlcl9yZWdpc3RlcmAgZ2V0cyB0aGUgYmFsbCByb2xsaW5nLiBUaGlzIHJlZ2lzdGVycyB0aGUgYHBoeV9kcml2ZXJgIHdpdGggdGhlIGBtZGlvX2J1c190eXBlYC4gTWFrZXMgc2Vuc2UuIE5vdywgZm9yIGFuIGFjdHVhbCBgcGh5X2RldmljZWAgdG8gY29tZSBpbnRvIGV4aXN0ZW5jZSBhbmQgZ2V0IHByb3Blcmx5IGJvdW5kLCBhIGZldyB0aGluZ3MgbmVlZCB0byBoYXBwZW4uXG5cbkZpcnN0LCBhbiBNRElPIGJ1cyBoYXMgdG8gYmUgcmVnaXN0ZXJlZCB1c2luZyBgbWRpb2J1c19yZWdpc3RlcmAuICBUaGVuLCB0aGF0IE1ESU8gYnVzIG5lZWRzIHRvIGRvIGl0cyBqb2I6IHNjYW4gb3IgZW51bWVyYXRlIGRldmljZXMuIFRoZSBgbWRpb2J1c19zY2FuYCBmdW5jdGlvbiBpcyB0aGUga2V5IGhlcmUuIEl0IHJlYWRzIE1NRC9NSUkgcmVnaXN0ZXJzIGZyb20gdGhlIGhhcmR3YXJlLCBsb29raW5nIGF0IGFkZHJlc3NlcyAwIHRocm91Z2ggMzEuICBJZiB0aGUgdmFsdWVzIGluIGBNSUlfUEhZU0lEMWAgYW5kIGBNSUlfUEhZU0lEMmAgbWF0Y2ggYFFDQTgwODFfUEhZX0lEYCAoMHgwMDRkZDEwMSksIHRoZSBzeXN0ZW0gYWxsb2NhdGVzIGEgYHBoeV9kZXZpY2VgIGFuZCByZWdpc3RlcnMgaXQuIEVzc2VudGlhbGx5LCBpdCBmaW5kcyBpdCB2aWEgdGhlIGhhcmR3YXJlLlxuXG5BbHRlcm5hdGl2ZWx5LCB0aGUgZGV2aWNlIHRyZWUgY291bGQgcGxheSBhIHJvbGUuIERldmljZSBUcmVlIG5vZGVzIGNhbiBkZXNjcmliZSB0aGUgTURJTyBidXMgYW5kIFBIWSBjaGlsZCBub2Rlcy4gQSBgY29tcGF0aWJsZWAgc3RyaW5nIGxpa2UgXCJldGhlcm5ldC1waHktaWQwMDRkLmQxMDFcIiB3b3VsZCBmbGFnIHRoZSBQSFkuIFRoZSBNRElPIGJ1cyBjb250cm9sbGVyIHBhcnNlcyB0aGUgZGV2aWNlIHRyZWUsIGFuZCB0aGF0J3Mgd2hlbiB0aGUgUEhZIHdvdWxkIGJlIHByb2JlZC5cblxuTm93LCBhIGNydWNpYWwgcXVlc3Rpb24sIGFuZCB0aGlzIGlzIHdoZXJlIEkgc3RhcnQgdG8gZ2V0IHJlYWxseSBjdXJpb3VzLCBpcyB3aGV0aGVyIHRoZXJlJ3MgYW55ICpzb2Z0d2FyZSogTURJTyBkcml2ZXIgb3IgdmlydHVhbCBkZXZpY2UgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgdGhhdCBhY3R1YWxseSBjcmVhdGVzIGEgUUNBODA4MSBQSFkuIEkgY2FuJ3QgaW1hZ2luZSB0aGlzIGV4aXN0aW5nIHdpdGhvdXQgYSBzcGVjaWZpYyBkcml2ZXIsIHNvIEkgbmVlZCB0byBjaGVjayBhbGwgb2NjdXJyZW5jZXMgb2YgXCJtZGlvYnVzXCIgdG8gc2VlIGlmIHRoZXJlJ3Mgc29tZSBraW5kIG9mIHZpcnR1YWwgb3IgZW11bGF0ZWQgbmV0ZGV2IG9yIE1ESU8gYnVzIHNldCB1cC4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSdzIGFueSBzaW11bGF0aW9uIHRoYXQncyByZWxldmFudCB0byB0aGlzIHByb2JlIHNlcXVlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzMxOCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjI2LjgzODkyMzI4M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NjQ1ODMxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvYnVzX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEzOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0PTM0OT1NRElPXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUxLSAgZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTI6ICBkZXZtX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdDoxMzpgYGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeSgpYGApLiBNQUMtc2lkZSBjb25uZWN0aW9uIHByb3BlcnRpZXMgc3VjaCBhc1xcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0LTE0LWBgcGh5LWhhbmRsZWBgIGFuZCBgYHBoeS1tb2RlYGAgYXJlIGRvY3VtZW50ZWQgaW4gW2FjcGktbWRpby1waHldXy5cXG4tLVxcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvcGh5LnJzdD03PVRoZSBQSFlzIG9uIGFuIE1ESU8gYnVzIFtwaHldIGFyZSBwcm9iZWQgYW5kIHJlZ2lzdGVyZWQgdXNpbmdcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q6ODpmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKS5cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTQwPXJlZ2lzdGVyZWQgYXMgYSBkaXN0aW5jdCBkZXZpY2UuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01Ni0gICBkcml2ZXIgbmVlZHMsIHNldHVwIHRoZSBtaWlfYnVzIHN0cnVjdHVyZSwgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIFBBTCB1c2luZ1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjU3OiAgIG1kaW9idXNfcmVnaXN0ZXIuICBTaW1pbGFybHksIHRoZXJlJ3MgYSByZW1vdmUgZnVuY3Rpb24gdG8gdW5kbyBhbGwgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01OC0gICB0aGF0ICh1c2UgbWRpb2J1c191bnJlZ2lzdGVyKS5cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM9MTA5PXN0YXRpYyBpbnQgZXA4MjQ4ZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYzoxMzM6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG9mZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzQtXFx0aWYgKHJldClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jPTIwNz1zdGF0aWMgaW50IGdwaW9fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYzoyNDQ6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02ODMtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LVxcdTAwM2VkZXYsIGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzIxPWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzkzOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwOT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ0NC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ0NTpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NDYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jPTI0Mj1zdGF0aWMgaW50IG10NzYyOF9zZXR1cF9pbnRlcm5hbF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYy0yNjEtXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jOjI2MjpcXHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmMtMjYzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4NDI9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODk1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODk3LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjkyLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5NC1cXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jPTE0OT1zdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfZW1kaW9fYnVzKHN0cnVjdCBuZXRjX3BvcnQgKm5wLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE4MDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDEzLVxcdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjEwMTQ6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg3OD1zdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXFx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MDQ6XFx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTA1LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MzU3PXN0YXRpYyBpbnQgYXI5MzMxX3N3X21idXNfaW5pdChzdHJ1Y3QgYXI5MzMxX3N3X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4MS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjM4MjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgzLVxcdG9mX25vZGVfcHV0KG1ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5ODc6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvKTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9NzQ9aW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy05OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MTAwOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExMTc9c3RhdGljIGludCBhNXBzd19wcm9iZV9tZGlvKHN0cnVjdCBhNXBzdyAqYTVwc3csIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0My1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNDQ6XFx0cmV0dXJuIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQ1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD0zMDc9dm9pZCBzamExMTA1X2ZyYW1lX21lbW9yeV9wYXJ0aXRpb25pbmcoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzA5LS8qIEZyb20gc2phMTEwNV9tZGlvLmMgKi9cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6MzEwOmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzExLXZvaWQgc2phMTEwNV9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMwMjY9c3RhdGljIGludCBzamExMTA1X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjctXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6MzA2ODpcXHRyYyA9IHNqYTExMDVfbWRpb2J1c19yZWdpc3Rlcihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2OS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg3LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg5LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0My1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNDQ6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0NS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5NS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozOTY6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk3LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NDM5PXN0YXRpYyB2b2lkIHNqYTExMDVfbWRpb2J1c19wY3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjQ1OTppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxMi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxNC1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTcyNj15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0My1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0NS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NDU5PXN0YXRpYyBpbnQgYXhfbWlpX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0Nzk6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTMyMT1zdGF0aWMgaW50IG93bF9lbWFjX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjEzNDY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9NTA5PXN0YXRpYyBpbnQgYWRpbjExMTBfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzo1MzA6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz02MTc9c3RhdGljIGludCBhZGluMTE0MF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjYzNzpcXHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZzcGlkZXYtXFx1MDAzZWRldiwgcHJpdi1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjM4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTI5MD1zdGF0aWMgaW50IGdyZXRoX21kaW9faW5pdChzdHJ1Y3QgZ3JldGhfcHJpdmF0ZSAqZ3JldGgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYzoxMzA3OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoZ3JldGgtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwOC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zOTMxPXN0YXRpYyBpbnQgZXQxMzF4X3BjaV9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM6NDAyNzpcXHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyOC1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTIxPXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9tZGlvX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNTg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTktXFx0aWYgKHJldCAhPSAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jPTEwNjE9c3RhdGljIGludCBhdTEwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjEyMjI6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihhdXAtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMy1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTM0Mjg9c3RhdGljIGludCB4Z2JlX3BoeV9pbml0KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxNy1cXHRzbnByaW50ZihtaWktXFx1MDAzZWlkLCBzaXplb2YobWlpLVxcdTAwM2VpZCksIFxcXCIlc1xcXCIsIGRldl9uYW1lKHBkYXRhLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MTg6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtaWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxOS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzozNzIwOlxcdFxcdGRldl9lcnIocGRhdGEtXFx1MDAzZWRldiwgXFxcIm1kaW9idXNfcmVnaXN0ZXIgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MjEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM9OTg9aW50IHhnZV9tZGlvX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTE4LVxcdG1kaW9fYnVzLVxcdTAwM2VwaHlfbWFzayA9IDB4MTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz04Mzc9aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjg4ODpzdGF0aWMgaW50IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg5LVxcdFxcdFxcdFxcdCAgc3RydWN0IG1paV9idXMgKm1kaW8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkxMzpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTE0LVxcdFxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjEtXFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MjI6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTg6XFx0cmV0ID0geGdlbmVfbWRpb2J1c19yZWdpc3RlcihwZGF0YSwgbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYz0xMzE9aW50IGFyY19tZGlvX3Byb2JlKHN0cnVjdCBhcmNfZW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM6MTczOlxcdGVycm9yID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3NC1cXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM6MTAxMTpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBheF9sb2NhbC1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMi1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz02ODc9c3RhdGljIGludCBhZzcxeHhfbWRpb19wcm9iZShzdHJ1Y3QgYWc3MXh4ICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI3LVxcdG1ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcXFwibWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzI4OlxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjktXFx0b2Zfbm9kZV9wdXQobW5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI2MDpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNjEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MTcxMz1zdGF0aWMgaW50IGJjbV9lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjE4MzA6XFx0XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MzEtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM9MjExPXN0cnVjdCBtaWlfYnVzICpiY21hX21kaW9fbWlpX3JlZ2lzdGVyKHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM6MjM2OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWlpX2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNy1cXHRvZl9ub2RlX3B1dChucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz0xOTM9aW50IGJjbWdlbmV0X21paV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBpbml0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjMzLVxcdFxcdHBoeV9uYW1lID0gXFxcImV4dGVybmFsIFJ2TUlJXFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoyMzQ6XFx0XFx0Lyogb2ZfbWRpb2J1c19yZWdpc3RlciB0b29rIGNhcmUgb2YgcmVhZGluZyB0aGUgJ21heC1zcGVlZCdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzUtXFx0XFx0ICogUEhZIHByb3BlcnR5IGZvciB1cywgZWZmZWN0aXZlbHkgbGltaXRpbmcgdGhlIFBIWSBzdXBwb3J0ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yMTU3PXN0YXRpYyBpbnQgc2JtYWNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGRldiwgbG9uZyBsb25nIGJhc2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyNy1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM6MjIyODpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHNjLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyOS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNTA1PXN0YXRpYyBpbnQgdGczX21kaW9faW5pdChzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTU1ODpcXHRpID0gbWRpb2J1c19yZWdpc3Rlcih0cC1cXHUwMDNlbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTktXFx0aWYgKGkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDk3OnN0YXRpYyBpbnQgbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDQtXFx0aWYgKG1kaW9fbnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTA1OlxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTE5OlxcdFxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIwLVxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTIyOlxcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMTI1PXN0YXRpYyBpbnQgbWFjYl9taWlfaW5pdChzdHJ1Y3QgbWFjYiAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTU5OlxcdGVyciA9IG1hY2JfbWRpb2J1c19yZWdpc3RlcihicCwgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTYwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jPTExMDc9c3RhdGljIGludCBkbTkwNTFfbWRpb19yZWdpc3RlcihzdHJ1Y3QgYm9hcmRfaW5mbyAqZGIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMTI1OlxcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIGRiLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNDIzPXN0YXRpYyBpbnQgdHNuZXBfbWRpb19pbml0KHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI0NTU6XFx0cmV0dmFsID0gb2ZfbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVxcdTAwM2VtZGlvYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTEwMjQ9c3RhdGljIGludCBldGhvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTIwODpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwOS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3MzQ9c3RhdGljIGludCBmdGdtYWMxMDBfc2V0dXBfbWRpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTc3MDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlZGV2LCBwcml2LVxcdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzEtXFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0zNj1zdGF0aWMgaW50IGVuZXRjX3BjaV9tZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM6OTE6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0yNjY9c3RhdGljIGludCBlbmV0Y19tZGlvX3Byb2JlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzoyOTM6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjk0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzA4PXN0YXRpYyBpbnQgZW5ldGNfaW1kaW9fY3JlYXRlKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDM6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDQtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MzA0Mj1zdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMxNjE6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihmZXAtXFx1MDAzZW1paV9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYz02NT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2YpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYzoxMDY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jPTE0OT1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM6MTc2OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jPTk3PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM6MTY3OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYz00MDk9c3RhdGljIGludCBmc2xfcHFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jOjQ5NDpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYz0zNzE9c3RhdGljIGludCB4Z21hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyNi1cXHRpZiAoaXNfb2Zfbm9kZShmd25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI3OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCB0b19vZl9ub2RlKGZ3bm9kZSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI4LVxcdGVsc2UgaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI5OlxcdFxcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIGZ3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MzAtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yNjY9aW50IGhiZ19tZGlvX2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyOTI6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM9MTA5ND1zdGF0aWMgaW50IGhpeDVoZDJfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM6MTE4NjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM9MTIzPWludCBoY2xnZV9tYWNfbWRpb19jb25maWcoc3RydWN0IGhjbGdlX2RldiAqaGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU0LVxcdG1kaW9fYnVzLVxcdTAwM2VwaHlfbWFzayA9IH4oMVUgXFx1MDAzY1xcdTAwM2MgbWFjLVxcdTAwM2VwaHlfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYzoxNTU6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM9NDk1PXN0YXRpYyBpbnQgaG5zX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1ODQ6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTg1LVxcdH0gZWxzZSBpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXFx1MDAzZWRldi5md25vZGUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTItXFx0XFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTkzOlxcdFxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobmV3X2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTk0LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjU2MD1zdGF0aWMgaW50IGVtYWNfZHRfbWRpb19wcm9iZShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODQtXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwiJXNcXFwiLCBkZXYtXFx1MDAzZW9mZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjU4NTpcXHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNmRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZWRldiwgYnVzLCBtaWlfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg2LVxcdGlmIChyZXMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jPTEwMjY9aW50IGl4Z2JlX21paV9idXNfaW5pdChzdHJ1Y3QgaXhnYmVfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmMtMTA4OC1cXHRhZGFwdGVyLVxcdTAwM2VtaWlfYnVzID0gYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jOjEwODk6XFx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDkwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9Mzg1PWx0cV9ldG9wX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDItXFx0XFx0IHByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZW5hbWUsIHByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jOjQwMzpcXHRpZiAobWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtaWlfYnVzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDA0LVxcdFxcdGVyciA9IC1FTlhJTztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM9MjgzPXN0YXRpYyBpbnQgb3Jpb25fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODEtXFx0LyogRm9yIHRoZSBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRFQvQUNQSSBmYWxsLWJhY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4MjpcXHQgKiB0byBtZGlvYnVzX3JlZ2lzdGVyIHZpYSBvZl9tZGlvYnVzX3JlZ2lzdGVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg0LVxcdGlmIChpc19hY3BpX25vZGUocGRldi1cXHUwMDNlZGV2LmZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODU6XFx0XFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODYtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg3OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODgtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jPTEzODc9c3RhdGljIGludCBweGExNjhfZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA0LVxcdHBlcC1cXHUwMDNlc21pX2J1cy1cXHUwMDNlcGh5X21hc2sgPSAweGZmZmZmZmZmO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jOjE1MDU6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihwZXAtXFx1MDAzZXNtaV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9OTk4PXN0YXRpYyBpbnQgbXRrX21kaW9faW5pdChzdHJ1Y3QgbXRrX2V0aCAqZXRoKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM3LVxcdGRldl9kYmcoZXRoLVxcdTAwM2VkZXYsIFxcXCJNREMgaXMgcnVubmluZyBvbiAlZCBIelxcXFxuXFxcIiwgTURDX01BWF9GUkVRIC8gZXRoLVxcdTAwM2VtZGNfZGl2aWRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzoxMDM4OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZXRoLVxcdTAwM2VtaWlfYnVzLCBtaWlfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNDIyPXN0YXRpYyBpbnQgbXRrX3N0YXJfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jOjE0NDg6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNDQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYz0yODc9aW50IG1seGJmX2dpZ2VfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbWx4YmZfZ2lnZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM6MzMzOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jPTI1Mz1pbnQgZmJuaWNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmMtMjcyLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODoyOC40MTUzOTA2MzhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6OTEyMjE0MTMzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFFDQTgwOFggUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBRQ0E4MDhYLCBzcGVjaWZpY2FsbHkgdGhlIFFDQTgwODEuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB3aGF0J3MgYmVpbmcgbW9kaWZpZWQgaGVyZS4gTG9va3MgbGlrZSB0aGUgYHFjYTgwOHhfY29uZmlnX2luaXRgIGFuZCBgcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguY2AgYXJlIHRoZSB0YXJnZXRzLlxuXG5Ob3csIGxldCdzIHRyYWNlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC4gYHFjYTgwOHhfY29uZmlnX2luaXRgIGlzIGNsZWFybHkgdGhlIGAuY29uZmlnX2luaXRgIGNhbGxiYWNrIHdpdGhpbiB0aGUgYHFjYTgwOHhfZHJpdmVyYCBzdHJ1Y3R1cmUuIFJpZ2h0LCBzbyB0aGlzIGRyaXZlciBnZXRzIGluc3RhbnRpYXRlZCB3aGVuIHRoZSBzeXN0ZW0gZGV0ZWN0cyBhIFBIWSB3aXRoIHRoZSBgUUNBODA4MV9QSFlfSURgIOKAkyAweDAwNGRkMTAxIOKAkyBvbiBhbiBNRElPIGJ1cy4gVGhhdCdzIHRoZSB0cmlnZ2VyLlxuXG5UaGUgYnVybmluZyBxdWVzdGlvbiB0aGVuIGlzLCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIGRvIHdlIGhhdmUgYW55IHZpcnR1YWwgYnVzIG9yIGVtdWxhdGVkIGRldmljZXMgdGhhdCB3b3VsZCBzaW11bGF0ZSBvciBpbnN0YW50aWF0ZSB0aGUgUUNBODA4MSBQSFk/IFRoYXQgd291bGQgYWxsb3cgYSB0ZXN0IHdpdGggdGhlIGRldmljZS4gTGV0J3MgbG9vayBhdCBRRU1VIGZpcnN0LiBObywgUUVNVSBkb2Vzbid0IG9mZmVyIGFueSBRdWFsY29tbSBBdGhlcm9zIEV0aGVybmV0IFBIWSBlbXVsYXRpb24sIGFuZCBjZXJ0YWlubHkgbm90IHRoZSBRQ0E4MDgxLlxuXG5Pa2F5LCBsZXQncyBwaXZvdC4gSWYgZGlyZWN0IGVtdWxhdGlvbiBpcyBvdXQsIGNhbiB1c2Vyc3BhY2Ugc29tZWhvdyBjcmVhdGUgYW4gTURJTyBkZXZpY2Ugd2l0aCBhbiBhcmJpdHJhcnkgUEhZIElEPyBJcyB0aGVyZSBhIHVzZXJzcGFjZSBpbnRlcmZhY2UsIG1heWJlIHRocm91Z2ggbmV0bGluaywgc3lzZnMsIG9yIGlvY3RscywgdGhhdCBhbGxvd3MgTURJTyBkZXZpY2UgY3JlYXRpb24/IFRpbWUgdG8gc2VhcmNoIGZvciB0aGF0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgTURJTyBpbnRlcmZhY2UsIGFzIGl0IGlzLCBoYXMgYSBsb29waG9sZSB3aGVyZSBhIHRlc3Qgc2NlbmFyaW8gY2FuIGJlIGNyZWF0ZWQsIHdpdGhvdXQgbmVlZGluZyB0byBkZXBlbmQgb24gaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMTc3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODozNy41Mzc1MzUyMjNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjUxMTA1MDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2UuKm1kaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ4OjM5LjcwMjY1NTMwMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMTkxMjY4NTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgTURJTyBCdXMgVHlwZSBTdXBwb3J0KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBgbWRpb19idXNfdHlwZWAgc3RydWN0dXJlIGhhcyBwcm9wZXIgc3VwcG9ydCBmb3IgY3JlYXRpbmcgbmV3IGRldmljZXMgdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIGl0IGltcGxlbWVudHMgYSBgbmV3X2RldmljZWAgb3BlcmF0aW9uIHRoYXQgaXMgZXhwb3NlZCB2aWEgc3lzZnMuIFRoaXMgaXMgd2hlcmUgSSB3b3VsZCBzdGFydCBteSBkZWJ1Zy5cblxuSSdtIGdvaW5nIHRvIHF1aWNrbHkgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AsIGFzIHRoYXQncyB3aGVyZSBJIGV4cGVjdCB0aGUgYG1kaW9fYnVzX3R5cGVgIGRlZmluaXRpb24gYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIHJlc2lkZS4gSSdsbCB6ZXJvIGluIG9uIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBob3BpbmcgdG8gc2VlIHRoZSByZWxldmFudCBzeXNmcyBhdHRyaWJ1dGVzIG9yIGNhbGxiYWNrcyB0aGF0IG1hbmFnZSB0aGUgZGV2aWNlIGluc3RhbnRpYXRpb24gcHJvY2Vzcy4gSG9wZWZ1bGx5LCBpdCdzIGFsbCBzdHJhaWdodGZvcndhcmQgYW5kIHdlbGwtZG9jdW1lbnRlZC4gT3RoZXJ3aXNlLCBJIG1pZ2h0IGJlIGhlcmUgZm9yIGEgd2hpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyODM0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDg6NDEuODkzOTI3MjM4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5NSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI5NTpcXHRcXHQubmFtZVxcdFxcdD0gXFxcInN0YXRpc3RpY3NcXFwiLFxcbiAyOTY6XFx0XFx0LmF0dHJzX2NvbnN0XFx0PSBtZGlvX2J1c19kZXZpY2Vfc3RhdGlzdGljc19hdHRycyxcXG4gMjk3OlxcdH07XFxuIDI5ODpcXHRfX0FUVFJJQlVURV9HUk9VUFMobWRpb19idXNfZGV2aWNlX3N0YXRpc3RpY3MpO1xcbiAyOTk6XFx0XFxuIDMwMDpcXHRjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgbWRpb19idXNfdHlwZSA9IHtcXG4gMzAxOlxcdFxcdC5uYW1lXFx0XFx0PSBcXFwibWRpb19idXNcXFwiLFxcbiAzMDI6XFx0XFx0LmRldl9ncm91cHNcXHQ9IG1kaW9fYnVzX2RldmljZV9zdGF0aXN0aWNzX2dyb3VwcyxcXG4gMzAzOlxcdFxcdC5tYXRjaFxcdFxcdD0gbWRpb19idXNfbWF0Y2gsXFxuIDMwNDpcXHRcXHQudWV2ZW50XFx0XFx0PSBtZGlvX3VldmVudCxcXG4gMzA1OlxcdH07XFxuIDMwNjpcXHRcXG4gMzA3OlxcdC8qKlxcbiAzMDg6XFx0ICogbWRpb2J1c19hbGxvY19zaXplIC0gYWxsb2NhdGUgYSBtaWlfYnVzIHN0cnVjdHVyZVxcbiAzMDk6XFx0ICogQHNpemU6IGV4dHJhIGFtb3VudCBvZiBtZW1vcnkgdG8gYWxsb2NhdGUgZm9yIHByaXZhdGUgc3RvcmFnZS5cXG4gMzEwOlxcdCAqIElmIG5vbi16ZXJvLCB0aGVuIGJ1cy1cXHUwMDNlcHJpdiBpcyBwb2ludHMgdG8gdGhhdCBtZW1vcnkuXFxuIDMxMTpcXHQgKlxcbiAzMTI6XFx0ICogRGVzY3JpcHRpb246IGNhbGxlZCBieSBhIGJ1cyBkcml2ZXIgdG8gYWxsb2NhdGUgYW4gbWlpX2J1c1xcbiAzMTM6XFx0ICogc3RydWN0dXJlIHRvIGZpbGwgaW4uXFxuIDMxNDpcXHQgKi9cXG4gMzE1OlxcdHN0cnVjdCBtaWlfYnVzICptZGlvYnVzX2FsbG9jX3NpemUoc2l6ZV90IHNpemUpXFxuIDMxNjpcXHR7XFxuIDMxNzpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbiAzMTg6XFx0XFx0c2l6ZV90IGFsaWduZWRfc2l6ZSA9IEFMSUdOKHNpemVvZigqYnVzKSwgTkVUREVWX0FMSUdOKTtcXG4gMzE5OlxcdFxcdHNpemVfdCBhbGxvY19zaXplO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODo0MS44OTQwMDg4NjhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDQ0MjU3MjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBEZXZpY2UgRGlzY292ZXJ5IGFuZCBOZXRsaW5rKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBoYW5kbGUgbmV3IGRldmljZXMuIFNwZWNpZmljYWxseSwgSSdtIG5vdCBzZWVpbmcgYW55IGBidXNfdHlwZWAgY2FsbGJhY2tzLCBzaW1pbGFyIHRvIHRoZSBJMkMncyBgbmV3X2RldmljZWAsIGZvciBuZXcgZGV2aWNlcyBpbiB0aGlzIGNvbnRleHQuIFRoYXQncyBhIGJpdCBwdXp6bGluZy4gVGhlbiBpdCBoaXRzIG1lIC0gY291bGQgdGhlIGBwaHlfZGV2aWNlYCBhY3R1YWxseSBiZSBjcmVhdGVkIHZpYSBOZXRsaW5rPyBJdCdzIHdvcnRoIGV4cGxvcmluZy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYG5ldC9ldGh0b29sL2AgZGlyZWN0b3J5LCBhbmQgbWF5YmUgZXZlbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIGRpcmVjdG9yeS4gVGhhdCdzIHByb2JhYmx5IHdoZXJlIEknbGwgZmluZCBOZXRsaW5rIGNvbW1hbmRzIHJlbGF0ZWQgdG8gdGhpcyBmdW5jdGlvbmFsaXR5LiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzUzMCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDg6NDYuMzM2NTg0ODUyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzY1MTI0MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kZXZpY2VfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYz0xMTc9aW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEzNC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjEzNTpcXHRcXHRwaHkgPSBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCwgMCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEzNi1cXHRpZiAoSVNfRVJSKHBoeSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jPTU1MT1zdGF0aWMgdm9pZCB0amExMTAyX3AxX3JlZ2lzdGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU4NS1cXHRcXHQvKiBSZWFsIFBIWSBJRCBvZiBQb3J0IDEgaXMgMCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU4NjpcXHRcXHRwaHkgPSBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIFBIWV9JRF9USkExMTAyLCBmYWxzZSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg3LVxcdFxcdGlmIChJU19FUlIocGh5KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTkyLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5MzpcXHRcXHQvKiBPdmVyd3JpdGUgcGFyZW50IGRldmljZS4gcGh5X2RldmljZV9jcmVhdGUoKSBzZXQgcGFyZW50IHRvXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk0LVxcdFxcdCAqIHRoZSBtaWlfYnVzLVxcdTAwM2VkZXYsIHdoaWNoIGlzIG5vdCBjb3JyZWN0IGluIGNhc2UuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTcyOD1zdGF0aWMgaW50IHBoeV9yZXF1ZXN0X2RyaXZlcl9tb2R1bGUoc3RydWN0IHBoeV9kZXZpY2UgKmRldiwgdTMyIHBoeV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNzQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NzQ4OnN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0OS1cXHRcXHRcXHRcXHQgICAgIGJvb2wgaXNfYzQ1LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04MzktfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6ODQwOkVYUE9SVF9TWU1CT0wocGh5X2RldmljZV9jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODQxLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDcxPXN0cnVjdCBwaHlfZGV2aWNlICpnZXRfcGh5X2RldmljZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBpc19jNDUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTYtXFx0XFx0aWYgKCFyKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA5NzpcXHRcXHRcXHRyZXR1cm4gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDk4LVxcdFxcdFxcdFxcdFxcdFxcdCB0cnVlLCBcXHUwMDI2YzQ1X2lkcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTAxOlxcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCwgaXNfYzQ1LCBcXHUwMDI2YzQ1X2lkcyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTAyLX1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9MjE0OT1pbnQgcGh5X21vZGlmeV9wYWdlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcGFnZSwgdTMyIHJlZ251bSxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE1MS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjIxNTI6c3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLFxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE1My1cXHRcXHRcXHRcXHQgICAgIGJvb2wgaXNfYzQ1LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODo0OC4xMDE3MTM5OTRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6OTY2ODE2NzI2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBRQ0E4MDgxIERyaXZlcidzIFZpcnR1YWwgRW52aXJvbm1lbnQgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBgcGh5X2RldmljZV9jcmVhdGVgIGZ1bmN0aW9uIGlzIHRoZSBnYXRla2VlcGVyIGZvciBjcmVhdGluZyBQSFkgZGV2aWNlcyB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGNvZGUgc2hvd3MgaXQncyBvbmx5IGNhbGxlZCBpbiBzcGVjaWZpYyBzY2VuYXJpb3M6IHdoZW4gc2Nhbm5pbmcgYSByZWFsIE1JSSBidXMsIHdoZW4gcGFyc2luZyBhIGRldmljZSB0cmVlIG5vZGUgZm9yIGEgUEhZLCBvciBkaXJlY3RseSB3aXRoaW4gdGhlIHRqYTExeHggUEhZIGRyaXZlci4gSXQgc2VlbXMgdGhlcmUncyBubyB3YXkgdG8gY29uanVyZSBhIFFDQTgwODEgUEhZIGRldmljZSBmcm9tIHVzZXJzcGFjZSB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgZGV2aWNlIHRyZWUgZGVzY3JpcHRpb24uIFNpbmNlIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBhbmQgSSBrbm93IGEgYml0IGFib3V0IHRoZSB0eXBpY2FsIHg4Ni9hbWQ2NCB2aXJ0dWFsIG1hY2hpbmUgbGFuZHNjYXBlIChRRU1VL0tWTSwgR0NFKSwgdGhhdCdzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuXG5cbk15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGVzZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIGZvciBhIFFDQTgwODEuIFNwZWNpZmljYWxseTpcblxuKiAgIFRoZXJlIGFyZSBubyBoYXJkd2FyZSBNRElPIGJ1c2VzIGZvciBRdWFsY29tbSBjaGlwcyBpbiB0aGVzZSB2aXJ0dWFsIGVudmlyb25tZW50cy5cbiogICBTdGFuZGFyZCBlbXVsYXRlZCBuZXR3b3JrIGNhcmRzIGluIHRoZXNlIFZNcyBkb24ndCByZWx5IG9uIFBIWSBkcml2ZXJzIGxpa2UgdGhlIFFDQTgwODEuIFRoZXkgZWl0aGVyIGhhdmUgaW50ZXJuYWwgUEhZcywgZG9uJ3QgdXNlIHBoeWxpYiBhdCBhbGwsIG9yIGVtcGxveSBmaXhlZC1saW5rIGNvbmZpZ3VyYXRpb25zLlxuKiAgIFRoZSBRQ0E4MDgxIGlzIGEgZGlzY3JldGUgRXRoZXJuZXQgUEhZIGNoaXAg4oCTIGEgcGh5c2ljYWwgcGllY2Ugb2YgaGFyZHdhcmUgZnJvbSBRdWFsY29tbSDigJMgdHlwaWNhbGx5IHNlZW4gYWxvbmdzaWRlIFF1YWxjb21tIEF0aGVyb3MgY2hpcHMgb3IgU29Dcy5cblxuRXZlbiBpZiB3ZSB3ZXJlIG9uIGFuIEFSTSBvciBNSVBTIHBsYXRmb3JtIHdoZXJlIGEgUUNBODA4MSAqbWlnaHQqIGJlIHByZXNlbnQsIGl0IHdvdWxkIHN0aWxsIG5lY2Vzc2l0YXRlIHRoZSBwaHlzaWNhbCBQSFkgaGFyZHdhcmUgY29ubmVjdGVkIHZpYSBhbiBNRElPIGJ1cy4gU28sIGluIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBRQ0E4MDgxIFBIWSBzaW1wbHkgZG9lc24ndCBleGlzdCwgbm9yIGlzIGl0IGVtdWxhdGVkLlxuXG5Mb29raW5nIGF0IHRoZSBwcm9tcHQsIHNlY3Rpb24gMiBkZXNjcmliZXMgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXCIgVGhpcyBhcHBsaWVzIHBlcmZlY3RseSB0byB0aGVzZSB0eXBlcyBvZiB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlcnMsIGxpa2UgdGhlIG9uZSBmb3IgdGhlIGBxY2E4MDh4YC4gV2l0aG91dCB0aGF0IHBoeXNpY2FsIFF1YWxjb21tIFFDQTgwODEgUEhZIGFuZCB0aGUgTURJTyBidXMgdG8gd2hpY2ggaXQgY29ubmVjdHMsIHRoZSBkcml2ZXIgY29kZSBpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYCBjYW5ub3QgYmUgbG9hZGVkLCBwcm9iZWQsIG9yIGV4ZWN1dGVkIHdpdGhpbiB0aGUgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGtlcm5lbCB0byBzZWUgaWYgdGhlcmUncyBhbnkgdGVzdCBmcmFtZXdvcmsgb3IgYSBtb2NrIE1ESU8gYnVzIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDczMywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODo1Ny43Njk4ODM5OVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAzMTk0NjM2MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja3xtb2NrLiptZGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQwMjo0ODo1OS44MDE4MzY4OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo5MjI1NjU2NDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBNRElPL0dQSU8gSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBiYXNlZCBvbiB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCwgdGhlIGN1cnJlbnQgaXNzdWUgbGlrZWx5IGhhcyBzb21lIGNvbm5lY3Rpb24gdG8gdGhlIE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQgKE1ESU8pIGludGVyZmFjZSBvciBHZW5lcmFsIFB1cnBvc2UgSW5wdXQvT3V0cHV0IChHUElPKSBwaW5zLiBHaXZlbiB0aGUgb2JzZXJ2ZWQgYmVoYXZpb3IsIGl0J3MgYSBodW5jaCB3b3J0aCBwdXJzdWluZy4gVGhlIGNvbm5lY3Rpb24gY291bGQgbWFuaWZlc3QgaW4gYSBmZXcgZGlmZmVyZW50IHdheXMuIFBlcmhhcHMgdGhlcmUncyBhbiBpc3N1ZSB3aXRoIHRoZSB0aW1pbmcgb2YgTURJTyB0cmFuc2FjdGlvbnMsIGNhdXNpbmcgaW5jb3JyZWN0IGNvbmZpZ3VyYXRpb24gb2YgYW4gYXNzb2NpYXRlZCBQSFkgb3Igb3RoZXIgZGV2aWNlLiBBbHRlcm5hdGl2ZWx5LCBhIEdQSU8gcGluIG1pZ2h0IGJlIG1pc2NvbmZpZ3VyZWQsIGltcGFjdGluZyB0aGUgTURJTyBjb21tdW5pY2F0aW9uIGluZGlyZWN0bHksIGJ5IGluZmx1ZW5jaW5nIHRoZSByZXNldCBsaW5lIG9yIGludGVycnVwdCBzaWduYWwgb2YgdGhlIG1hbmFnZWQgZGV2aWNlLCBvciBwZXJoYXBzIGEgc2lnbmFsIGlzIGJlaW5nIHNoYXJlZCBiZXR3ZWVuIHRoZW0sIGFuZCB0aGUgY29udGVudGlvbiBpcyBjYXVzaW5nIHRoZSBmYWlsdXJlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGRyaXZlciBjb2RlIGFuZCBoYXJkd2FyZSBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgaW50ZXJhY3Rpb24gYW5kIHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cy4gU3BlY2lmaWNhbGx5LCBJJ2xsIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgYG1kaW8tZ3Bpb2AgZHJpdmVyIG9yIHNpbWlsYXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBrZXJuZWwgYW5kIGFueSBhc3NvY2lhdGVkIGRldmljZSB0cmVlIGJpbmRpbmdzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1ESU8gc2lnbmFscyBhcmUgbWFwcGVkIHRvIEdQSU8gcGlucyBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQuIE15IGZpcnN0IG1vdmUgd2lsbCBiZSBjaGVja2luZyBmb3IgcG90ZW50aWFsIHBpbi1tdXhpbmcgY29uZmxpY3RzLCB0aW1pbmcgZGlzY3JlcGFuY2llcywgYW5kIGFueSBpbnRlcnJ1cHQgaGFuZGxpbmcgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTc3MCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ5OjA5LjAyNzQ5Njc2MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwMDU4NDczNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLWdwaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sPTM3PXByb3BlcnRpZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtNTMtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjU0OiAgbWRpby1ncGlvczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtNTUtICAgIGRlc2NyaXB0aW9uOiBHUElPIGxpbmUgZm9yIHRoZSBNRElPIGRhdGEgbGluZS5cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbD0xMTU9dGhlbjpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMTktICAgICAgLSBtZGMtZ3Bpb3NcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw6MTIwOiAgICAgIC0gbWRpby1ncGlvc1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMjEtICAgICAgLSBtZGlvXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTI0LSAgICBtZGMtZ3Bpb3M6IGZhbHNlXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjEyNTogICAgbWRpby1ncGlvczogZmFsc2VcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTI2LSAgICBtZGlvOiBmYWxzZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sPTEyOD1lbHNlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTEzMC0gICAgLSBtZGMtZ3Bpb3NcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw6MTMxOiAgICAtIG1kaW8tZ3Bpb3NcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTMyLSAgICAtIG1kaW9cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbD0xMzQ9cmVxdWlyZWQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTM3LSAgICAjICAtIG1kYy1ncGlvc1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbDoxMzg6ICAgICMgIC0gbWRpby1ncGlvc1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0xMzktICAgICMgIC0gcmVzZXQtZ3Bpb3NcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbD0xNDQ9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwtMTUzLSAgICAgICAgICAgICAgICAgICAgbWRjLWdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAyMSBHUElPX0FDVElWRV9ISUdIXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWw6MTU0OiAgICAgICAgICAgICAgICAgICAgbWRpby1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTE1NS0gICAgICAgICAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAxNCBHUElPX0FDVElWRV9MT1dcXHUwMDNlO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sLTI0Ni0gICAgICAgICAgICAgICAgICAgIG1kYy1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzEgMTYgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvcmVhbHRlay55YW1sOjI0NzogICAgICAgICAgICAgICAgICAgIG1kaW8tZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8xIDE3IEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL3JlYWx0ZWsueWFtbC0yNDgtICAgICAgICAgICAgICAgICAgICByZXNldC1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzUgMCBHUElPX0FDVElWRV9MT1dcXHUwMDNlO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC0zLS0tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw6NDokaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9tZGlvLWdwaW8ueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sPTE3PXByb3BlcnRpZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTE5LSAgICBlbnVtOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw6MjA6ICAgICAgLSB2aXJ0dWFsLG1kaW8tZ3Bpb1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtMjEtICAgICAgLSBtaWNyb2NoaXAsbWRpby1zbWkwXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sPTQxPWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC00My0gICAgYWxpYXNlcyB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbDo0NDogICAgICAgIG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpbzA7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC00NS0gICAgfTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDctICAgIG1kaW8wOiBtZGlvIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sOjQ4OiAgICAgIGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDktICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY20yNzExLmR0c2k9OTM4PVxcdFxcdHBpbi1pcnEge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtMjcxMS5kdHNpLTk0Mi1cXHR9O1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTI3MTEuZHRzaTo5NDM6XFx0cmdtaWlfbWRpb19ncGlvMjg6IHJnbWlpLW1kaW8tZ3BpbzI4IHtcXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY20yNzExLmR0c2ktOTQ0LVxcdFxcdHBpbnMtbWRpbyB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY20yNzExLmR0c2ktOTQ5LVxcdH07XFxuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtMjcxMS5kdHNpOjk1MDpcXHRyZ21paV9tZGlvX2dwaW8zNzogcmdtaWktbWRpby1ncGlvMzcge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTI3MTEuZHRzaS05NTEtXFx0XFx0cGlucy1tZGlvIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTQ3MDk0LWFzdXMtcnQtYWM4OHUuZHRzPTIwPVxcdHN3aXRjaCB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY200NzA5NC1hc3VzLXJ0LWFjODh1LmR0cy0yMi1cXHRcXHRtZGMtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmNoaXBjb21tb24gNiBHUElPX0FDVElWRV9ISUdIXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY200NzA5NC1hc3VzLXJ0LWFjODh1LmR0czoyMzpcXHRcXHRtZGlvLWdwaW9zID0gXFx1MDAzY1xcdTAwMjZjaGlwY29tbW9uIDcgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2U7XFxuYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtNDcwOTQtYXN1cy1ydC1hYzg4dS5kdHMtMjQtXFx0XFx0cmVzZXQtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmNoaXBjb21tb24gMTAgR1BJT19BQ1RJVkVfTE9XXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZGlyLTY4NS5kdHM9MTkwPVxcdGV0aGVybmV0LXN3aXRjaCB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLWRsaW5rLWRpci02ODUuZHRzLTE5My1cXHRcXHRtZGMtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIxIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZGlyLTY4NS5kdHM6MTk0OlxcdFxcdG1kaW8tZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZGlyLTY4NS5kdHMtMTk1LVxcdFxcdHJlc2V0LWdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAxNCBHUElPX0FDVElWRV9MT1dcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cz0yND1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLWRsaW5rLWRucy0zMTMuZHRzOjI1OlxcdFxcdG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpbzA7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cy0yNi1cXHR9O1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cz0xNTI9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHM6MTUzOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktZGxpbmstZG5zLTMxMy5kdHMtMTU0LVxcdFxcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMTBiLmR0cz02Nz1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjEwYi5kdHM6Njg6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjEwYi5kdHMtNjktXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIyMGIuZHRzPTY2PVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMjBiLmR0czo2NzpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMjBiLmR0cy02OC1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsIC8qIE1EQyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzPTIzPVxcdGFsaWFzZXMge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0czoyNDpcXHRcXHRtZGlvLWdwaW8wID0gXFx1MDAyNm1kaW8wO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0cy0yNS1cXHR9O1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzPTMyPVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5zMjUwMi5kdHM6MzM6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzLTM0LVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAyMiBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSwgLyogTURDICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXJ1dDF4eC5kdHM9NTk9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktcnV0MXh4LmR0czo2MDpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXJ1dDF4eC5kdHMtNjEtXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc2w5MzUxMnIuZHRzPTcxPVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNsOTM1MTJyLmR0czo3MjpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNsOTM1MTJyLmR0cy03My1cXHRcXHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHM9NTY9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3EyMDEuZHRzOjU3OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3EyMDEuZHRzLTU4LVxcdFxcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzPTIzPVxcdGFsaWFzZXMge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM6MjQ6XFx0XFx0bWRpby1ncGlvMCA9IFxcdTAwMjZtZGlvMDtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzLTI1LVxcdH07XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzPTMyPVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNzaTEzMjguZHRzOjMzOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHMtMzQtXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktdmVyYmF0aW0tczA4djE5MDEtZDEuZHRzPTU3PVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXZlcmJhdGltLXMwOHYxOTAxLWQxLmR0czo1ODpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXZlcmJhdGltLXMwOHYxOTAxLWQxLmR0cy01OS1cXHRcXHQvKiBVc2VzIE1EQyBhbmQgTURJTyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQxMTEuZHRzPTcxPVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDExMS5kdHM6NzI6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQxMTEuZHRzLTczLVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAyMiBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSwgLyogTURDICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDIyMi5kdHM9NzA9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMjIyLmR0czo3MTpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDIyMi5kdHMtNzItXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzPTI0PVxcdGFsaWFzZXMge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzOjI1OlxcdFxcdG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpb19ncGlvO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzLTI2LVxcdFxcdHJ0YzAgPSBcXHUwMDI2ZHMxMzQxO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHM9MTYzPVxcdG1kaW9fZ3BpbzogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHM6MTY0OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzLTE2NS1cXHRcXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0cz0yNT1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDUxLXppaS1zY3UyLW1lenouZHRzOjI2OlxcdFxcdG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpb19ncGlvO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHMtMjctXFx0fTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHM9NDA9XFx0bWRpb19ncGlvOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDUxLXppaS1zY3UyLW1lenouZHRzOjQxOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHMtNDItXFx0XFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2k9OTM9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaTo5NDpcXHRcXHRtZGlvLWdwaW8wID0gXFx1MDAyNm1kaW8wO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2ktOTUtXFx0fTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2k9OTc9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2k6OTg6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaS05OS1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzIgNSBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSwgLyogbWRjICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtc2tvdi1jcHUuZHRzaT0xMz1cXHRhbGlhc2VzIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC1za292LWNwdS5kdHNpLTE4LVxcdFxcdGV0aGVybmV0MiA9IFxcdTAwMjZsYW4yO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC1za292LWNwdS5kdHNpOjE5OlxcdFxcdG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpbztcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtc2tvdi1jcHUuZHRzaS0yMC1cXHRcXHRuYW5kID0gXFx1MDAyNmdwbWk7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaT0xND1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaToxNTpcXHRcXHRtZGlvLWdwaW8wID0gXFx1MDAyNm1kaW8xO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC16aWktcmR1Mi5kdHNpLTE2LVxcdFxcdHJ0YzAgPSBcXHUwMDI2ZHMxMzQxO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2k9MTk9XFx0bWRpbzE6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC16aWktcmR1Mi5kdHNpOjIwOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC16aWktcmR1Mi5kdHNpLTIxLVxcdFxcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cXAtcHJ0d2QzLmR0cz01Mz1cXHRtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzOjU0OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFwLXBydHdkMy5kdHMtNTUtXFx0XFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHM9MTA9XFx0YWxpYXNlcyB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTEzLVxcdFxcdGV0aGVybmV0MSA9IFxcdTAwMjZnbWFjMztcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzOjE0OlxcdFxcdG1kaW8tZ3BpbzAgPSBcXHUwMDI2bWRpbzA7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czoxNTpcXHRcXHRtZGlvLWdwaW8xID0gXFx1MDAyNm1kaW8xO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTYtXFx0fTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHM9NTU9XFx0bWRpbzA6IG1kaW8tMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy01Ni1cXHRcXHRzdGF0dXMgPSBcXFwib2theVxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czo1NzpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTU4LVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZxY29tX3Bpbm11eCAxIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLFxcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cz0xODA9XFx0bWRpbzE6IG1kaW8tMSB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy0xODEtXFx0XFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHM6MTgyOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgzLVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZxY29tX3Bpbm11eCAxMSBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSxcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzNjLXByaWhtYi5kdHM9MTY9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cy0xNy1cXHRcXHRldGhlcm5ldDAgPSBcXHUwMDI2ZXRoZXJuZXQxO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzNjLXByaWhtYi5kdHM6MTg6XFx0XFx0bWRpby1ncGlvMCA9IFxcdTAwMjZtZGlvMDtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzYy1wcmlobWIuZHRzLTE5LVxcdFxcdG1tYzAgPSBcXHUwMDI2c2RtbWMxO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cz0xMTg9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzNjLXByaWhtYi5kdHM6MTE5OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzNjLXByaWhtYi5kdHMtMTIwLVxcdFxcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFjLmR0cz0zOD1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFjLmR0czozOTpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzLTQwLVxcdFxcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2k9MTY9XFx0YWxpYXNlcyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2ktMTctXFx0XFx0ZXRoZXJuZXQwID0gXFx1MDAyNmV0aGVybmV0MDtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaToxODpcXHRcXHRtZGlvLWdwaW8wID0gXFx1MDAyNm1kaW8wO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxbC5kdHNpLTE5LVxcdFxcdHNlcmlhbDAgPSBcXHUwMDI2dWFydDQ7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaT00ND1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2k6NDU6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2ktNDYtXFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k9OT1cXHRhbGlhc2VzIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k6MTA6XFx0XFx0bWRpby1ncGlvMCA9IFxcdTAwMjZtZGlvMDtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2ktMTEtXFx0XFx0cnRjMCA9IFxcdTAwMjZkczEzNDE7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k9MTg9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS16aWktdWx0cmEuZHRzaToxOTpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2ktMjAtXFx0XFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz05MD1jb25maWcgTURJT19HUElPXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctOTctXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjk4OlxcdCAgd2lsbCBiZSBjYWxsZWQgbWRpby1ncGlvLlxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy05OS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX01ESU9fQ0FWSVVNKVxcdFxcdCs9IG1kaW8tY2F2aXVtLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19NRElPX0dQSU8pXFx0XFx0XFx0Kz0gbWRpby1ncGlvLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19NRElPX0hJU0lfRkVNQUMpXFx0XFx0Kz0gbWRpby1oaXNpLWZlbWFjLm9cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9MTU3PXN0YXRpYyBpbnQgbWRpb19ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE3MS1cXHRpZiAocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE3MjpcXHRcXHRidXNfaWQgPSBvZl9hbGlhc19nZXRfaWQocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJtZGlvLWdwaW9cXFwiKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE3My1cXHRcXHRpZiAoYnVzX2lkIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz0xOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWRpb19ncGlvX29mX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxOTg6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCIsIH0sXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xOTktXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsbWRpby1zbWkwXFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz0yMDQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWRpb19ncGlvX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjA3LVxcdC5kcml2ZXJcXHRcXHQ9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwODpcXHRcXHQubmFtZVxcdD0gXFxcIm1kaW8tZ3Bpb1xcXCIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMDktXFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gbWRpb19ncGlvX29mX21hdGNoLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz0yMTM9bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZGlvX2dwaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIxNC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIxNTpNT0RVTEVfQUxJQVMoXFxcInBsYXRmb3JtOm1kaW8tZ3Bpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjE2LU1PRFVMRV9BVVRIT1IoXFxcIkxhdXJlbnQgUGluY2hhcnQsIFBhdWxpdXMgWmFsZWNrYXNcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMDI6NDk6MTAuNTI4MDg3Mzg5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjUyODg0MTE1MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVGhpcyBDb2RlIGlzIFVuZnV6emFibGUgaW4gU3RhbmRhcmQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBzaXR1YXRpb24uIEknbSBsb29raW5nIGF0IHRoZSBgbWRpby1ncGlvYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBRQ0E4MDgxIFBIWS4gSSBjYW4gc2VlIHRoYXQgdGhpcyBgbWRpby1ncGlvYCBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGJpdGJhbmdpbmcgTURJTyBvdmVyIEdQSU8sIGFuZCBvbiBhbWQ2NCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFuZCBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIHRoZXJlJ3Mgbm8gZGV2aWNlIHRyZWUgZW50cnkgdGhhdCBldmVuIGRlZmluZXMgYSBRQ0E4MDgxIFBIWS4gRXZlbiBpZiB0aGUgYENPTkZJR19RQ0E4MDhYX1BIWWAgb3B0aW9uIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcsIHRoZSBkcml2ZXIgY2FuJ3QgcG9zc2libHkgYmluZCB0byBhbnkgaGFyZHdhcmUgYmVjYXVzZSB0aGUgKmFjdHVhbCogUXVhbGNvbW0gUUNBODA4MSBFdGhlcm5ldCBQSFkgc2ltcGx5IGlzbid0IHByZXNlbnQgaW4gdGhlc2UgdmlydHVhbGl6ZWQgc2V0dGluZ3MuXG5cbkxldCBtZSBicmVhayBpdCBkb3duOlxuXG4qICAgVGhlIGNoYW5nZXMgYXJlIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jYC5cbiogICBUaGlzIHNwZWNpZmljIGZpbGUgaXMgYSBkZXZpY2UgZHJpdmVyIGZvciB0aGUgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4MDgxIEV0aGVybmV0IFBIWS5cbiogICBUaGUgZHJpdmVyIGZ1bmRhbWVudGFsbHkgcmVsaWVzIG9uIHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBoYXJkd2FyZSDigJMgdGhlIFFDQTgwODEgTURJTyB0cmFuc2NlaXZlciBBU0lDLiBUaGF0IHNwZWNpZmljIHBpZWNlIG9mIGhhcmR3YXJlIGlzICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy5cbiogICBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NC5cblxuQmFzZWQgb24gdGhlc2UgZmFjdHMsIGFuZCBjb25zaWRlcmluZyB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjcml0ZXJpYSBpbiBzZWN0aW9uIDIgKHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIG9yIE5JQ3MgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VKSwgaXQncyBjbGVhciB0aGF0IHRoaXMgY29kZSBpcyAqc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlKiBmb3Igc3l6a2FsbGVyIGZ1enppbmcuIEl0J3Mgc2ltcGx5IG5vdCBnb2luZyB0byBiZSB0cmlnZ2VyZWQgaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5UaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIG11c3QgYmUgZmFsc2UuXG5cbkxldCdzIG5haWwgZG93biB0aGUgbWV0YWRhdGE6XG5cbiogICBgV29ydGhGdXp6aW5nYDogZmFsc2Ug4oCTIE9idmlvdXNseSFcbiogICBgUmVhc29uaW5nYDogRHJpdmVyIGZvciBRdWFsY29tbSBRQ0E4MDgxIEV0aGVybmV0IFBIWSB0cmFuc2NlaXZlci4gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgZHVlIHRvIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQuIFRoaXMgaXMgcm9jayBzb2xpZCByZWFzb25pbmcuXG4qICAgYEZvY3VzU3ltYm9sc2A6IFxcWyBdIOKAkyBFbXB0eSwgYmVjYXVzZSBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLlxuKiAgIGBFbmFibGVDb25maWdzYDogXFxbIF0g4oCTIEFsc28gZW1wdHksIGJlY2F1c2UgaXQncyBub3Qgd29ydGggZnV6emluZy5cblxuQWxyaWdodCwgdGhhdCdzIGFsbCB2ZXJ5IGNsZWFyLiBFdmVyeXRoaW5nIGlzIGluIG9yZGVyLCBhbmQgaXQncyB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzNDIsIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ5OjE1LjgxNjUwMDc4M1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoZWQgZmlsZSAoZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jKSBpcyBhIGhhcmR3YXJlIGRldmljZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVyLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBjb25uZWN0ZWQgdG8gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoZWQgZmlsZSAoZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jKSBpcyBhIGhhcmR3YXJlIGRldmljZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQTgwODEgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVyLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBjb25uZWN0ZWQgdG8gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDAyOjQ5OjE1LjgxNjUyNTEzM1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjzzgt[1] Phase: Running StartedAt: 2026-09-12 02:49:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzzgt[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-12 02:49:26 +0000 UTC FinishedAt: 2026-09-12 02:49:30 +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,}