Name: series-workfloww8v2w Phase: Failed StartedAt: 2026-09-06 21:42:56 +0000 UTC FinishedAt: 2026-09-06 22:17:15 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww8v2w[0] Phase: Succeeded StartedAt: 2026-09-06 21:42:56 +0000 UTC FinishedAt: 2026-09-06 22:17:05 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww8v2w[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 21:42:56 +0000 UTC FinishedAt: 2026-09-06 22:17:05 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjEzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTE5YzE1MGY1NjhmOGY0NWYwMTM2NTZmMWYwZjk1NjQzYzExMDc3NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjI6MTM6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuaW5kZXggYjMxZWQ0YmU3YmRjMS4uNmQyMDhkYjA4OTZkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuQEAgLTI3MSw2ICYjNDM7MjcxLDkgQEAgc3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuIFxuIFx0aW5kZXggPSB2bWEtXHUwMDNldm1fcGdvZmYgXHUwMDNlXHUwMDNlIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcbiBcbiYjNDM7XHRpZiAoISh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1NIQVJFRCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRpZiAoaW5kZXggXHUwMDNlPSBjZHhfZGV2LVx1MDAzZXJlc19jb3VudClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTE5YzE1MGY1NjhmOGY0NWYwMTM2NTZmMWYwZjk1NjQzYzExMDc3NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMjI6MTM6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCmluZGV4IGIzMWVkNGJlN2JkYzEuLjZkMjA4ZGIwODk2ZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCkBAIC0yNzEsNiAmIzQzOzI3MSw5IEBAIHN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwKIAogCWluZGV4ID0gdm1hLSZndDt2bV9wZ29mZiAmZ3Q7Jmd0OyAoVkZJT19DRFhfT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7CiAKJiM0MzsJaWYgKCEodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9TSEFSRUQpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJaWYgKGluZGV4ICZndDs9IGNkeF9kZXYtJmd0O3Jlc19jb3VudCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg3OAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDExMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFZGSU8gQ0RYIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gTXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gZXN0YWJsaXNoIGNvbnRleHQsIGFuZCBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGlzIGB2ZmlvL2NkeGAgcGFydC4gV2hhdCBleGFjdGx5ICppcyogYGRyaXZlcnMvdmZpby9jZHhgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgb3IgdmlydHVhbCBidXMgaXQmIzM5O3MgdGllZCB0by4gSXMgdGhpcyBzb21lIHNwZWNpYWxpemVkIGhhcmR3YXJlLCBvciBpcyBpdCBzb21ldGhpbmcgdGhhdCBjb21tb25seSBzaG93cyB1cCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIGFuZCBvbiBzdGFuZGFyZCBhbWQ2NCBzeXN0ZW1zPyBLbm93aW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGluZmx1ZW5jZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaCYjMzk7cyBwb3RlbnRpYWwgaW1wYWN0IGFuZCByZWxldmFuY2UuCgpUbyBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCwgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZWJhc2UuIEkmIzM5O2xsIHJlYWNoIGZvciBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHNvbWUgY2x1ZXMgYXMgdG8gdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZW5kZWQgdXNlIGNhc2UuIEkmIzM5O2xsIGFsc28gd2FudCB0byBsb29rIGF0IGBkcml2ZXJzL2NkeC9gLCBvciBhbnl0aGluZyBlbHNlIHRoYXQgc2VlbXMgcmVsZXZhbnQgdG8gdGhpcyAmIzM0O0NEWCYjMzQ7IHRoaW5nIHRvIGVuc3VyZSB0aGF0IEkgaGF2ZSBhbGwgcmVsZXZhbnQgY29tcG9uZW50cyBvZiB0aGUgc3lzdGVtIGluIHZpZXcuIE9uY2UgSSBjYW4gZ2V0IGEgZ29vZCBwaWN0dXJlIG9mIHRoZSBoYXJkd2FyZSBpdCBhcHBsaWVzIHRvIEkgd2lsbCBiZSBhYmxlIHRvIGV2YWx1YXRlIHRoZSBwYXRjaCBtdWNoIG1vcmUgZWZmaWNpZW50bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VkZJT19DRFgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgJiM0Mzs9IGZzbC1tYy9cbmRyaXZlcnMvdmZpby9NYWtlZmlsZToxODpvYmotJChDT05GSUdfVkZJT19DRFgpICYjNDM7PSBjZHgvXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTctXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6ODpjb25maWcgVkZJT19DRFhcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlLTUtXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1ZGSU9fQ0RYKSAmIzQzOz0gdmZpby1jZHgub1xuZHJpdmVycy92ZmlvL2NkeC9NYWtlZmlsZS03LVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI0ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNTAtXHRwZ29mZiA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwMjZcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI1MTpcdFx0KCgxVSBcdTAwM2NcdTAwM2MgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjUyLVx0YmFzZSA9IHBnb2ZmIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI2ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjcxLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjcyOlx0aW5kZXggPSB2bWEtXHUwMDNldm1fcGdvZmYgXHUwMDNlXHUwMDNlIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI3My1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC01LVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjojaWZuZGVmIFZGSU9fQ0RYX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NzojZGVmaW5lIFZGSU9fQ0RYX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtOC1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMC1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjExOiNkZWZpbmUgVkZJT19DRFhfT0ZGU0VUX1NISUZUICAgIDQwXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMi1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTEzPXN0YXRpYyBpbmxpbmUgdTY0IHZmaW9fY2R4X2luZGV4X3RvX29mZnNldCh1MzIgaW5kZXgpXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xNC17XG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDoxNTpcdHJldHVybiAoKHU2NCkoaW5kZXgpIFx1MDAzY1x1MDAzYyBWRklPX0NEWF9PRkZTRVRfU0hJRlQpO1xuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtMTYtfVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTU5PXN0YXRpYyB2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTYzLVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjQ6I2VuZGlmIC8qIFZGSU9fQ0RYX1BSSVZBVEVfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIGRlbHZlIGludG8gdGhpczoKCioqSW5pdGlhbCBDRFggSW52ZXN0aWdhdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIFRvIHJlYWxseSBnZXQgYSBncmlwIG9uIHdoYXQgdGhpcyAmIzM0O0NEWCYjMzQ7IHRoaW5nIGlzLCBJIG5lZWQgdG8gc3RhcnQgd2l0aCB0aGUgc291cmNlIOKAkyBvciwgaW4gdGhpcyBjYXNlLCB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgYGRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL2NkeC9LY29uZmlnYC4gVGhlc2UgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIGhlYXJ0IG9mIGhvdyB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQsIHdoaWNoIGluY2x1ZGVzIHRoaXMgcG90ZW50aWFsbHkgbmV3ICYjMzQ7Q0RYJiMzNDsgZnVuY3Rpb24uIExvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgZGVzY3JpcHRpb25zLCBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGhvcGVmdWxseSByZXZlYWwgdGhlIHB1cnBvc2UgYW5kIHNjb3BlIG9mIHRoaXMgZmVhdHVyZS4gVGltZSB0byBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyBleHBvc2UgYWJvdXQgdGhlIHVuZGVycGlubmluZ3Mgb2YgQ0RYLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBwYWludCBhIGNsZWFyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgVkZJTyBDRFggY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHQjIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXG4gICA2Olx0I1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBWRklPX0NEWFxuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcJiMzNDtcbiAgMTA6XHRcdGRlcGVuZHMgb24gQ0RYX0JVU1xuICAxMTpcdFx0c2VsZWN0IEVWRU5URkRcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgRHJpdmVyIHRvIGVuYWJsZSBWRklPIHN1cHBvcnQgZm9yIHRoZSBkZXZpY2VzIG9uIENEWCBidXMuXG4gIDE0Olx0XHQgIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZSB1c2Ugb2YgQ0RYIGRldmljZXMgcHJlc2VudCBpblxuICAxNTpcdFx0ICB0aGUgc3lzdGVtIHVzaW5nIHRoZSBWRklPIGZyYW1ld29yay5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyB0aGUgQ0RYIEJ1cyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQ0RYIGJ1cyBpcyBjb25maWd1cmVkLiBMZXQmIzM5O3MgZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBgZHJpdmVycy9jZHgvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGJ1cyBkZWZpbml0aW9uIGFuZCBpdHMgZGVwZW5kZW5jaWVzIHJlc2lkZS4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGdldHRpbmcgYSBoYW5kbGUgb24gYENEWF9CVVNgIOKAkyB0aGF0JiMzOTtzIHRoZSBjcnVjaWFsIHN5bWJvbCBJIG5lZWQgdG8gdHJhY2UuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGl0cyBkZWZpbml0aW9uLCBpdHMgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGNvbmZpZyBvcHRpb25zLCBhbmQgYW55IGRlZmF1bHQgdmFsdWVzLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0JiMzOTtzIGhhbmRsZWQgYXQgdGhlIEtjb25maWcgbGV2ZWwgaXMgdGhlIGdhdGV3YXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZW50aXJlIHN1YnN5c3RlbS4gRnJvbSB0aGVyZSwgSSBjYW4gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciBhbnkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIG1ha2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q0RYX0JVUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL01ha2VmaWxlPTE5ND1vYmotJChDT05GSUdfRFJNX0FDQ0VMKVx0XHQmIzQzOz0gYWNjZWwvXG5kcml2ZXJzL01ha2VmaWxlOjE5NTpvYmotJChDT05GSUdfQ0RYX0JVUylcdFx0JiM0Mzs9IGNkeC9cbmRyaXZlcnMvTWFrZWZpbGUtMTk2LW9iai0kKENPTkZJR19EUExMKVx0XHQmIzQzOz0gZHBsbC9cbi0tXG5kcml2ZXJzL2NkeC9LY29uZmlnLTctXG5kcml2ZXJzL2NkeC9LY29uZmlnOjg6Y29uZmlnIENEWF9CVVNcbmRyaXZlcnMvY2R4L0tjb25maWctOS1cdGJvb2wgXCYjMzQ7Q0RYIEJ1cyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS03LVxuZHJpdmVycy9jZHgvTWFrZWZpbGU6ODpjY2ZsYWdzLXkgJiM0Mzs9IC1EREVGQVVMVF9TWU1CT0xfTkFNRVNQQUNFPSYjMzk7XCYjMzQ7Q0RYX0JVU1wmIzM0OyYjMzk7XG5kcml2ZXJzL2NkeC9NYWtlZmlsZS05LVxuZHJpdmVycy9jZHgvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0NEWF9CVVMpICYjNDM7PSBjZHgubyBjb250cm9sbGVyL1xuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL2NkeC9NYWtlZmlsZT0xMj1pZmRlZiBDT05GSUdfR0VORVJJQ19NU0lfSVJRXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQ0RYX0JVUykgJiM0Mzs9IGNkeF9tc2kub1xuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTQtZW5kaWZcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz03NTk9aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcylcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03OTgtXHRkZXZfc2V0X25hbWUoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYsIFwmIzM0O2NkeC0lMDJ4OiUwMnhcJiMzNDssXG5kcml2ZXJzL2NkeC9jZHguYzo3OTk6XHRcdCAgICAgKChjZHgtXHUwMDNlaWQgXHUwMDNjXHUwMDNjIENEWF9DT05UUk9MTEVSX0lEX1NISUZUKSB8IChjZHhfZGV2LVx1MDAzZWJ1c19udW0gXHUwMDI2IENEWF9CVVNfTlVNX01BU0spKSxcbmRyaXZlcnMvY2R4L2NkeC5jLTgwMC1cdFx0ICAgICBjZHhfZGV2LVx1MDAzZWRldl9udW0pO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTg0NC19XG5kcml2ZXJzL2NkeC9jZHguYzo4NDU6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy04NDYtXG5kcml2ZXJzL2NkeC9jZHguYz04NDc9c3RydWN0IGRldmljZSAqY2R4X2J1c19hZGQoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtODY1LVx0ZGV2X3NldF9uYW1lKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2LCBcJiMzNDtjZHgtJTAyeFwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jOjg2NjpcdFx0ICAgICAoKGNkeC1cdTAwM2VpZCBcdTAwM2NcdTAwM2MgQ0RYX0NPTlRST0xMRVJfSURfU0hJRlQpIHwgKGJ1c19udW0gXHUwMDI2IENEWF9CVVNfTlVNX01BU0spKSk7XG5kcml2ZXJzL2NkeC9jZHguYy04NjctXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtODkxLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjg5MjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfYnVzX2FkZCwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg5My1cbmRyaXZlcnMvY2R4L2NkeC5jPTg5ND1pbnQgY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtOTE2LX1cbmRyaXZlcnMvY2R4L2NkeC5jOjkxNzpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfcmVnaXN0ZXJfY29udHJvbGxlciwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTkxOC1cbmRyaXZlcnMvY2R4L2NkeC5jPTkxOT12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtOTMxLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjkzMjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtOTMzLVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0xNjA9c3RydWN0IGlycV9kb21haW4gKmNkeF9tc2lfZG9tYWluX2luaXQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xOTItfVxuZHJpdmVycy9jZHgvY2R4X21zaS5jOjE5MzpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfbXNpX2RvbWFpbl9pbml0LCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZy03LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnOjg6aWYgQ0RYX0JVU1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnLTktXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTI1Nj1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjI1NzpNT0RVTEVfSU1QT1JUX05TKFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI0Ny0vKlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI0ODogKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjQ5LSAqIENEWCBidXMgaG9zdHMgZGV2aWNlcyAoZnVuY3Rpb25zKSB0aGF0IGFyZSBpbXBsZW1lbnRlZCB1c2luZyB0aGUgQ29tcG9zYWJsZVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNTYtICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjU3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU1x0XHRcdFx0MHgxXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjU4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19NU0dTRVRcdFx0XHQweDFcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNTktI3VuZGVmIE1DX0NNRF8weDFfUFJJVklMRUdFX0NUR1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNjItXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjYzOi8qIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfSU4gbXNncmVxdWVzdCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfSU5fTEVOXHRcdFx0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI2NS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNjY6LyogTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVQgbXNncmVzcG9uc2UgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNjc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjY4LS8qXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3MS0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlRfT0ZTVFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjczOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfQlVTX0NPVU5UX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjc0LVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNzYtLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzc6ICogTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjc4LSAqIEVudW1lcmF0ZSBDRFggYnVzIGRldmljZXMgb24gYSBnaXZlbiBidXNcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNzktICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjgwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXHRcdFx0XHQweDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyODE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfTVNHU0VUXHRcdFx0MHgyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjgyLSN1bmRlZiBNQ19DTURfMHgyX1BSSVZJTEVHRV9DVEdcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjg1LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4NjovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU4gbXNncmVxdWVzdCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19JTl9MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjg4LS8qXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjg5LSAqIEJ1cyBudW1iZXIgdG8gZW51bWVyYXRlLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xLCBhcyByZXR1cm5lZCBieVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5MDogKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI5MS0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fQlVTX09GU1RcdFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjkzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0JVU19MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjk0LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5NTovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUIG1zZ3Jlc3BvbnNlICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mjk2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjk3LS8qXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMwMS0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMDI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUX0RFVklDRV9DT1VOVF9PRlNUXHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzAzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9ERVZJQ0VfQ09VTlRfTEVOXHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzA0LVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMDYtLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMDc6ICogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMDgtICogUmV0dXJucyBkZXZpY2UgaWRlbnRpZmljYXRpb24gYW5kIE1NSU8vTVNJIHJlc291cmNlIGRhdGEgZm9yIGEgQ0RYIGRldmljZS5cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzE4LSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMxOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHXHRcdFx0XHRcdDB4M1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX01TR1NFVFx0XHRcdFx0XHQweDNcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMjEtI3VuZGVmIE1DX0NNRF8weDNfUFJJVklMRUdFX0NUR1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMjQtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzI1Oi8qIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOIG1zZ3JlcXVlc3QgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9MRU5cdFx0XHRcdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMyNy0vKiBEZXZpY2UgYnVzIG51bWJlciwgaW4gcmFuZ2UgMCB0byBCVVNfQ09VTlQtMSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0JVU19PRlNUXHRcdFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzI5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fQlVTX0xFTlx0XHRcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMzMC0vKiBEZXZpY2UgbnVtYmVyIHJlbGF0aXZlIHRvIHRoZSBidXMsIGluIHJhbmdlIDAgdG8gREVWSUNFX0NPVU5ULTEgZm9yIHRoYXQgYnVzICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzMxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fREVWSUNFX09GU1RcdFx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0VfTEVOXHRcdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzMzLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNDovKiBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVQgbXNncmVzcG9uc2UgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTEVOXHRcdFx0XHQ4OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMzNi0vKiAxNi1iaXQgVmVuZG9yIGlkZW50aWZpZXIsIGNvbXBsaWFudCB3aXRoIFBDSS1TSUcgVmVuZG9ySUQgYXNzaWdubWVudC4gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVkVORE9SX0lEX09GU1RcdFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzM4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1ZFTkRPUl9JRF9MRU5cdFx0XHQyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzM5LS8qIDE2LWJpdCBEZXZpY2UgSUQgYXNzaWduZWQgYnkgdGhlIHZlbmRvciAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM0MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfSURfT0ZTVFx0XHRcdDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0lEX0xFTlx0XHRcdDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNDItLypcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQ1LSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM0NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfVkVORE9SX0lEX09GU1RcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM0NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfVkVORE9SX0lEX0xFTlx0XHQyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQ4LS8qXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM1MS0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX0RFVklDRV9JRF9PRlNUXHRcdDZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX0RFVklDRV9JRF9MRU5cdFx0MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM1NC0vKiAyNC1iaXQgRGV2aWNlIENsYXNzIGNvZGUsIGNvbXBsaWFudCB3aXRoIFBDSS1TSUcgRGV2aWNlIENsYXNzIGNvZGVzICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzU1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9DTEFTU19PRlNUXHRcdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfQ0xBU1NfTEVOXHRcdFx0M1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM1Ny0vKiA4LWJpdCB2ZW5kb3ItYXNzaWduZWQgcmV2aXNpb24gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX1JFVklTSU9OX09GU1RcdFx0MTFcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX1JFVklTSU9OX0xFTlx0XHQxXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzYwLS8qIFJlc2VydmVkIChhbGlnbm1lbnQpICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzYxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFU0VSVkVEX09GU1RcdFx0XHQxMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9SRVNFUlZFRF9MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzYzLS8qIE1NSU8gcmVnaW9uIDAgYmFzZSBhZGRyZXNzIChidXMgYWRkcmVzcyksIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX09GU1RcdFx0MTZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTE9fT0ZTVFx0XHQxNlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MQk5cdFx0MTI4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzcwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0hJX09GU1RcdFx0MjBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEJOXHRcdDE2MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM3NC0vKiBNTUlPIHJlZ2lvbiAwIHNpemUsIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX09GU1RcdFx0MjRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fT0ZTVFx0XHQyNFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MT19MQk5cdFx0MTkyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX09GU1RcdFx0MjhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfSElfTEJOXHRcdDIyNFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM4NS0vKiBNTUlPIHJlZ2lvbiAxIGJhc2UgYWRkcmVzcyAoYnVzIGFkZHJlc3MpLCAwIGlmIHVudXNlZCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9PRlNUXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0xFTlx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0xPX09GU1RcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTE9fTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTE9fTEJOXHRcdDI1NlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9ISV9PRlNUXHRcdDM2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0hJX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0hJX0xCTlx0XHQyODhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zOTYtLyogTU1JTyByZWdpb24gMSBzaXplLCAwIGlmIHVudXNlZCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9PRlNUXHRcdDQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xFTlx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xPX09GU1RcdFx0NDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEJOXHRcdDMyMFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9MT19XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9ISV9PRlNUXHRcdDQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xCTlx0XHQzNTJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfSElfV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MDctLyogTU1JTyByZWdpb24gMiBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfT0ZTVFx0XHQ0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19PRlNUXHRcdDQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDExOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDEyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xPX0xCTlx0XHQzODRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfT0ZTVFx0XHQ1MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9ISV9MQk5cdFx0NDE2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDE3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDE4LS8qIE1NSU8gcmVnaW9uIDIgc2l6ZSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfT0ZTVFx0XHQ1NlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyMTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9MT19PRlNUXHRcdDU2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xPX0xCTlx0XHQ0NDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfSElfT0ZTVFx0XHQ2MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9ISV9MQk5cdFx0NDgwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDI5LS8qIE1NSU8gcmVnaW9uIDMgYmFzZSBhZGRyZXNzIChidXMgYWRkcmVzcyksIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDMwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX09GU1RcdFx0NjRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTE9fT0ZTVFx0XHQ2NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MQk5cdFx0NTEyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0hJX09GU1RcdFx0NjhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEJOXHRcdDU0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ0MC0vKiBNTUlPIHJlZ2lvbiAzIHNpemUsIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX09GU1RcdFx0NzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fT0ZTVFx0XHQ3MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MT19MQk5cdFx0NTc2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX09GU1RcdFx0NzZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfSElfTEJOXHRcdDYwOFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ1MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ1MS0vKiBNU0kgdmVjdG9yIGNvdW50ICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDUyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01TSV9DT1VOVF9PRlNUXHRcdFx0ODBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NTQtLyogUmVxdWVzdGVyIElEIHVzZWQgYnkgZGV2aWNlIChTTU1VIFN0cmVhbUlELCBHSUMgSVRTIERldmljZUlEKSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ1NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9SRVFVRVNURVJfSURfT0ZTVFx0XHRcdDg0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDU3LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ1ODovKiBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjIgbXNncmVzcG9uc2UgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOXHRcdFx0XHQ5MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ2MC0vKiBSZXF1ZXN0ZXIgSUQgdXNlZCBieSBkZXZpY2UgZm9yIEdJQyBJVFMgRGV2aWNlSUQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NjE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfUkVRVUVTVEVSX0RFVklDRV9JRF9PRlNUXHQ4OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ2MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9SRVFVRVNURVJfREVWSUNFX0lEX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDYzLVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NjUtLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NjY6ICogTUNfQ01EX0NEWF9CVVNfRE9XTlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ2Ny0gKiBBc3NlcnRpbmcgcmVzZXQgb24gdGhlIENEWCBidXMgY2F1c2VzIGFsbCBkZXZpY2VzIG9uIHRoZSBidXMgdG8gYmUgcXVpZXNjZWQuXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ3Ny0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Nzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOXHRcdFx0XHRcdDB4NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ3OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fTVNHU0VUXHRcdFx0MHg0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDgwLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4MTovKiBNQ19DTURfQ0RYX0JVU19ET1dOX0lOIG1zZ3JlcXVlc3QgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODMtLyogQnVzIG51bWJlciB0byBwdXQgaW4gcmVzZXQsIGluIHJhbmdlIDAgdG8gQlVTX0NPVU5ULTEgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0JVU19PRlNUXHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0JVU19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4Ni1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODctLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODg6ICogTUNfQ01EX0NEWF9CVVNfRE9XTl9PVVQgbXNncmVzcG9uc2U6IFRoZSBidXMgaXMgcXVpZXNjZWQsIG5vIGZ1cnRoZXJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODktICogdXBzdHJlYW0gdHJhZmZpYyBmb3IgZGV2aWNlcyBvbiB0aGlzIGJ1cy5cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00OTAtICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDkxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRE9XTl9PVVRfTEVOXHRcdFx0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ5Mi1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDk0LS8qXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDk1OiAqIE1DX0NNRF9DRFhfQlVTX1VQXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDk2LSAqIEFmdGVyIGJ1cyByZXNldCBpcyBkZS1hc3NlcnRlZCwgZGV2aWNlcyBhcmUgaW4gYSBzdGF0ZSB3aGljaCBpcyBmdW5jdGlvbmFsbHlcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNTA1LSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQXHRcdFx0XHRcdDB4NVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX01TR1NFVFx0XHRcdDB4NVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUwOC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo1MDk6LyogTUNfQ01EX0NEWF9CVVNfVVBfSU4gbXNncmVxdWVzdCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MTEtLyogQnVzIG51bWJlciB0byB0YWtlIG91dCBvZiByZXNldCwgaW4gcmFuZ2UgMCB0byBCVVNfQ09VTlQtMSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0JVU19PRlNUXHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo1MTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19VUF9JTl9CVVNfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MTQtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTE1Oi8qIE1DX0NNRF9DRFhfQlVTX1VQX09VVCBtc2dyZXNwb25zZTogVGhlIGJ1cyBjYW4gbm93IGJlIGVudW1lcmF0ZWQuICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTE2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfT1VUX0xFTlx0XHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MTctXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTEwPWludCBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKHN0cnVjdCBjZHhfbWNkaSAqY2R4KVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTExLXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjpcdE1DRElfREVDTEFSRV9CVUYob3V0YnVmLCBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9MRU4pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEzLVx0c2l6ZV90IG91dGxlbjtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTY6XHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTLCBOVUxMLCAwLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE3LVx0XHRcdCAgIG91dGJ1Ziwgc2l6ZW9mKG91dGJ1ZiksIFx1MDAyNm91dGxlbik7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTIwLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjIxOlx0aWYgKG91dGxlbiAhPSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9MRU4pXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjItXHRcdHJldHVybiAtRUlPO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTIzLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjI0Olx0cmV0dXJuIE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0JVU19DT1VOVCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjUtfVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0yNz1pbnQgY2R4X21jZGlfZ2V0X251bV9kZXZzKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCBpbnQgYnVzX251bSlcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yOC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6Mjk6XHRNQ0RJX0RFQ0xBUkVfQlVGKG91dGJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9MRU4pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjMwOlx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzEtXHRzaXplX3Qgb3V0bGVuO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0zMy1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzozNDpcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVMsIGJ1c19udW0pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTM1LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjM2Olx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0zNy1cdFx0XHQgICBvdXRidWYsIHNpemVvZihvdXRidWYpLCBcdTAwMjZvdXRsZW4pO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy00MC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo0MTpcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9MRU4pXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDItXHRcdHJldHVybiAtRUlPO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTQzLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjQ0Olx0cmV0dXJuIE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy00NS19XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTQ3PWludCBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZyhzdHJ1Y3QgY2R4X21jZGkgKmNkeCxcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNTAte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjUxOlx0TUNESV9ERUNMQVJFX0JVRihvdXRidWYsIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9MRU4pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjUyOlx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fTEVOKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy01My1cdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gXHUwMDI2ZGV2X3BhcmFtcy1cdTAwM2VyZXNbMF07XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTU3LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjU4Olx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fQlVTLCBidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo1OTpcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0RFVklDRSwgZGV2X251bSk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNjAtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjE6XHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJRywgaW5idWYsIHNpemVvZihpbmJ1ZiksXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNjItXHRcdFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXHUwMDI2b3V0bGVuKTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNjUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjY6XHRpZiAob3V0bGVuICE9IE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9MRU4pXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNjctXHRcdHJldHVybiAtRUlPO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03MS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo3MjpcdHJlcV9pZCA9IE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9SRVFVRVNURVJfSUQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTczLVx0ZGV2X3BhcmFtcy1cdTAwM2VyZXFfaWQgPSByZXFfaWQ7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTc1LVx0ZGV2X3BhcmFtcy1cdTAwM2Vtc2lfZGV2X2lkID0gTUNESV9EV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NzY6XHRcdFx0XHRcdCAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9SRVFVRVNURVJfREVWSUNFX0lEKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03Ny1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03OC1cdGRldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50ID0gMDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo3OTpcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkUpICE9IDApIHtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy04MC1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5zdGFydCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6ODE6XHRcdFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy04Mi1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjgzOlx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRSkgJiM0MztcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy04NC1cdFx0XHRcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjg1Olx0XHRcdFx0XHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRSkgLSAxO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTg2LVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTg5LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjkwOlx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRSkgIT0gMCkge1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTkxLVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLnN0YXJ0ID1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5MjpcdFx0XHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTkzLVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmVuZCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6OTQ6XHRcdFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFKSAmIzQzO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTk1LVx0XHRcdFx0ICAgTUNESV9RV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6OTY6XHRcdFx0XHRcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFKSAtIDE7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTctXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTAwLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEwMTpcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkUpICE9IDApIHtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMDItXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEwMzpcdFx0XHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0UpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEwNC1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEwNTpcdFx0XHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0UpICYjNDM7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA2LVx0XHRcdFx0ICAgTUNESV9RV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTA3Olx0XHRcdFx0XHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRSkgLSAxO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEwOC1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTEtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTEyOlx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRSkgIT0gMCkge1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTExMy1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5zdGFydCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTE0Olx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRSk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE1LVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmVuZCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTE2Olx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRSkgJiM0MztcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTctXHRcdFx0XHQgICBNQ0RJX1FXT1JEKG91dGJ1ZixcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTg6XHRcdFx0XHRcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFKSAtIDE7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE5LVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEyMi1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjM6XHRkZXZfcGFyYW1zLVx1MDAzZXZlbmRvciA9IE1DRElfV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1ZFTkRPUl9JRCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI0Olx0ZGV2X3BhcmFtcy1cdTAwM2VkZXZpY2UgPSBNQ0RJX1dPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfSUQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEyNS1cdGRldl9wYXJhbXMtXHUwMDNlc3Vic3lzX3ZlbmRvciA9IE1DRElfV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI2Olx0XHRcdFx0XHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfVkVORE9SX0lEKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMjctXHRkZXZfcGFyYW1zLVx1MDAzZXN1YnN5c19kZXZpY2UgPSBNQ0RJX1dPUkQob3V0YnVmLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEyODpcdFx0XHRcdFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX0RFVklDRV9JRCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTI5LVx0ZGV2X3BhcmFtcy1cdTAwM2VjbGFzcyA9IE1DRElfRFdPUkQob3V0YnVmLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzMDpcdFx0XHRcdCAgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfQ0xBU1MpIFx1MDAyNiAweEZGRkZGRjtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzE6XHRkZXZfcGFyYW1zLVx1MDAzZXJldmlzaW9uID0gTUNESV9CWVRFKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX1JFVklTSU9OKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzI6XHRkZXZfcGFyYW1zLVx1MDAzZW51bV9tc2kgPSBNQ0RJX0RXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzMtXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTEzNz1pbnQgY2R4X21jZGlfYnVzX2VuYWJsZShzdHJ1Y3QgY2R4X21jZGkgKmNkeCwgdTggYnVzX251bSlcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzgte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzOTpcdE1DRElfREVDTEFSRV9CVUYoaW5idWYsIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTQwLVx0aW50IHJldDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNDEtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTQyOlx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfVVBfSU5fQlVTLCBidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNDM6XHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19VUCwgaW5idWYsIHNpemVvZihpbmJ1ZiksXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTQ0LVx0XHRcdCAgIE5VTEwsIDAsIE5VTEwpO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0xNDk9aW50IGNkeF9tY2RpX2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE1MC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTUxOlx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRE9XTl9JTl9MRU4pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE1Mi1cdGludCByZXQ7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUzLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjE1NDpcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX0RPV05fSU5fQlVTLCBidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTU6XHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19ET1dOLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTYtXHRcdFx0ICAgTlVMTCwgMCwgTlVMTCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwLmM9MTYxNT11MzIgcjYwMF9ncHVfY2hlY2tfc29mdF9yZXNldChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYy0xNjY3LVx0aWYgKEdfMDAwRTUwX01DQl9CVVNZKHRtcCkgfCBHXzAwMEU1MF9NQ0RaX0JVU1kodG1wKSB8XG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYzoxNjY4Olx0ICAgIEdfMDAwRTUwX01DRFlfQlVTWSh0bXApIHwgR18wMDBFNTBfTUNEWF9CVVNZKHRtcCkgfFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwLmMtMTY2OS1cdCAgICBHXzAwMEU1MF9NQ0RXX0JVU1kodG1wKSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBkLmgtMTgzMy0jZGVmaW5lXHRcdEdfMDAwRTUwX01DRFlfQlVTWSh4KVx0XHRcdCgoKHgpIFx1MDAzZVx1MDAzZSAxMSkgXHUwMDI2IDEpXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBkLmg6MTgzNDojZGVmaW5lXHRcdEdfMDAwRTUwX01DRFhfQlVTWSh4KVx0XHRcdCgoKHgpIFx1MDAzZVx1MDAzZSAxMikgXHUwMDI2IDEpXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBkLmgtMTgzNS0jZGVmaW5lXHRcdEdfMDAwRTUwX01DRFdfQlVTWSh4KVx0XHRcdCgoKHgpIFx1MDAzZVx1MDAzZSAxMykgXHUwMDI2IDEpXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS5jPTE4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGJ1c190eXBlICogY29uc3QgaW9tbXVfYnVzZXNbXSA9IHtcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTk5LSNlbmRpZlxuZHJpdmVycy9pb21tdS9pb21tdS5jOjIwMDojaWZkZWYgQ09ORklHX0NEWF9CVVNcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYy0yMDEtXHRcdTAwMjZjZHhfYnVzX3R5cGUsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnPTg9Y29uZmlnIFZGSU9fQ0RYXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6MTA6XHRkZXBlbmRzIG9uIENEWF9CVVNcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy0xMS1cdHNlbGVjdCBFVkVOVEZEXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MzY0PU1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtWRklPIGZvciBDRFggZGV2aWNlcyAtIFVzZXIgTGV2ZWwgbWV0YS1kcml2ZXJcJiMzNDspO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzY1Ok1PRFVMRV9JTVBPUlRfTlMoXCYjMzQ7Q0RYX0JVU1wmIzM0Oyk7XG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTgtXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6OTojaWZuZGVmIF9DRFhfQlVTX0hfXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MTA6I2RlZmluZSBfQ0RYX0JVU19IX1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTExLVxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xOC0jZGVmaW5lIENEWF9DT05UUk9MTEVSX0lEX1NISUZUIDRcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxOTojZGVmaW5lIENEWF9CVVNfTlVNX01BU0sgMHhGXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjAtXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTI4MT1zdGF0aWMgaW5saW5lIHZvaWQgY2R4X2Rpc2FibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yODYtXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6Mjg3OiNlbmRpZiAvKiBfQ0RYX0JVU19IXyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTI3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiBkcml2ZXIgZGV2ZWxvcG1lbnQ6CgoqKkluaXRpYWwgSW52ZXN0aWdhdGlvbiBpbnRvIENEWCBDb250cm9sbGVyL0RldmljZSBEcml2ZXJzKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gcGlucG9pbnQgd2hpY2ggZHJpdmVyKHMpIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIENEWCBjb250cm9sbGVyIG9yIGZvciBjcmVhdGluZyBDRFggZGV2aWNlcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB0YXJnZXQgdGhlIG9idmlvdXMuIEkmIzM5O2xsIG5lZWQgdG8gc3RhcnQgYnkgbG9va2luZyBmb3IgdGhlIGNvZGUgdGhhdCByZWdpc3RlcnMgdGhlIENEWCBjb250cm9sbGVyIGl0c2VsZi4gV2hlcmUgd291bGQgdGhhdCBsaXZlPyBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgZHJpdmVycy9jZHgvY29udHJvbGxlci9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHlvdSYjMzk7ZCBmaW5kIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgZGV2aWNlJiMzOTtzIGhhcmR3YXJlIGludGVyZmFjZS4KCkhvd2V2ZXIsIEkmIzM5O20gbm90IGdvaW5nIHRvIGxpbWl0IG15c2VsZiB0byB0aGF0IHBhdGggaW1tZWRpYXRlbHkuIEdpdmVuIHRoZSBtb2R1bGFyIG5hdHVyZSBvZiBtYW55IGNvbnRlbXBvcmFyeSBkcml2ZXIgYXJjaGl0ZWN0dXJlcywgSSBuZWVkIHRvIGtlZXAgbXkgc2VhcmNoIGJyb2FkLCBhdCBsZWFzdCBpbml0aWFsbHkuIEkmIzM5O2xsIGFsc28gZXhwYW5kIG15IHNlYXJjaCB0byBpbmNsdWRlIG90aGVyIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvY2R4YCBkaXJlY3RvcnkuIFRoZXJlIG1pZ2h0IGJlIHNvbWUgaGVscGVyIG9yIHV0aWxpdHkgZmlsZXMgY29udGFpbmluZyBpbml0aWFsaXphdGlvbiwgcHJvYmUsIG9yIHJlbW92ZSBmdW5jdGlvbnMgb3IgYXNzb2NpYXRlZCBkZXZpY2Ugc3RydWN0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgcHJlZmVycmVkIHRvb2xpbmcgKGdyZXAsIGZpbmQsIGV0Yy4pIHRvIHF1aWNrbHkgc2VhcmNoIGZvciBrZXkgaWRlbnRpZmllcnMgbGlrZSAmIzM0O2NkeCwmIzM0OyAmIzM0O0NEWCwmIzM0OyBvciBzcGVjaWZpYyBmdW5jdGlvbiBuYW1lcy9zdHJ1Y3QgbmFtZXMgbGlrZWx5IHJlbGF0ZWQgdG8gZHJpdmVyIHJlZ2lzdHJhdGlvbiwgcHJvYmUsIG9yIGRldmljZSBjcmVhdGlvbi4gSSYjMzk7bGwgYWxzbyBrZWVwIGluIG1pbmQgY29tbW9uIGtlcm5lbCBjb2RpbmcgcHJhY3RpY2VzLCBzdWNoIGFzIGxvb2tpbmcgZm9yIG1vZHVsZV9pbml0IG9yIGRldmljZV9kcml2ZXIgc3RydWN0dXJlcy4gVGhpcyBhcHByb2FjaCBnaXZlcyBtZSB0aGUgYmVzdCBjaGFuY2Ugb2YgcXVpY2tseSBpZGVudGlmeWluZyB0aGUgcmVzcG9uc2libGUgZHJpdmVyIGFuZCB1bmRlcnN0YW5kaW5nIGl0cyBvdmVyYWxsIHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjZHguYyYjMzQ7LAogICAgJiMzNDtjZHguaCYjMzQ7LAogICAgJiMzNDtjZHhfbXNpLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7Y29udHJvbGxlciYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTQ1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXJgIERpcmVjdG9yeSoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgd2hhdCYjMzk7cyBpbiBgZHJpdmVycy9jZHgvY29udHJvbGxlcmAuIEkmIzM5O20gYXNzdW1pbmcsIGdpdmVuIHRoZSBwYXRoLCB0aGF0IHRoaXMgaXMgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBjb250cm9sbGVyLXNwZWNpZmljIGNvZGUgZm9yIHRoZSBDRFggc3Vic3lzdGVtLiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycyBhcmUgb3JnYW5pemVkIGhlcmUuIElzIGl0IGEgbW9ub2xpdGhpYyBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLCBvciBpcyBpdCBicm9rZW4gZG93biBpbnRvIGZ1bmN0aW9uYWwgdW5pdHMg4oCTIHBlcmhhcHMgRE1BIGNvbnRyb2wsIGludGVycnVwdCBoYW5kbGluZywgcmVnaXN0ZXIgYWNjZXNzLCBhbmQgcG93ZXIgbWFuYWdlbWVudD8gV2hhdCBpbnRlcmZhY2VzIGFyZSBleHBvc2VkIHRvIHRoZSB1cHBlciBsYXllcnMgb2YgdGhlIENEWCBkcml2ZXI/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBkZXNpZ24gcGF0dGVybnMgYmVpbmcgZW1wbG95ZWQsIHN1Y2ggYXMgYSBzdGF0ZSBtYWNoaW5lIGZvciBjb21tYW5kIHByb2Nlc3Npbmcgb3IgYSBsYXllcmVkIGRyaXZlciBhcmNoaXRlY3R1cmU/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjb25kaXRpb25zLCByZXRyaWVzLCBhbmQgYW55IGRldmljZS1zcGVjaWZpYyBxdWlya3MuIEl0IHdpbGwgYWxzbyBiZSBpbnRlcmVzdGluZyB0byB1bmRlcnN0YW5kIGhvdyBpbnRlcnJ1cHRzIGFyZSBjb25maWd1cmVkIGFuZCBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgdGhlIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmVzLiBUaGlzIGFsc28gd2lsbCBoYXZlIGltcGxpY2F0aW9ucyBvbiBob3cgdGhlIGRldmljZSBpcyBjb25maWd1cmVkIGFuZCBpbml0aWFsaXplZC4gRmluYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHNpZ25zIG9mIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzIOKAkyBjYWNoaW5nLCBidWZmZXJpbmcsIG9yIGFueSB0ZWNobmlxdWVzIGVtcGxveWVkIHRvIG1heGltaXplIHRocm91Z2hwdXQgb3IgbWluaW1pemUgbGF0ZW5jeS4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGlzIGFsbCBjbGVhbiBhbmQgbWFpbnRhaW5hYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jb250cm9sbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7Y2R4X2NvbnRyb2xsZXIuYyYjMzQ7LAogICAgJiMzNDtjZHhfY29udHJvbGxlci5oJiMzNDssCiAgICAmIzM0O2NkeF9ycG1zZy5jJiMzNDssCiAgICAmIzM0O21jX2NkeF9wY29sLmgmIzM0OywKICAgICYjMzQ7bWNkaS5jJiMzNDssCiAgICAmIzM0O21jZGlfZnVuY3Rpb25zLmMmIzM0OywKICAgICYjMzQ7bWNkaV9mdW5jdGlvbnMuaCYjMzQ7LAogICAgJiMzNDttY2RpZC5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMzUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDRFggQ29udHJvbGxlciBhbmQgUlBNU0cgSW50ZXJhY3Rpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIENEWCBzdHVmZiBpcyB3b3JraW5nLCBzbyBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AgYW5kIGBjZHhfcnBtc2cuY2AuIFRoZSBjb250cm9sbGVyIGZpbGUgaXMgb2J2aW91c2x5IHRoZSBoZWFydCBvZiB0aGUgQ0RYIG1hbmFnZW1lbnQgaXRzZWxmLCBidXQgSSYjMzk7bSBiZXR0aW5nIHRoZSBSUE1TRyBpbXBsZW1lbnRhdGlvbiBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IGl0JiMzOTtzIGNvbW11bmljYXRpbmcgYW5kIGludGVyZmFjaW5nIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSwgbGlrZWx5IG92ZXIgc29tZSBmb3JtIG9mIGludGVyLXByb2Nlc3NvciBjb21tdW5pY2F0aW9uLiBJIGV4cGVjdCB0aGVzZSB0d28gZmlsZXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBpbml0aWFsIHBpY3R1cmUgb2YgdGhlIGFyY2hpdGVjdHVyZSBhbmQgaG93IHRoZSBjb21wb25lbnRzIGFyZSBpbnRlcmFjdGluZywgZXNwZWNpYWxseSBpZiB0aGVyZSYjMzk7cyBhbnkgc29ydCBvZiBzaGFyZWQgbWVtb3J5IG9yIG1lc3NhZ2UgcGFzc2luZyBpbnZvbHZlZC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBDRFggaG9zdCBjb250cm9sbGVyIGRyaXZlciBmb3IgQU1EIHZlcnNhbC1uZXQgcGxhdGZvcm0uXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCAqL1xuICAgNzpcdFxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvY2R4L2NkeF9idXMuaFx1MDAzZVxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2lycWRvbWFpbi5oXHUwMDNlXG4gIDEyOlx0XG4gIDEzOlx0I2luY2x1ZGUgXCYjMzQ7Y2R4X2NvbnRyb2xsZXIuaFwmIzM0O1xuICAxNDpcdCNpbmNsdWRlIFwmIzM0Oy4uL2NkeC5oXCYjMzQ7XG4gIDE1Olx0I2luY2x1ZGUgXCYjMzQ7bWNkaV9mdW5jdGlvbnMuaFwmIzM0O1xuICAxNjpcdCNpbmNsdWRlIFwmIzM0O21jZGlkLmhcJiMzNDtcbiAgMTc6XHRcbiAgMTg6XHRzdGF0aWMgdW5zaWduZWQgaW50IGNkeF9tY2RpX3JwY190aW1lb3V0KHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1bnNpZ25lZCBpbnQgY21kKVxuICAxOTpcdHtcbiAgMjA6XHRcdHJldHVybiBNQ0RJX1JQQ19USU1FT1VUO1xuICAyMTpcdH1cbiAgMjI6XHRcbiAgMjM6XHRzdGF0aWMgdm9pZCBjZHhfbWNkaV9yZXF1ZXN0KHN0cnVjdCBjZHhfbWNkaSAqY2R4LFxuICAyNDpcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGNkeF9kd29yZCAqaGRyLCBzaXplX3QgaGRyX2xlbixcbiAgMjU6XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBjZHhfZHdvcmQgKnNkdSwgc2l6ZV90IHNkdV9sZW4pXG4gIDI2Olx0e1xuICAyNzpcdFx0aWYgKGNkeF9ycG1zZ19zZW5kKGNkeCwgaGRyLCBoZHJfbGVuLCBzZHUsIHNkdV9sZW4pKVxuICAyODpcdFx0XHRkZXZfZXJyKFx1MDAyNmNkeC1cdTAwM2VycGRldi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBzZW5kIHJwbXNnIGRhdGFcXG5cJiMzNDspO1xuICAyOTpcdH1cbiAgMzA6XHRcbiAgMzE6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGNkeF9tY2RpX29wcyBtY2RpX29wcyA9IHtcbiAgMzI6XHRcdC5tY2RpX3JwY190aW1lb3V0ID0gY2R4X21jZGlfcnBjX3RpbWVvdXQsXG4gIDMzOlx0XHQubWNkaV9yZXF1ZXN0ID0gY2R4X21jZGlfcmVxdWVzdCxcbiAgMzQ6XHR9O1xuICAzNTpcdFxuICAzNjpcdHN0YXRpYyBpbnQgY2R4X2J1c19lbmFibGUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXG4gIDM3Olx0e1xuICAzODpcdFx0cmV0dXJuIGNkeF9tY2RpX2J1c19lbmFibGUoY2R4LVx1MDAzZXByaXYsIGJ1c19udW0pO1xuICAzOTpcdH1cbiAgNDA6XHRcbiAgNDE6XHRzdGF0aWMgaW50IGNkeF9idXNfZGlzYWJsZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcbiAgNDI6XHR7XG4gIDQzOlx0XHRyZXR1cm4gY2R4X21jZGlfYnVzX2Rpc2FibGUoY2R4LVx1MDAzZXByaXYsIGJ1c19udW0pO1xuICA0NDpcdH1cbiAgNDU6XHRcbiAgNDY6XHR2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuICA0NzpcdHtcbiAgNDg6XHRcdC8qIFJlZ2lzdGVyIENEWCBjb250cm9sbGVyIHdpdGggQ0RYIGJ1cyBkcml2ZXIgKi9cbiAgNDk6XHRcdGlmIChjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihjZHgpKVxuICA1MDpcdFx0XHRkZXZfZXJyKGNkeC1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBDRFggY29udHJvbGxlclxcblwmIzM0Oyk7XG4gIDUxOlx0fVxuICA1MjpcdFxuICA1MzpcdHZvaWQgY2R4X3JwbXNnX3ByZV9yZW1vdmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4gIDU0Olx0e1xuICA1NTpcdFx0Y2R4X3VucmVnaXN0ZXJfY29udHJvbGxlcihjZHgpO1xuICA1NjpcdFx0Y2R4X21jZGlfd2FpdF9mb3JfcXVpZXNjZW5jZShjZHgtXHUwMDNlcHJpdiwgTUNESV9SUENfVElNRU9VVCk7XG4gIDU3Olx0fVxuICA1ODpcdFxuICA1OTpcdHN0YXRpYyBpbnQgY2R4X2NvbmZpZ3VyZV9kZXZpY2Uoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsXG4gIDYwOlx0XHRcdFx0XHR1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxuICA2MTpcdFx0XHRcdFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnICpkZXZfY29uZmlnKVxuICA2MjpcdHtcbiAgNjM6XHRcdHUxNiBtc2lfaW5kZXg7XG4gIDY0Olx0XHRpbnQgcmV0ID0gMDtcbiAgNjU6XHRcdHUzMiBkYXRhO1xuICA2NjpcdFx0dTY0IGFkZHI7XG4gIDY3Olx0XG4gIDY4Olx0XHRzd2l0Y2ggKGRldl9jb25maWctXHUwMDNldHlwZSkge1xuICA2OTpcdFx0Y2FzZSBDRFhfREVWX01TSV9DT05GOlxuICA3MDpcdFx0XHRtc2lfaW5kZXggPSBkZXZfY29uZmlnLVx1MDAzZW1zaS5tc2lfaW5kZXg7XG4gIDcxOlx0XHRcdGRhdGEgPSBkZXZfY29uZmlnLVx1MDAzZW1zaS5kYXRhO1xuICA3MjpcdFx0XHRhZGRyID0gZGV2X2NvbmZpZy1cdTAwM2Vtc2kuYWRkcjtcbiAgNzM6XHRcbiAgNzQ6XHRcdFx0cmV0ID0gY2R4X21jZGlfd3JpdGVfbXNpKGNkeC1cdTAwM2Vwcml2LCBidXNfbnVtLCBkZXZfbnVtLCBtc2lfaW5kZXgsIGFkZHIsIGRhdGEpO1xuICA3NTpcdFx0XHRicmVhaztcbiAgNzY6XHRcdGNhc2UgQ0RYX0RFVl9SRVNFVF9DT05GOlxuICA3NzpcdFx0XHRyZXQgPSBjZHhfbWNkaV9yZXNldF9kZXZpY2UoY2R4LVx1MDAzZXByaXYsIGJ1c19udW0sIGRldl9udW0pO1xuICA3ODpcdFx0XHRicmVhaztcbiAgNzk6XHRcdGNhc2UgQ0RYX0RFVl9CVVNfTUFTVEVSX0NPTkY6XG4gIDgwOlx0XHRcdHJldCA9IGNkeF9tY2RpX2J1c19tYXN0ZXJfZW5hYmxlKGNkeC1cdTAwM2Vwcml2LCBidXNfbnVtLCBkZXZfbnVtLFxuICA4MTpcdFx0XHRcdFx0XHRcdCBkZXZfY29uZmlnLVx1MDAzZWJ1c19tYXN0ZXJfZW5hYmxlKTtcbiAgODI6XHRcdFx0YnJlYWs7XG4gIDgzOlx0XHRjYXNlIENEWF9ERVZfTVNJX0VOQUJMRTpcbiAgODQ6XHRcdFx0cmV0ID0gY2R4X21jZGlfbXNpX2VuYWJsZShjZHgtXHUwMDNlcHJpdiwgYnVzX251bSwgZGV2X251bSwgZGV2X2NvbmZpZy1cdTAwM2Vtc2lfZW5hYmxlKTtcbiAgODU6XHRcdFx0YnJlYWs7XG4gIDg2Olx0XHRkZWZhdWx0OlxuICA4NzpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuICA4ODpcdFx0fVxuICA4OTpcdFxuICA5MDpcdFx0cmV0dXJuIHJldDtcbiAgOTE6XHR9XG4gIDkyOlx0XG4gIDkzOlx0c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuICA5NDpcdHtcbiAgOTU6XHRcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHgtXHUwMDNlcHJpdjtcbiAgOTY6XHRcdHU4IGJ1c19udW0sIGRldl9udW0sIG51bV9jZHhfYnVzO1xuICA5NzpcdFx0aW50IHJldDtcbiAgOTg6XHRcbiAgOTk6XHRcdC8qIE1DREkgRlcgUmVhZDogRmV0Y2ggdGhlIG51bWJlciBvZiBDRFggYnVzZXMgb24gdGhpcyBjb250cm9sbGVyICovXG4gMTAwOlx0XHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKGNkeF9tY2RpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxNTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBDRFggSG9zdCBDb250cm9sbGVyIERyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwtTmV0IFBsYXRmb3JtKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBDRFggaG9zdCBjb250cm9sbGVyIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBBTUQgVmVyc2FsLU5ldCBwbGF0Zm9ybS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb250cm9sbGVyIGlzIGJlaW5nIHByb2JlZC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29kZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgZmlsZXMuIEkmIzM5O20gdGhpbmtpbmcgdGhlIGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IHdvdWxkIGJlIGBjZHhfcnBtc2cuY2Agb3IgbWF5YmUgZXZlbiB0aGUgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ2AgZmlsZS4gVGhlIEtjb25maWcgY291bGQgdGVsbCBtZSBob3cgdGhlIGNvbnRyb2xsZXIgaXMgY29uZmlndXJlZCwgd2hlcmVhcyB0aGUgLmMgZmlsZSB3aWxsLCBvZiBjb3Vyc2UsIGhvbGQgdGhlIHByb2JpbmcgbG9naWMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIHN5c3RlbSBkaXNjb3ZlcnMgYW5kIGluaXRpYWxpemVzIHRoaXMgcGFydGljdWxhciBDRFggY29udHJvbGxlci4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIENEWCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCNcbiAgIDc6XHRcbiAgIDg6XHRpZiBDRFhfQlVTXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIENEWF9DT05UUk9MTEVSXG4gIDExOlx0XHR0cmlzdGF0ZSBcJiMzNDtDRFggYnVzIGNvbnRyb2xsZXJcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gSEFTX0RNQVxuICAxMzpcdFx0c2VsZWN0IFJFTU9URVBST0NcbiAgMTQ6XHRcdHNlbGVjdCBSUE1TR1xuICAxNTpcdFx0aGVscFxuICAxNjpcdFx0ICBDRFggY29udHJvbGxlciBkcml2ZXMgdGhlIENEWCBidXMuIEl0IGludGVyYWN0cyB3aXRoXG4gIDE3Olx0XHQgIGZpcm13YXJlIHRvIGdldCB0aGUgaGFyZHdhcmUgZGV2aWNlcyBhbmQgcmVnaXN0ZXJzIHdpdGhcbiAgMTg6XHRcdCAgdGhlIENEWCBidXMuIFNheSBZIHRvIGVuYWJsZSB0aGUgQ0RYIGhhcmR3YXJlIGRyaXZlci5cbiAgMTk6XHRcbiAgMjA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjE6XHRcbiAgMjI6XHRlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzY4MwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgYSBWRklPIENEWCBkZXZpY2UsIGZyb20gaW5zdGFudGlhdGlvbiB0byBvcGVyYXRpb24uIEdpdmVuIG15IGV4cGVydGlzZSwgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLiBJJiMzOTttIGdvaW5nIHRvIHBvcmUgb3ZlciB0aGlzIGNvZGUgdG8gZ3Jhc3AgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cy4gTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgY3JpdGljYWwgZnVuY3Rpb25zOiBob3cgdGhlIGRldmljZSBpcyBjcmVhdGVkLCByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtLCBwcm9iZWQgdG8gZW5zdXJlIGl0cyBwcmVzZW5jZSBhbmQgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZW4gbWFuYWdlZCB0aHJvdWdob3V0IGl0cyBvcGVyYXRpb25hbCBsaWZlIGN5Y2xlLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHN0ZXBzIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgdHVuaW5nLCBhbmQgcG90ZW50aWFsbHkgZXh0ZW5kaW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFZGSU8gQ0RYIGRldmljZXMuIEkgYW50aWNpcGF0ZSBmaW5kaW5nIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBkZXZpY2UmIzM5O3Mgc3RhdGUgYW5kIGludGVyYWN0aW9uIHdpdGggdGhlIFZGSU8gZnJhbWV3b3JrLiBJJiMzOTttIGdvaW5nIHRvIGFzc3VtZSBhIGNlcnRhaW4gbGV2ZWwgb2YgZmFtaWxpYXJpdHkgd2l0aCB0aGUgVkZJTyBhcmNoaXRlY3R1cmUgYW5kIGRlbHZlIGRpcmVjdGx5IGludG8gdGhlIENEWCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdC8qXG4gICAzOlx0ICogQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy5cbiAgIDQ6XHQgKi9cbiAgIDU6XHRcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC92ZmlvLmhcdTAwM2VcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXHUwMDNlXG4gICA4Olx0XG4gICA5Olx0I2luY2x1ZGUgXCYjMzQ7cHJpdmF0ZS5oXCYjMzQ7XG4gIDEwOlx0XG4gIDExOlx0c3RhdGljIGludCB2ZmlvX2NkeF9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbiAgMTI6XHR7XG4gIDEzOlx0XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cbiAgMTQ6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG4gIDE1Olx0XG4gIDE2Olx0XHRtdXRleF9pbml0KFx1MDAyNnZkZXYtXHUwMDNlY2R4X2lycXNfbG9jayk7XG4gIDE3Olx0XHRyZXR1cm4gMDtcbiAgMTg6XHR9XG4gIDE5Olx0XG4gIDIwOlx0c3RhdGljIHZvaWQgdmZpb19jZHhfcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gIDIxOlx0e1xuICAyMjpcdFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG4gIDIzOlx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xuICAyNDpcdFxuICAyNTpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZ2ZGV2LVx1MDAzZWNkeF9pcnFzX2xvY2spO1xuICAyNjpcdH1cbiAgMjc6XHRcbiAgMjg6XHRzdGF0aWMgaW50IHZmaW9fY2R4X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuICAyOTpcdHtcbiAgMzA6XHRcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuICAzMTpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbiAgMzI6XHRcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbiAgMzM6XHRcdGludCBjb3VudCA9IGNkeF9kZXYtXHUwMDNlcmVzX2NvdW50O1xuICAzNDpcdFx0aW50IGksIHJldDtcbiAgMzU6XHRcbiAgMzY6XHRcdHZkZXYtXHUwMDNlcmVnaW9ucyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uLCBjb3VudCxcbiAgMzc6XHRcdFx0XHRcdCAgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiAgMzg6XHRcdGlmICghdmRldi1cdTAwM2VyZWdpb25zKVxuICAzOTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgNDA6XHRcbiAgNDE6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGNvdW50OyBpJiM0MzsmIzQzOykge1xuICA0MjpcdFx0XHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9IFx1MDAyNmNkeF9kZXYtXHUwMDNlcmVzW2ldO1xuICA0MzpcdFxuICA0NDpcdFx0XHR2ZGV2LVx1MDAzZXJlZ2lvbnNbaV0uYWRkciA9IHJlcy1cdTAwM2VzdGFydDtcbiAgNDU6XHRcdFx0dmRldi1cdTAwM2VyZWdpb25zW2ldLnNpemUgPSByZXNvdXJjZV9zaXplKHJlcyk7XG4gIDQ2Olx0XHRcdHZkZXYtXHUwMDNlcmVnaW9uc1tpXS50eXBlID0gcmVzLVx1MDAzZWZsYWdzO1xuICA0NzpcdFx0XHQvKlxuICA0ODpcdFx0XHQgKiBPbmx5IHJlZ2lvbnMgYWRkcmVzc2VkIHdpdGggUEFHRSBncmFudWxhcml0eSBtYXkgYmVcbiAgNDk6XHRcdFx0ICogTU1BUCYjMzk7ZWQgc2VjdXJlbHkuXG4gIDUwOlx0XHRcdCAqL1xuICA1MTpcdFx0XHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaV0uYWRkciBcdTAwMjYgflBBR0VfTUFTSykgXHUwMDI2XHUwMDI2XG4gIDUyOlx0XHRcdCAgICAhKHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5zaXplIFx1MDAyNiB+UEFHRV9NQVNLKSlcbiAgNTM6XHRcdFx0XHR2ZGV2LVx1MDAzZXJlZ2lvbnNbaV0uZmxhZ3MgfD1cbiAgNTQ6XHRcdFx0XHRcdFx0VkZJT19SRUdJT05fSU5GT19GTEFHX01NQVA7XG4gIDU1Olx0XHRcdHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5mbGFncyB8PSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfUkVBRDtcbiAgNTY6XHRcdFx0aWYgKCEoY2R4X2Rldi1cdTAwM2VyZXNbaV0uZmxhZ3MgXHUwMDI2IElPUkVTT1VSQ0VfUkVBRE9OTFkpKVxuICA1NzpcdFx0XHRcdHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5mbGFncyB8PSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEU7XG4gIDU4Olx0XHR9XG4gIDU5Olx0XHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGNvcmVfdmRldi1cdTAwM2VkZXYpO1xuICA2MDpcdFx0aWYgKHJldCkge1xuICA2MTpcdFx0XHRrZnJlZSh2ZGV2LVx1MDAzZXJlZ2lvbnMpO1xuICA2MjpcdFx0XHR2ZGV2LVx1MDAzZXJlZ2lvbnMgPSBOVUxMO1xuICA2MzpcdFx0XHRyZXR1cm4gcmV0O1xuICA2NDpcdFx0fVxuICA2NTpcdFx0cmV0ID0gY2R4X2NsZWFyX21hc3RlcihjZHhfZGV2KTtcbiAgNjY6XHRcdGlmIChyZXQpXG4gIDY3Olx0XHRcdHZkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+Qk1FX1NVUFBPUlQ7XG4gIDY4Olx0XHRlbHNlXG4gIDY5Olx0XHRcdHZkZXYtXHUwMDNlZmxhZ3MgfD0gQk1FX1NVUFBPUlQ7XG4gIDcwOlx0XG4gIDcxOlx0XHRyZXR1cm4gMDtcbiAgNzI6XHR9XG4gIDczOlx0XG4gIDc0Olx0c3RhdGljIHZvaWQgdmZpb19jZHhfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuICA3NTpcdHtcbiAgNzY6XHRcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuICA3NzpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbiAgNzg6XHRcbiAgNzk6XHRcdGtmcmVlKHZkZXYtXHUwMDNlcmVnaW9ucyk7XG4gIDgwOlx0XHRjZHhfZGV2X3Jlc2V0KGNvcmVfdmRldi1cdTAwM2VkZXYpO1xuICA4MTpcdFx0dmZpb19jZHhfaXJxc19jbGVhbnVwKHZkZXYpO1xuICA4MjpcdH1cbiAgODM6XHRcbiAgODQ6XHRzdGF0aWMgaW50IHZmaW9fY2R4X2JtX2N0cmwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHUzMiBmbGFncyxcbiAgODU6XHRcdFx0XHQgICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KVxuICA4NjpcdHtcbiAgODc6XHRcdHNpemVfdCBtaW5zeiA9XG4gIDg4Olx0XHRcdG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX2J1c19tYXN0ZXIsIG9wKTtcbiAgODk6XHRcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuICA5MDpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbiAgOTE6XHRcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbiAgOTI6XHRcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX2J1c19tYXN0ZXIgb3BzO1xuICA5MzpcdFx0aW50IHJldDtcbiAgOTQ6XHRcbiAgOTU6XHRcdGlmICghKHZkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IEJNRV9TVVBQT1JUKSlcbiAgOTY6XHRcdFx0cmV0dXJuIC1FTk9UVFk7XG4gIDk3Olx0XG4gIDk4Olx0XHRyZXQgPSB2ZmlvX2NoZWNrX2ZlYXR1cmUoZmxhZ3MsIGFyZ3N6LCBWRklPX0RFVklDRV9GRUFUVVJFX1NFVCxcbiAgOTk6XHRcdFx0XHRcdCBzaXplb2Yob3BzKSk7XG4gMTAwOlx0XHRpZiAocmV0ICE9IDEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDc3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgZXhhbWluaW5nIHRoZSBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgIGNvZGUgYW5kIHRoaW5raW5nIGFsb3VkIGFzIGEgc2Vhc29uZWQgZXhwZXJ0OgoKKipEaXZpbmcgaW50byBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGlzIGBtYWluLmNgIGZpbGUgd2l0aGluIHRoZSBDRFggKGxpa2VseSBDb250YWluZXIgRGlyZWN0IGVYZWN1dGlvbikgVkZJTyBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgY29yZSBwdXJwb3NlLiBXaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludD8gV2hhdCYjMzk7cyBpbml0aWFsaXplZD8gQXJlIHdlIGRlYWxpbmcgd2l0aCB0aGUgb3ZlcmFsbCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIGV4aXQgcm91dGluZXMsIG9yIGp1c3QgYSBwaWVjZSBvZiB0aGUgcHV6emxlPyBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgbW9kdWxlX2luaXQgYW5kIG1vZHVsZV9leGl0IG1hY3JvcyByaWdodCBvZmYgdGhlIGJhdCwgdG8gZ2V0IHRoZSBicm9hZCBzdHJ1Y3R1cmUuIEZyb20gdGhlcmUsIEkmIzM5O2xsIHF1aWNrbHkgbG9vayBmb3Igc3RydWN0IGRlZmluaXRpb25zIGFuZCBnbG9iYWwgdmFyaWFibGVzLiBJIHdhbnQgdG8gc2VlIGhvdyBkYXRhIGlzIHN0b3JlZCBmb3IgdGhlIGNvbnRhaW5lciBhbmQgdGhlIGRldmljZSB3aXRoaW4gdGhpcyBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCB0byB0aGUgb3ZlcmFsbCBWRklPIGZyYW1ld29yayBhbmQgaG93IHdlIGFyZSBpbnRlcmFjdGluZyB3aXRoIGl0LiBUaGUgbWVtb3J5IG1hcHBpbmcgYW5kIHVubWFwcGluZyByb3V0aW5lcyB3aWxsIGJlIGNyaXRpY2FsIC0gYXJlIHdlIGRpcmVjdGx5IG1hbmFnaW5nIHRoZSBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcyBvciBpbmRpcmVjdGx5IHZpYSBzb21lIGtpbmQgb2YgaW9tbXUgc2V0dXA/IEkgd2lsbCBwcm9iYWJseSBzZWUgc29tZSBraW5kIG9mIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSBtb2RlbHMgYW5kIGEgZmlsZSBkZXNjcmlwdG9yLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwgcGFydHMgb2YgdGhlIGRyaXZlcjsgdGhlIGNvZGUgdGhhdCB3aXJlcyB1cCB0aGUgdmZpby1wY2kgaW50ZXJmYWNlIGZvciBDRFggb3BlcmF0aW9ucy4gVGhlbiBJIHdpbGwgc2VlIGhvdyB0byBoYW5kbGUgdGhlIGRldmljZSByZWdpc3RyYXRpb24sIGludGVycnVwdCBoYW5kbGluZyAoaWYgYXBwbGljYWJsZSksIGFuZCBvZiBjb3Vyc2UsIHRoZSBhY3R1YWwgb3BlcmF0aW9ucyBmb3IgY29udGFpbmVyIGV4ZWN1dGlvbi4gRGVwZW5kaW5nIG9uIHRoZSBjb21wbGV4aXR5LCBJJiMzOTtsbCBzdGFydCBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiBjb250cm9sIGZsb3cuIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBob3cgdGhlIENEWCBzcGVjaWZpYyBwaWVjZXMgZml0IHdpdGhpbiB0aGUgbGFyZ2VyIFZGSU8gZWNvc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjYwOlx0XHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVx1MDAzZXZtX3N0YXJ0LCB2bWEtXHUwMDNldm1fcGdvZmYsXG4gMjYxOlx0XHRcdFx0XHQgIHNpemUsIHZtYS1cdTAwM2V2bV9wYWdlX3Byb3QpO1xuIDI2MjpcdH1cbiAyNjM6XHRcbiAyNjQ6XHRzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gMjY1Olx0XHRcdFx0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuIDI2NjpcdHtcbiAyNjc6XHRcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuIDI2ODpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbiAyNjk6XHRcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbiAyNzA6XHRcdHVuc2lnbmVkIGludCBpbmRleDtcbiAyNzE6XHRcbiAyNzI6XHRcdGluZGV4ID0gdm1hLVx1MDAzZXZtX3Bnb2ZmIFx1MDAzZVx1MDAzZSAoVkZJT19DRFhfT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XG4gMjczOlx0XG4gMjc0Olx0XHRpZiAoISh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1NIQVJFRCkpXG4gMjc1Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI3NjpcdFxuIDI3NzpcdFx0aWYgKGluZGV4IFx1MDAzZT0gY2R4X2Rldi1cdTAwM2VyZXNfY291bnQpXG4gMjc4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI3OTpcdFxuIDI4MDpcdFx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX01NQVApKVxuIDI4MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyODI6XHRcbiAyODM6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEKSBcdTAwMjZcdTAwMjZcbiAyODQ6XHRcdCAgICAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9SRUFEKSlcbiAyODU6XHRcdFx0cmV0dXJuIC1FUEVSTTtcbiAyODY6XHRcbiAyODc6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkgXHUwMDI2XHUwMDI2XG4gMjg4Olx0XHQgICAgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIDI4OTpcdFx0XHRyZXR1cm4gLUVQRVJNO1xuIDI5MDpcdFxuIDI5MTpcdFx0cmV0dXJuIHZmaW9fY2R4X21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIDI5MjpcdH1cbiAyOTM6XHRcbiAyOTQ6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XG4gMjk1Olx0XHQubmFtZVx0XHQ9IFwmIzM0O3ZmaW8tY2R4XCYjMzQ7LFxuIDI5NjpcdFx0LmluaXRcdFx0PSB2ZmlvX2NkeF9pbml0X2RldixcbiAyOTc6XHRcdC5yZWxlYXNlXHQ9IHZmaW9fY2R4X3JlbGVhc2VfZGV2LFxuIDI5ODpcdFx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fY2R4X29wZW5fZGV2aWNlLFxuIDI5OTpcdFx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX2NkeF9jbG9zZV9kZXZpY2UsXG4gMzAwOlx0XHQuaW9jdGxcdFx0PSB2ZmlvX2NkeF9pb2N0bCxcbiAzMDE6XHRcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZmaW9fY2R4X2lvY3RsX2dldF9yZWdpb25faW5mbyxcbiAzMDI6XHRcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fY2R4X2lvY3RsX2ZlYXR1cmUsXG4gMzAzOlx0XHQubW1hcFx0XHQ9IHZmaW9fY2R4X21tYXAsXG4gMzA0Olx0XHQuYmluZF9pb21tdWZkXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxuIDMwNTpcdFx0LnVuYmluZF9pb21tdWZkXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF91bmJpbmQsXG4gMzA2Olx0XHQuYXR0YWNoX2lvYXNcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2F0dGFjaF9pb2FzLFxuIDMwNzpcdH07XG4gMzA4Olx0XG4gMzA5Olx0c3RhdGljIGludCB2ZmlvX2NkeF9wcm9iZShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbiAzMTA6XHR7XG4gMzExOlx0XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2O1xuIDMxMjpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXY7XG4gMzEzOlx0XHRpbnQgcmV0O1xuIDMxNDpcdFxuIDMxNTpcdFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fY2R4X2RldmljZSwgdmRldiwgZGV2LFxuIDMxNjpcdFx0XHRcdFx0IFx1MDAyNnZmaW9fY2R4X29wcyk7XG4gMzE3Olx0XHRpZiAoSVNfRVJSKHZkZXYpKVxuIDMxODpcdFx0XHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcbiAzMTk6XHRcbiAzMjA6XHRcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gMzIxOlx0XHRpZiAocmV0KVxuIDMyMjpcdFx0XHRnb3RvIG91dF91bmluaXQ7XG4gMzIzOlx0XG4gMzI0Olx0XHRkZXZfc2V0X2RydmRhdGEoZGV2LCB2ZGV2KTtcbiAzMjU6XHRcdHJldHVybiAwO1xuIDMyNjpcdFxuIDMyNzpcdG91dF91bmluaXQ6XG4gMzI4Olx0XHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2dmRldi1cdTAwM2V2ZGV2KTtcbiAzMjk6XHRcdHJldHVybiByZXQ7XG4gMzMwOlx0fVxuIDMzMTpcdFxuIDMzMjpcdHN0YXRpYyBpbnQgdmZpb19jZHhfcmVtb3ZlKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuIDMzMzpcdHtcbiAzMzQ6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2O1xuIDMzNTpcdFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuIDMzNjpcdFxuIDMzNzpcdFx0dmZpb191bnJlZ2lzdGVyX2dyb3VwX2RldihcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpO1xuIDMzODpcdFx0dmZpb19wdXRfZGV2aWNlKFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gMzM5Olx0XG4gMzQwOlx0XHRyZXR1cm4gMDtcbiAzNDE6XHR9XG4gMzQyOlx0XG4gMzQzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkIHZmaW9fY2R4X3RhYmxlW10gPSB7XG4gMzQ0Olx0XHR7IENEWF9ERVZJQ0VfRFJJVkVSX09WRVJSSURFKENEWF9BTllfSUQsIENEWF9BTllfSUQsXG4gMzQ1Olx0XHRcdFx0XHQgICAgIENEWF9JRF9GX1ZGSU9fRFJJVkVSX09WRVJSSURFKSB9LCAvKiBtYXRjaCBhbGwgYnkgZGVmYXVsdCAqL1xuIDM0NjpcdFx0e31cbiAzNDc6XHR9O1xuIDM0ODpcdFxuIDM0OTpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUoY2R4LCB2ZmlvX2NkeF90YWJsZSk7XG4gMzUwOlx0XG4gMzUxOlx0c3RhdGljIHN0cnVjdCBjZHhfZHJpdmVyIHZmaW9fY2R4X2RyaXZlciA9IHtcbiAzNTI6XHRcdC5wcm9iZVx0XHQ9IHZmaW9fY2R4X3Byb2JlLFxuIDM1MzpcdFx0LnJlbW92ZVx0XHQ9IHZmaW9fY2R4X3JlbW92ZSxcbiAzNTQ6XHRcdC5tYXRjaF9pZF90YWJsZVx0PSB2ZmlvX2NkeF90YWJsZSxcbiAzNTU6XHRcdC5kcml2ZXJcdD0ge1xuIDM1NjpcdFx0XHQubmFtZVx0PSBcJiMzNDt2ZmlvLWNkeFwmIzM0OyxcbiAzNTc6XHRcdH0sXG4gMzU4Olx0XHQuZHJpdmVyX21hbmFnZWRfZG1hID0gdHJ1ZSxcbiAzNTk6XHR9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU5MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNEWCBBbmFseXNpcyAmYW1wOyBGZWFzaWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgY2VudGVycyBvbiB1bmRlcnN0YW5kaW5nIENEWCDigJMgd2hhdCBpdCAqaXMqLCBmdW5kYW1lbnRhbGx5IOKAkyBhbmQgdGhlbiwgY3J1Y2lhbGx5LCB3aGV0aGVyIGl0JiMzOTtzIGV2ZW4gKmFjY2Vzc2libGUqIHdpdGhpbiBteSB1c3VhbCBRRU1VIGFuZCBHQ0UgdGVzdGluZyBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBrbm93IGlmIEkmIzM5O20gZ29pbmcgdG8gcmVxdWlyZSBzcGVjaWFsaXplZCBBTUQgVmVyc2FsIGhhcmR3YXJlIGZvciB0aGlzIG9yIGlmIEkgY2FuIHN0YXkgd2l0aGluIG15IGZhbWlsaWFyIGNvbWZvcnQgem9uZS4gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4KClRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UgY3JlYXRpb24gcHJvY2VzczogSG93ICphcmUqIHRoZXNlIENEWCBkZXZpY2VzIGluc3RhbnRpYXRlZD8gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIGtleSB0byBmdXp6aW5nLCBhcyBpdCBkZXRlcm1pbmVzIGhvdyBJIGNhbiBwb3RlbnRpYWxseSBpbmZsdWVuY2UgdGhlaXIgaW5pdGlhbGl6YXRpb24gb3IgZmVlZCB0aGVtIHVuZXhwZWN0ZWQgaW5wdXRzLiBJZiB0aGV5IHJlcXVpcmUgc29tZSB1bmlxdWUgb3IgcHJvcHJpZXRhcnkgc2V0dXAsIHRoYXQgY2hhbmdlcyB0aGUgd2hvbGUgZ2FtZS4KCkZpbmFsbHksIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgY29kZWJhc2UuIFNwZWNpZmljYWxseSwgdGhlIGBkcml2ZXJzL2NkeC9gIGRpcmVjdG9yeSBzaG91bGQgcmV2ZWFsIHRoZSBzZWNyZXRzLiBBcmUgdGhlc2UgZGV2aWNlcyBjcmVhdGVkIHN0YXRpY2FsbHksIGF0IGJvb3Q/IE9yLCBldmVuIGJldHRlciwgaXMgdGhlcmUgYSBkeW5hbWljIGNyZWF0aW9uIHBhdGg/IER5bmFtaWMgY3JlYXRpb24gd291bGQgb3BlbiB1cCBhIHdob2xlIHVuaXZlcnNlIG9mIHBvc3NpYmlsaXRpZXMgZm9yIG1hbmlwdWxhdGluZyBhbmQgZnV6emluZy4gVW5kZXJzdGFuZGluZyB0aGUgY3JlYXRpb24gbWVjaGFuaXNtIGlzIHBhcmFtb3VudCB0byBhbnkgZWZmZWN0aXZlIGZ1enppbmcgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NkeF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2NkeCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTgzNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9jZHgvTWFrZWZpbGU9MTI9aWZkZWYgQ09ORklHX0dFTkVSSUNfTVNJX0lSUVxuZHJpdmVycy9jZHgvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0NEWF9CVVMpICYjNDM7PSBjZHhfbXNpLm9cbmRyaXZlcnMvY2R4L01ha2VmaWxlLTE0LWVuZGlmXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjctI2luY2x1ZGUgXHUwMDNjbGludXgvaWRyLmhcdTAwM2VcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2NkeC9jZHhfYnVzLmhcdTAwM2VcbmRyaXZlcnMvY2R4L2NkeC5jLTY5LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvbW11LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03OC0vKiBJREEgZm9yIENEWCBjb250cm9sbGVycyByZWdpc3RlcmVkIHdpdGggdGhlIENEWCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjc5OnN0YXRpYyBERUZJTkVfSURBKGNkeF9jb250cm9sbGVyX2lkYSk7XG5kcml2ZXJzL2NkeC9jZHguYy04MC0vKiBMb2NrIHRvIHByb3RlY3QgY29udHJvbGxlciBvcHMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjgxOnN0YXRpYyBERUZJTkVfTVVURVgoY2R4X2NvbnRyb2xsZXJfbG9jayk7XG5kcml2ZXJzL2NkeC9jZHguYy04Mi0vKiBEZWJ1Z2ZzIGRpciBmb3IgY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6ODM6c3RhdGljIHN0cnVjdCBkZW50cnkgKmNkeF9kZWJ1Z2ZzX2RpcjtcbmRyaXZlcnMvY2R4L2NkeC5jLTg0LVxuZHJpdmVycy9jZHgvY2R4LmM9ODU9c3RhdGljIGNoYXIgKmNvbXBhdF9ub2RlX25hbWUgPSBcJiMzNDt4bG54LHZlcnNhbC1uZXQtY2R4XCYjMzQ7O1xuZHJpdmVycy9jZHgvY2R4LmMtODYtXG5kcml2ZXJzL2NkeC9jZHguYzo4NzpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSk7XG5kcml2ZXJzL2NkeC9jZHguYy04OC1cbmRyaXZlcnMvY2R4L2NkeC5jLTg5LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6OTA6ICogY2R4X2Rldl9yZXNldCAtIFJlc2V0IGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmMtOTEtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTk0LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6OTU6aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtOTYte1xuZHJpdmVycy9jZHgvY2R4LmM6OTc6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjk4Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjk5Olx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XG5kcml2ZXJzL2NkeC9jZHguYzoxMDA6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydjtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMS1cdGludCByZXQ7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDItXG5kcml2ZXJzL2NkeC9jZHguYzoxMDM6XHRjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNC1cdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgaXMgYmVpbmcgcmVzZXQgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjEwNTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXJlc2V0X3ByZXBhcmUpXG5kcml2ZXJzL2NkeC9jZHguYzoxMDY6XHRcdGNkeF9kcnYtXHUwMDNlcmVzZXRfcHJlcGFyZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNy1cbmRyaXZlcnMvY2R4L2NkeC5jLTEwOC1cdGRldl9jb25maWcudHlwZSA9IENEWF9ERVZfUkVTRVRfQ09ORjtcbmRyaXZlcnMvY2R4L2NkeC5jOjEwOTpcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSxcbmRyaXZlcnMvY2R4L2NkeC5jOjExMDpcdFx0XHRcdCAgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSwgXHUwMDI2ZGV2X2NvbmZpZyk7XG5kcml2ZXJzL2NkeC9jZHguYy0xMTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTExNC1cdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgcmVzZXQgaXMgY29tcGxldGUgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjExNTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXJlc2V0X2RvbmUpXG5kcml2ZXJzL2NkeC9jZHguYzoxMTY6XHRcdGNkeF9kcnYtXHUwMDNlcmVzZXRfZG9uZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTExNy1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xMTktfVxuZHJpdmVycy9jZHgvY2R4LmM6MTIwOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTIxLVxuZHJpdmVycy9jZHgvY2R4LmMtMTIyLS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MTIzOiAqIHJlc2V0X2NkeF9kZXZpY2UgLSBSZXNldCBhIENEWCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTEyNC0gKiBAZGV2OiBDRFggZGV2aWNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTMwLSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTMxOnN0YXRpYyBpbnQgcmVzZXRfY2R4X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy0xMzIte1xuZHJpdmVycy9jZHgvY2R4LmM6MTMzOlx0cmV0dXJuIGNkeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNC19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTM2LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MTM3OiAqIGNkeF91bnJlZ2lzdGVyX2RldmljZSAtIFVucmVnaXN0ZXIgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguYy0xMzgtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE0MC0gKlx0ICBidXQgaXMgcmVxdWlyZWQgaGVyZSBhcyB0aGUgYnVzX2Zvcl9lYWNoX2RldigpIEFQSSBleHBlY3RzXG5kcml2ZXJzL2NkeC9jZHguYzoxNDE6ICpcdCAgdGhlIHBhc3NlZCBmdW5jdGlvbiAoY2R4X3VucmVnaXN0ZXJfZGV2aWNlKSB0byBoYXZlIHRoaXNcbmRyaXZlcnMvY2R4L2NkeC5jLTE0Mi0gKlx0ICBhcyBhbiBhcmd1bWVudC5cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNDUtICovXG5kcml2ZXJzL2NkeC9jZHguYzoxNDY6c3RhdGljIGludCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ3LVx0XHRcdFx0IHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy0xNDgte1xuZHJpdmVycy9jZHgvY2R4LmM6MTQ5Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTA6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtMTUxLVxuZHJpdmVycy9jZHgvY2R4LmM6MTUyOlx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKSB7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTM6XHRcdGRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTQ6XHRcdGlmIChjZHhfZGV2LVx1MDAzZWVuYWJsZWQgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUpXG5kcml2ZXJzL2NkeC9jZHguYzoxNTU6XHRcdFx0Y2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTYtXHR9IGVsc2Uge1xuZHJpdmVycy9jZHgvY2R4LmM6MTU3Olx0XHRjZHhfZGVzdHJveV9yZXNfYXR0cihjZHhfZGV2LCBNQVhfQ0RYX0RFVl9SRVNPVVJDRVMpO1xuZHJpdmVycy9jZHgvY2R4LmM6MTU4Olx0XHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoY2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2Rpcik7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTktXHR9XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTYxLVx0LypcbmRyaXZlcnMvY2R4L2NkeC5jOjE2MjpcdCAqIERvIG5vdCBmcmVlIGNkeF9kZXYgaGVyZSBhcyBpdCB3b3VsZCBiZSBmcmVlZCBpblxuZHJpdmVycy9jZHgvY2R4LmM6MTYzOlx0ICogY2R4X2RldmljZV9yZWxlYXNlKCkgY2FsbGVkIGZyb20gd2l0aGluIHB1dF9kZXZpY2UoKS5cbmRyaXZlcnMvY2R4L2NkeC5jLTE2NC1cdCAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTY1Olx0ZGV2aWNlX2RlbChcdTAwMjZjZHhfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoxNjY6XHRwdXRfZGV2aWNlKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE2Ny1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNzAtXG5kcml2ZXJzL2NkeC9jZHguYzoxNzE6c3RhdGljIHZvaWQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTE3Mi17XG5kcml2ZXJzL2NkeC9jZHguYy0xNzMtXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTc0Olx0YnVzX2Zvcl9lYWNoX2RldihidXMsIE5VTEwsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL2NkeC9jZHguYy0xNzUtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE3Ny0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjE3ODogKiBjZHhfbWF0Y2hfb25lX2RldmljZSAtIFRlbGwgaWYgYSBDRFggZGV2aWNlIHN0cnVjdHVyZSBoYXMgYSBtYXRjaGluZ1xuZHJpdmVycy9jZHgvY2R4LmMtMTc5LSAqXHRcdFx0ICBDRFggZGV2aWNlIGlkIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE4Mi0gKlxuZHJpdmVycy9jZHgvY2R4LmM6MTgzOiAqIFJldHVybjogbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3IgTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbmRyaXZlcnMvY2R4L2NkeC5jLTE4NC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjE4NTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NjpjZHhfbWF0Y2hfb25lX2RldmljZShjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWQsXG5kcml2ZXJzL2NkeC9jZHguYzoxODc6XHRcdCAgICAgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTE4OC17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTk5LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MjAwOiAqIGNkeF9tYXRjaF9pZCAtIFNlZSBpZiBhIENEWCBkZXZpY2UgbWF0Y2hlcyBhIGdpdmVuIGNkeF9pZCB0YWJsZVxuZHJpdmVycy9jZHgvY2R4LmMtMjAxLSAqIEBpZHM6IGFycmF5IG9mIENEWCBkZXZpY2UgSUQgc3RydWN0dXJlcyB0byBzZWFyY2ggaW5cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMDQtICogVXNlZCBieSBhIGRyaXZlciB0byBjaGVjayB3aGV0aGVyIGEgQ0RYIGRldmljZSBpcyBpbiBpdHMgbGlzdCBvZlxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxuZHJpdmVycy9jZHgvY2R4LmMtMjA2LSAqIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDctICpcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDktICovXG5kcml2ZXJzL2NkeC9jZHguYzoyMTA6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMTIte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIxNC1cdFx0d2hpbGUgKGlkcy1cdTAwM2V2ZW5kb3IgfHwgaWRzLVx1MDAzZWRldmljZSkge1xuZHJpdmVycy9jZHgvY2R4LmM6MjE1Olx0XHRcdGlmIChjZHhfbWF0Y2hfb25lX2RldmljZShpZHMsIGRldikpXG5kcml2ZXJzL2NkeC9jZHguYy0yMTYtXHRcdFx0XHRyZXR1cm4gaWRzO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjIyMzppbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMjQte1xuZHJpdmVycy9jZHgvY2R4LmM6MjI1Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjI3LVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIzMS1cdGlmIChjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUpXG5kcml2ZXJzL2NkeC9jZHguYzoyMzI6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSxcbmRyaXZlcnMvY2R4L2NkeC5jOjIzMzpcdFx0XHRcdFx0ICAgICAgY2R4X2Rldi1cdTAwM2VkZXZfbnVtLCBcdTAwMjZkZXZfY29uZmlnKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTIzNC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMzYtfVxuZHJpdmVycy9jZHgvY2R4LmM6MjM3OkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9zZXRfbWFzdGVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTIzOC1cbmRyaXZlcnMvY2R4L2NkeC5jOjIzOTppbnQgY2R4X2NsZWFyX21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbmRyaXZlcnMvY2R4L2NkeC5jLTI0MC17XG5kcml2ZXJzL2NkeC9jZHguYzoyNDE6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmM6MjQyOlx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XG5kcml2ZXJzL2NkeC9jZHguYy0yNDMtXHRpbnQgcmV0ID0gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjQ3LVx0aWYgKGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjI0ODpcdFx0cmV0ID0gY2R4LVx1MDAzZW9wcy1cdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtLFxuZHJpdmVycy9jZHgvY2R4LmM6MjQ5Olx0XHRcdFx0XHQgICAgICBjZHhfZGV2LVx1MDAzZWRldl9udW0sIFx1MDAyNmRldl9jb25maWcpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjUwLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI1Mi19XG5kcml2ZXJzL2NkeC9jZHguYzoyNTM6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2NsZWFyX21hc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0yNTQtXG5kcml2ZXJzL2NkeC9jZHguYy0yNTUtLyoqXG5kcml2ZXJzL2NkeC9jZHguYzoyNTY6ICogY2R4X2J1c19tYXRjaCAtIGRldmljZSB0byBkcml2ZXIgbWF0Y2hpbmcgY2FsbGJhY2tcbmRyaXZlcnMvY2R4L2NkeC5jLTI1Ny0gKiBAZGV2OiB0aGUgY2R4IGRldmljZSB0byBtYXRjaCBhZ2FpbnN0XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjYyLSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MjYzOnN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL2NkeC9jZHguYy0yNjQte1xuZHJpdmVycy9jZHgvY2R4LmM6MjY1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjY6XHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NzpcdGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpmb3VuZF9pZCA9IE5VTEw7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjg6XHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzO1xuZHJpdmVycy9jZHgvY2R4LmMtMjY5LVx0aW50IHJldDtcbmRyaXZlcnMvY2R4L2NkeC5jLTI3MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjI3MTpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTI3Mi1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9jZHgvY2R4LmMtMjczLVxuZHJpdmVycy9jZHgvY2R4LmM6Mjc0Olx0aWRzID0gY2R4X2Rydi1cdTAwM2VtYXRjaF9pZF90YWJsZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI3NS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yODAtXG5kcml2ZXJzL2NkeC9jZHguYzoyODE6XHRmb3VuZF9pZCA9IGNkeF9tYXRjaF9pZChpZHMsIGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjgyLVx0aWYgKCFmb3VuZF9pZClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yOTUtXHRcdGlkcyA9IGZvdW5kX2lkICYjNDM7IDE7XG5kcml2ZXJzL2NkeC9jZHguYzoyOTY6XHRcdGZvdW5kX2lkID0gY2R4X21hdGNoX2lkKGlkcywgY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0yOTctXHR9IHdoaWxlIChmb3VuZF9pZCk7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzAxLVxuZHJpdmVycy9jZHgvY2R4LmM6MzAyOnN0YXRpYyBpbnQgY2R4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMy17XG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozMDU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNjpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0zMDctXHRpbnQgZXJyb3I7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzEzLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0dFTkVSSUNfTVNJX0lSUSkgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2Vtc2lfZG9tYWluKSB7XG5kcml2ZXJzL2NkeC9jZHguYzozMTQ6XHRcdGVycm9yID0gbXNpX3NldHVwX2RldmljZV9kYXRhKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTMxNS1cdFx0aWYgKGVycm9yKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMxOC1cbmRyaXZlcnMvY2R4L2NkeC5jOjMxOTpcdGVycm9yID0gY2R4X2Rydi1cdTAwM2Vwcm9iZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTMyMC1cdGlmIChlcnJvcikge1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMyNy1cbmRyaXZlcnMvY2R4L2NkeC5jOjMyODpzdGF0aWMgdm9pZCBjZHhfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTMyOS17XG5kcml2ZXJzL2NkeC9jZHguYzozMzA6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozMzE6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTMzMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjMzMzpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXJlbW92ZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjMzNDpcdFx0Y2R4X2Rydi1cdTAwM2VyZW1vdmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMzUtfVxuZHJpdmVycy9jZHgvY2R4LmMtMzM2LVxuZHJpdmVycy9jZHgvY2R4LmM6MzM3OnN0YXRpYyB2b2lkIGNkeF9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMzgte1xuZHJpdmVycy9jZHgvY2R4LmM6MzM5Olx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzQwOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzozNDE6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtMzQyLVxuZHJpdmVycy9jZHgvY2R4LmM6MzQzOlx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzIFx1MDAyNlx1MDAyNiBjZHhfZGV2LVx1MDAzZWVuYWJsZWQgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUpXG5kcml2ZXJzL2NkeC9jZHguYzozNDQ6XHRcdGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0pO1xuZHJpdmVycy9jZHgvY2R4LmM6MzQ1Olx0aWYgKGNkeF9kcnYgXHUwMDI2XHUwMDI2IGNkeF9kcnYtXHUwMDNlc2h1dGRvd24pXG5kcml2ZXJzL2NkeC9jZHguYzozNDY6XHRcdGNkeF9kcnYtXHUwMDNlc2h1dGRvd24oY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zNDctfVxuZHJpdmVycy9jZHgvY2R4LmMtMzQ4LVxuZHJpdmVycy9jZHgvY2R4LmM6MzQ5OnN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzUwLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzUzOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1NDpcdHUzMiBpbnB1dF9pZCA9IGNkeF9kZXYtXHUwMDNlcmVxX2lkO1xuZHJpdmVycy9jZHgvY2R4LmMtMzU1LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zNjItXG5kcml2ZXJzL2NkeC9jZHguYzozNjM6XHQvKiBAY2R4X2RydiBtYXkgbm90IGJlIHZhbGlkIHdoZW4gd2UmIzM5O3JlIGNhbGxlZCBmcm9tIHRoZSBJT01NVSBsYXllciAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MzY0Olx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2Vkcml2ZXIgXHUwMDI2XHUwMDI2ICFjZHhfZHJ2LVx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSkge1xuZHJpdmVycy9jZHgvY2R4LmMtMzY1LVx0XHRyZXQgPSBpb21tdV9kZXZpY2VfdXNlX2RlZmF1bHRfZG9tYWluKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzcyLVxuZHJpdmVycy9jZHgvY2R4LmM6MzczOnN0YXRpYyB2b2lkIGNkeF9kbWFfY2xlYW51cChzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zNzQte1xuZHJpdmVycy9jZHgvY2R4LmM6Mzc1Olx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzc2LVxuZHJpdmVycy9jZHgvY2R4LmM6Mzc3Olx0aWYgKCFjZHhfZHJ2LVx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSlcbmRyaXZlcnMvY2R4L2NkeC5jLTM3OC1cdFx0aW9tbXVfZGV2aWNlX3VudXNlX2RlZmF1bHRfZG9tYWluKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzgxLS8qIHNob3cgY29uZmlndXJhdGlvbiBmaWVsZHMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjM4MjojZGVmaW5lIGNkeF9jb25maWdfYXR0cihmaWVsZCwgZm9ybWF0X3N0cmluZylcdFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODMtc3RhdGljIHNzaXplX3RcdFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODQ9ZmllbGQjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcdFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODUte1x0XFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1x0XFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NzpcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgZm9ybWF0X3N0cmluZywgY2R4X2Rldi1cdTAwM2VmaWVsZCk7XHRcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg4LX1cdFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODk9c3RhdGljIERFVklDRV9BVFRSX1JPKGZpZWxkKVxuZHJpdmVycy9jZHgvY2R4LmMtMzkwLVxuZHJpdmVycy9jZHgvY2R4LmM6MzkxOmNkeF9jb25maWdfYXR0cih2ZW5kb3IsIFwmIzM0OzB4JTA0eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTI6Y2R4X2NvbmZpZ19hdHRyKGRldmljZSwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MzpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX3ZlbmRvciwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NDpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX2RldmljZSwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NTpjZHhfY29uZmlnX2F0dHIocmV2aXNpb24sIFwmIzM0OzB4JTAyeFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTY6Y2R4X2NvbmZpZ19hdHRyKGNsYXNzLCBcJiMzNDsweCUwNnhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtMzk3LVxuZHJpdmVycy9jZHgvY2R4LmM9Mzk4PXN0YXRpYyBzc2l6ZV90IHJlbW92ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDEyLVxuZHJpdmVycy9jZHgvY2R4LmM6NDEzOlx0XHRyZXQgPSBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LCBOVUxMKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQxNC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00MjI9c3RhdGljIHNzaXplX3QgcmVzZXRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00MjQte1xuZHJpdmVycy9jZHgvY2R4LmM6NDI1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00MjYtXHRib29sIHZhbDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00MzQtXG5kcml2ZXJzL2NkeC9jZHguYzo0MzU6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYy00MzYtXHRcdC8qIFJlc2V0IGFsbCB0aGUgZGV2aWNlcyBhdHRhY2hlZCB0byBjZHggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzc6XHRcdHJldCA9IGRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsIE5VTEwsIHJlc2V0X2NkeF9kZXZpY2UpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDM4LVx0ZWxzZVxuZHJpdmVycy9jZHgvY2R4LmM6NDM5Olx0XHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00NDAtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDQ1PXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NDcte1xuZHJpdmVycy9jZHgvY2R4LmM6NDQ4Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00NDktXG5kcml2ZXJzL2NkeC9jZHguYzo0NTA6XHRyZXR1cm4gc3ByaW50ZihidWYsIFwmIzM0O2NkeDp2JTA0WGQlMDRYc3YlMDRYc2QlMDRYYyUwNlhcXG5cJiMzNDssIGNkeF9kZXYtXHUwMDNldmVuZG9yLFxuZHJpdmVycy9jZHgvY2R4LmM6NDUxOlx0XHRcdGNkeF9kZXYtXHUwMDNlZGV2aWNlLCBjZHhfZGV2LVx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIGNkeF9kZXYtXHUwMDNlc3Vic3lzdGVtX2RldmljZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MjpcdFx0XHRjZHhfZGV2LVx1MDAzZWNsYXNzKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ1My19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDU2PXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ1OC17XG5kcml2ZXJzL2NkeC9jZHguYzo0NTk6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NjYtXG5kcml2ZXJzL2NkeC9jZHguYzo0Njc6XHRpZiAoZW5hYmxlID09IGNkeF9kZXYtXHUwMDNlZW5hYmxlZClcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2OC1cdFx0cmV0dXJuIGNvdW50O1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ3MC1cdGlmIChlbmFibGUgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2VuYWJsZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MTpcdFx0cmV0ID0gY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZW5hYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3Mi1cdGVsc2UgaWYgKCFlbmFibGUgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUpXG5kcml2ZXJzL2NkeC9jZHguYzo0NzM6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtNDc0LVx0ZWxzZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ3Ny1cdGlmICghcmV0KVxuZHJpdmVycy9jZHgvY2R4LmM6NDc4Olx0XHRjZHhfZGV2LVx1MDAzZWVuYWJsZWQgPSBlbmFibGU7XG5kcml2ZXJzL2NkeC9jZHguYy00NzktXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDgzPXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4NC17XG5kcml2ZXJzL2NkeC9jZHguYzo0ODU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4Ni1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NzpcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7JXVcXG5cJiMzNDssIGNkeF9kZXYtXHUwMDNlZW5hYmxlZCk7XG5kcml2ZXJzL2NkeC9jZHguYy00ODgtfVxuZHJpdmVycy9jZHgvY2R4LmM9NDg5PXN0YXRpYyBERVZJQ0VfQVRUUl9SVyhlbmFibGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDkwLVxuZHJpdmVycy9jZHgvY2R4LmM6NDkxOnN0YXRpYyB1bW9kZV90IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxuZHJpdmVycy9jZHgvY2R4LmMtNDkyLXtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5My1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xuZHJpdmVycy9jZHgvY2R4LmM6NDk0Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG5kcml2ZXJzL2NkeC9jZHguYy00OTUtXG5kcml2ZXJzL2NkeC9jZHguYzo0OTY6XHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6NDk3Olx0aWYgKCFjZHhfZGV2LVx1MDAzZWlzX2J1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5OC1cdFx0cmV0dXJuIGEtXHUwMDNlbW9kZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01MDItXG5kcml2ZXJzL2NkeC9jZHguYzo1MDM6c3RhdGljIHVtb2RlX3QgY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYSwgaW50IG4pXG5kcml2ZXJzL2NkeC9jZHguYy01MDQte1xuZHJpdmVycy9jZHgvY2R4LmMtNTA1LVx0c3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7XG5kcml2ZXJzL2NkeC9jZHguYzo1MDY6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNy1cbmRyaXZlcnMvY2R4L2NkeC5jOjUwODpcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzo1MDk6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYy01MTAtXHRcdHJldHVybiBhLVx1MDAzZW1vZGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTE0LVxuZHJpdmVycy9jZHgvY2R4LmM6NTE1OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfZGV2X2F0dHJzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYy01MTYtXHRcdTAwMjZkZXZfYXR0cl9yZW1vdmUuYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01MjctXG5kcml2ZXJzL2NkeC9jZHguYzo1Mjg6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2Rldl9ncm91cCA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jOjUyOTpcdC5hdHRycyA9IGNkeF9kZXZfYXR0cnMsXG5kcml2ZXJzL2NkeC9jZHguYzo1MzA6XHQuaXNfdmlzaWJsZSA9IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUsXG5kcml2ZXJzL2NkeC9jZHguYy01MzEtfTtcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjUzMzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2J1c19kZXZfYXR0cnNbXSA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jLTUzNC1cdFx1MDAyNmRldl9hdHRyX2VuYWJsZS5hdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUzOC1cbmRyaXZlcnMvY2R4L2NkeC5jOjUzOTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBjZHhfYnVzX2Rldl9ncm91cCA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MDpcdC5hdHRycyA9IGNkeF9idXNfZGV2X2F0dHJzLFxuZHJpdmVycy9jZHgvY2R4LmM6NTQxOlx0LmlzX3Zpc2libGUgPSBjZHhfYnVzX2F0dHJzX2FyZV92aXNpYmxlLFxuZHJpdmVycy9jZHgvY2R4LmMtNTQyLX07XG5kcml2ZXJzL2NkeC9jZHguYy01NDMtXG5kcml2ZXJzL2NkeC9jZHguYzo1NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmNkeF9kZXZfZ3JvdXBzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1NDU6XHRcdTAwMjZjZHhfZGV2X2dyb3VwLFxuZHJpdmVycy9jZHgvY2R4LmM6NTQ2Olx0XHUwMDI2Y2R4X2J1c19kZXZfZ3JvdXAsXG5kcml2ZXJzL2NkeC9jZHguYy01NDctXHROVUxMLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU0OS1cbmRyaXZlcnMvY2R4L2NkeC5jOjU1MDpzdGF0aWMgaW50IGNkeF9kZWJ1Z19yZXNvdXJjZV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvY2R4L2NkeC5jLTU1MS17XG5kcml2ZXJzL2NkeC9jZHguYzo1NTI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU1My1cdGludCBpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU1NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9DRFhfREVWX1JFU09VUkNFUzsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvY2R4L2NkeC5jOjU1NjpcdFx0c3RydWN0IHJlc291cmNlICpyZXMgPSAgXHUwMDI2Y2R4X2Rldi1cdTAwM2VyZXNbaV07XG5kcml2ZXJzL2NkeC9jZHguYy01NTctXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTYyLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjU2MzpERUZJTkVfU0hPV19BVFRSSUJVVEUoY2R4X2RlYnVnX3Jlc291cmNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU2NC1cbmRyaXZlcnMvY2R4L2NkeC5jOjU2NTpzdGF0aWMgdm9pZCBjZHhfZGV2aWNlX2RlYnVnZnNfaW5pdChzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Ni17XG5kcml2ZXJzL2NkeC9jZHguYzo1Njc6XHRjZHhfZGV2LVx1MDAzZWRlYnVnZnNfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2KSwgY2R4X2RlYnVnZnNfZGlyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjU2ODpcdGlmIChJU19FUlIoY2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2RpcikpXG5kcml2ZXJzL2NkeC9jZHguYy01NjktXHRcdHJldHVybjtcbmRyaXZlcnMvY2R4L2NkeC5jLTU3MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjU3MTpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7cmVzb3VyY2VcJiMzNDssIDA0NDQsIGNkeF9kZXYtXHUwMDNlZGVidWdmc19kaXIsIGNkeF9kZXYsXG5kcml2ZXJzL2NkeC9jZHguYzo1NzI6XHRcdFx0ICAgIFx1MDAyNmNkeF9kZWJ1Z19yZXNvdXJjZV9mb3BzKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU3My19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NTc1PXN0YXRpYyBzc2l6ZV90IHJlc2Nhbl9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cyxcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01Nzcte1xuZHJpdmVycy9jZHgvY2R4LmM6NTc4Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy01NzktXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01ODctXG5kcml2ZXJzL2NkeC9jZHguYzo1ODg6XHRndWFyZChtdXRleCkoXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XG5kcml2ZXJzL2NkeC9jZHguYy01ODktXG5kcml2ZXJzL2NkeC9jZHguYy01OTAtXHQvKiBVbnJlZ2lzdGVyIGFsbCB0aGUgZGV2aWNlcyBvbiB0aGUgYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo1OTE6XHRjZHhfdW5yZWdpc3Rlcl9kZXZpY2VzKFx1MDAyNmNkeF9idXNfdHlwZSk7XG5kcml2ZXJzL2NkeC9jZHguYy01OTItXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NjA4PXN0YXRpYyBCVVNfQVRUUl9XTyhyZXNjYW4pO1xuZHJpdmVycy9jZHgvY2R4LmMtNjA5LVxuZHJpdmVycy9jZHgvY2R4LmM6NjEwOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfYnVzX2F0dHJzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYy02MTEtXHRcdTAwMjZidXNfYXR0cl9yZXNjYW4uYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02MTMtfTtcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNDpBVFRSSUJVVEVfR1JPVVBTKGNkeF9idXMpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjE1LVxuZHJpdmVycy9jZHgvY2R4LmM6NjE2OmNvbnN0IHN0cnVjdCBidXNfdHlwZSBjZHhfYnVzX3R5cGUgPSB7XG5kcml2ZXJzL2NkeC9jZHguYy02MTctXHQubmFtZVx0XHQ9IFwmIzM0O2NkeFwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jLTYxOC1cdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjE5Olx0Lm1hdGNoXHRcdD0gY2R4X2J1c19tYXRjaCxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMDpcdC5wcm9iZVx0XHQ9IGNkeF9wcm9iZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMTpcdC5yZW1vdmVcdFx0PSBjZHhfcmVtb3ZlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjIyOlx0LnNodXRkb3duXHQ9IGNkeF9zaHV0ZG93bixcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMzpcdC5kbWFfY29uZmlndXJlXHQ9IGNkeF9kbWFfY29uZmlndXJlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjI0Olx0LmRtYV9jbGVhbnVwXHQ9IGNkeF9kbWFfY2xlYW51cCxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNTpcdC5idXNfZ3JvdXBzXHQ9IGNkeF9idXNfZ3JvdXBzLFxuZHJpdmVycy9jZHgvY2R4LmM6NjI2Olx0LmRldl9ncm91cHNcdD0gY2R4X2Rldl9ncm91cHMsXG5kcml2ZXJzL2NkeC9jZHguYy02MjctfTtcbmRyaXZlcnMvY2R4L2NkeC5jOjYyODpFWFBPUlRfU1lNQk9MX0dQTChjZHhfYnVzX3R5cGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxuZHJpdmVycy9jZHgvY2R4LmM6NjMwOmludCBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXG5kcml2ZXJzL2NkeC9jZHguYy02MzEtXHRcdFx0ICBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02MzQtXG5kcml2ZXJzL2NkeC9jZHguYzo2MzU6XHRjZHhfZHJpdmVyLVx1MDAzZWRyaXZlci5vd25lciA9IG93bmVyO1xuZHJpdmVycy9jZHgvY2R4LmM6NjM2Olx0Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2Y2R4X2J1c190eXBlO1xuZHJpdmVycy9jZHgvY2R4LmMtNjM3LVxuZHJpdmVycy9jZHgvY2R4LmM6NjM4Olx0ZXJyb3IgPSBkcml2ZXJfcmVnaXN0ZXIoXHUwMDI2Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjM5LVx0aWYgKGVycm9yKSB7XG5kcml2ZXJzL2NkeC9jZHguYy02NDAtXHRcdHByX2VycihcJiMzNDtkcml2ZXJfcmVnaXN0ZXIoKSBmYWlsZWQgZm9yICVzOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0MTpcdFx0ICAgICAgIGNkeF9kcml2ZXItXHUwMDNlZHJpdmVyLm5hbWUsIGVycm9yKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY0Mi1cdFx0cmV0dXJuIGVycm9yO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY0Ni19XG5kcml2ZXJzL2NkeC9jZHguYzo2NDc6RVhQT1JUX1NZTUJPTF9HUEwoX19jZHhfZHJpdmVyX3JlZ2lzdGVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY0OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjY0OTp2b2lkIGNkeF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcilcbmRyaXZlcnMvY2R4L2NkeC5jLTY1MC17XG5kcml2ZXJzL2NkeC9jZHguYzo2NTE6XHRkcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZjZHhfZHJpdmVyLVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTItfVxuZHJpdmVycy9jZHgvY2R4LmM6NjUzOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kcml2ZXJfdW5yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXG5kcml2ZXJzL2NkeC9jZHguYzo2NTU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTY1Ni17XG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY1OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjY1OTpcdGtmcmVlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjYwLX1cbmRyaXZlcnMvY2R4L2NkeC5jLTY2MS1cbmRyaXZlcnMvY2R4L2NkeC5jOjY2MjpzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGNkeF9waHlzX3ZtX29wcyA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jLTY2My0jaWZkZWYgQ09ORklHX0hBVkVfSU9SRU1BUF9QUk9UXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjY4LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6NjY5OiAqIGNkeF9tbWFwX3Jlc291cmNlIC0gbWFwIGEgQ0RYIHJlc291cmNlIGludG8gdXNlciBtZW1vcnkgc3BhY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTY3MC0gKiBAZnA6IEZpbGUgcG9pbnRlci4gTm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbiwgYnV0IHJlcXVpcmVkIHdoZXJlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjc5LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NjgwOnN0YXRpYyBpbnQgY2R4X21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbmRyaXZlcnMvY2R4L2NkeC5jLTY4MS1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XG5kcml2ZXJzL2NkeC9jZHguYzo2ODQ6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2Uoa29ial90b19kZXYoa29iaikpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjg1LVx0aW50IG51bSA9ICh1bnNpZ25lZCBsb25nKWF0dHItXHUwMDNlcHJpdmF0ZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02ODgtXG5kcml2ZXJzL2NkeC9jZHguYzo2ODk6XHRyZXMgPSBcdTAwMjZjZHhfZGV2LVx1MDAzZXJlc1tudW1dO1xuZHJpdmVycy9jZHgvY2R4LmMtNjkwLVx0aWYgKGlvbWVtX2lzX2V4Y2x1c2l2ZShyZXMtXHUwMDNlc3RhcnQpKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY5My1cdC8qIE1ha2Ugc3VyZSB0aGUgY2FsbGVyIGlzIG1hcHBpbmcgYSB2YWxpZCByZXNvdXJjZSBmb3IgdGhpcyBkZXZpY2UgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjY5NDpcdHNpemUgPSAoKGNkeF9yZXNvdXJjZV9sZW4oY2R4X2RldiwgbnVtKSAtIDEpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKSAmIzQzOyAxO1xuZHJpdmVycy9jZHgvY2R4LmMtNjk1LVx0aWYgKHZtYS1cdTAwM2V2bV9wZ29mZiAmIzQzOyB2bWFfcGFnZXModm1hKSBcdTAwM2Ugc2l6ZSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03MDItXHR2bWEtXHUwMDNldm1fcGFnZV9wcm90ID0gcGdwcm90X2RldmljZSh2bWEtXHUwMDNldm1fcGFnZV9wcm90KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjcwMzpcdHZtYS1cdTAwM2V2bV9wZ29mZiAmIzQzOz0gKGNkeF9yZXNvdXJjZV9zdGFydChjZHhfZGV2LCBudW0pIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjcwNDpcdHZtYS1cdTAwM2V2bV9vcHMgPSBcdTAwMjZjZHhfcGh5c192bV9vcHM7XG5kcml2ZXJzL2NkeC9jZHguYy03MDUtXHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVx1MDAzZXZtX3N0YXJ0LCB2bWEtXHUwMDNldm1fcGdvZmYsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzA5LVxuZHJpdmVycy9jZHgvY2R4LmM6NzEwOnN0YXRpYyB2b2lkIGNkeF9kZXN0cm95X3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKVxuZHJpdmVycy9jZHgvY2R4LmMtNzExLXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03MTctXG5kcml2ZXJzL2NkeC9jZHguYzo3MTg6XHRcdHJlc19hdHRyID0gY2R4X2Rldi1cdTAwM2VyZXNfYXR0cltpXTtcbmRyaXZlcnMvY2R4L2NkeC5jLTcxOS1cdFx0aWYgKHJlc19hdHRyKSB7XG5kcml2ZXJzL2NkeC9jZHguYzo3MjA6XHRcdFx0c3lzZnNfcmVtb3ZlX2Jpbl9maWxlKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTcyMS1cdFx0XHRrZnJlZShyZXNfYXR0cik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzI2LSNkZWZpbmUgQ0RYX1JFU19BVFRSX05BTUVfTEVOXHQxMFxuZHJpdmVycy9jZHgvY2R4LmM6NzI3OnN0YXRpYyBpbnQgY2R4X2NyZWF0ZV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcbmRyaXZlcnMvY2R4L2NkeC5jLTcyOC17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzQyLVxuZHJpdmVycy9jZHgvY2R4LmM6NzQzOlx0cmVzX2F0dHItXHUwMDNlbW1hcCA9IGNkeF9tbWFwX3Jlc291cmNlO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQ0LVx0cmVzX2F0dHItXHUwMDNlYXR0ci5uYW1lID0gcmVzX2F0dHJfbmFtZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTc0NS1cdHJlc19hdHRyLVx1MDAzZWF0dHIubW9kZSA9IDA2MDA7XG5kcml2ZXJzL2NkeC9jZHguYzo3NDY6XHRyZXNfYXR0ci1cdTAwM2VzaXplID0gY2R4X3Jlc291cmNlX2xlbihjZHhfZGV2LCBudW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQ3LVx0cmVzX2F0dHItXHUwMDNlcHJpdmF0ZSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpbnVtO1xuZHJpdmVycy9jZHgvY2R4LmM6NzQ4Olx0cmV0ID0gc3lzZnNfY3JlYXRlX2Jpbl9maWxlKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTc0OS1cdGlmIChyZXQpIHtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTEzNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBDRFggVkZJTyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cyDigJMgdGhhdCYjMzk7cyBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLCBhbmQgaXQmIzM5O3MgaGFuZGxpbmcgYHZmaW8tY2R4YC4gUmlnaHQsIGdvdCBpdC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzLCBob3cgZXhhY3RseSBhcmUgdGhlc2UgQ0RYIGNvbnRyb2xsZXJzIGJlaW5nIGJyb3VnaHQgdG8gbGlmZSB3aXRoaW4gdGhpcyB3aG9sZSBWRklPIHNldHVwPyBXaGVyZSYjMzk7cyB0aGUgaW5zdGFudGlhdGlvbiBoYXBwZW5pbmc/IEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2suIE15IGludHVpdGlvbiBzYXlzIHRoZSBpbXBsZW1lbnRhdGlvbiBtaWdodCBiZSBpbiBgZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuY2Ag4oCTIGxldCYjMzk7cyBjaGVjayB0aGVyZSwgc2VlIGlmIHdlIGNhbiBmaW5kIHRoZSBtYWdpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBQbGF0Zm9ybSBkcml2ZXIgZm9yIENEWCBidXMuXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCAqL1xuICAgNzpcdFxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3JwbXNnLmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZW1vdGVwcm9jLmhcdTAwM2VcbiAgMTA6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAgMTI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXHUwMDNlXG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTQ6XHRcbiAgMTU6XHQjaW5jbHVkZSBcJiMzNDsuLi9jZHguaFwmIzM0O1xuICAxNjpcdCNpbmNsdWRlIFwmIzM0O2NkeF9jb250cm9sbGVyLmhcJiMzNDtcbiAgMTc6XHQjaW5jbHVkZSBcJiMzNDttY2RpX2Z1bmN0aW9ucy5oXCYjMzQ7XG4gIDE4Olx0I2luY2x1ZGUgXCYjMzQ7bWNkaWQuaFwmIzM0O1xuICAxOTpcdFxuICAyMDpcdHN0YXRpYyBzdHJ1Y3QgcnBtc2dfZGV2aWNlX2lkIGNkeF9ycG1zZ19pZF90YWJsZVtdID0ge1xuICAyMTpcdFx0eyAubmFtZSA9IFwmIzM0O21jZGlfaXBjXCYjMzQ7IH0sXG4gIDIyOlx0XHR7IH0sXG4gIDIzOlx0fTtcbiAgMjQ6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHJwbXNnLCBjZHhfcnBtc2dfaWRfdGFibGUpO1xuICAyNTpcdFxuICAyNjpcdGludCBjZHhfcnBtc2dfc2VuZChzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpLFxuICAyNzpcdFx0XHQgICBjb25zdCBzdHJ1Y3QgY2R4X2R3b3JkICpoZHIsIHNpemVfdCBoZHJfbGVuLFxuICAyODpcdFx0XHQgICBjb25zdCBzdHJ1Y3QgY2R4X2R3b3JkICpzZHUsIHNpemVfdCBzZHVfbGVuKVxuICAyOTpcdHtcbiAgMzA6XHRcdHVuc2lnbmVkIGNoYXIgKnNlbmRfYnVmO1xuICAzMTpcdFx0aW50IHJldDtcbiAgMzI6XHRcbiAgMzM6XHRcdHNlbmRfYnVmID0ga3phbGxvYyhoZHJfbGVuICYjNDM7IHNkdV9sZW4sIEdGUF9LRVJORUwpO1xuICAzNDpcdFx0aWYgKCFzZW5kX2J1ZilcbiAgMzU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gIDM2Olx0XG4gIDM3Olx0XHRtZW1jcHkoc2VuZF9idWYsIGhkciwgaGRyX2xlbik7XG4gIDM4Olx0XHRtZW1jcHkoc2VuZF9idWYgJiM0MzsgaGRyX2xlbiwgc2R1LCBzZHVfbGVuKTtcbiAgMzk6XHRcbiAgNDA6XHRcdHJldCA9IHJwbXNnX3NlbmQoY2R4X21jZGktXHUwMDNlZXB0LCBzZW5kX2J1ZiwgaGRyX2xlbiAmIzQzOyBzZHVfbGVuKTtcbiAgNDE6XHRcdGtmcmVlKHNlbmRfYnVmKTtcbiAgNDI6XHRcbiAgNDM6XHRcdHJldHVybiByZXQ7XG4gIDQ0Olx0fVxuICA0NTpcdFxuICA0NjpcdHN0YXRpYyBpbnQgY2R4X2F0dGFjaF90b19ycHJvYyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuICA0NzpcdHtcbiAgNDg6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcjVfY29yZV9ub2RlO1xuICA0OTpcdFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcbiAgNTA6XHRcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4gIDUxOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4gIDUyOlx0XHRzdHJ1Y3QgcnByb2MgKnJwO1xuICA1MzpcdFx0aW50IHJldDtcbiAgNTQ6XHRcbiAgNTU6XHRcdGRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuICA1NjpcdFx0Y2R4X2MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiAgNTc6XHRcdGNkeF9tY2RpID0gY2R4X2MtXHUwMDNlcHJpdjtcbiAgNTg6XHRcbiAgNTk6XHRcdHI1X2NvcmVfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LVx1MDAzZW9mX25vZGUsIFwmIzM0O3hsbngscnByb2NcJiMzNDssIDApO1xuICA2MDpcdFx0aWYgKCFyNV9jb3JlX25vZGUpIHtcbiAgNjE6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7eGxueCxycHJvYzogaW52YWxpZCBwaGFuZGxlXFxuXCYjMzQ7KTtcbiAgNjI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gIDYzOlx0XHR9XG4gIDY0Olx0XG4gIDY1Olx0XHRycCA9IHJwcm9jX2dldF9ieV9waGFuZGxlKHI1X2NvcmVfbm9kZS1cdTAwM2VwaGFuZGxlKTtcbiAgNjY6XHRcdGlmICghcnApIHtcbiAgNjc6XHRcdFx0cmV0ID0gLUVQUk9CRV9ERUZFUjtcbiAgNjg6XHRcdFx0Z290byBwZGV2X2VycjtcbiAgNjk6XHRcdH1cbiAgNzA6XHRcbiAgNzE6XHRcdC8qIEF0dGFjaCB0byByZW1vdGUgcHJvY2Vzc29yICovXG4gIDcyOlx0XHRyZXQgPSBycHJvY19ib290KHJwKTtcbiAgNzM6XHRcdGlmIChyZXQpIHtcbiAgNzQ6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGF0dGFjaCB0byByZW1vdGUgcHJvY2Vzc29yXFxuXCYjMzQ7KTtcbiAgNzU6XHRcdFx0cnByb2NfcHV0KHJwKTtcbiAgNzY6XHRcdFx0Z290byBwZGV2X2VycjtcbiAgNzc6XHRcdH1cbiAgNzg6XHRcbiAgNzk6XHRcdGNkeF9tY2RpLVx1MDAzZXI1X3Jwcm9jID0gcnA7XG4gIDgwOlx0cGRldl9lcnI6XG4gIDgxOlx0XHRvZl9ub2RlX3B1dChyNV9jb3JlX25vZGUpO1xuICA4MjpcdFx0cmV0dXJuIHJldDtcbiAgODM6XHR9XG4gIDg0Olx0XG4gIDg1Olx0c3RhdGljIHZvaWQgY2R4X2RldGFjaF90b19yNShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuICA4NjpcdHtcbiAgODc6XHRcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XG4gIDg4Olx0XHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xuICA4OTpcdFxuICA5MDpcdFx0Y2R4X2MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiAgOTE6XHRcdGNkeF9tY2RpID0gY2R4X2MtXHUwMDNlcHJpdjtcbiAgOTI6XHRcbiAgOTM6XHRcdHJwcm9jX2RldGFjaChjZHhfbWNkaS1cdTAwM2VyNV9ycHJvYyk7XG4gIDk0Olx0XHRycHJvY19wdXQoY2R4X21jZGktXHUwMDNlcjVfcnByb2MpO1xuICA5NTpcdH1cbiAgOTY6XHRcbiAgOTc6XHRzdGF0aWMgaW50IGNkeF9ycG1zZ19jYihzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldiwgdm9pZCAqZGF0YSxcbiAgOTg6XHRcdFx0XHRpbnQgbGVuLCB2b2lkICpwcml2LCB1MzIgc3JjKVxuICA5OTpcdHtcbiAxMDA6XHRcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cnBkZXYtXHUwMDNlZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA4NTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIENEWCBSUE1TRyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGNkeF9ycG1zZ2AgYW5kIGl0IG5lZWRzIGEgc3BlY2lmaWMgcnBtc2cgY2hhbm5lbCwgJiMzNDttY2RpX2lwYywmIzM0OyBvciwgaWYgdGhhdCYjMzk7cyBub3QgYXZhaWxhYmxlLCBpdCYjMzk7cyBleHBlY3RpbmcgYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCBhIERldmljZSBUcmVlIG5vZGUgdGhhdCBtYXRjaGVzICYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeCYjMzQ7IGFuZCBhIHJlbW90ZSBwcm9jZXNzb3IgZGVzY3JpYmVkIGFzICYjMzQ7eGxueCxycHJvYy4mIzM0OyBSaWdodCwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYW4gQU1EIFZlcnNhbCBvciBYaWxpbnggVmVyc2FsIE5ldCBwbGF0Zm9ybSDigJMgdGhhdCBtYWtlcyBzZW5zZS4KCk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzLCBhcmUgdGhlcmUgKmFueSogb3RoZXIgQ0RYIGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb25zIGtpY2tpbmcgYXJvdW5kIGluIHRoZSBrZXJuZWw/IEkgbmVlZCB0byBxdWlja2x5IHNjYW4gYW5kIHNlZSBpZiBhbnl0aGluZyBlbHNlIGhhcyBiZWVuIHJlZ2lzdGVyZWQgdGhhdCBtaWdodCByZWxhdGUgdG8gdGhpcy4gQXJlIHRoZXJlIGFueSBleGlzdGluZyBkZXZpY2UgcmVnaXN0cmF0aW9ucyB0aGF0IGNvdWxkIGltcGFjdCB0aGlzIHBhcnRpY3VsYXIgc2V0dXA/IEdvdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbnRlbmRlcnMgb3IgY29uZmxpY3RzIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NkeF9yZWdpc3Rlcl9jb250cm9sbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NkeC5jPTg5Mj1FWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfYnVzX2FkZCwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg5My1cbmRyaXZlcnMvY2R4L2NkeC5jOjg5NDppbnQgY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG5kcml2ZXJzL2NkeC9jZHguYy04OTUte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTkxNi19XG5kcml2ZXJzL2NkeC9jZHguYzo5MTc6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy05MTgtXG4tLVxuZHJpdmVycy9jZHgvY2R4Lmg9MzE9c3RydWN0IGNkeF9kZXZfcGFyYW1zIHtcbi0tXG5kcml2ZXJzL2NkeC9jZHguaC00OS0vKipcbmRyaXZlcnMvY2R4L2NkeC5oOjUwOiAqIGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyIC0gUmVnaXN0ZXIgYSBDRFggY29udHJvbGxlciBhbmQgaXRzIHBvcnRzXG5kcml2ZXJzL2NkeC9jZHguaC01MS0gKlx0XHRvbiB0aGUgQ0RYIGJ1cy5cbi0tXG5kcml2ZXJzL2NkeC9jZHguaC01NS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5oOjU2OmludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XG5kcml2ZXJzL2NkeC9jZHguaC01Ny1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9NDY9dm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDgtXHQvKiBSZWdpc3RlciBDRFggY29udHJvbGxlciB3aXRoIENEWCBidXMgZHJpdmVyICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6NDk6XHRpZiAoY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoY2R4KSlcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01MC1cdFx0ZGV2X2VycihjZHgtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgQ0RYIGNvbnRyb2xsZXJcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTY1MwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIENvbnRyb2xsZXIgUmVnaXN0cmF0aW9uIGFuZCBEZXZpY2UgQWRkaXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGNhbGwgZ3JhcGggaXMgdGVsbGluZyBtZSBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcmAgZnVuY3Rpb24gaXMgb25seSBldmVyIGNhbGxlZCBmcm9tIHdpdGhpbiBgZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jYC4gVGhhdOKAmXMgZ29vZCB0byBrbm93LiBJdCBoZWxwcyB0byBuYXJyb3cgZG93biB0aGUgc2NvcGUgb2Ygd2hlcmUgY29udHJvbGxlciBpbml0aWFsaXphdGlvbiBvcmlnaW5hdGVzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgd2hpY2ggZnVuY3Rpb25zIHJlbHkgb24gdGhlIGBjZHhfZGV2aWNlX2FkZGAgZnVuY3Rpb24uICBVbmRlcnN0YW5kaW5nIHdoYXQgYWRkcyBkZXZpY2VzIHdpbGwgY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gZGV2aWNlIHJlZ2lzdHJhdGlvbiBhbmQgdGhlIGRldmljZXMgdGhlbXNlbHZlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGVzZSB0d28gY29tcG9uZW50cy4gS25vd2luZyB3aGljaCBtb2R1bGVzIGFkZCBkZXZpY2VzIHdpbGwgbWFrZSBteSBhbmFseXNpcyBtb3JlIGNvbXByZWhlbnNpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NkeF9kZXZpY2VfYWRkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NkeC5jPTcyNz1zdGF0aWMgaW50IGNkeF9jcmVhdGVfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzU4LVxuZHJpdmVycy9jZHgvY2R4LmM6NzU5OmludCBjZHhfZGV2aWNlX2FkZChzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgKmRldl9wYXJhbXMpXG5kcml2ZXJzL2NkeC9jZHguYy03NjAte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTg0NC19XG5kcml2ZXJzL2NkeC9jZHguYzo4NDU6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy04NDYtXG4tLVxuZHJpdmVycy9jZHgvY2R4Lmg9NjI9dm9pZCBjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguaC02NC0vKipcbmRyaXZlcnMvY2R4L2NkeC5oOjY1OiAqIGNkeF9kZXZpY2VfYWRkIC0gQWRkIGEgQ0RYIGRldmljZS4gVGhpcyBmdW5jdGlvbiBhZGRzIGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmgtNjYtICpcdFx0b24gdGhlIENEWCBidXMgYXMgcGVyIHRoZSBkZXZpY2UgcGFyYW1ldGVycyBwcm92aWRlZFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5oLTcyLSAqL1xuZHJpdmVycy9jZHgvY2R4Lmg6NzM6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcyk7XG5kcml2ZXJzL2NkeC9jZHguaC03NC1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9OTM9c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDEtXHRcdFx0LyogQWRkIHRoZSBkZXZpY2UgdG8gdGhlIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNDI6XHRcdFx0cmV0ID0gY2R4X2RldmljZV9hZGQoXHUwMDI2ZGV2X3BhcmFtcyk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQzLVx0XHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzNzkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0MTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIHRoZSBDRFggQnVzIGluIGEgU3RhbmRhcmQgUUVNVSBFbnZpcm9ubWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgQU1EL1hpbGlueCBWZXJzYWwgTmV0d29yayBwbGF0Zm9ybSBjb21wb3NhYmxlIGRldmljZSBidXMsIG9yIENEWCBidXMsIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBWRklPIGFuZCBRRU1VLiBUaGUgaW5zdHJ1Y3Rpb25zIHBvaW50IG91dCBjZXJ0YWluIGhhcmR3YXJlIOKAkyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnMgbGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFuZCBhbWRncHUg4oCTIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgYW5kIGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBPdXIgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGFjY2VzcyBvciBzaW11bGF0ZSB0aGUgQ0RYIGJ1cyBvciBWRklPIENEWCB3aXRoaW4gdGhhdCBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50IG9uIGFtZDY0IGFyY2hpdGVjdHVyZS4KCkZpcnN0LCBJJiMzOTttIGNoZWNraW5nIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIENEWCBidXMsIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2AuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IENEWCBidXMgZGV2aWNlcyBvbmx5IG1hdGVyaWFsaXplIHdoZW4gYSBDRFggY29udHJvbGxlciBpcyByZWdpc3RlcmVkLiBUaGUgcmVnaXN0cmF0aW9uLCBmcm9tIHdoYXQgSSBnYXRoZXIgaW4gYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmNgIGFuZCBgY2R4X2NvbnRyb2xsZXIuY2AsIGhpbmdlcyBvbiBiaW5kaW5nIHRvIGFuIHJwbXNnIGRldmljZSBuYW1lZCAmIzM0O21jZGlfaXBjJiMzNDsgb3IgYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCB0aGUgRFQgbm9kZSAmIzM0O3hsbngsdmVyc2FsLW5ldC1jZHgsJiMzNDsgd2hpY2ggY29ubmVjdHMgdG8gdGhlIHJlbW90ZSBDb3J0ZXgtUjUgcHJvY2Vzc29yJiMzOTtzIGZpcm13YXJlIChgcnByb2NgKS4KCk5vdywgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW06IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIG9uIGFtZDY0LCB0aGVyZSYjMzk7cyBubyBpbmhlcmVudCBDRFggY29udHJvbGxlciBoYXJkd2FyZSwgYW5kIGNyaXRpY2FsbHksIG5vIGVtdWxhdGVkIENEWCBjb250cm9sbGVyIG9yIGZpcm13YXJlLiBUaGlzIG1lYW5zIG5vIENEWCBidXMgZGV2aWNlcyBhcmUgcHJlc2VudC4gQ29uc2VxdWVudGx5LCB0aGUgYGNkeF9kZXZpY2VgIGNhbiYjMzk7dCBiZSBwcm9iZWQgYnkgYHZmaW8tY2R4YC4gU28sIHRoYXQgYHZmaW9fY2R4X21tYXAoKWAgZnVuY3Rpb24g4oCTIHdoZXJlIHRoZSBwYXRjaCBhZGRzIHRoZSBjaGVjayBgaWYgKCEodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9TSEFSRUQpKSByZXR1cm4gLUVJTlZBTDtgIOKAkyBpdCBzaW1wbHkgY2FuJiMzOTt0IGJlIGV4ZWN1dGVkIHVuZGVyIHRoZXNlIGNvbmRpdGlvbnMuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgSSB3YW50IHRvIGNvbmZpcm0g4oCTIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlJiMzOTtzIGFic29sdXRlbHkgbm8gdmlydHVhbCBDRFggZHJpdmVyLCBzeXNmcyBtb2NrLCBvciBhbnl0aGluZyBlbHNlIGx1cmtpbmcgaW4gdGhlIGtlcm5lbCB0cmVlIHRoYXQgY291bGQgKmFydGlmaWNpYWxseSogY3JlYXRlIGEgYGNkeF9kZXZpY2VgLiBMZXQgbWUgZG8gYSBxdWljayBzZWFyY2ggZm9yIGBjZHhfZGV2aWNlYCB0aHJvdWdob3V0IHRoZSBlbnRpcmUga2VybmVsIHNvdXJjZSB0byBydWxlIG91dCBhbnkgcG90ZW50aWFsIHN1cnByaXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4X2RldmljZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTU2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2NkeC9jZHguYz04NT1zdGF0aWMgY2hhciAqY29tcGF0X25vZGVfbmFtZSA9IFwmIzM0O3hsbngsdmVyc2FsLW5ldC1jZHhcJiMzNDs7XG5kcml2ZXJzL2NkeC9jZHguYy04Ni1cbmRyaXZlcnMvY2R4L2NkeC5jOjg3OnN0YXRpYyB2b2lkIGNkeF9kZXN0cm95X3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg4LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTk1PWludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTk2LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjk3Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy05OC1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzo5OTpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnID0gezB9O1xuZHJpdmVycy9jZHgvY2R4LmMtMTAwLVx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnY7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MTIwPUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTEyMi0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMzogKiByZXNldF9jZHhfZGV2aWNlIC0gUmVzZXQgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguYy0xMjQtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTEzMC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjEzMTpzdGF0aWMgaW50IHJlc2V0X2NkeF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxuZHJpdmVycy9jZHgvY2R4LmMtMTMyLXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz0xNDY9c3RhdGljIGludCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE0OC17XG5kcml2ZXJzL2NkeC9jZHguYzoxNDk6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MC1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTYyLVx0ICogRG8gbm90IGZyZWUgY2R4X2RldiBoZXJlIGFzIGl0IHdvdWxkIGJlIGZyZWVkIGluXG5kcml2ZXJzL2NkeC9jZHguYzoxNjM6XHQgKiBjZHhfZGV2aWNlX3JlbGVhc2UoKSBjYWxsZWQgZnJvbSB3aXRoaW4gcHV0X2RldmljZSgpLlxuZHJpdmVycy9jZHgvY2R4LmMtMTY0LVx0ICovXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MTcxPXN0YXRpYyB2b2lkIGNkeF91bnJlZ2lzdGVyX2RldmljZXMoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTgyLSAqXG5kcml2ZXJzL2NkeC9jZHguYzoxODM6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuZHJpdmVycy9jZHgvY2R4LmMtMTg0LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTg1OnN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKlxuZHJpdmVycy9jZHgvY2R4LmM6MTg2OmNkeF9tYXRjaF9vbmVfZGV2aWNlKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZCxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NzpcdFx0ICAgICBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMTg4LXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMDQtICogVXNlZCBieSBhIGRyaXZlciB0byBjaGVjayB3aGV0aGVyIGEgQ0RYIGRldmljZSBpcyBpbiBpdHMgbGlzdCBvZlxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxuZHJpdmVycy9jZHgvY2R4LmMtMjA2LSAqIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDctICpcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDktICovXG5kcml2ZXJzL2NkeC9jZHguYzoyMTA6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMTIte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjIyMzppbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMjQte1xuZHJpdmVycy9jZHgvY2R4LmMtMjI1LVx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjI3LVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTIzNz1FWFBPUlRfU1lNQk9MX0dQTChjZHhfc2V0X21hc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXG5kcml2ZXJzL2NkeC9jZHguYzoyMzk6aW50IGNkeF9jbGVhcl9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yNDAte1xuZHJpdmVycy9jZHgvY2R4LmMtMjQxLVx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjQzLVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTI2Mz1zdGF0aWMgaW50IGNkeF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjY0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjY2LVx0Y29uc3Qgc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRydik7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjc6XHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqZm91bmRfaWQgPSBOVUxMO1xuZHJpdmVycy9jZHgvY2R4LmM6MjY4Olx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkcztcbmRyaXZlcnMvY2R4L2NkeC5jLTI2OS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzAyPXN0YXRpYyBpbnQgY2R4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMDQtXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozMDU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNi1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzI4PXN0YXRpYyB2b2lkIGNkeF9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMzMC1cdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzMyLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTMzNz1zdGF0aWMgdm9pZCBjZHhfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMzOS1cdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzQxLVx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz0zNDk9c3RhdGljIGludCBjZHhfZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzUxLVx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzUyOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zNTMtXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTM4ND1maWVsZCMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4NS17XHRcXFxuZHJpdmVycy9jZHgvY2R4LmM6Mzg2Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XHRcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg3LVx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBmb3JtYXRfc3RyaW5nLCBjZHhfZGV2LVx1MDAzZWZpZWxkKTtcdFxcXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDIyPXN0YXRpYyBzc2l6ZV90IHJlc2V0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDI0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQyNTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDI2LVx0Ym9vbCB2YWw7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDM2LVx0XHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NDM3Olx0XHRyZXQgPSBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCByZXNldF9jZHhfZGV2aWNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQzOC1cdGVsc2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00NDU9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ0Ny17XG5kcml2ZXJzL2NkeC9jZHguYzo0NDg6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0OS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00NTY9c3RhdGljIHNzaXplX3QgZW5hYmxlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDU4LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1OTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDYwLVx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00ODM9c3RhdGljIHNzaXplX3QgZW5hYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuZHJpdmVycy9jZHgvY2R4LmMtNDg0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDg2LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ5MT1zdGF0aWMgdW1vZGVfdCBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00OTMtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xuZHJpdmVycy9jZHgvY2R4LmMtNDk1LVxuZHJpdmVycy9jZHgvY2R4LmM6NDk2Olx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5Ny1cdGlmICghY2R4X2Rldi1cdTAwM2Vpc19idXMpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NTAzPXN0YXRpYyB1bW9kZV90IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUwNS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xuZHJpdmVycy9jZHgvY2R4LmM6NTA2Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG5kcml2ZXJzL2NkeC9jZHguYy01MDctXG5kcml2ZXJzL2NkeC9jZHguYzo1MDg6XHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNTA5LVx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTU1MD1zdGF0aWMgaW50IGNkeF9kZWJ1Z19yZXNvdXJjZV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvY2R4L2NkeC5jLTU1MS17XG5kcml2ZXJzL2NkeC9jZHguYzo1NTI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU1My1cdGludCBpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTU2Mz1ERUZJTkVfU0hPV19BVFRSSUJVVEUoY2R4X2RlYnVnX3Jlc291cmNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU2NC1cbmRyaXZlcnMvY2R4L2NkeC5jOjU2NTpzdGF0aWMgdm9pZCBjZHhfZGV2aWNlX2RlYnVnZnNfaW5pdChzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Ni17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NjUzPUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kcml2ZXJfdW5yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXG5kcml2ZXJzL2NkeC9jZHguYzo2NTU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTY1Ni17XG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY1OC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz02ODA9c3RhdGljIGludCBjZHhfbW1hcF9yZXNvdXJjZShzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XG5kcml2ZXJzL2NkeC9jZHguYzo2ODQ6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2Uoa29ial90b19kZXYoa29iaikpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjg1LVx0aW50IG51bSA9ICh1bnNpZ25lZCBsb25nKWF0dHItXHUwMDNlcHJpdmF0ZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03MDktXG5kcml2ZXJzL2NkeC9jZHguYzo3MTA6c3RhdGljIHZvaWQgY2R4X2Rlc3Ryb3lfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXG5kcml2ZXJzL2NkeC9jZHguYy03MTEte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTcyNi0jZGVmaW5lIENEWF9SRVNfQVRUUl9OQU1FX0xFTlx0MTBcbmRyaXZlcnMvY2R4L2NkeC5jOjcyNzpzdGF0aWMgaW50IGNkeF9jcmVhdGVfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXG5kcml2ZXJzL2NkeC9jZHguYy03Mjgte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTc1OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjc1OTppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxuZHJpdmVycy9jZHgvY2R4LmMtNzYwLXtcbmRyaXZlcnMvY2R4L2NkeC5jLTc2MS1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gZGV2X3BhcmFtcy1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzo3NjI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcbmRyaXZlcnMvY2R4L2NkeC5jLTc2My1cdGludCByZXQsIGk7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzkyLVx0Y2R4X2Rldi1cdTAwM2VkZXYuZG1hX21hc2sgPSBcdTAwMjZjZHhfZGV2LVx1MDAzZWRtYV9tYXNrO1xuZHJpdmVycy9jZHgvY2R4LmM6NzkzOlx0Y2R4X2Rldi1cdTAwM2VkZXYucmVsZWFzZSA9IGNkeF9kZXZpY2VfcmVsZWFzZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTc5NC1cdGNkeF9kZXYtXHUwMDNlbXNpX3dyaXRlX3BlbmRpbmcgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy04MjktXG5kcml2ZXJzL2NkeC9jZHguYzo4MzA6XHRjZHhfZGV2aWNlX2RlYnVnZnNfaW5pdChjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTgzMS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy04MzgtXHQgKiBEbyBub3QgZnJlZSBjZHhfZGV2IGhlcmUgYXMgaXQgd291bGQgYmUgZnJlZWQgaW5cbmRyaXZlcnMvY2R4L2NkeC5jOjgzOTpcdCAqIGNkeF9kZXZpY2VfcmVsZWFzZSgpIGNhbGxlZCBmcm9tIHB1dF9kZXZpY2UoKS5cbmRyaXZlcnMvY2R4L2NkeC5jLTg0MC1cdCAqL1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTg0NC19XG5kcml2ZXJzL2NkeC9jZHguYzo4NDU6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy04NDYtXG5kcml2ZXJzL2NkeC9jZHguYz04NDc9c3RydWN0IGRldmljZSAqY2R4X2J1c19hZGQoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXG5kcml2ZXJzL2NkeC9jZHguYy04NDgte1xuZHJpdmVycy9jZHgvY2R4LmM6ODQ5Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG5kcml2ZXJzL2NkeC9jZHguYy04NTAtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTg2MC1cdGNkeF9kZXYtXHUwMDNlZGV2LmJ1cyA9IFx1MDAyNmNkeF9idXNfdHlwZTtcbmRyaXZlcnMvY2R4L2NkeC5jOjg2MTpcdGNkeF9kZXYtXHUwMDNlZGV2LnJlbGVhc2UgPSBjZHhfZGV2aWNlX3JlbGVhc2U7XG5kcml2ZXJzL2NkeC9jZHguYy04NjItXHRjZHhfZGV2LVx1MDAzZWlzX2J1cyA9IHRydWU7XG4tLVxuZHJpdmVycy9jZHgvY2R4Lmg9NjI9dm9pZCBjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguaC02NC0vKipcbmRyaXZlcnMvY2R4L2NkeC5oOjY1OiAqIGNkeF9kZXZpY2VfYWRkIC0gQWRkIGEgQ0RYIGRldmljZS4gVGhpcyBmdW5jdGlvbiBhZGRzIGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmgtNjYtICpcdFx0b24gdGhlIENEWCBidXMgYXMgcGVyIHRoZSBkZXZpY2UgcGFyYW1ldGVycyBwcm92aWRlZFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5oLTcyLSAqL1xuZHJpdmVycy9jZHgvY2R4Lmg6NzM6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcyk7XG5kcml2ZXJzL2NkeC9jZHguaC03NC1cbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9MTk9c3RhdGljIHZvaWQgY2R4X21zaV93cml0ZV9tc2coc3RydWN0IGlycV9kYXRhICppcnFfZGF0YSwgc3RydWN0IG1zaV9tc2cgKm1zZylcbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtMjEtXHRzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjID0gaXJxX2RhdGFfZ2V0X21zaV9kZXNjKGlycV9kYXRhKTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoyMjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShtc2lfZGVzYy1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY2R4X21zaS5jLTIzLVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0zMT1zdGF0aWMgdm9pZCBjZHhfbXNpX3dyaXRlX2lycV9sb2NrKHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGEpXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTMzLVx0c3RydWN0IG1zaV9kZXNjICptc2lfZGVzYyA9IGlycV9kYXRhX2dldF9tc2lfZGVzYyhpcnFfZGF0YSk7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MzQ6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UobXNpX2Rlc2MtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0zNS1cbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9Mzk9c3RhdGljIHZvaWQgY2R4X21zaV93cml0ZV9pcnFfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGEpXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTQxLVx0c3RydWN0IG1zaV9kZXNjICptc2lfZGVzYyA9IGlycV9kYXRhX2dldF9tc2lfZGVzYyhpcnFfZGF0YSk7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6NDI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UobXNpX2Rlc2MtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy00My1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6NDQ6XHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy00NS1cbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNjctXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6Njg6aW50IGNkeF9lbmFibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTY5LXtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy03MC1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6NzE6XHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy03Mi1cbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9ODI9RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2VuYWJsZV9tc2kpO1xuZHJpdmVycy9jZHgvY2R4X21zaS5jLTgzLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jOjg0OnZvaWQgY2R4X2Rpc2FibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTg1LXtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy04Ni1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6ODc6XHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy04OC1cbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9OTY9c3RhdGljIHN0cnVjdCBpcnFfY2hpcCBjZHhfbXNpX2lycV9jaGlwID0ge1xuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMDctLyogQ29udmVydCBhbiBtc2lfZGVzYyB0byBhIHVuaXF1ZSBpZGVudGlmaWVyIHdpdGhpbiB0aGUgZG9tYWluLiAqL1xuZHJpdmVycy9jZHgvY2R4X21zaS5jOjEwODpzdGF0aWMgaXJxX2h3X251bWJlcl90IGNkeF9kb21haW5fY2FsY19od2lycShzdHJ1Y3QgY2R4X2RldmljZSAqZGV2LFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTEwOS1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbXNpX2Rlc2MgKmRlc2MpXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTExND1zdGF0aWMgdm9pZCBjZHhfbXNpX3NldF9kZXNjKG1zaV9hbGxvY19pbmZvX3QgKmFyZywgc3RydWN0IG1zaV9kZXNjICpkZXNjKVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMTYtXHRhcmctXHUwMDNlZGVzYyA9IGRlc2M7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MTE3Olx0YXJnLVx1MDAzZWh3aXJxID0gY2R4X2RvbWFpbl9jYWxjX2h3aXJxKHRvX2NkeF9kZXZpY2UoZGVzYy1cdTAwM2VkZXYpLCBkZXNjKTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMTgtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0xMjA9c3RhdGljIGludCBjZHhfbXNpX3ByZXBhcmUoc3RydWN0IGlycV9kb21haW4gKm1zaV9kb21haW4sXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTEyNC1cdHN0cnVjdCBvZl9waGFuZGxlX2FyZ3MgbXNpX3NwZWMgPSB7fTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoxMjU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMjYtXHRzdHJ1Y3QgZGV2aWNlICpwYXJlbnQgPSBjZHhfZGV2LVx1MDAzZWNkeC1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTU5PXN0YXRpYyBpbnQgY2R4X2NvbmZpZ3VyZV9kZXZpY2Uoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNjAtXHRcdFx0XHR1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjYxOlx0XHRcdFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnICpkZXZfY29uZmlnKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTYyLXtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9OTM9c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDEtXHRcdFx0LyogQWRkIHRoZSBkZXZpY2UgdG8gdGhlIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNDI6XHRcdFx0cmV0ID0gY2R4X2RldmljZV9hZGQoXHUwMDI2ZGV2X3BhcmFtcyk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQzLVx0XHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYz0xNj1zdGF0aWMgaXJxcmV0dXJuX3QgdmZpb19jZHhfbXNpaGFuZGxlcihpbnQgaXJxX25vLCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMjMtXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoyNDpzdGF0aWMgaW50IHZmaW9fY2R4X21zaV9lbmFibGUoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiwgaW50IG52ZWMpXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0yNS17XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoyNjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVx1MDAzZXZkZXYuZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTI3LVx0c3RydWN0IGRldmljZSAqZGV2ID0gdmRldi1cdTAwM2V2ZGV2LmRldjtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy01Ny1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjU4OnN0YXRpYyBpbnQgdmZpb19jZHhfbXNpX3NldF92ZWN0b3Jfc2lnbmFsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy01OS1cdFx0XHRcdFx0ICBpbnQgdmVjdG9yLCBpbnQgZmQpXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMTAyLVxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM6MTAzOnN0YXRpYyBpbnQgdmZpb19jZHhfbXNpX3NldF9ibG9jayhzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMTA0LVx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgc3RhcnQsIHVuc2lnbmVkIGludCBjb3VudCxcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xMjUtXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxMjY6c3RhdGljIHZvaWQgdmZpb19jZHhfbXNpX2Rpc2FibGUoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTEyNy17XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxMjg6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cdTAwM2V2ZGV2LmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xMjktXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB2ZGV2LVx1MDAzZXZkZXYuZGV2O1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTE0My1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjE0NDpzdGF0aWMgaW50IHZmaW9fY2R4X3NldF9tc2lfdHJpZ2dlcihzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMTQ1LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBpbmRleCwgdW5zaWduZWQgaW50IHN0YXJ0LFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTE0OC17XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxNDk6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cdTAwM2V2ZGV2LmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xNTAtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xOTgtXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxOTk6aW50IHZmaW9fY2R4X3NldF9pcnFzX2lvY3RsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0yMDAtXHRcdFx0ICAgIHUzMiBmbGFncywgdW5zaWduZWQgaW50IGluZGV4LFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTIxMS0vKiBGcmVlIEFsbCBJUlFzIGZvciB0aGUgZ2l2ZW4gZGV2aWNlICovXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoyMTI6dm9pZCB2ZmlvX2NkeF9pcnFzX2NsZWFudXAoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTIxMy17XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MTE9c3RhdGljIGludCB2ZmlvX2NkeF9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTEyLXtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjEzOlx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNS1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yMD1zdGF0aWMgdm9pZCB2ZmlvX2NkeF9yZWxlYXNlX2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTIxLXtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjIyOlx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoyMzpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNC1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yOD1zdGF0aWMgaW50IHZmaW9fY2R4X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjkte1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzA6XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMxOlx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMyOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGNvcmVfdmRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzMtXHRpbnQgY291bnQgPSBjZHhfZGV2LVx1MDAzZXJlc19jb3VudDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz03ND1zdGF0aWMgdm9pZCB2ZmlvX2NkeF9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy03NS17XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzo3NjpcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6Nzc6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtNzgtXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9ODQ9c3RhdGljIGludCB2ZmlvX2NkeF9ibV9jdHJsKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCB1MzIgZmxhZ3MsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtODgtXHRcdG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX2J1c19tYXN0ZXIsIG9wKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjg5Olx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzo5MDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzo5MTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTkyLVx0c3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfYnVzX21hc3RlciBvcHM7XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MTE2PXN0YXRpYyBpbnQgdmZpb19jZHhfaW9jdGxfZmVhdHVyZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSwgdTMyIGZsYWdzLFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTEyNi1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjEyNzpzdGF0aWMgaW50IHZmaW9fY2R4X2lvY3RsX2dldF9pbmZvKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xMjgtXHRcdFx0XHQgICBzdHJ1Y3QgdmZpb19kZXZpY2VfaW5mbyBfX3VzZXIgKmFyZylcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xMzAtXHR1bnNpZ25lZCBsb25nIG1pbnN6ID0gb2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9fZGV2aWNlX2luZm8sIG51bV9pcnFzKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjEzMTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVx1MDAzZXZkZXYuZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTEzMi1cdHN0cnVjdCB2ZmlvX2RldmljZV9pbmZvIGluZm87XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MTQ5PXN0YXRpYyBpbnQgdmZpb19jZHhfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE1Mi17XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNTM6XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjE1NDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNTU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cdTAwM2V2ZGV2LmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNTYtXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTY2LVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTY3OnN0YXRpYyBpbnQgdmZpb19jZHhfaW9jdGxfZ2V0X2lycV9pbmZvKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNjgtXHRcdFx0XHQgICAgICAgc3RydWN0IHZmaW9faXJxX2luZm8gX191c2VyICphcmcpXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTcwLVx0dW5zaWduZWQgbG9uZyBtaW5zeiA9IG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX2lycV9pbmZvLCBjb3VudCk7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNzE6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cdTAwM2V2ZGV2LmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNzItXHRzdHJ1Y3QgdmZpb19pcnFfaW5mbyBpbmZvO1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE5MS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjE5MjpzdGF0aWMgaW50IHZmaW9fY2R4X2lvY3RsX3NldF9pcnFzKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xOTMtXHRcdFx0XHQgICBzdHJ1Y3QgdmZpb19pcnFfc2V0IF9fdXNlciAqYXJnKVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE5NS1cdHVuc2lnbmVkIGxvbmcgbWluc3ogPSBvZmZzZXRvZmVuZChzdHJ1Y3QgdmZpb19pcnFfc2V0LCBjb3VudCk7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxOTY6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cdTAwM2V2ZGV2LmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xOTctXHRzdHJ1Y3QgdmZpb19pcnFfc2V0IGhkcjtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yMjM9c3RhdGljIGxvbmcgdmZpb19jZHhfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjI1LXtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjIyNjpcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjI3Olx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTIyOC1cdHZvaWQgX191c2VyICp1YXJnID0gKHZvaWQgX191c2VyICopYXJnO1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI2ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjY2LXtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI2NzpcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjY4Olx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI2OTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI3MC1cdHVuc2lnbmVkIGludCBpbmRleDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19jZHhfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTMwOC1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMwOTpzdGF0aWMgaW50IHZmaW9fY2R4X3Byb2JlKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzEwLXtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMxMTpcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXY7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTItXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZjZHhfZGV2LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTQtXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozMTU6XHR2ZGV2ID0gdmZpb19hbGxvY19kZXZpY2UodmZpb19jZHhfZGV2aWNlLCB2ZGV2LCBkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTYtXHRcdFx0XHQgXHUwMDI2dmZpb19jZHhfb3BzKTtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMzEtXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozMzI6c3RhdGljIGludCB2ZmlvX2NkeF9yZW1vdmUoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMzMte1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzM0LVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozMzU6XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMzYtXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzQyLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCB2ZmlvX2NkeF90YWJsZVtdID0ge1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzQ0LVx0eyBDRFhfREVWSUNFX0RSSVZFUl9PVkVSUklERShDRFhfQU5ZX0lELCBDRFhfQU5ZX0lELFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTI2PXN0cnVjdCB2ZmlvX2NkeF9yZWdpb24ge1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTMyLVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6MzM6c3RydWN0IHZmaW9fY2R4X2RldmljZSB7XG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0zNC1cdHN0cnVjdCB2ZmlvX2RldmljZVx0dmRldjtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC00My0jaWZkZWYgQ09ORklHX0dFTkVSSUNfTVNJX0lSUVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NDQ6aW50IHZmaW9fY2R4X3NldF9pcnFzX2lvY3RsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC00NS1cdFx0XHQgICAgdTMyIGZsYWdzLCB1bnNpZ25lZCBpbnQgaW5kZXgsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtNDgtXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo0OTp2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTUwLSNlbHNlXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo1MTpzdGF0aWMgaW50IHZmaW9fY2R4X3NldF9pcnFzX2lvY3RsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC01Mi1cdFx0XHRcdCAgIHUzMiBmbGFncywgdW5zaWduZWQgaW50IGluZGV4LFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTU4LVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NTk6c3RhdGljIHZvaWQgdmZpb19jZHhfaXJxc19jbGVhbnVwKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC02MC17XG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTMxPXN0cnVjdCBjZHhfbXNpX2NvbmZpZyB7XG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTM2LVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjM3OnN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyB7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMzgtXHR1OCB0eXBlO1xuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD01Mj10eXBlZGVmIGludCAoKmNkeF9kZXZfY29uZmlndXJlX2NiKShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC01My1cdFx0XHRcdCAgICB1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjU0Olx0XHRcdFx0ICAgIHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyAqZGV2X2NvbmZpZyk7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtNTUtXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTYwLSAqXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6NjE6ICogVGhpcyBtYWNybyBpcyB1c2VkIHRvIGNyZWF0ZSBhIHN0cnVjdCBjZHhfZGV2aWNlX2lkIHRoYXQgbWF0Y2hlcyBhXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtNjItICogc3BlY2lmaWMgZGV2aWNlLiBUaGUgc3VidmVuZG9yIGFuZCBzdWJkZXZpY2UgZmllbGRzIHdpbGwgYmUgc2V0IHRvXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTc1LSAqXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6NzY6ICogVGhpcyBtYWNybyBpcyB1c2VkIHRvIGNyZWF0ZSBhIHN0cnVjdCBjZHhfZGV2aWNlX2lkIHRoYXQgbWF0Y2hlcyBvbmx5IGFcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC03Ny0gKiBkcml2ZXJfb3ZlcnJpZGUgZGV2aWNlLiBUaGUgc3VidmVuZG9yIGFuZCBzdWJkZXZpY2UgZmllbGRzIHdpbGwgYmUgc2V0IHRvXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTEwOD1zdHJ1Y3QgY2R4X2NvbnRyb2xsZXIge1xuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xMTctLyoqXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MTE4OiAqIHN0cnVjdCBjZHhfZGV2aWNlIC0gQ0RYIGRldmljZSBvYmplY3RcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xMTktICogQGRldjogTGludXggZHJpdmVyIG1vZGVsIGRldmljZSBvYmplY3Rcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTQyLSAqL1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjE0MzpzdHJ1Y3QgY2R4X2RldmljZSB7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTQ0LVx0c3RydWN0IGRldmljZSBkZXY7XG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE2OC1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxNjk6I2RlZmluZSB0b19jZHhfZGV2aWNlKF9kZXYpIFxcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MTcwOlx0Y29udGFpbmVyX29mKF9kZXYsIHN0cnVjdCBjZHhfZGV2aWNlLCBkZXYpXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTcxLVxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0xOTg9c3RydWN0IGNkeF9kcml2ZXIge1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE5OS1cdHN0cnVjdCBkZXZpY2VfZHJpdmVyIGRyaXZlcjtcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMDA6XHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqbWF0Y2hfaWRfdGFibGU7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjAxOlx0aW50ICgqcHJvYmUpKHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIwMjpcdGludCAoKnJlbW92ZSkoc3RydWN0IGNkeF9kZXZpY2UgKmRldik7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjAzOlx0dm9pZCAoKnNodXRkb3duKShzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KTtcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMDQ6XHR2b2lkICgqcmVzZXRfcHJlcGFyZSkoc3RydWN0IGNkeF9kZXZpY2UgKmRldik7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjA1Olx0dm9pZCAoKnJlc2V0X2RvbmUpKHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwNi1cdGJvb2wgZHJpdmVyX21hbmFnZWRfZG1hO1xuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0yNDE9aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KTtcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjQ4LSAqL1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjI0OTppbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpO1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTI1MC1cbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjU2LSAqL1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjI1NzppbnQgY2R4X2NsZWFyX21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2Rldik7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjU4LVxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDU2NQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipWRklPIENEWCBEcml2ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cyDigJMgc3BlY2lmaWNhbGx5IHRoZSBBTUQgVmVyc2FsIC8gWGlsaW54IFZlcnNhbCBOZXQgY29tcG9zYWJsZSBkZXZpY2VzIGJ1cy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpcyAqdGhpcyogdGhlIG9ubHkgZHJpdmVyIHVzaW5nIHRoZSBDRFggYnVzLCBvciBhcmUgdGhlcmUgb3RoZXJzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXh0ZW50IG9mIGl0cyB1c2FnZS4gTXkgaW5zdGluY3Qgc2F5cyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB3aXRoaW4gdGhlIFhpbGlueCBFdGhlcm5ldCBkcml2ZXJzIGZpcnN0LiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2AgYW5kIHNpbWlsYXIgZGlyZWN0b3JpZXMgdG8gZ2V0IGEgYnJvYWRlciBwaWN0dXJlIG9mIHBvdGVudGlhbCBDRFggYnVzIHV0aWxpemF0aW9uLiBUaGF0IHNob3VsZCBnaXZlIG1lIHNvbWUgZGlyZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHhfZHJpdmVyX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NkeC5jPTYyOD1FWFBPUlRfU1lNQk9MX0dQTChjZHhfYnVzX3R5cGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxuZHJpdmVycy9jZHgvY2R4LmM6NjMwOmludCBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXG5kcml2ZXJzL2NkeC9jZHguYy02MzEtXHRcdFx0ICBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxuZHJpdmVycy9jZHgvY2R4LmM6NjQ3OkVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MzUxPXN0YXRpYyBzdHJ1Y3QgY2R4X2RyaXZlciB2ZmlvX2NkeF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzYwLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzYxOm1vZHVsZV9kcml2ZXIodmZpb19jZHhfZHJpdmVyLCBjZHhfZHJpdmVyX3JlZ2lzdGVyLCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzYyLVxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0xOTg9c3RydWN0IGNkeF9kcml2ZXIge1xuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTItLyogTWFjcm8gdG8gYXZvaWQgaW5jbHVkZSBjaGFpbmluZyB0byBnZXQgVEhJU19NT0RVTEUgKi9cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMTM6I2RlZmluZSBjZHhfZHJpdmVyX3JlZ2lzdGVyKGRydikgXFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMTQ6XHRfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoZHJ2LCBUSElTX01PRFVMRSlcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTUtXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjE2LS8qKlxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIxNzogKiBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIgLSByZWdpc3RlcnMgYSBDRFggZGV2aWNlIGRyaXZlclxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIxOC0gKiBAY2R4X2RyaXZlcjogQ0RYIGRyaXZlciB0byByZWdpc3RlclxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMjItICovXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjIzOmludCBfX211c3RfY2hlY2sgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIyNC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NDM3CgkJCQkJCQlvdXRwdXQ6IDE0MgoJCQkJCQkJdGhvdWdodHM6IDgxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWRklPIENEWCBEcml2ZXIgUmVhY2hhYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhlIGB2ZmlvX2NkeF9kcml2ZXJgIGlzLCBxdWl0ZSBsaXRlcmFsbHksIHRoZSBvbmx5IGRyaXZlciBvbiB0aGUgQ0RYIGJ1cyBpbiB0aGUga2VybmVsLCBhbmQgdGhlIENEWCBidXMgY29udHJvbGxlciBpdHNlbGYgKmRlbWFuZHMqIHBoeXNpY2FsIEFNRCBWZXJzYWwgaGFyZHdhcmUuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIHBvaW50LiBJdCByZWxpZXMgb24gZWl0aGVyIHRoZSBycG1zZyBjb21tdW5pY2F0aW9uIHRvIHRoZSBSNSBmaXJtd2FyZSBvciBhIGRldmljZSB0cmVlIG5vZGUgKGB4bG54LHZlcnNhbC1uZXQtY2R4YCkuIFdpdGhvdXQgdGhhdCBob3N0IGNvbnRyb2xsZXIsIHdoaWNoICpyZXF1aXJlcyogdGhlIHBoeXNpY2FsIGhhcmR3YXJlLCBubyBDRFggZGV2aWNlcyBhcmUgZXZlciBlbnVtZXJhdGVkIG9yIGFkZGVkLiBgY2R4X2RldmljZV9hZGRgIGlzIG5ldmVyIGNhbGxlZC4gQ29uc2VxdWVudGx5LCBgdmZpb19jZHhfcHJvYmVgIGlzIG5ldmVyIGludm9rZWQuIFRoaXMgbWVhbnMgbm8gVkZJTyBDRFggZGV2aWNlIGlzIGNyZWF0ZWQsIGFuZCB1c2VyLXNwYWNlIGNhbiYjMzk7dCBwb3NzaWJseSBpbnRlcmFjdCB3aXRoIGFueSBgL2Rldi92ZmlvLy4uLmAgQ0RYIGRldmljZSB0aHJvdWdoIG9wZW4vbW1hcC4KCk5vdywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIHJldmlldyB0aGUgZG9jdW1lbnRhdGlvbiBvbiBoYXJkd2FyZSByZWFjaGFiaWxpdHkuIFNlY3Rpb24gMiBjbGVhcmx5IG91dGxpbmVzICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgYXMgaW5jbHVkaW5nIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIChsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWApIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiAmIzM0O1VucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyYjMzQ7IGFyZSBhbHNvIGRlZmluZWQsIGludm9sdmluZyBzY2VuYXJpb3MgbGlrZSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIGR1cmluZyBwaHlzaWNhbCBob3QtdW5wbHVnIG9yIG1hbnVhbCB1bmJpbmRpbmcuIFRoZSBjb3JlIHRha2Vhd2F5PyAqKlJlYWNoYWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBnYXRlKiouIEZ1enppbmcgaXMgb25seSBlZmZlY3RpdmUgb24gY29kZSBwYXRocyB0aGF0ICphY3R1YWxseSogZXhlY3V0ZSB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIHRob3NlIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMuIElmIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgYXMgZGVzY3JpYmVkLCBpdCAqbXVzdCBub3QqIGJlIGZ1enplZCwgcmVnYXJkbGVzcyBvZiBob3cgY29tcGxleCB0aGUgbG9naWMgb3IgYXNzZXJ0aW9ucyBtaWdodCBiZS4KCkxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IHRoZSBwYXRjaCwgdGhlIHRhcmdldCBmdW5jdGlvbiBpcyBgdmZpb19jZHhfbW1hcCgpYCBpbiBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLiBUaGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIGB2ZmlvLWNkeGAgZHJpdmVyLCByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgVkZJTyBwYXNzLXRocm91Z2ggb2YgQU1EIFZlcnNhbC1uZXQgQ0RYIGJ1cyBkZXZpY2VzLiBTaW5jZSBDRFggZGV2aWNlcyBpbnRyaW5zaWNhbGx5IGRlcGVuZCBvbiBBTUQgVmVyc2FsIGhhcmR3YXJlIGFuZCBhc3NvY2lhdGVkIGZpcm13YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgdGhpcyBtYWtlcyBgdmZpb19jZHhfbW1hcGAgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiB0aG9zZSBmdXp6aW5nIHNjZW5hcmlvcy4KClRoZXJlZm9yZSwgYWZ0ZXIgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC4KCk15IGFzc2Vzc21lbnQ6CgotICAgRW5hYmxlQ29uZmlnczogXFsgXQotICAgRm9jdXNTeW1ib2xzOiBcWyBdCi0gICBXb3J0aEZ1enppbmc6IGZhbHNlCi0gICBSZWFzb25pbmc6IENsZWFyIGFuZCBjb25jaXNlIGV4cGxhbmF0aW9uIG9mIHN0cnVjdHVyYWwgdW5yZWFjaGFiaWxpdHkgZHVlIHRvIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4KCk5vdywgbGV0JiMzOTtzIHByZXBhcmUgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHZmaW9fY2R4X21tYXAoKSBpbiBkcml2ZXJzL3ZmaW8vY2R4L21haW4uYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgVkZJTyBkcml2ZXIgZm9yIHRoZSBBTUQgVmVyc2FsIENEWCBidXMuIENEWCBkZXZpY2VzIGRlcGVuZCBvbiBBTUQgVmVyc2FsLW5ldCBwbGF0Zm9ybSBjb250cm9sbGVyIGhhcmR3YXJlIGFuZCByZW1vdGUgZmlybXdhcmUgKE1DREkvcnBtc2cpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCBubyBDRFggZGV2aWNlcyBjYW4gYmUgaW5zdGFudGlhdGVkIG9yIGJvdW5kIHRvIHZmaW8tY2R4LCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTM6NTEuNjU0NjAwODc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxOTg4MjM0MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxMzo1MS42NTQ2MDY1NTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjgxOTgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGExOWMxNTBmNTY4ZjhmNDVmMDEzNjU2ZjFmMGY5NTY0M2MxMTA3NzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBTZXAgNiAyMjoxMzo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXFxuaW5kZXggYjMxZWQ0YmU3YmRjMS4uNmQyMDhkYjA4OTZkNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xcbisrKyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXFxuQEAgLTI3MSw2ICsyNzEsOSBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuIFxcbiBcXHRpbmRleCA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAzZVxcdTAwM2UgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xcbiBcXG4rXFx0aWYgKCEodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1NIQVJFRCkpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0aWYgKGluZGV4IFxcdTAwM2U9IGNkeF9kZXYtXFx1MDAzZXJlc19jb3VudClcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxMzo1Mi4xMDgxMTI5NTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE4MTUzNDcwOTU0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGExOWMxNTBmNTY4ZjhmNDVmMDEzNjU2ZjFmMGY5NTY0M2MxMTA3NzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDIyOjEzOjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuaW5kZXggYjMxZWQ0YmU3YmRjMS4uNmQyMDhkYjA4OTZkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuQEAgLTI3MSw2ICsyNzEsOSBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gXG4gXHRpbmRleCA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwM2VcdTAwM2UgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xuIFxuK1x0aWYgKCEodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9TSEFSRUQpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdGlmIChpbmRleCBcdTAwM2U9IGNkeF9kZXYtXHUwMDNlcmVzX2NvdW50KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjEzOjUyLjEwODExNjQ0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY3MzgwMjEyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBWRklPIENEWCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gTXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gZXN0YWJsaXNoIGNvbnRleHQsIGFuZCBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoaXMgYHZmaW8vY2R4YCBwYXJ0LiBXaGF0IGV4YWN0bHkgKmlzKiBgZHJpdmVycy92ZmlvL2NkeGA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBvciB2aXJ0dWFsIGJ1cyBpdCdzIHRpZWQgdG8uIElzIHRoaXMgc29tZSBzcGVjaWFsaXplZCBoYXJkd2FyZSwgb3IgaXMgaXQgc29tZXRoaW5nIHRoYXQgY29tbW9ubHkgc2hvd3MgdXAgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCBhbmQgb24gc3RhbmRhcmQgYW1kNjQgc3lzdGVtcz8gS25vd2luZyB0aGlzIHdpbGwgc2lnbmlmaWNhbnRseSBpbmZsdWVuY2UgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcGF0Y2gncyBwb3RlbnRpYWwgaW1wYWN0IGFuZCByZWxldmFuY2UuXG5cblRvIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlLiBJJ2xsIHJlYWNoIGZvciBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHNvbWUgY2x1ZXMgYXMgdG8gdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZW5kZWQgdXNlIGNhc2UuIEknbGwgYWxzbyB3YW50IHRvIGxvb2sgYXQgYGRyaXZlcnMvY2R4L2AsIG9yIGFueXRoaW5nIGVsc2UgdGhhdCBzZWVtcyByZWxldmFudCB0byB0aGlzIFwiQ0RYXCIgdGhpbmcgdG8gZW5zdXJlIHRoYXQgSSBoYXZlIGFsbCByZWxldmFudCBjb21wb25lbnRzIG9mIHRoZSBzeXN0ZW0gaW4gdmlldy4gT25jZSBJIGNhbiBnZXQgYSBnb29kIHBpY3R1cmUgb2YgdGhlIGhhcmR3YXJlIGl0IGFwcGxpZXMgdG8gSSB3aWxsIGJlIGFibGUgdG8gZXZhbHVhdGUgdGhlIHBhdGNoIG11Y2ggbW9yZSBlZmZpY2llbnRseS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjEzOjU4Ljg0NjEzOTk4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg4NTI3NjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlZGSU9fQ0RYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9NYWtlZmlsZT0xNz1vYmotJChDT05GSUdfVkZJT19GU0xfTUMpICs9IGZzbC1tYy9cXG5kcml2ZXJzL3ZmaW8vTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX1ZGSU9fQ0RYKSArPSBjZHgvXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWctNy1cXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6ODpjb25maWcgVkZJT19DRFhcXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiVkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlLTUtXFxuZHJpdmVycy92ZmlvL2NkeC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19WRklPX0NEWCkgKz0gdmZpby1jZHgub1xcbmRyaXZlcnMvdmZpby9jZHgvTWFrZWZpbGUtNy1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI0ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI1MC1cXHRwZ29mZiA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAyNlxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI1MTpcXHRcXHQoKDFVIFxcdTAwM2NcXHUwMDNjIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKSkgLSAxKTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNTItXFx0YmFzZSA9IHBnb2ZmIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQ7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yNjQ9c3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjcxLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI3MjpcXHRpbmRleCA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAzZVxcdTAwM2UgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI3My1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTUtXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjojaWZuZGVmIFZGSU9fQ0RYX1BSSVZBVEVfSFxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjc6I2RlZmluZSBWRklPX0NEWF9QUklWQVRFX0hcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC04LVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtMTAtXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6MTE6I2RlZmluZSBWRklPX0NEWF9PRkZTRVRfU0hJRlQgICAgNDBcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMi1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaD0xMz1zdGF0aWMgaW5saW5lIHU2NCB2ZmlvX2NkeF9pbmRleF90b19vZmZzZXQodTMyIGluZGV4KVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTE0LXtcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDoxNTpcXHRyZXR1cm4gKCh1NjQpKGluZGV4KSBcXHUwMDNjXFx1MDAzYyBWRklPX0NEWF9PRkZTRVRfU0hJRlQpO1xcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTE2LX1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTU5PXN0YXRpYyB2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtNjMtXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjQ6I2VuZGlmIC8qIFZGSU9fQ0RYX1BSSVZBVEVfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNDowMC43MzQ2NzIzOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NjU3MzE5ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIGRlbHZlIGludG8gdGhpczpcblxuKipJbml0aWFsIENEWCBJbnZlc3RpZ2F0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIFRvIHJlYWxseSBnZXQgYSBncmlwIG9uIHdoYXQgdGhpcyBcIkNEWFwiIHRoaW5nIGlzLCBJIG5lZWQgdG8gc3RhcnQgd2l0aCB0aGUgc291cmNlIOKAkyBvciwgaW4gdGhpcyBjYXNlLCB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvY2R4L0tjb25maWdgLiBUaGVzZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgaGVhcnQgb2YgaG93IHRoZSBrZXJuZWwgaXMgY29uZmlndXJlZCwgd2hpY2ggaW5jbHVkZXMgdGhpcyBwb3RlbnRpYWxseSBuZXcgXCJDRFhcIiBmdW5jdGlvbi4gTG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzLCBkZXNjcmlwdGlvbnMsIGFuZCBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgaG9wZWZ1bGx5IHJldmVhbCB0aGUgcHVycG9zZSBhbmQgc2NvcGUgb2YgdGhpcyBmZWF0dXJlLiBUaW1lIHRvIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIGV4cG9zZSBhYm91dCB0aGUgdW5kZXJwaW5uaW5ncyBvZiBDRFguIEhvcGVmdWxseSwgdGhpcyB3aWxsIHBhaW50IGEgY2xlYXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA3OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjE0OjAyLjYwMDQwOTU5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgVkZJTyBDRFggY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgVkZJT19DRFhcXG4gICA5OlxcdFxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIENEWCBidXMgZGV2aWNlc1xcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gQ0RYX0JVU1xcbiAgMTE6XFx0XFx0c2VsZWN0IEVWRU5URkRcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgRHJpdmVyIHRvIGVuYWJsZSBWRklPIHN1cHBvcnQgZm9yIHRoZSBkZXZpY2VzIG9uIENEWCBidXMuXFxuICAxNDpcXHRcXHQgIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZSB1c2Ugb2YgQ0RYIGRldmljZXMgcHJlc2VudCBpblxcbiAgMTU6XFx0XFx0ICB0aGUgc3lzdGVtIHVzaW5nIHRoZSBWRklPIGZyYW1ld29yay5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNDowMi42MDA0Njg2MTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNTQwNDkyMDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIENEWCBCdXMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQ0RYIGJ1cyBpcyBjb25maWd1cmVkLiBMZXQncyBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGBkcml2ZXJzL2NkeC9LY29uZmlnYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIGJ1cyBkZWZpbml0aW9uIGFuZCBpdHMgZGVwZW5kZW5jaWVzIHJlc2lkZS4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGdldHRpbmcgYSBoYW5kbGUgb24gYENEWF9CVVNgIOKAkyB0aGF0J3MgdGhlIGNydWNpYWwgc3ltYm9sIEkgbmVlZCB0byB0cmFjZS4gSSdsbCBiZSBsb29raW5nIGZvciBpdHMgZGVmaW5pdGlvbiwgaXRzIGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWcgb3B0aW9ucywgYW5kIGFueSBkZWZhdWx0IHZhbHVlcy4gVW5kZXJzdGFuZGluZyBob3cgdGhhdCdzIGhhbmRsZWQgYXQgdGhlIEtjb25maWcgbGV2ZWwgaXMgdGhlIGdhdGV3YXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZW50aXJlIHN1YnN5c3RlbS4gRnJvbSB0aGVyZSwgSSBjYW4gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciBhbnkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIG1ha2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjE0OjA0LjE0MDk2Mzc0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTA4NDE5MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ0RYX0JVU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL01ha2VmaWxlPTE5ND1vYmotJChDT05GSUdfRFJNX0FDQ0VMKVxcdFxcdCs9IGFjY2VsL1xcbmRyaXZlcnMvTWFrZWZpbGU6MTk1Om9iai0kKENPTkZJR19DRFhfQlVTKVxcdFxcdCs9IGNkeC9cXG5kcml2ZXJzL01ha2VmaWxlLTE5Ni1vYmotJChDT05GSUdfRFBMTClcXHRcXHQrPSBkcGxsL1xcbi0tXFxuZHJpdmVycy9jZHgvS2NvbmZpZy03LVxcbmRyaXZlcnMvY2R4L0tjb25maWc6ODpjb25maWcgQ0RYX0JVU1xcbmRyaXZlcnMvY2R4L0tjb25maWctOS1cXHRib29sIFxcXCJDRFggQnVzIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTctXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU6ODpjY2ZsYWdzLXkgKz0gLURERUZBVUxUX1NZTUJPTF9OQU1FU1BBQ0U9J1xcXCJDRFhfQlVTXFxcIidcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS05LVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19DRFhfQlVTKSArPSBjZHgubyBjb250cm9sbGVyL1xcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTExLVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlPTEyPWlmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQ0RYX0JVUykgKz0gY2R4X21zaS5vXFxuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTQtZW5kaWZcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTc1OT1pbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzk4LVxcdGRldl9zZXRfbmFtZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LCBcXFwiY2R4LSUwMng6JTAyeFxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmM6Nzk5OlxcdFxcdCAgICAgKChjZHgtXFx1MDAzZWlkIFxcdTAwM2NcXHUwMDNjIENEWF9DT05UUk9MTEVSX0lEX1NISUZUKSB8IChjZHhfZGV2LVxcdTAwM2VidXNfbnVtIFxcdTAwMjYgQ0RYX0JVU19OVU1fTUFTSykpLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTgwMC1cXHRcXHQgICAgIGNkeF9kZXYtXFx1MDAzZWRldl9udW0pO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODQ0LX1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NDU6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04NDYtXFxuZHJpdmVycy9jZHgvY2R4LmM9ODQ3PXN0cnVjdCBkZXZpY2UgKmNkeF9idXNfYWRkKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODY1LVxcdGRldl9zZXRfbmFtZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LCBcXFwiY2R4LSUwMnhcXFwiLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjg2NjpcXHRcXHQgICAgICgoY2R4LVxcdTAwM2VpZCBcXHUwMDNjXFx1MDAzYyBDRFhfQ09OVFJPTExFUl9JRF9TSElGVCkgfCAoYnVzX251bSBcXHUwMDI2IENEWF9CVVNfTlVNX01BU0spKSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtODY3LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODkxLX1cXG5kcml2ZXJzL2NkeC9jZHguYzo4OTI6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2J1c19hZGQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04OTMtXFxuZHJpdmVycy9jZHgvY2R4LmM9ODk0PWludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxNi19XFxuZHJpdmVycy9jZHgvY2R4LmM6OTE3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTE4LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTkxOT12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy05MzEtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjkzMjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTMzLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTE2MD1zdHJ1Y3QgaXJxX2RvbWFpbiAqY2R4X21zaV9kb21haW5faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtMTkyLX1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MTkzOkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9tc2lfZG9tYWluX2luaXQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZy03LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZzo4OmlmIENEWF9CVVNcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWctOS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0yNTY9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoyNTc6TU9EVUxFX0lNUE9SVF9OUyhcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjQ3LS8qXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI0ODogKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI0OS0gKiBDRFggYnVzIGhvc3RzIGRldmljZXMgKGZ1bmN0aW9ucykgdGhhdCBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIENvbXBvc2FibGVcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNTYtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI1NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNcXHRcXHRcXHRcXHQweDFcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjU4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19NU0dTRVRcXHRcXHRcXHQweDFcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjU5LSN1bmRlZiBNQ19DTURfMHgxX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNjItXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2MzovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX0lOIG1zZ3JlcXVlc3QgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19JTl9MRU5cXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI2NS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjY2Oi8qIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjY4LS8qXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjcxLSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlRfT0ZTVFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjczOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfQlVTX0NPVU5UX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjc0LVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3Ni0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzc6ICogTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3OC0gKiBFbnVtZXJhdGUgQ0RYIGJ1cyBkZXZpY2VzIG9uIGEgZ2l2ZW4gYnVzXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3OS0gKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjgwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXFx0XFx0XFx0XFx0MHgyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19NU0dTRVRcXHRcXHRcXHQweDJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjgyLSN1bmRlZiBNQ19DTURfMHgyX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4NjovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU4gbXNncmVxdWVzdCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyODc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODgtLypcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjg5LSAqIEJ1cyBudW1iZXIgdG8gZW51bWVyYXRlLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xLCBhcyByZXR1cm5lZCBieVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTA6ICogTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjkxLSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fQlVTX09GU1RcXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVNfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTQtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5NTovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTctLypcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMDEtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UX09GU1RcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UX0xFTlxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzA0LVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMwNi0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMDc6ICogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzA4LSAqIFJldHVybnMgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGFuZCBNTUlPL01TSSByZXNvdXJjZSBkYXRhIGZvciBhIENEWCBkZXZpY2UuXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzE4LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR1xcdFxcdFxcdFxcdFxcdDB4M1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19NU0dTRVRcXHRcXHRcXHRcXHRcXHQweDNcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzIxLSN1bmRlZiBNQ19DTURfMHgzX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMjQtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyNTovKiBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTiBtc2dyZXF1ZXN0ICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0xFTlxcdFxcdFxcdFxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzI3LS8qIERldmljZSBidXMgbnVtYmVyLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0JVU19PRlNUXFx0XFx0XFx0XFx0MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVNfTEVOXFx0XFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzAtLyogRGV2aWNlIG51bWJlciByZWxhdGl2ZSB0byB0aGUgYnVzLCBpbiByYW5nZSAwIHRvIERFVklDRV9DT1VOVC0xIGZvciB0aGF0IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0VfT0ZTVFxcdFxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzMyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fREVWSUNFX0xFTlxcdFxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzMzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzQ6LyogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9MRU5cXHRcXHRcXHRcXHQ4OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzYtLyogMTYtYml0IFZlbmRvciBpZGVudGlmaWVyLCBjb21wbGlhbnQgd2l0aCBQQ0ktU0lHIFZlbmRvcklEIGFzc2lnbm1lbnQuICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WRU5ET1JfSURfT0ZTVFxcdFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzM4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1ZFTkRPUl9JRF9MRU5cXHRcXHRcXHQyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMzOS0vKiAxNi1iaXQgRGV2aWNlIElEIGFzc2lnbmVkIGJ5IHRoZSB2ZW5kb3IgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzQwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRF9PRlNUXFx0XFx0XFx0MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0lEX0xFTlxcdFxcdFxcdDJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQyLS8qXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQ1LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX1ZFTkRPUl9JRF9PRlNUXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX1ZFTkRPUl9JRF9MRU5cXHRcXHQyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM0OC0vKlxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM1MS0gKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzUyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19ERVZJQ0VfSURfT0ZTVFxcdFxcdDZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzUzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19ERVZJQ0VfSURfTEVOXFx0XFx0MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNTQtLyogMjQtYml0IERldmljZSBDbGFzcyBjb2RlLCBjb21wbGlhbnQgd2l0aCBQQ0ktU0lHIERldmljZSBDbGFzcyBjb2RlcyAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0NMQVNTX09GU1RcXHRcXHRcXHQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfQ0xBU1NfTEVOXFx0XFx0XFx0M1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNTctLyogOC1iaXQgdmVuZG9yLWFzc2lnbmVkIHJldmlzaW9uICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fT0ZTVFxcdFxcdDExXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fTEVOXFx0XFx0MVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjAtLyogUmVzZXJ2ZWQgKGFsaWdubWVudCkgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzYxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFU0VSVkVEX09GU1RcXHRcXHRcXHQxMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfUkVTRVJWRURfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjMtLyogTU1JTyByZWdpb24gMCBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX09GU1RcXHRcXHQxNlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTE9fT0ZTVFxcdFxcdDE2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MQk5cXHRcXHQxMjhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzcwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0hJX09GU1RcXHRcXHQyMFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEJOXFx0XFx0MTYwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM3NC0vKiBNTUlPIHJlZ2lvbiAwIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9PRlNUXFx0XFx0MjRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xPX09GU1RcXHRcXHQyNFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fTEJOXFx0XFx0MTkyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9ISV9PRlNUXFx0XFx0MjhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX0xCTlxcdFxcdDIyNFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zODUtLyogTU1JTyByZWdpb24gMSBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX09GU1RcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTE9fT0ZTVFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MQk5cXHRcXHQyNTZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0hJX09GU1RcXHRcXHQzNlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEJOXFx0XFx0Mjg4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM5Ni0vKiBNTUlPIHJlZ2lvbiAxIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9PRlNUXFx0XFx0NDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xPX09GU1RcXHRcXHQ0MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEJOXFx0XFx0MzIwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9ISV9PRlNUXFx0XFx0NDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xCTlxcdFxcdDM1MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MDctLyogTU1JTyByZWdpb24gMiBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX09GU1RcXHRcXHQ0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTE9fT0ZTVFxcdFxcdDQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19MQk5cXHRcXHQzODRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDEzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDE0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0hJX09GU1RcXHRcXHQ1MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfTEJOXFx0XFx0NDE2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQxOC0vKiBNTUlPIHJlZ2lvbiAyIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9PRlNUXFx0XFx0NTZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xPX09GU1RcXHRcXHQ1NlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEJOXFx0XFx0NDQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9ISV9PRlNUXFx0XFx0NjBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xCTlxcdFxcdDQ4MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mjg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MjktLyogTU1JTyByZWdpb24gMyBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDMwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX09GU1RcXHRcXHQ2NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTE9fT0ZTVFxcdFxcdDY0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MQk5cXHRcXHQ1MTJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0hJX09GU1RcXHRcXHQ2OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEJOXFx0XFx0NTQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ0MC0vKiBNTUlPIHJlZ2lvbiAzIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9PRlNUXFx0XFx0NzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xPX09GU1RcXHRcXHQ3MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fTEJOXFx0XFx0NTc2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9ISV9PRlNUXFx0XFx0NzZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX0xCTlxcdFxcdDYwOFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NTEtLyogTVNJIHZlY3RvciBjb3VudCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX09GU1RcXHRcXHRcXHQ4MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDU0LS8qIFJlcXVlc3RlciBJRCB1c2VkIGJ5IGRldmljZSAoU01NVSBTdHJlYW1JRCwgR0lDIElUUyBEZXZpY2VJRCkgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9PRlNUXFx0XFx0XFx0ODRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9MRU5cXHRcXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ1Ny1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU4Oi8qIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMiBtc2dyZXNwb25zZSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOXFx0XFx0XFx0XFx0OTJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDYwLS8qIFJlcXVlc3RlciBJRCB1c2VkIGJ5IGRldmljZSBmb3IgR0lDIElUUyBEZXZpY2VJRCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NjE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfUkVRVUVTVEVSX0RFVklDRV9JRF9PRlNUXFx0ODhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDYyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX1JFUVVFU1RFUl9ERVZJQ0VfSURfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NjMtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDY1LS8qXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ2NjogKiBNQ19DTURfQ0RYX0JVU19ET1dOXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ2Ny0gKiBBc3NlcnRpbmcgcmVzZXQgb24gdGhlIENEWCBidXMgY2F1c2VzIGFsbCBkZXZpY2VzIG9uIHRoZSBidXMgdG8gYmUgcXVpZXNjZWQuXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDc3LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Nzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOXFx0XFx0XFx0XFx0XFx0MHg0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ3OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fTVNHU0VUXFx0XFx0XFx0MHg0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4MC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDgxOi8qIE1DX0NNRF9DRFhfQlVTX0RPV05fSU4gbXNncmVxdWVzdCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDgzLS8qIEJ1cyBudW1iZXIgdG8gcHV0IGluIHJlc2V0LCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX09GU1RcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDg2LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODctLypcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDg4OiAqIE1DX0NNRF9DRFhfQlVTX0RPV05fT1VUIG1zZ3Jlc3BvbnNlOiBUaGUgYnVzIGlzIHF1aWVzY2VkLCBubyBmdXJ0aGVyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4OS0gKiB1cHN0cmVhbSB0cmFmZmljIGZvciBkZXZpY2VzIG9uIHRoaXMgYnVzLlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00OTAtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ5MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fT1VUX0xFTlxcdFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDkyLVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ5NC0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0OTU6ICogTUNfQ01EX0NEWF9CVVNfVVBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDk2LSAqIEFmdGVyIGJ1cyByZXNldCBpcyBkZS1hc3NlcnRlZCwgZGV2aWNlcyBhcmUgaW4gYSBzdGF0ZSB3aGljaCBpcyBmdW5jdGlvbmFsbHlcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MDUtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQXFx0XFx0XFx0XFx0XFx0MHg1XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX01TR1NFVFxcdFxcdFxcdDB4NVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MDgtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwOTovKiBNQ19DTURfQ0RYX0JVU19VUF9JTiBtc2dyZXF1ZXN0ICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNTExLS8qIEJ1cyBudW1iZXIgdG8gdGFrZSBvdXQgb2YgcmVzZXQsIGluIHJhbmdlIDAgdG8gQlVTX0NPVU5ULTEgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTEyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfSU5fQlVTX09GU1RcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0JVU19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTE1Oi8qIE1DX0NNRF9DRFhfQlVTX1VQX09VVCBtc2dyZXNwb25zZTogVGhlIGJ1cyBjYW4gbm93IGJlIGVudW1lcmF0ZWQuICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX09VVF9MRU5cXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0xMD1pbnQgY2R4X21jZGlfZ2V0X251bV9idXNlcyhzdHJ1Y3QgY2R4X21jZGkgKmNkeClcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTEte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjpcXHRNQ0RJX0RFQ0xBUkVfQlVGKG91dGJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTMtXFx0c2l6ZV90IG91dGxlbjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTY6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFUywgTlVMTCwgMCxcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTctXFx0XFx0XFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXFx1MDAyNm91dGxlbik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjIxOlxcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfTEVOKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yMi1cXHRcXHRyZXR1cm4gLUVJTztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjMtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjI0OlxcdHJldHVybiBNQ0RJX0RXT1JEKG91dGJ1ZiwgQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yNS19XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9Mjc9aW50IGNkeF9tY2RpX2dldF9udW1fZGV2cyhzdHJ1Y3QgY2R4X21jZGkgKmNkeCwgaW50IGJ1c19udW0pXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTI4LXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6Mjk6XFx0TUNESV9ERUNMQVJFX0JVRihvdXRidWYsIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzA6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0xFTik7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTMxLVxcdHNpemVfdCBvdXRsZW47XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzMtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjM0OlxcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0zNS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzY6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzctXFx0XFx0XFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXFx1MDAyNm91dGxlbik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjQxOlxcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9MRU4pXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTQyLVxcdFxcdHJldHVybiAtRUlPO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy00My1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NDQ6XFx0cmV0dXJuIE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDUtfVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTQ3PWludCBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZyhzdHJ1Y3QgY2R4X21jZGkgKmNkeCxcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy01MC17XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjUxOlxcdE1DRElfREVDTEFSRV9CVUYob3V0YnVmLCBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NTI6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNTMtXFx0c3RydWN0IHJlc291cmNlICpyZXMgPSBcXHUwMDI2ZGV2X3BhcmFtcy1cXHUwMDNlcmVzWzBdO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTU3LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo1ODpcXHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo1OTpcXHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0UsIGRldl9udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02MC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjE6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUcsIGluYnVmLCBzaXplb2YoaW5idWYpLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Mi1cXHRcXHRcXHQgICBvdXRidWYsIHNpemVvZihvdXRidWYpLCBcXHUwMDI2b3V0bGVuKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02NS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjY6XFx0aWYgKG91dGxlbiAhPSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Ny1cXHRcXHRyZXR1cm4gLUVJTztcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03MS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NzI6XFx0cmVxX2lkID0gTUNESV9EV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRCk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTczLVxcdGRldl9wYXJhbXMtXFx1MDAzZXJlcV9pZCA9IHJlcV9pZDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03NS1cXHRkZXZfcGFyYW1zLVxcdTAwM2Vtc2lfZGV2X2lkID0gTUNESV9EV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjc2OlxcdFxcdFxcdFxcdFxcdCAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9SRVFVRVNURVJfREVWSUNFX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNzctXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTc4LVxcdGRldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudCA9IDA7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjc5OlxcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkUpICE9IDApIHtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODAtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo4MTpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0UpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy04Mi1cXHRcXHRyZXNbZGV2X3BhcmFtcy1cXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo4MzpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODQtXFx0XFx0XFx0XFx0ICAgTUNESV9RV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjg1OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFKSAtIDE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTg2LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODktXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjkwOlxcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkUpICE9IDApIHtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTEtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5MjpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy05My1cXHRcXHRyZXNbZGV2X3BhcmFtcy1cXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5NDpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTUtXFx0XFx0XFx0XFx0ICAgTUNESV9RV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjk2OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFKSAtIDE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTk3LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTAwLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDE6XFx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRSkgIT0gMCkge1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMDItXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDM6XFx0XFx0XFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA0LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmVuZCA9XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEwNTpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA2LVxcdFxcdFxcdFxcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDc6XFx0XFx0XFx0XFx0XFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkUpIC0gMTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA4LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTExLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTI6XFx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRSkgIT0gMCkge1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTMtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTQ6XFx0XFx0XFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE1LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmVuZCA9XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjExNjpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE3LVxcdFxcdFxcdFxcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTg6XFx0XFx0XFx0XFx0XFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkUpIC0gMTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE5LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTIyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjM6XFx0ZGV2X3BhcmFtcy1cXHUwMDNldmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVkVORE9SX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI0OlxcdGRldl9wYXJhbXMtXFx1MDAzZWRldmljZSA9IE1DRElfV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRCk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEyNS1cXHRkZXZfcGFyYW1zLVxcdTAwM2VzdWJzeXNfdmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZixcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI2OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19WRU5ET1JfSUQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMjctXFx0ZGV2X3BhcmFtcy1cXHUwMDNlc3Vic3lzX2RldmljZSA9IE1DRElfV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEyODpcXHRcXHRcXHRcXHRcXHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfREVWSUNFX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTI5LVxcdGRldl9wYXJhbXMtXFx1MDAzZWNsYXNzID0gTUNESV9EV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzMDpcXHRcXHRcXHRcXHQgICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0NMQVNTKSBcXHUwMDI2IDB4RkZGRkZGO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzE6XFx0ZGV2X3BhcmFtcy1cXHUwMDNlcmV2aXNpb24gPSBNQ0RJX0JZVEUob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT04pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzI6XFx0ZGV2X3BhcmFtcy1cXHUwMDNlbnVtX21zaSA9IE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NU0lfQ09VTlQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzMtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9MTM3PWludCBjZHhfbWNkaV9idXNfZW5hYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzgte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzk6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfVVBfSU5fTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTQwLVxcdGludCByZXQ7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE0MS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTQyOlxcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX1VQX0lOX0JVUywgYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjE0MzpcXHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19VUCwgaW5idWYsIHNpemVvZihpbmJ1ZiksXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE0NC1cXHRcXHRcXHQgICBOVUxMLCAwLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0xNDk9aW50IGNkeF9tY2RpX2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTAte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTE6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRE9XTl9JTl9MRU4pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTItXFx0aW50IHJldDtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTQ6XFx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfRE9XTl9JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTU6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRE9XTiwgaW5idWYsIHNpemVvZihpbmJ1ZiksXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE1Ni1cXHRcXHRcXHQgICBOVUxMLCAwLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jPTE2MTU9dTMyIHI2MDBfZ3B1X2NoZWNrX3NvZnRfcmVzZXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYy0xNjY3LVxcdGlmIChHXzAwMEU1MF9NQ0JfQlVTWSh0bXApIHwgR18wMDBFNTBfTUNEWl9CVVNZKHRtcCkgfFxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jOjE2Njg6XFx0ICAgIEdfMDAwRTUwX01DRFlfQlVTWSh0bXApIHwgR18wMDBFNTBfTUNEWF9CVVNZKHRtcCkgfFxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jLTE2NjktXFx0ICAgIEdfMDAwRTUwX01DRFdfQlVTWSh0bXApKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oLTE4MzMtI2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFlfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDExKSBcXHUwMDI2IDEpXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oOjE4MzQ6I2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFhfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDEyKSBcXHUwMDI2IDEpXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oLTE4MzUtI2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFdfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDEzKSBcXHUwMDI2IDEpXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11LmM9MTg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKiBjb25zdCBpb21tdV9idXNlc1tdID0ge1xcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdS5jLTE5OS0jZW5kaWZcXG5kcml2ZXJzL2lvbW11L2lvbW11LmM6MjAwOiNpZmRlZiBDT05GSUdfQ0RYX0JVU1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYy0yMDEtXFx0XFx1MDAyNmNkeF9idXNfdHlwZSxcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZz04PWNvbmZpZyBWRklPX0NEWFxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIENEWCBidXMgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6MTA6XFx0ZGVwZW5kcyBvbiBDRFhfQlVTXFxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTExLVxcdHNlbGVjdCBFVkVOVEZEXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0zNjQ9TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJWRklPIGZvciBDRFggZGV2aWNlcyAtIFVzZXIgTGV2ZWwgbWV0YS1kcml2ZXJcXFwiKTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozNjU6TU9EVUxFX0lNUE9SVF9OUyhcXFwiQ0RYX0JVU1xcXCIpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTgtXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjk6I2lmbmRlZiBfQ0RYX0JVU19IX1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxMDojZGVmaW5lIF9DRFhfQlVTX0hfXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTExLVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE4LSNkZWZpbmUgQ0RYX0NPTlRST0xMRVJfSURfU0hJRlQgNFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxOTojZGVmaW5lIENEWF9CVVNfTlVNX01BU0sgMHhGXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTI4MT1zdGF0aWMgaW5saW5lIHZvaWQgY2R4X2Rpc2FibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTI4Ni1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6Mjg3OiNlbmRpZiAvKiBfQ0RYX0JVU19IXyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNDowNi4wOTE4MTA1NjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTczMzk2MTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiBkcml2ZXIgZGV2ZWxvcG1lbnQ6XG5cbioqSW5pdGlhbCBJbnZlc3RpZ2F0aW9uIGludG8gQ0RYIENvbnRyb2xsZXIvRGV2aWNlIERyaXZlcnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHBpbnBvaW50IHdoaWNoIGRyaXZlcihzKSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBDRFggY29udHJvbGxlciBvciBmb3IgY3JlYXRpbmcgQ0RYIGRldmljZXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdGFyZ2V0IHRoZSBvYnZpb3VzLiBJJ2xsIG5lZWQgdG8gc3RhcnQgYnkgbG9va2luZyBmb3IgdGhlIGNvZGUgdGhhdCByZWdpc3RlcnMgdGhlIENEWCBjb250cm9sbGVyIGl0c2VsZi4gV2hlcmUgd291bGQgdGhhdCBsaXZlPyBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgZHJpdmVycy9jZHgvY29udHJvbGxlci9gIGRpcmVjdG9yeS4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgeW91J2QgZmluZCB0aGUgY29yZSBsb2dpYyBmb3IgdGhlIGRldmljZSdzIGhhcmR3YXJlIGludGVyZmFjZS5cblxuSG93ZXZlciwgSSdtIG5vdCBnb2luZyB0byBsaW1pdCBteXNlbGYgdG8gdGhhdCBwYXRoIGltbWVkaWF0ZWx5LiBHaXZlbiB0aGUgbW9kdWxhciBuYXR1cmUgb2YgbWFueSBjb250ZW1wb3JhcnkgZHJpdmVyIGFyY2hpdGVjdHVyZXMsIEkgbmVlZCB0byBrZWVwIG15IHNlYXJjaCBicm9hZCwgYXQgbGVhc3QgaW5pdGlhbGx5LiBJJ2xsIGFsc28gZXhwYW5kIG15IHNlYXJjaCB0byBpbmNsdWRlIG90aGVyIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvY2R4YCBkaXJlY3RvcnkuIFRoZXJlIG1pZ2h0IGJlIHNvbWUgaGVscGVyIG9yIHV0aWxpdHkgZmlsZXMgY29udGFpbmluZyBpbml0aWFsaXphdGlvbiwgcHJvYmUsIG9yIHJlbW92ZSBmdW5jdGlvbnMgb3IgYXNzb2NpYXRlZCBkZXZpY2Ugc3RydWN0dXJlcy4gSSdsbCBuZWVkIHRvIHVzZSBteSBwcmVmZXJyZWQgdG9vbGluZyAoZ3JlcCwgZmluZCwgZXRjLikgdG8gcXVpY2tseSBzZWFyY2ggZm9yIGtleSBpZGVudGlmaWVycyBsaWtlIFwiY2R4LFwiIFwiQ0RYLFwiIG9yIHNwZWNpZmljIGZ1bmN0aW9uIG5hbWVzL3N0cnVjdCBuYW1lcyBsaWtlbHkgcmVsYXRlZCB0byBkcml2ZXIgcmVnaXN0cmF0aW9uLCBwcm9iZSwgb3IgZGV2aWNlIGNyZWF0aW9uLiBJJ2xsIGFsc28ga2VlcCBpbiBtaW5kIGNvbW1vbiBrZXJuZWwgY29kaW5nIHByYWN0aWNlcywgc3VjaCBhcyBsb29raW5nIGZvciBtb2R1bGVfaW5pdCBvciBkZXZpY2VfZHJpdmVyIHN0cnVjdHVyZXMuIFRoaXMgYXBwcm9hY2ggZ2l2ZXMgbWUgdGhlIGJlc3QgY2hhbmNlIG9mIHF1aWNrbHkgaWRlbnRpZnlpbmcgdGhlIHJlc3BvbnNpYmxlIGRyaXZlciBhbmQgdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCBzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTI3LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTQ6MDguNjY1MjA5NDM3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL2NkeFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJjZHguY1wiLFxuICAgIFwiY2R4LmhcIixcbiAgICBcImNkeF9tc2kuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJjb250cm9sbGVyXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTQ6MDguNjY1Mjk2NDQ4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyMjcxNjQyNDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgZHJpdmVycy9jZHgvY29udHJvbGxlcmAgRGlyZWN0b3J5KipcblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgd2hhdCdzIGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyYC4gSSdtIGFzc3VtaW5nLCBnaXZlbiB0aGUgcGF0aCwgdGhhdCB0aGlzIGlzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgY29udHJvbGxlci1zcGVjaWZpYyBjb2RlIGZvciB0aGUgQ0RYIHN1YnN5c3RlbS4gSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllcnMgYXJlIG9yZ2FuaXplZCBoZXJlLiBJcyBpdCBhIG1vbm9saXRoaWMgY29udHJvbGxlciBpbXBsZW1lbnRhdGlvbiwgb3IgaXMgaXQgYnJva2VuIGRvd24gaW50byBmdW5jdGlvbmFsIHVuaXRzIOKAkyBwZXJoYXBzIERNQSBjb250cm9sLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIHJlZ2lzdGVyIGFjY2VzcywgYW5kIHBvd2VyIG1hbmFnZW1lbnQ/IFdoYXQgaW50ZXJmYWNlcyBhcmUgZXhwb3NlZCB0byB0aGUgdXBwZXIgbGF5ZXJzIG9mIHRoZSBDRFggZHJpdmVyPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgZGVzaWduIHBhdHRlcm5zIGJlaW5nIGVtcGxveWVkLCBzdWNoIGFzIGEgc3RhdGUgbWFjaGluZSBmb3IgY29tbWFuZCBwcm9jZXNzaW5nIG9yIGEgbGF5ZXJlZCBkcml2ZXIgYXJjaGl0ZWN0dXJlPyBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjb25kaXRpb25zLCByZXRyaWVzLCBhbmQgYW55IGRldmljZS1zcGVjaWZpYyBxdWlya3MuIEl0IHdpbGwgYWxzbyBiZSBpbnRlcmVzdGluZyB0byB1bmRlcnN0YW5kIGhvdyBpbnRlcnJ1cHRzIGFyZSBjb25maWd1cmVkIGFuZCBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgdGhlIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmVzLiBUaGlzIGFsc28gd2lsbCBoYXZlIGltcGxpY2F0aW9ucyBvbiBob3cgdGhlIGRldmljZSBpcyBjb25maWd1cmVkIGFuZCBpbml0aWFsaXplZC4gRmluYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2Ygb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMg4oCTIGNhY2hpbmcsIGJ1ZmZlcmluZywgb3IgYW55IHRlY2huaXF1ZXMgZW1wbG95ZWQgdG8gbWF4aW1pemUgdGhyb3VnaHB1dCBvciBtaW5pbWl6ZSBsYXRlbmN5LiBMZXQncyBzZWUgaWYgdGhpcyBpcyBhbGwgY2xlYW4gYW5kIG1haW50YWluYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTAuOTM2OTQyNDQ1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL2NkeC9jb250cm9sbGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNkeF9jb250cm9sbGVyLmNcIixcbiAgICBcImNkeF9jb250cm9sbGVyLmhcIixcbiAgICBcImNkeF9ycG1zZy5jXCIsXG4gICAgXCJtY19jZHhfcGNvbC5oXCIsXG4gICAgXCJtY2RpLmNcIixcbiAgICBcIm1jZGlfZnVuY3Rpb25zLmNcIixcbiAgICBcIm1jZGlfZnVuY3Rpb25zLmhcIixcbiAgICBcIm1jZGlkLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTAuOTM3MDA3NDk1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3MjE5MTQ3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENEWCBDb250cm9sbGVyIGFuZCBSUE1TRyBJbnRlcmFjdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBDRFggc3R1ZmYgaXMgd29ya2luZywgc28gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AgYW5kIGBjZHhfcnBtc2cuY2AuIFRoZSBjb250cm9sbGVyIGZpbGUgaXMgb2J2aW91c2x5IHRoZSBoZWFydCBvZiB0aGUgQ0RYIG1hbmFnZW1lbnQgaXRzZWxmLCBidXQgSSdtIGJldHRpbmcgdGhlIFJQTVNHIGltcGxlbWVudGF0aW9uIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgaXQncyBjb21tdW5pY2F0aW5nIGFuZCBpbnRlcmZhY2luZyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0sIGxpa2VseSBvdmVyIHNvbWUgZm9ybSBvZiBpbnRlci1wcm9jZXNzb3IgY29tbXVuaWNhdGlvbi4gSSBleHBlY3QgdGhlc2UgdHdvIGZpbGVzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBwaWN0dXJlIG9mIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGUgY29tcG9uZW50cyBhcmUgaW50ZXJhY3RpbmcsIGVzcGVjaWFsbHkgaWYgdGhlcmUncyBhbnkgc29ydCBvZiBzaGFyZWQgbWVtb3J5IG9yIG1lc3NhZ2UgcGFzc2luZyBpbnZvbHZlZC4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMzNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToxMi42NTg5MjUzNzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQvKlxcbiAgIDM6XFx0ICogQ0RYIGhvc3QgY29udHJvbGxlciBkcml2ZXIgZm9yIEFNRCB2ZXJzYWwtbmV0IHBsYXRmb3JtLlxcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXFxuICAgNjpcXHQgKi9cXG4gICA3OlxcdFxcbiAgIDg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXFx1MDAzZVxcbiAgMTE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lycWRvbWFpbi5oXFx1MDAzZVxcbiAgMTI6XFx0XFxuICAxMzpcXHQjaW5jbHVkZSBcXFwiY2R4X2NvbnRyb2xsZXIuaFxcXCJcXG4gIDE0OlxcdCNpbmNsdWRlIFxcXCIuLi9jZHguaFxcXCJcXG4gIDE1OlxcdCNpbmNsdWRlIFxcXCJtY2RpX2Z1bmN0aW9ucy5oXFxcIlxcbiAgMTY6XFx0I2luY2x1ZGUgXFxcIm1jZGlkLmhcXFwiXFxuICAxNzpcXHRcXG4gIDE4OlxcdHN0YXRpYyB1bnNpZ25lZCBpbnQgY2R4X21jZGlfcnBjX3RpbWVvdXQoc3RydWN0IGNkeF9tY2RpICpjZHgsIHVuc2lnbmVkIGludCBjbWQpXFxuICAxOTpcXHR7XFxuICAyMDpcXHRcXHRyZXR1cm4gTUNESV9SUENfVElNRU9VVDtcXG4gIDIxOlxcdH1cXG4gIDIyOlxcdFxcbiAgMjM6XFx0c3RhdGljIHZvaWQgY2R4X21jZGlfcmVxdWVzdChzdHJ1Y3QgY2R4X21jZGkgKmNkeCxcXG4gIDI0OlxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGNkeF9kd29yZCAqaGRyLCBzaXplX3QgaGRyX2xlbixcXG4gIDI1OlxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGNkeF9kd29yZCAqc2R1LCBzaXplX3Qgc2R1X2xlbilcXG4gIDI2OlxcdHtcXG4gIDI3OlxcdFxcdGlmIChjZHhfcnBtc2dfc2VuZChjZHgsIGhkciwgaGRyX2xlbiwgc2R1LCBzZHVfbGVuKSlcXG4gIDI4OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNmNkeC1cXHUwMDNlcnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBzZW5kIHJwbXNnIGRhdGFcXFxcblxcXCIpO1xcbiAgMjk6XFx0fVxcbiAgMzA6XFx0XFxuICAzMTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGNkeF9tY2RpX29wcyBtY2RpX29wcyA9IHtcXG4gIDMyOlxcdFxcdC5tY2RpX3JwY190aW1lb3V0ID0gY2R4X21jZGlfcnBjX3RpbWVvdXQsXFxuICAzMzpcXHRcXHQubWNkaV9yZXF1ZXN0ID0gY2R4X21jZGlfcmVxdWVzdCxcXG4gIDM0OlxcdH07XFxuICAzNTpcXHRcXG4gIDM2OlxcdHN0YXRpYyBpbnQgY2R4X2J1c19lbmFibGUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXFxuICAzNzpcXHR7XFxuICAzODpcXHRcXHRyZXR1cm4gY2R4X21jZGlfYnVzX2VuYWJsZShjZHgtXFx1MDAzZXByaXYsIGJ1c19udW0pO1xcbiAgMzk6XFx0fVxcbiAgNDA6XFx0XFxuICA0MTpcXHRzdGF0aWMgaW50IGNkeF9idXNfZGlzYWJsZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcXG4gIDQyOlxcdHtcXG4gIDQzOlxcdFxcdHJldHVybiBjZHhfbWNkaV9idXNfZGlzYWJsZShjZHgtXFx1MDAzZXByaXYsIGJ1c19udW0pO1xcbiAgNDQ6XFx0fVxcbiAgNDU6XFx0XFxuICA0NjpcXHR2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxcbiAgNDc6XFx0e1xcbiAgNDg6XFx0XFx0LyogUmVnaXN0ZXIgQ0RYIGNvbnRyb2xsZXIgd2l0aCBDRFggYnVzIGRyaXZlciAqL1xcbiAgNDk6XFx0XFx0aWYgKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyKGNkeCkpXFxuICA1MDpcXHRcXHRcXHRkZXZfZXJyKGNkeC1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIENEWCBjb250cm9sbGVyXFxcXG5cXFwiKTtcXG4gIDUxOlxcdH1cXG4gIDUyOlxcdFxcbiAgNTM6XFx0dm9pZCBjZHhfcnBtc2dfcHJlX3JlbW92ZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4gIDU0OlxcdHtcXG4gIDU1OlxcdFxcdGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoY2R4KTtcXG4gIDU2OlxcdFxcdGNkeF9tY2RpX3dhaXRfZm9yX3F1aWVzY2VuY2UoY2R4LVxcdTAwM2Vwcml2LCBNQ0RJX1JQQ19USU1FT1VUKTtcXG4gIDU3OlxcdH1cXG4gIDU4OlxcdFxcbiAgNTk6XFx0c3RhdGljIGludCBjZHhfY29uZmlndXJlX2RldmljZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCxcXG4gIDYwOlxcdFxcdFxcdFxcdFxcdHU4IGJ1c19udW0sIHU4IGRldl9udW0sXFxuICA2MTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgKmRldl9jb25maWcpXFxuICA2MjpcXHR7XFxuICA2MzpcXHRcXHR1MTYgbXNpX2luZGV4O1xcbiAgNjQ6XFx0XFx0aW50IHJldCA9IDA7XFxuICA2NTpcXHRcXHR1MzIgZGF0YTtcXG4gIDY2OlxcdFxcdHU2NCBhZGRyO1xcbiAgNjc6XFx0XFxuICA2ODpcXHRcXHRzd2l0Y2ggKGRldl9jb25maWctXFx1MDAzZXR5cGUpIHtcXG4gIDY5OlxcdFxcdGNhc2UgQ0RYX0RFVl9NU0lfQ09ORjpcXG4gIDcwOlxcdFxcdFxcdG1zaV9pbmRleCA9IGRldl9jb25maWctXFx1MDAzZW1zaS5tc2lfaW5kZXg7XFxuICA3MTpcXHRcXHRcXHRkYXRhID0gZGV2X2NvbmZpZy1cXHUwMDNlbXNpLmRhdGE7XFxuICA3MjpcXHRcXHRcXHRhZGRyID0gZGV2X2NvbmZpZy1cXHUwMDNlbXNpLmFkZHI7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdFxcdHJldCA9IGNkeF9tY2RpX3dyaXRlX21zaShjZHgtXFx1MDAzZXByaXYsIGJ1c19udW0sIGRldl9udW0sIG1zaV9pbmRleCwgYWRkciwgZGF0YSk7XFxuICA3NTpcXHRcXHRcXHRicmVhaztcXG4gIDc2OlxcdFxcdGNhc2UgQ0RYX0RFVl9SRVNFVF9DT05GOlxcbiAgNzc6XFx0XFx0XFx0cmV0ID0gY2R4X21jZGlfcmVzZXRfZGV2aWNlKGNkeC1cXHUwMDNlcHJpdiwgYnVzX251bSwgZGV2X251bSk7XFxuICA3ODpcXHRcXHRcXHRicmVhaztcXG4gIDc5OlxcdFxcdGNhc2UgQ0RYX0RFVl9CVVNfTUFTVEVSX0NPTkY6XFxuICA4MDpcXHRcXHRcXHRyZXQgPSBjZHhfbWNkaV9idXNfbWFzdGVyX2VuYWJsZShjZHgtXFx1MDAzZXByaXYsIGJ1c19udW0sIGRldl9udW0sXFxuICA4MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgZGV2X2NvbmZpZy1cXHUwMDNlYnVzX21hc3Rlcl9lbmFibGUpO1xcbiAgODI6XFx0XFx0XFx0YnJlYWs7XFxuICA4MzpcXHRcXHRjYXNlIENEWF9ERVZfTVNJX0VOQUJMRTpcXG4gIDg0OlxcdFxcdFxcdHJldCA9IGNkeF9tY2RpX21zaV9lbmFibGUoY2R4LVxcdTAwM2Vwcml2LCBidXNfbnVtLCBkZXZfbnVtLCBkZXZfY29uZmlnLVxcdTAwM2Vtc2lfZW5hYmxlKTtcXG4gIDg1OlxcdFxcdFxcdGJyZWFrO1xcbiAgODY6XFx0XFx0ZGVmYXVsdDpcXG4gIDg3OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuICA4ODpcXHRcXHR9XFxuICA4OTpcXHRcXG4gIDkwOlxcdFxcdHJldHVybiByZXQ7XFxuICA5MTpcXHR9XFxuICA5MjpcXHRcXG4gIDkzOlxcdHN0YXRpYyBpbnQgY2R4X3NjYW5fZGV2aWNlcyhzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4gIDk0OlxcdHtcXG4gIDk1OlxcdFxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHgtXFx1MDAzZXByaXY7XFxuICA5NjpcXHRcXHR1OCBidXNfbnVtLCBkZXZfbnVtLCBudW1fY2R4X2J1cztcXG4gIDk3OlxcdFxcdGludCByZXQ7XFxuICA5ODpcXHRcXG4gIDk5OlxcdFxcdC8qIE1DREkgRlcgUmVhZDogRmV0Y2ggdGhlIG51bWJlciBvZiBDRFggYnVzZXMgb24gdGhpcyBjb250cm9sbGVyICovXFxuIDEwMDpcXHRcXHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKGNkeF9tY2RpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTIuNjU5MDA5MTQ0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4OTMwNTA3MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgQ0RYIEhvc3QgQ29udHJvbGxlciBEcml2ZXIgZm9yIHRoZSBBTUQgVmVyc2FsLU5ldCBQbGF0Zm9ybSoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgdGhlIENEWCBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhlIEFNRCBWZXJzYWwtTmV0IHBsYXRmb3JtLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGNvbnRyb2xsZXIgaXMgYmVpbmcgcHJvYmVkLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGZpbGVzLiBJJ20gdGhpbmtpbmcgdGhlIGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IHdvdWxkIGJlIGBjZHhfcnBtc2cuY2Agb3IgbWF5YmUgZXZlbiB0aGUgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ2AgZmlsZS4gVGhlIEtjb25maWcgY291bGQgdGVsbCBtZSBob3cgdGhlIGNvbnRyb2xsZXIgaXMgY29uZmlndXJlZCwgd2hlcmVhcyB0aGUgLmMgZmlsZSB3aWxsLCBvZiBjb3Vyc2UsIGhvbGQgdGhlIHByb2JpbmcgbG9naWMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIHN5c3RlbSBkaXNjb3ZlcnMgYW5kIGluaXRpYWxpemVzIHRoaXMgcGFydGljdWxhciBDRFggY29udHJvbGxlci4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTU4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToxNC41NTIwNjIxOTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENEWCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdCMgQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy5cXG4gICA2OlxcdCNcXG4gICA3OlxcdFxcbiAgIDg6XFx0aWYgQ0RYX0JVU1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgQ0RYX0NPTlRST0xMRVJcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJDRFggYnVzIGNvbnRyb2xsZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG4gIDEzOlxcdFxcdHNlbGVjdCBSRU1PVEVQUk9DXFxuICAxNDpcXHRcXHRzZWxlY3QgUlBNU0dcXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgQ0RYIGNvbnRyb2xsZXIgZHJpdmVzIHRoZSBDRFggYnVzLiBJdCBpbnRlcmFjdHMgd2l0aFxcbiAgMTc6XFx0XFx0ICBmaXJtd2FyZSB0byBnZXQgdGhlIGhhcmR3YXJlIGRldmljZXMgYW5kIHJlZ2lzdGVycyB3aXRoXFxuICAxODpcXHRcXHQgIHRoZSBDRFggYnVzLiBTYXkgWSB0byBlbmFibGUgdGhlIENEWCBoYXJkd2FyZSBkcml2ZXIuXFxuICAxOTpcXHRcXG4gIDIwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0ZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTQuNTUyMTI1MzMxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5NTY1MzY1NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIGEgVkZJTyBDRFggZGV2aWNlLCBmcm9tIGluc3RhbnRpYXRpb24gdG8gb3BlcmF0aW9uLiBHaXZlbiBteSBleHBlcnRpc2UsIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gSSdtIGdvaW5nIHRvIHBvcmUgb3ZlciB0aGlzIGNvZGUgdG8gZ3Jhc3AgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cy4gTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgY3JpdGljYWwgZnVuY3Rpb25zOiBob3cgdGhlIGRldmljZSBpcyBjcmVhdGVkLCByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtLCBwcm9iZWQgdG8gZW5zdXJlIGl0cyBwcmVzZW5jZSBhbmQgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZW4gbWFuYWdlZCB0aHJvdWdob3V0IGl0cyBvcGVyYXRpb25hbCBsaWZlIGN5Y2xlLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHN0ZXBzIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgdHVuaW5nLCBhbmQgcG90ZW50aWFsbHkgZXh0ZW5kaW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFZGSU8gQ0RYIGRldmljZXMuIEkgYW50aWNpcGF0ZSBmaW5kaW5nIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBkZXZpY2UncyBzdGF0ZSBhbmQgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVkZJTyBmcmFtZXdvcmsuIEknbSBnb2luZyB0byBhc3N1bWUgYSBjZXJ0YWluIGxldmVsIG9mIGZhbWlsaWFyaXR5IHdpdGggdGhlIFZGSU8gYXJjaGl0ZWN0dXJlIGFuZCBkZWx2ZSBkaXJlY3RseSBpbnRvIHRoZSBDRFggc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjgzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToxNi41MDg2NjU0OTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxcbiAgIDQ6XFx0ICovXFxuICAgNTpcXHRcXG4gICA2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC92ZmlvLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY2R4L2NkeF9idXMuaFxcdTAwM2VcXG4gICA4OlxcdFxcbiAgIDk6XFx0I2luY2x1ZGUgXFxcInByaXZhdGUuaFxcXCJcXG4gIDEwOlxcdFxcbiAgMTE6XFx0c3RhdGljIGludCB2ZmlvX2NkeF9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gIDEyOlxcdHtcXG4gIDEzOlxcdFxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbiAgMTQ6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnZkZXYtXFx1MDAzZWNkeF9pcnFzX2xvY2spO1xcbiAgMTc6XFx0XFx0cmV0dXJuIDA7XFxuICAxODpcXHR9XFxuICAxOTpcXHRcXG4gIDIwOlxcdHN0YXRpYyB2b2lkIHZmaW9fY2R4X3JlbGVhc2VfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiAgMjE6XFx0e1xcbiAgMjI6XFx0XFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XFxuICAyMzpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG4gIDI0OlxcdFxcbiAgMjU6XFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2dmRldi1cXHUwMDNlY2R4X2lycXNfbG9jayk7XFxuICAyNjpcXHR9XFxuICAyNzpcXHRcXG4gIDI4OlxcdHN0YXRpYyBpbnQgdmZpb19jZHhfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuICAyOTpcXHR7XFxuICAzMDpcXHRcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG4gIDMxOlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbiAgMzI6XFx0XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGNvcmVfdmRldi1cXHUwMDNlZGV2KTtcXG4gIDMzOlxcdFxcdGludCBjb3VudCA9IGNkeF9kZXYtXFx1MDAzZXJlc19jb3VudDtcXG4gIDM0OlxcdFxcdGludCBpLCByZXQ7XFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnMgPSBremFsbG9jX29ianMoc3RydWN0IHZmaW9fY2R4X3JlZ2lvbiwgY291bnQsXFxuICAzNzpcXHRcXHRcXHRcXHRcXHQgICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuICAzODpcXHRcXHRpZiAoIXZkZXYtXFx1MDAzZXJlZ2lvbnMpXFxuICAzOTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDQwOlxcdFxcbiAgNDE6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGNvdW50OyBpKyspIHtcXG4gIDQyOlxcdFxcdFxcdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gXFx1MDAyNmNkeF9kZXYtXFx1MDAzZXJlc1tpXTtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9uc1tpXS5hZGRyID0gcmVzLVxcdTAwM2VzdGFydDtcXG4gIDQ1OlxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0uc2l6ZSA9IHJlc291cmNlX3NpemUocmVzKTtcXG4gIDQ2OlxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0udHlwZSA9IHJlcy1cXHUwMDNlZmxhZ3M7XFxuICA0NzpcXHRcXHRcXHQvKlxcbiAgNDg6XFx0XFx0XFx0ICogT25seSByZWdpb25zIGFkZHJlc3NlZCB3aXRoIFBBR0UgZ3JhbnVsYXJpdHkgbWF5IGJlXFxuICA0OTpcXHRcXHRcXHQgKiBNTUFQJ2VkIHNlY3VyZWx5LlxcbiAgNTA6XFx0XFx0XFx0ICovXFxuICA1MTpcXHRcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2ldLmFkZHIgXFx1MDAyNiB+UEFHRV9NQVNLKSBcXHUwMDI2XFx1MDAyNlxcbiAgNTI6XFx0XFx0XFx0ICAgICEodmRldi1cXHUwMDNlcmVnaW9uc1tpXS5zaXplIFxcdTAwMjYgflBBR0VfTUFTSykpXFxuICA1MzpcXHRcXHRcXHRcXHR2ZGV2LVxcdTAwM2VyZWdpb25zW2ldLmZsYWdzIHw9XFxuICA1NDpcXHRcXHRcXHRcXHRcXHRcXHRWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1BUDtcXG4gIDU1OlxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0uZmxhZ3MgfD0gVkZJT19SRUdJT05fSU5GT19GTEFHX1JFQUQ7XFxuICA1NjpcXHRcXHRcXHRpZiAoIShjZHhfZGV2LVxcdTAwM2VyZXNbaV0uZmxhZ3MgXFx1MDAyNiBJT1JFU09VUkNFX1JFQURPTkxZKSlcXG4gIDU3OlxcdFxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0uZmxhZ3MgfD0gVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFO1xcbiAgNTg6XFx0XFx0fVxcbiAgNTk6XFx0XFx0cmV0ID0gY2R4X2Rldl9yZXNldChjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuICA2MDpcXHRcXHRpZiAocmV0KSB7XFxuICA2MTpcXHRcXHRcXHRrZnJlZSh2ZGV2LVxcdTAwM2VyZWdpb25zKTtcXG4gIDYyOlxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnMgPSBOVUxMO1xcbiAgNjM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDY0OlxcdFxcdH1cXG4gIDY1OlxcdFxcdHJldCA9IGNkeF9jbGVhcl9tYXN0ZXIoY2R4X2Rldik7XFxuICA2NjpcXHRcXHRpZiAocmV0KVxcbiAgNjc6XFx0XFx0XFx0dmRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfkJNRV9TVVBQT1JUO1xcbiAgNjg6XFx0XFx0ZWxzZVxcbiAgNjk6XFx0XFx0XFx0dmRldi1cXHUwMDNlZmxhZ3MgfD0gQk1FX1NVUFBPUlQ7XFxuICA3MDpcXHRcXG4gIDcxOlxcdFxcdHJldHVybiAwO1xcbiAgNzI6XFx0fVxcbiAgNzM6XFx0XFxuICA3NDpcXHRzdGF0aWMgdm9pZCB2ZmlvX2NkeF9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuICA3NTpcXHR7XFxuICA3NjpcXHRcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG4gIDc3OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHRrZnJlZSh2ZGV2LVxcdTAwM2VyZWdpb25zKTtcXG4gIDgwOlxcdFxcdGNkeF9kZXZfcmVzZXQoY29yZV92ZGV2LVxcdTAwM2VkZXYpO1xcbiAgODE6XFx0XFx0dmZpb19jZHhfaXJxc19jbGVhbnVwKHZkZXYpO1xcbiAgODI6XFx0fVxcbiAgODM6XFx0XFxuICA4NDpcXHRzdGF0aWMgaW50IHZmaW9fY2R4X2JtX2N0cmwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHUzMiBmbGFncyxcXG4gIDg1OlxcdFxcdFxcdFxcdCAgICB2b2lkIF9fdXNlciAqYXJnLCBzaXplX3QgYXJnc3opXFxuICA4NjpcXHR7XFxuICA4NzpcXHRcXHRzaXplX3QgbWluc3ogPVxcbiAgODg6XFx0XFx0XFx0b2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfYnVzX21hc3Rlciwgb3ApO1xcbiAgODk6XFx0XFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XFxuICA5MDpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG4gIDkxOlxcdFxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuICA5MjpcXHRcXHRzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV9idXNfbWFzdGVyIG9wcztcXG4gIDkzOlxcdFxcdGludCByZXQ7XFxuICA5NDpcXHRcXG4gIDk1OlxcdFxcdGlmICghKHZkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQk1FX1NVUFBPUlQpKVxcbiAgOTY6XFx0XFx0XFx0cmV0dXJuIC1FTk9UVFk7XFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdHJldCA9IHZmaW9fY2hlY2tfZmVhdHVyZShmbGFncywgYXJnc3osIFZGSU9fREVWSUNFX0ZFQVRVUkVfU0VULFxcbiAgOTk6XFx0XFx0XFx0XFx0XFx0IHNpemVvZihvcHMpKTtcXG4gMTAwOlxcdFxcdGlmIChyZXQgIT0gMSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTYuNTA4NzU2MjE1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3MTE4OTk2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBleGFtaW5pbmcgdGhlIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2AgY29kZSBhbmQgdGhpbmtpbmcgYWxvdWQgYXMgYSBzZWFzb25lZCBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoaXMgYG1haW4uY2AgZmlsZSB3aXRoaW4gdGhlIENEWCAobGlrZWx5IENvbnRhaW5lciBEaXJlY3QgZVhlY3V0aW9uKSBWRklPIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSBjb3JlIHB1cnBvc2UuIFdoYXQncyB0aGUgZW50cnkgcG9pbnQ/IFdoYXQncyBpbml0aWFsaXplZD8gQXJlIHdlIGRlYWxpbmcgd2l0aCB0aGUgb3ZlcmFsbCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIGV4aXQgcm91dGluZXMsIG9yIGp1c3QgYSBwaWVjZSBvZiB0aGUgcHV6emxlPyBJJ20gZXhwZWN0aW5nIHRvIHNlZSBtb2R1bGVfaW5pdCBhbmQgbW9kdWxlX2V4aXQgbWFjcm9zIHJpZ2h0IG9mZiB0aGUgYmF0LCB0byBnZXQgdGhlIGJyb2FkIHN0cnVjdHVyZS4gRnJvbSB0aGVyZSwgSSdsbCBxdWlja2x5IGxvb2sgZm9yIHN0cnVjdCBkZWZpbml0aW9ucyBhbmQgZ2xvYmFsIHZhcmlhYmxlcy4gSSB3YW50IHRvIHNlZSBob3cgZGF0YSBpcyBzdG9yZWQgZm9yIHRoZSBjb250YWluZXIgYW5kIHRoZSBkZXZpY2Ugd2l0aGluIHRoaXMgY29udGV4dC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCB0byB0aGUgb3ZlcmFsbCBWRklPIGZyYW1ld29yayBhbmQgaG93IHdlIGFyZSBpbnRlcmFjdGluZyB3aXRoIGl0LiBUaGUgbWVtb3J5IG1hcHBpbmcgYW5kIHVubWFwcGluZyByb3V0aW5lcyB3aWxsIGJlIGNyaXRpY2FsIC0gYXJlIHdlIGRpcmVjdGx5IG1hbmFnaW5nIHRoZSBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcyBvciBpbmRpcmVjdGx5IHZpYSBzb21lIGtpbmQgb2YgaW9tbXUgc2V0dXA/IEkgd2lsbCBwcm9iYWJseSBzZWUgc29tZSBraW5kIG9mIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSBtb2RlbHMgYW5kIGEgZmlsZSBkZXNjcmlwdG9yLiBJJ20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBwYXJ0cyBvZiB0aGUgZHJpdmVyOyB0aGUgY29kZSB0aGF0IHdpcmVzIHVwIHRoZSB2ZmlvLXBjaSBpbnRlcmZhY2UgZm9yIENEWCBvcGVyYXRpb25zLiBUaGVuIEkgd2lsbCBzZWUgaG93IHRvIGhhbmRsZSB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nIChpZiBhcHBsaWNhYmxlKSwgYW5kIG9mIGNvdXJzZSwgdGhlIGFjdHVhbCBvcGVyYXRpb25zIGZvciBjb250YWluZXIgZXhlY3V0aW9uLiBEZXBlbmRpbmcgb24gdGhlIGNvbXBsZXhpdHksIEknbGwgc3RhcnQgYnVpbGRpbmcgYSBtZW50YWwgbW9kZWwgb2YgY29udHJvbCBmbG93LiBFc3NlbnRpYWxseSwgSSdtIHRyeWluZyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBob3cgdGhlIENEWCBzcGVjaWZpYyBwaWVjZXMgZml0IHdpdGhpbiB0aGUgbGFyZ2VyIFZGSU8gZWNvc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ3NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTkuMjIwNjU4ODJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ1MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjYwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI2MDpcXHRcXHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVxcdTAwM2V2bV9zdGFydCwgdm1hLVxcdTAwM2V2bV9wZ29mZixcXG4gMjYxOlxcdFxcdFxcdFxcdFxcdCAgc2l6ZSwgdm1hLVxcdTAwM2V2bV9wYWdlX3Byb3QpO1xcbiAyNjI6XFx0fVxcbiAyNjM6XFx0XFxuIDI2NDpcXHRzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuIDI2NTpcXHRcXHRcXHRcXHQgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuIDI2NjpcXHR7XFxuIDI2NzpcXHRcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG4gMjY4OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbiAyNjk6XFx0XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGNvcmVfdmRldi1cXHUwMDNlZGV2KTtcXG4gMjcwOlxcdFxcdHVuc2lnbmVkIGludCBpbmRleDtcXG4gMjcxOlxcdFxcbiAyNzI6XFx0XFx0aW5kZXggPSB2bWEtXFx1MDAzZXZtX3Bnb2ZmIFxcdTAwM2VcXHUwMDNlIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcXG4gMjczOlxcdFxcbiAyNzQ6XFx0XFx0aWYgKCEodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1NIQVJFRCkpXFxuIDI3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjc2OlxcdFxcbiAyNzc6XFx0XFx0aWYgKGluZGV4IFxcdTAwM2U9IGNkeF9kZXYtXFx1MDAzZXJlc19jb3VudClcXG4gMjc4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyNzk6XFx0XFxuIDI4MDpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19NTUFQKSlcXG4gMjgxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyODI6XFx0XFxuIDI4MzpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEKSBcXHUwMDI2XFx1MDAyNlxcbiAyODQ6XFx0XFx0ICAgICh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgVk1fUkVBRCkpXFxuIDI4NTpcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiAyODY6XFx0XFxuIDI4NzpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkgXFx1MDAyNlxcdTAwMjZcXG4gMjg4OlxcdFxcdCAgICAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1dSSVRFKSlcXG4gMjg5OlxcdFxcdFxcdHJldHVybiAtRVBFUk07XFxuIDI5MDpcXHRcXG4gMjkxOlxcdFxcdHJldHVybiB2ZmlvX2NkeF9tbWFwX21taW8odmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XFxuIDI5MjpcXHR9XFxuIDI5MzpcXHRcXG4gMjk0OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fY2R4X29wcyA9IHtcXG4gMjk1OlxcdFxcdC5uYW1lXFx0XFx0PSBcXFwidmZpby1jZHhcXFwiLFxcbiAyOTY6XFx0XFx0LmluaXRcXHRcXHQ9IHZmaW9fY2R4X2luaXRfZGV2LFxcbiAyOTc6XFx0XFx0LnJlbGVhc2VcXHQ9IHZmaW9fY2R4X3JlbGVhc2VfZGV2LFxcbiAyOTg6XFx0XFx0Lm9wZW5fZGV2aWNlXFx0PSB2ZmlvX2NkeF9vcGVuX2RldmljZSxcXG4gMjk5OlxcdFxcdC5jbG9zZV9kZXZpY2VcXHQ9IHZmaW9fY2R4X2Nsb3NlX2RldmljZSxcXG4gMzAwOlxcdFxcdC5pb2N0bFxcdFxcdD0gdmZpb19jZHhfaW9jdGwsXFxuIDMwMTpcXHRcXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX2NkeF9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuIDMwMjpcXHRcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX2NkeF9pb2N0bF9mZWF0dXJlLFxcbiAzMDM6XFx0XFx0Lm1tYXBcXHRcXHQ9IHZmaW9fY2R4X21tYXAsXFxuIDMwNDpcXHRcXHQuYmluZF9pb21tdWZkXFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYmluZCxcXG4gMzA1OlxcdFxcdC51bmJpbmRfaW9tbXVmZFxcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX3VuYmluZCxcXG4gMzA2OlxcdFxcdC5hdHRhY2hfaW9hc1xcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2F0dGFjaF9pb2FzLFxcbiAzMDc6XFx0fTtcXG4gMzA4OlxcdFxcbiAzMDk6XFx0c3RhdGljIGludCB2ZmlvX2NkeF9wcm9iZShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG4gMzEwOlxcdHtcXG4gMzExOlxcdFxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXY7XFxuIDMxMjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2O1xcbiAzMTM6XFx0XFx0aW50IHJldDtcXG4gMzE0OlxcdFxcbiAzMTU6XFx0XFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fY2R4X2RldmljZSwgdmRldiwgZGV2LFxcbiAzMTY6XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX2NkeF9vcHMpO1xcbiAzMTc6XFx0XFx0aWYgKElTX0VSUih2ZGV2KSlcXG4gMzE4OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHZkZXYpO1xcbiAzMTk6XFx0XFxuIDMyMDpcXHRcXHRyZXQgPSB2ZmlvX3JlZ2lzdGVyX2dyb3VwX2RldihcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuIDMyMTpcXHRcXHRpZiAocmV0KVxcbiAzMjI6XFx0XFx0XFx0Z290byBvdXRfdW5pbml0O1xcbiAzMjM6XFx0XFxuIDMyNDpcXHRcXHRkZXZfc2V0X2RydmRhdGEoZGV2LCB2ZGV2KTtcXG4gMzI1OlxcdFxcdHJldHVybiAwO1xcbiAzMjY6XFx0XFxuIDMyNzpcXHRvdXRfdW5pbml0OlxcbiAzMjg6XFx0XFx0dmZpb19wdXRfZGV2aWNlKFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gMzI5OlxcdFxcdHJldHVybiByZXQ7XFxuIDMzMDpcXHR9XFxuIDMzMTpcXHRcXG4gMzMyOlxcdHN0YXRpYyBpbnQgdmZpb19jZHhfcmVtb3ZlKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbiAzMzM6XFx0e1xcbiAzMzQ6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNmNkeF9kZXYtXFx1MDAzZWRldjtcXG4gMzM1OlxcdFxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG4gMzM2OlxcdFxcbiAzMzc6XFx0XFx0dmZpb191bnJlZ2lzdGVyX2dyb3VwX2RldihcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuIDMzODpcXHRcXHR2ZmlvX3B1dF9kZXZpY2UoXFx1MDAyNnZkZXYtXFx1MDAzZXZkZXYpO1xcbiAzMzk6XFx0XFxuIDM0MDpcXHRcXHRyZXR1cm4gMDtcXG4gMzQxOlxcdH1cXG4gMzQyOlxcdFxcbiAzNDM6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkIHZmaW9fY2R4X3RhYmxlW10gPSB7XFxuIDM0NDpcXHRcXHR7IENEWF9ERVZJQ0VfRFJJVkVSX09WRVJSSURFKENEWF9BTllfSUQsIENEWF9BTllfSUQsXFxuIDM0NTpcXHRcXHRcXHRcXHRcXHQgICAgIENEWF9JRF9GX1ZGSU9fRFJJVkVSX09WRVJSSURFKSB9LCAvKiBtYXRjaCBhbGwgYnkgZGVmYXVsdCAqL1xcbiAzNDY6XFx0XFx0e31cXG4gMzQ3OlxcdH07XFxuIDM0ODpcXHRcXG4gMzQ5OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUoY2R4LCB2ZmlvX2NkeF90YWJsZSk7XFxuIDM1MDpcXHRcXG4gMzUxOlxcdHN0YXRpYyBzdHJ1Y3QgY2R4X2RyaXZlciB2ZmlvX2NkeF9kcml2ZXIgPSB7XFxuIDM1MjpcXHRcXHQucHJvYmVcXHRcXHQ9IHZmaW9fY2R4X3Byb2JlLFxcbiAzNTM6XFx0XFx0LnJlbW92ZVxcdFxcdD0gdmZpb19jZHhfcmVtb3ZlLFxcbiAzNTQ6XFx0XFx0Lm1hdGNoX2lkX3RhYmxlXFx0PSB2ZmlvX2NkeF90YWJsZSxcXG4gMzU1OlxcdFxcdC5kcml2ZXJcXHQ9IHtcXG4gMzU2OlxcdFxcdFxcdC5uYW1lXFx0PSBcXFwidmZpby1jZHhcXFwiLFxcbiAzNTc6XFx0XFx0fSxcXG4gMzU4OlxcdFxcdC5kcml2ZXJfbWFuYWdlZF9kbWEgPSB0cnVlLFxcbiAzNTk6XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTkuMjIwNzU0OTg5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNjg2MjEyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ0RYIEFuYWx5c2lzIFx1MDAyNiBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGNlbnRlcnMgb24gdW5kZXJzdGFuZGluZyBDRFgg4oCTIHdoYXQgaXQgKmlzKiwgZnVuZGFtZW50YWxseSDigJMgYW5kIHRoZW4sIGNydWNpYWxseSwgd2hldGhlciBpdCdzIGV2ZW4gKmFjY2Vzc2libGUqIHdpdGhpbiBteSB1c3VhbCBRRU1VIGFuZCBHQ0UgdGVzdGluZyBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBrbm93IGlmIEknbSBnb2luZyB0byByZXF1aXJlIHNwZWNpYWxpemVkIEFNRCBWZXJzYWwgaGFyZHdhcmUgZm9yIHRoaXMgb3IgaWYgSSBjYW4gc3RheSB3aXRoaW4gbXkgZmFtaWxpYXIgY29tZm9ydCB6b25lLiBUaGF0J3MgdGhlIHJlYWwgcXVlc3Rpb24uXG5cblRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UgY3JlYXRpb24gcHJvY2VzczogSG93ICphcmUqIHRoZXNlIENEWCBkZXZpY2VzIGluc3RhbnRpYXRlZD8gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIGtleSB0byBmdXp6aW5nLCBhcyBpdCBkZXRlcm1pbmVzIGhvdyBJIGNhbiBwb3RlbnRpYWxseSBpbmZsdWVuY2UgdGhlaXIgaW5pdGlhbGl6YXRpb24gb3IgZmVlZCB0aGVtIHVuZXhwZWN0ZWQgaW5wdXRzLiBJZiB0aGV5IHJlcXVpcmUgc29tZSB1bmlxdWUgb3IgcHJvcHJpZXRhcnkgc2V0dXAsIHRoYXQgY2hhbmdlcyB0aGUgd2hvbGUgZ2FtZS5cblxuRmluYWxseSwgSSdsbCBkaXZlIGludG8gdGhlIGNvZGViYXNlLiBTcGVjaWZpY2FsbHksIHRoZSBgZHJpdmVycy9jZHgvYCBkaXJlY3Rvcnkgc2hvdWxkIHJldmVhbCB0aGUgc2VjcmV0cy4gQXJlIHRoZXNlIGRldmljZXMgY3JlYXRlZCBzdGF0aWNhbGx5LCBhdCBib290PyBPciwgZXZlbiBiZXR0ZXIsIGlzIHRoZXJlIGEgZHluYW1pYyBjcmVhdGlvbiBwYXRoPyBEeW5hbWljIGNyZWF0aW9uIHdvdWxkIG9wZW4gdXAgYSB3aG9sZSB1bml2ZXJzZSBvZiBwb3NzaWJpbGl0aWVzIGZvciBtYW5pcHVsYXRpbmcgYW5kIGZ1enppbmcuIFVuZGVyc3RhbmRpbmcgdGhlIGNyZWF0aW9uIG1lY2hhbmlzbSBpcyBwYXJhbW91bnQgdG8gYW55IGVmZmVjdGl2ZSBmdXp6aW5nIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU5MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MjEuMzg5Mzc5MTY5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc1MTA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZHhfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY2R4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTgzNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU9MTI9aWZkZWYgQ09ORklHX0dFTkVSSUNfTVNJX0lSUVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19DRFhfQlVTKSArPSBjZHhfbXNpLm9cXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xNC1lbmRpZlxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjctI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lkci5oXFx1MDAzZVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXFx1MDAzZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY5LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pb21tdS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6Nzk6c3RhdGljIERFRklORV9JREEoY2R4X2NvbnRyb2xsZXJfaWRhKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04MC0vKiBMb2NrIHRvIHByb3RlY3QgY29udHJvbGxlciBvcHMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTgyLS8qIERlYnVnZnMgZGlyIGZvciBjZHggYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6ODM6c3RhdGljIHN0cnVjdCBkZW50cnkgKmNkeF9kZWJ1Z2ZzX2RpcjtcXG5kcml2ZXJzL2NkeC9jZHguYy04NC1cXG5kcml2ZXJzL2NkeC9jZHguYz04NT1zdGF0aWMgY2hhciAqY29tcGF0X25vZGVfbmFtZSA9IFxcXCJ4bG54LHZlcnNhbC1uZXQtY2R4XFxcIjtcXG5kcml2ZXJzL2NkeC9jZHguYy04Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NzpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtODgtXFxuZHJpdmVycy9jZHgvY2R4LmMtODktLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6OTA6ICogY2R4X2Rldl9yZXNldCAtIFJlc2V0IGEgQ0RYIGRldmljZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxLSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTk0LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjk1OmludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy05Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6OTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTg6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTk6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XFxuZHJpdmVycy9jZHgvY2R4LmM6MTAwOlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMi1cXG5kcml2ZXJzL2NkeC9jZHguYzoxMDM6XFx0Y2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNC1cXHQvKiBOb3RpZnkgZHJpdmVyIHRoYXQgZGV2aWNlIGlzIGJlaW5nIHJlc2V0ICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MTA1OlxcdGlmIChjZHhfZHJ2IFxcdTAwMjZcXHUwMDI2IGNkeF9kcnYtXFx1MDAzZXJlc2V0X3ByZXBhcmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MTA2OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXJlc2V0X3ByZXBhcmUoY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTA3LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEwOC1cXHRkZXZfY29uZmlnLnR5cGUgPSBDRFhfREVWX1JFU0VUX0NPTkY7XFxuZHJpdmVycy9jZHgvY2R4LmM6MTA5OlxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSxcXG5kcml2ZXJzL2NkeC9jZHguYzoxMTA6XFx0XFx0XFx0XFx0ICAgICAgY2R4X2Rldi1cXHUwMDNlZGV2X251bSwgXFx1MDAyNmRldl9jb25maWcpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTExMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTE0LVxcdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgcmVzZXQgaXMgY29tcGxldGUgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMTU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVzZXRfZG9uZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoxMTY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVzZXRfZG9uZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMTktfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMDpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZGV2X3Jlc2V0KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMjEtXFxuZHJpdmVycy9jZHgvY2R4LmMtMTIyLS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMzogKiByZXNldF9jZHhfZGV2aWNlIC0gUmVzZXQgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtMTI0LSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMC0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMzE6c3RhdGljIGludCByZXNldF9jZHhfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2NkeC9jZHguYy0xMzIte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjEzMzpcXHRyZXR1cm4gY2R4X2Rldl9yZXNldChkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNC19XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMzYtLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTM3OiAqIGNkeF91bnJlZ2lzdGVyX2RldmljZSAtIFVucmVnaXN0ZXIgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtMTM4LSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE0MC0gKlxcdCAgYnV0IGlzIHJlcXVpcmVkIGhlcmUgYXMgdGhlIGJ1c19mb3JfZWFjaF9kZXYoKSBBUEkgZXhwZWN0c1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE0MTogKlxcdCAgdGhlIHBhc3NlZCBmdW5jdGlvbiAoY2R4X3VucmVnaXN0ZXJfZGV2aWNlKSB0byBoYXZlIHRoaXNcXG5kcml2ZXJzL2NkeC9jZHguYy0xNDItICpcXHQgIGFzIGFuIGFyZ3VtZW50Llxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ1LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE0NjpzdGF0aWMgaW50IGNkeF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ3LVxcdFxcdFxcdFxcdCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE0OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MTQ5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MDpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTEtXFxuZHJpdmVycy9jZHgvY2R4LmM6MTUyOlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTM6XFx0XFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTQ6XFx0XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NTpcXHRcXHRcXHRjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTYtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTc6XFx0XFx0Y2R4X2Rlc3Ryb3lfcmVzX2F0dHIoY2R4X2RldiwgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTKTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTg6XFx0XFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTktXFx0fVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTYxLVxcdC8qXFxuZHJpdmVycy9jZHgvY2R4LmM6MTYyOlxcdCAqIERvIG5vdCBmcmVlIGNkeF9kZXYgaGVyZSBhcyBpdCB3b3VsZCBiZSBmcmVlZCBpblxcbmRyaXZlcnMvY2R4L2NkeC5jOjE2MzpcXHQgKiBjZHhfZGV2aWNlX3JlbGVhc2UoKSBjYWxsZWQgZnJvbSB3aXRoaW4gcHV0X2RldmljZSgpLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTE2NC1cXHQgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxNjU6XFx0ZGV2aWNlX2RlbChcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNjY6XFx0cHV0X2RldmljZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNjctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNzAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MTcxOnN0YXRpYyB2b2lkIGNkeF91bnJlZ2lzdGVyX2RldmljZXMoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTcyLXtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzMtXFx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxNzQ6XFx0YnVzX2Zvcl9lYWNoX2RldihidXMsIE5VTEwsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTc1LX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE3Ny0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoxNzg6ICogY2R4X21hdGNoX29uZV9kZXZpY2UgLSBUZWxsIGlmIGEgQ0RYIGRldmljZSBzdHJ1Y3R1cmUgaGFzIGEgbWF0Y2hpbmdcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzktICpcXHRcXHRcXHQgIENEWCBkZXZpY2UgaWQgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xODItICpcXG5kcml2ZXJzL2NkeC9jZHguYzoxODM6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4NC0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxODU6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTg2OmNkeF9tYXRjaF9vbmVfZGV2aWNlKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZCxcXG5kcml2ZXJzL2NkeC9jZHguYzoxODc6XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4OC17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xOTktLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MjAwOiAqIGNkeF9tYXRjaF9pZCAtIFNlZSBpZiBhIENEWCBkZXZpY2UgbWF0Y2hlcyBhIGdpdmVuIGNkeF9pZCB0YWJsZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwMS0gKiBAaWRzOiBhcnJheSBvZiBDRFggZGV2aWNlIElEIHN0cnVjdHVyZXMgdG8gc2VhcmNoIGluXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMDQtICogVXNlZCBieSBhIGRyaXZlciB0byBjaGVjayB3aGV0aGVyIGEgQ0RYIGRldmljZSBpcyBpbiBpdHMgbGlzdCBvZlxcbmRyaXZlcnMvY2R4L2NkeC5jOjIwNTogKiBzdXBwb3J0ZWQgZGV2aWNlcy4gUmV0dXJucyB0aGUgbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3JcXG5kcml2ZXJzL2NkeC9jZHguYy0yMDYtICogTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cXG5kcml2ZXJzL2NkeC9jZHguYy0yMDctICpcXG5kcml2ZXJzL2NkeC9jZHguYzoyMDg6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwOS0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoyMTA6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXFxuZHJpdmVycy9jZHgvY2R4LmM6MjExOmNkeF9tYXRjaF9pZChjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzLCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIxMi17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMTQtXFx0XFx0d2hpbGUgKGlkcy1cXHUwMDNldmVuZG9yIHx8IGlkcy1cXHUwMDNlZGV2aWNlKSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjE1OlxcdFxcdFxcdGlmIChjZHhfbWF0Y2hfb25lX2RldmljZShpZHMsIGRldikpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjE2LVxcdFxcdFxcdFxcdHJldHVybiBpZHM7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMjItXFxuZHJpdmVycy9jZHgvY2R4LmM6MjIzOmludCBjZHhfc2V0X21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHguYy0yMjQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNTpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMjY6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjI3LVxcdGludCByZXQgPSAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIzMS1cXHRpZiAoY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MjMyOlxcdFxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSxcXG5kcml2ZXJzL2NkeC9jZHguYzoyMzM6XFx0XFx0XFx0XFx0XFx0ICAgICAgY2R4X2Rldi1cXHUwMDNlZGV2X251bSwgXFx1MDAyNmRldl9jb25maWcpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTIzNC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIzNi19XFxuZHJpdmVycy9jZHgvY2R4LmM6MjM3OkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9zZXRfbWFzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXFxuZHJpdmVycy9jZHgvY2R4LmM6MjM5OmludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI0MC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjQxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yNDMtXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjQ3LVxcdGlmIChjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoyNDg6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0OTpcXHRcXHRcXHRcXHRcXHQgICAgICBjZHhfZGV2LVxcdTAwM2VkZXZfbnVtLCBcXHUwMDI2ZGV2X2NvbmZpZyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjUwLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjUyLX1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNTM6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2NsZWFyX21hc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjU0LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI1NS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoyNTY6ICogY2R4X2J1c19tYXRjaCAtIGRldmljZSB0byBkcml2ZXIgbWF0Y2hpbmcgY2FsbGJhY2tcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTctICogQGRldjogdGhlIGNkeCBkZXZpY2UgdG8gbWF0Y2ggYWdhaW5zdFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjYyLSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2MzpzdGF0aWMgaW50IGNkeF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI2NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjY1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NjpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjc6XFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmZvdW5kX2lkID0gTlVMTDtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjg6XFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkcztcXG5kcml2ZXJzL2NkeC9jZHguYy0yNjktXFx0aW50IHJldDtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MjcxOlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjcyLVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzMtXFxuZHJpdmVycy9jZHgvY2R4LmM6Mjc0OlxcdGlkcyA9IGNkeF9kcnYtXFx1MDAzZW1hdGNoX2lkX3RhYmxlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3NS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI4MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoyODE6XFx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yODItXFx0aWYgKCFmb3VuZF9pZClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI5NS1cXHRcXHRpZHMgPSBmb3VuZF9pZCArIDE7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mjk2OlxcdFxcdGZvdW5kX2lkID0gY2R4X21hdGNoX2lkKGlkcywgY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjk3LVxcdH0gd2hpbGUgKGZvdW5kX2lkKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMS1cXG5kcml2ZXJzL2NkeC9jZHguYzozMDI6c3RhdGljIGludCBjZHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMy17XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA0OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNjpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMDctXFx0aW50IGVycm9yO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzEzLVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19HRU5FUklDX01TSV9JUlEpIFxcdTAwMjZcXHUwMDI2IGNkeC1cXHUwMDNlbXNpX2RvbWFpbikge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMxNDpcXHRcXHRlcnJvciA9IG1zaV9zZXR1cF9kZXZpY2VfZGF0YShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMTUtXFx0XFx0aWYgKGVycm9yKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzE4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMxOTpcXHRlcnJvciA9IGNkeF9kcnYtXFx1MDAzZXByb2JlKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMyMC1cXHRpZiAoZXJyb3IpIHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMyNy1cXG5kcml2ZXJzL2NkeC9jZHguYzozMjg6c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzI5LXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzA6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzE6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzMyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMzpcXHRpZiAoY2R4X2RydiBcXHUwMDI2XFx1MDAyNiBjZHhfZHJ2LVxcdTAwM2VyZW1vdmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MzM0OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXJlbW92ZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzUtfVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMzNi1cXG5kcml2ZXJzL2NkeC9jZHguYzozMzc6c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzgte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMzOTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MzpcXHRpZiAoY2R4X2Rldi1cXHUwMDNlaXNfYnVzIFxcdTAwMjZcXHUwMDI2IGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NDpcXHRcXHRjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlc2h1dGRvd24pXFxuZHJpdmVycy9jZHgvY2R4LmM6MzQ2OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXNodXRkb3duKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Ny19XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQ4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0OTpzdGF0aWMgaW50IGNkeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTAte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNTM6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzU0OlxcdHUzMiBpbnB1dF9pZCA9IGNkeF9kZXYtXFx1MDAzZXJlcV9pZDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTUtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM2Mi1cXG5kcml2ZXJzL2NkeC9jZHguYzozNjM6XFx0LyogQGNkeF9kcnYgbWF5IG5vdCBiZSB2YWxpZCB3aGVuIHdlJ3JlIGNhbGxlZCBmcm9tIHRoZSBJT01NVSBsYXllciAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM2NDpcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWRyaXZlciBcXHUwMDI2XFx1MDAyNiAhY2R4X2Rydi1cXHUwMDNlZHJpdmVyX21hbmFnZWRfZG1hKSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzY1LVxcdFxcdHJldCA9IGlvbW11X2RldmljZV91c2VfZGVmYXVsdF9kb21haW4oZGV2KTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Mi1cXG5kcml2ZXJzL2NkeC9jZHguYzozNzM6c3RhdGljIHZvaWQgY2R4X2RtYV9jbGVhbnVwKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zNzQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzozNzc6XFx0aWYgKCFjZHhfZHJ2LVxcdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzc4LVxcdFxcdGlvbW11X2RldmljZV91bnVzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzgxLS8qIHNob3cgY29uZmlndXJhdGlvbiBmaWVsZHMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzozODI6I2RlZmluZSBjZHhfY29uZmlnX2F0dHIoZmllbGQsIGZvcm1hdF9zdHJpbmcpXFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4My1zdGF0aWMgc3NpemVfdFxcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODQ9ZmllbGQjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg1LXtcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmM6Mzg2OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODc6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBmb3JtYXRfc3RyaW5nLCBjZHhfZGV2LVxcdTAwM2VmaWVsZCk7XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4OC19XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4OT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZmllbGQpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzkwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MTpjZHhfY29uZmlnX2F0dHIodmVuZG9yLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTI6Y2R4X2NvbmZpZ19hdHRyKGRldmljZSwgXFxcIjB4JTA0eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzkzOmNkeF9jb25maWdfYXR0cihzdWJzeXN0ZW1fdmVuZG9yLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTQ6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV9kZXZpY2UsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NTpjZHhfY29uZmlnX2F0dHIocmV2aXNpb24sIFxcXCIweCUwMnhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NjpjZHhfY29uZmlnX2F0dHIoY2xhc3MsIFxcXCIweCUwNnhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM5Ny1cXG5kcml2ZXJzL2NkeC9jZHguYz0zOTg9c3RhdGljIHNzaXplX3QgcmVtb3ZlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQxMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo0MTM6XFx0XFx0cmV0ID0gY2R4X3VucmVnaXN0ZXJfZGV2aWNlKGRldiwgTlVMTCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDE0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz00MjI9c3RhdGljIHNzaXplX3QgcmVzZXRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDI1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNi1cXHRib29sIHZhbDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQzNC1cXG5kcml2ZXJzL2NkeC9jZHguYzo0MzU6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy00MzYtXFx0XFx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzc6XFx0XFx0cmV0ID0gZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgcmVzZXRfY2R4X2RldmljZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDM4LVxcdGVsc2VcXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzk6XFx0XFx0cmV0ID0gY2R4X2Rldl9yZXNldChkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0MC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ0NT1zdGF0aWMgc3NpemVfdCBtb2RhbGlhc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NDcte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ0ODpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NDktXFxuZHJpdmVycy9jZHgvY2R4LmM6NDUwOlxcdHJldHVybiBzcHJpbnRmKGJ1ZiwgXFxcImNkeDp2JTA0WGQlMDRYc3YlMDRYc2QlMDRYYyUwNlhcXFxcblxcXCIsIGNkeF9kZXYtXFx1MDAzZXZlbmRvcixcXG5kcml2ZXJzL2NkeC9jZHguYzo0NTE6XFx0XFx0XFx0Y2R4X2Rldi1cXHUwMDNlZGV2aWNlLCBjZHhfZGV2LVxcdTAwM2VzdWJzeXN0ZW1fdmVuZG9yLCBjZHhfZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MjpcXHRcXHRcXHRjZHhfZGV2LVxcdTAwM2VjbGFzcyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDUzLX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ1Nj1zdGF0aWMgc3NpemVfdCBlbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ1OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDU5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NjYtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDY3OlxcdGlmIChlbmFibGUgPT0gY2R4X2Rldi1cXHUwMDNlZW5hYmxlZClcXG5kcml2ZXJzL2NkeC9jZHguYy00NjgtXFx0XFx0cmV0dXJuIGNvdW50O1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDcwLVxcdGlmIChlbmFibGUgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19lbmFibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6NDcxOlxcdFxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZW5hYmxlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDcyLVxcdGVsc2UgaWYgKCFlbmFibGUgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MzpcXHRcXHRyZXQgPSBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NzQtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDc3LVxcdGlmICghcmV0KVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3ODpcXHRcXHRjZHhfZGV2LVxcdTAwM2VlbmFibGVkID0gZW5hYmxlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3OS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ4Mz1zdGF0aWMgc3NpemVfdCBlbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNDg0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0ODU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDg2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NzpcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIldVxcXFxuXFxcIiwgY2R4X2Rldi1cXHUwMDNlZW5hYmxlZCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDg4LX1cXG5kcml2ZXJzL2NkeC9jZHguYz00ODk9c3RhdGljIERFVklDRV9BVFRSX1JXKGVuYWJsZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDkwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5MTpzdGF0aWMgdW1vZGVfdCBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcXG5kcml2ZXJzL2NkeC9jZHguYy00OTIte1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5My1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo0OTQ6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDk1LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NjpcXHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NzpcXHRpZiAoIWNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy00OTgtXFx0XFx0cmV0dXJuIGEtXFx1MDAzZW1vZGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01MDItXFxuZHJpdmVycy9jZHgvY2R4LmM6NTAzOnN0YXRpYyB1bW9kZV90IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNC17XFxuZHJpdmVycy9jZHgvY2R4LmMtNTA1LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjUwNjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy01MDctXFxuZHJpdmVycy9jZHgvY2R4LmM6NTA4OlxcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTA5OlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTEwLVxcdFxcdHJldHVybiBhLVxcdTAwM2Vtb2RlO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTE0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUxNTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2Rldl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUxNi1cXHRcXHUwMDI2ZGV2X2F0dHJfcmVtb3ZlLmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01MjctXFxuZHJpdmVycy9jZHgvY2R4LmM6NTI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGNkeF9kZXZfZ3JvdXAgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTI5OlxcdC5hdHRycyA9IGNkeF9kZXZfYXR0cnMsXFxuZHJpdmVycy9jZHgvY2R4LmM6NTMwOlxcdC5pc192aXNpYmxlID0gY2R4X2Rldl9hdHRyc19hcmVfdmlzaWJsZSxcXG5kcml2ZXJzL2NkeC9jZHguYy01MzEtfTtcXG5kcml2ZXJzL2NkeC9jZHguYy01MzItXFxuZHJpdmVycy9jZHgvY2R4LmM6NTMzOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfYnVzX2Rldl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUzNC1cXHRcXHUwMDI2ZGV2X2F0dHJfZW5hYmxlLmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01MzgtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGNkeF9idXNfZGV2X2dyb3VwID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MDpcXHQuYXR0cnMgPSBjZHhfYnVzX2Rldl9hdHRycyxcXG5kcml2ZXJzL2NkeC9jZHguYzo1NDE6XFx0LmlzX3Zpc2libGUgPSBjZHhfYnVzX2F0dHJzX2FyZV92aXNpYmxlLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0Mi19O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU0My1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmNkeF9kZXZfZ3JvdXBzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTQ1OlxcdFxcdTAwMjZjZHhfZGV2X2dyb3VwLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NjpcXHRcXHUwMDI2Y2R4X2J1c19kZXZfZ3JvdXAsXFxuZHJpdmVycy9jZHgvY2R4LmMtNTQ3LVxcdE5VTEwsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01NDktXFxuZHJpdmVycy9jZHgvY2R4LmM6NTUwOnN0YXRpYyBpbnQgY2R4X2RlYnVnX3Jlc291cmNlX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU1MS17XFxuZHJpdmVycy9jZHgvY2R4LmM6NTUyOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NTMtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01NTUtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1BWF9DRFhfREVWX1JFU09VUkNFUzsgaSsrKSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTU2OlxcdFxcdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gIFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VyZXNbaV07XFxuZHJpdmVycy9jZHgvY2R4LmMtNTU3LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTYyLX1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NjM6REVGSU5FX1NIT1dfQVRUUklCVVRFKGNkeF9kZWJ1Z19yZXNvdXJjZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTY0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU2NTpzdGF0aWMgdm9pZCBjZHhfZGV2aWNlX2RlYnVnZnNfaW5pdChzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHguYy01NjYte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU2NzpcXHRjZHhfZGV2LVxcdTAwM2VkZWJ1Z2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KSwgY2R4X2RlYnVnZnNfZGlyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Njg6XFx0aWYgKElTX0VSUihjZHhfZGV2LVxcdTAwM2VkZWJ1Z2ZzX2RpcikpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTY5LVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL2NkeC9jZHguYy01NzAtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTcxOlxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInJlc291cmNlXFxcIiwgMDQ0NCwgY2R4X2Rldi1cXHUwMDNlZGVidWdmc19kaXIsIGNkeF9kZXYsXFxuZHJpdmVycy9jZHgvY2R4LmM6NTcyOlxcdFxcdFxcdCAgICBcXHUwMDI2Y2R4X2RlYnVnX3Jlc291cmNlX2ZvcHMpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU3My19XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz01NzU9c3RhdGljIHNzaXplX3QgcmVzY2FuX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTc3LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Nzg6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTc5LVxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTg3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU4ODpcXHRndWFyZChtdXRleCkoXFx1MDAyNmNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU4OS1cXG5kcml2ZXJzL2NkeC9jZHguYy01OTAtXFx0LyogVW5yZWdpc3RlciBhbGwgdGhlIGRldmljZXMgb24gdGhlIGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU5MTpcXHRjZHhfdW5yZWdpc3Rlcl9kZXZpY2VzKFxcdTAwMjZjZHhfYnVzX3R5cGUpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU5Mi1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTYwOD1zdGF0aWMgQlVTX0FUVFJfV08ocmVzY2FuKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MDktXFxuZHJpdmVycy9jZHgvY2R4LmM6NjEwOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfYnVzX2F0dHJzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjExLVxcdFxcdTAwMjZidXNfYXR0cl9yZXNjYW4uYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTYxMy19O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNDpBVFRSSUJVVEVfR1JPVVBTKGNkeF9idXMpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYxNS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2MTY6Y29uc3Qgc3RydWN0IGJ1c190eXBlIGNkeF9idXNfdHlwZSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy02MTctXFx0Lm5hbWVcXHRcXHQ9IFxcXCJjZHhcXFwiLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYxOC1cXHQuZHJpdmVyX292ZXJyaWRlID0gdHJ1ZSxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MTk6XFx0Lm1hdGNoXFx0XFx0PSBjZHhfYnVzX21hdGNoLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMDpcXHQucHJvYmVcXHRcXHQ9IGNkeF9wcm9iZSxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjE6XFx0LnJlbW92ZVxcdFxcdD0gY2R4X3JlbW92ZSxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjI6XFx0LnNodXRkb3duXFx0PSBjZHhfc2h1dGRvd24sXFxuZHJpdmVycy9jZHgvY2R4LmM6NjIzOlxcdC5kbWFfY29uZmlndXJlXFx0PSBjZHhfZG1hX2NvbmZpZ3VyZSxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjQ6XFx0LmRtYV9jbGVhbnVwXFx0PSBjZHhfZG1hX2NsZWFudXAsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjI1OlxcdC5idXNfZ3JvdXBzXFx0PSBjZHhfYnVzX2dyb3VwcyxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjY6XFx0LmRldl9ncm91cHNcXHQ9IGNkeF9kZXZfZ3JvdXBzLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYyNy19O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjYyODpFWFBPUlRfU1lNQk9MX0dQTChjZHhfYnVzX3R5cGUpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYyOS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2MzA6aW50IF9fY2R4X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcixcXG5kcml2ZXJzL2NkeC9jZHguYy02MzEtXFx0XFx0XFx0ICBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTYzNC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2MzU6XFx0Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XFxuZHJpdmVycy9jZHgvY2R4LmM6NjM2OlxcdGNkeF9kcml2ZXItXFx1MDAzZWRyaXZlci5idXMgPSBcXHUwMDI2Y2R4X2J1c190eXBlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYzNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo2Mzg6XFx0ZXJyb3IgPSBkcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmNkeF9kcml2ZXItXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjM5LVxcdGlmIChlcnJvcikge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0MC1cXHRcXHRwcl9lcnIoXFxcImRyaXZlcl9yZWdpc3RlcigpIGZhaWxlZCBmb3IgJXM6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0MTpcXHRcXHQgICAgICAgY2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyLm5hbWUsIGVycm9yKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NDItXFx0XFx0cmV0dXJuIGVycm9yO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjQ2LX1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NDc6RVhQT1JUX1NZTUJPTF9HUEwoX19jZHhfZHJpdmVyX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjQ5OnZvaWQgY2R4X2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY1MC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NjUxOlxcdGRyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY1Mi19XFxuZHJpdmVycy9jZHgvY2R4LmM6NjUzOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kcml2ZXJfdW5yZWdpc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjU0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY1NTpzdGF0aWMgdm9pZCBjZHhfZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY1Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6NjU3OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY1OC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NTk6XFx0a2ZyZWUoY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjYwLX1cXG5kcml2ZXJzL2NkeC9jZHguYy02NjEtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjYyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgY2R4X3BoeXNfdm1fb3BzID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY2My0jaWZkZWYgQ09ORklHX0hBVkVfSU9SRU1BUF9QUk9UXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NjgtLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6NjY5OiAqIGNkeF9tbWFwX3Jlc291cmNlIC0gbWFwIGEgQ0RYIHJlc291cmNlIGludG8gdXNlciBtZW1vcnkgc3BhY2VcXG5kcml2ZXJzL2NkeC9jZHguYy02NzAtICogQGZwOiBGaWxlIHBvaW50ZXIuIE5vdCB1c2VkIGluIHRoaXMgZnVuY3Rpb24sIGJ1dCByZXF1aXJlZCB3aGVyZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjc5LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY4MDpzdGF0aWMgaW50IGNkeF9tbWFwX3Jlc291cmNlKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGtvYmplY3QgKmtvYmosXFxuZHJpdmVycy9jZHgvY2R4LmMtNjgxLVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02ODMte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY4NDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2Uoa29ial90b19kZXYoa29iaikpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY4NS1cXHRpbnQgbnVtID0gKHVuc2lnbmVkIGxvbmcpYXR0ci1cXHUwMDNlcHJpdmF0ZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY4OC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2ODk6XFx0cmVzID0gXFx1MDAyNmNkeF9kZXYtXFx1MDAzZXJlc1tudW1dO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY5MC1cXHRpZiAoaW9tZW1faXNfZXhjbHVzaXZlKHJlcy1cXHUwMDNlc3RhcnQpKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjkzLVxcdC8qIE1ha2Ugc3VyZSB0aGUgY2FsbGVyIGlzIG1hcHBpbmcgYSB2YWxpZCByZXNvdXJjZSBmb3IgdGhpcyBkZXZpY2UgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo2OTQ6XFx0c2l6ZSA9ICgoY2R4X3Jlc291cmNlX2xlbihjZHhfZGV2LCBudW0pIC0gMSkgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCkgKyAxO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY5NS1cXHRpZiAodm1hLVxcdTAwM2V2bV9wZ29mZiArIHZtYV9wYWdlcyh2bWEpIFxcdTAwM2Ugc2l6ZSlcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcwMi1cXHR2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLVxcdTAwM2V2bV9wYWdlX3Byb3QpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjcwMzpcXHR2bWEtXFx1MDAzZXZtX3Bnb2ZmICs9IChjZHhfcmVzb3VyY2Vfc3RhcnQoY2R4X2RldiwgbnVtKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo3MDQ6XFx0dm1hLVxcdTAwM2V2bV9vcHMgPSBcXHUwMDI2Y2R4X3BoeXNfdm1fb3BzO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTcwNS1cXHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVxcdTAwM2V2bV9zdGFydCwgdm1hLVxcdTAwM2V2bV9wZ29mZixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcwOS1cXG5kcml2ZXJzL2NkeC9jZHguYzo3MTA6c3RhdGljIHZvaWQgY2R4X2Rlc3Ryb3lfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXFxuZHJpdmVycy9jZHgvY2R4LmMtNzExLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcxNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo3MTg6XFx0XFx0cmVzX2F0dHIgPSBjZHhfZGV2LVxcdTAwM2VyZXNfYXR0cltpXTtcXG5kcml2ZXJzL2NkeC9jZHguYy03MTktXFx0XFx0aWYgKHJlc19hdHRyKSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NzIwOlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9iaW5fZmlsZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy03MjEtXFx0XFx0XFx0a2ZyZWUocmVzX2F0dHIpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzI2LSNkZWZpbmUgQ0RYX1JFU19BVFRSX05BTUVfTEVOXFx0MTBcXG5kcml2ZXJzL2NkeC9jZHguYzo3Mjc6c3RhdGljIGludCBjZHhfY3JlYXRlX3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcyOC17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03NDItXFxuZHJpdmVycy9jZHgvY2R4LmM6NzQzOlxcdHJlc19hdHRyLVxcdTAwM2VtbWFwID0gY2R4X21tYXBfcmVzb3VyY2U7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzQ0LVxcdHJlc19hdHRyLVxcdTAwM2VhdHRyLm5hbWUgPSByZXNfYXR0cl9uYW1lO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTc0NS1cXHRyZXNfYXR0ci1cXHUwMDNlYXR0ci5tb2RlID0gMDYwMDtcXG5kcml2ZXJzL2NkeC9jZHguYzo3NDY6XFx0cmVzX2F0dHItXFx1MDAzZXNpemUgPSBjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzQ3LVxcdHJlc19hdHRyLVxcdTAwM2Vwcml2YXRlID0gKHZvaWQgKikodW5zaWduZWQgbG9uZyludW07XFxuZHJpdmVycy9jZHgvY2R4LmM6NzQ4OlxcdHJldCA9IHN5c2ZzX2NyZWF0ZV9iaW5fZmlsZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy03NDktXFx0aWYgKHJldCkge1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToyMS40MzUxMzUwNjZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgwMTM2OTU4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgQ0RYIFZGSU8gRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgVkZJTyBkcml2ZXIgZm9yIHRoZSBDRFggYnVzIOKAkyB0aGF0J3MgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCwgYW5kIGl0J3MgaGFuZGxpbmcgYHZmaW8tY2R4YC4gUmlnaHQsIGdvdCBpdC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzLCBob3cgZXhhY3RseSBhcmUgdGhlc2UgQ0RYIGNvbnRyb2xsZXJzIGJlaW5nIGJyb3VnaHQgdG8gbGlmZSB3aXRoaW4gdGhpcyB3aG9sZSBWRklPIHNldHVwPyBXaGVyZSdzIHRoZSBpbnN0YW50aWF0aW9uIGhhcHBlbmluZz8gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gTXkgaW50dWl0aW9uIHNheXMgdGhlIGltcGxlbWVudGF0aW9uIG1pZ2h0IGJlIGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jYCDigJMgbGV0J3MgY2hlY2sgdGhlcmUsIHNlZSBpZiB3ZSBjYW4gZmluZCB0aGUgbWFnaWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTM2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MjMuMjM2NTA3MTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIFBsYXRmb3JtIGRyaXZlciBmb3IgQ0RYIGJ1cy5cXG4gICA0OlxcdCAqXFxuICAgNTpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxcbiAgIDY6XFx0ICovXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ycG1zZy5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlbW90ZXByb2MuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZi5oXFx1MDAzZVxcbiAgMTE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbiAgMTI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NkeC9jZHhfYnVzLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAxNDpcXHRcXG4gIDE1OlxcdCNpbmNsdWRlIFxcXCIuLi9jZHguaFxcXCJcXG4gIDE2OlxcdCNpbmNsdWRlIFxcXCJjZHhfY29udHJvbGxlci5oXFxcIlxcbiAgMTc6XFx0I2luY2x1ZGUgXFxcIm1jZGlfZnVuY3Rpb25zLmhcXFwiXFxuICAxODpcXHQjaW5jbHVkZSBcXFwibWNkaWQuaFxcXCJcXG4gIDE5OlxcdFxcbiAgMjA6XFx0c3RhdGljIHN0cnVjdCBycG1zZ19kZXZpY2VfaWQgY2R4X3JwbXNnX2lkX3RhYmxlW10gPSB7XFxuICAyMTpcXHRcXHR7IC5uYW1lID0gXFxcIm1jZGlfaXBjXFxcIiB9LFxcbiAgMjI6XFx0XFx0eyB9LFxcbiAgMjM6XFx0fTtcXG4gIDI0OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocnBtc2csIGNkeF9ycG1zZ19pZF90YWJsZSk7XFxuICAyNTpcXHRcXG4gIDI2OlxcdGludCBjZHhfcnBtc2dfc2VuZChzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpLFxcbiAgMjc6XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGNkeF9kd29yZCAqaGRyLCBzaXplX3QgaGRyX2xlbixcXG4gIDI4OlxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBjZHhfZHdvcmQgKnNkdSwgc2l6ZV90IHNkdV9sZW4pXFxuICAyOTpcXHR7XFxuICAzMDpcXHRcXHR1bnNpZ25lZCBjaGFyICpzZW5kX2J1ZjtcXG4gIDMxOlxcdFxcdGludCByZXQ7XFxuICAzMjpcXHRcXG4gIDMzOlxcdFxcdHNlbmRfYnVmID0ga3phbGxvYyhoZHJfbGVuICsgc2R1X2xlbiwgR0ZQX0tFUk5FTCk7XFxuICAzNDpcXHRcXHRpZiAoIXNlbmRfYnVmKVxcbiAgMzU6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdG1lbWNweShzZW5kX2J1ZiwgaGRyLCBoZHJfbGVuKTtcXG4gIDM4OlxcdFxcdG1lbWNweShzZW5kX2J1ZiArIGhkcl9sZW4sIHNkdSwgc2R1X2xlbik7XFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdHJldCA9IHJwbXNnX3NlbmQoY2R4X21jZGktXFx1MDAzZWVwdCwgc2VuZF9idWYsIGhkcl9sZW4gKyBzZHVfbGVuKTtcXG4gIDQxOlxcdFxcdGtmcmVlKHNlbmRfYnVmKTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDQ0OlxcdH1cXG4gIDQ1OlxcdFxcbiAgNDY6XFx0c3RhdGljIGludCBjZHhfYXR0YWNoX3RvX3Jwcm9jKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuICA0NzpcXHR7XFxuICA0ODpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnI1X2NvcmVfbm9kZTtcXG4gIDQ5OlxcdFxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuICA1MDpcXHRcXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbiAgNTE6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2O1xcbiAgNTI6XFx0XFx0c3RydWN0IHJwcm9jICpycDtcXG4gIDUzOlxcdFxcdGludCByZXQ7XFxuICA1NDpcXHRcXG4gIDU1OlxcdFxcdGRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuICA1NjpcXHRcXHRjZHhfYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbiAgNTc6XFx0XFx0Y2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0cjVfY29yZV9ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtXFx1MDAzZW9mX25vZGUsIFxcXCJ4bG54LHJwcm9jXFxcIiwgMCk7XFxuICA2MDpcXHRcXHRpZiAoIXI1X2NvcmVfbm9kZSkge1xcbiAgNjE6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwieGxueCxycHJvYzogaW52YWxpZCBwaGFuZGxlXFxcXG5cXFwiKTtcXG4gIDYyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAgNjM6XFx0XFx0fVxcbiAgNjQ6XFx0XFxuICA2NTpcXHRcXHRycCA9IHJwcm9jX2dldF9ieV9waGFuZGxlKHI1X2NvcmVfbm9kZS1cXHUwMDNlcGhhbmRsZSk7XFxuICA2NjpcXHRcXHRpZiAoIXJwKSB7XFxuICA2NzpcXHRcXHRcXHRyZXQgPSAtRVBST0JFX0RFRkVSO1xcbiAgNjg6XFx0XFx0XFx0Z290byBwZGV2X2VycjtcXG4gIDY5OlxcdFxcdH1cXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0LyogQXR0YWNoIHRvIHJlbW90ZSBwcm9jZXNzb3IgKi9cXG4gIDcyOlxcdFxcdHJldCA9IHJwcm9jX2Jvb3QocnApO1xcbiAgNzM6XFx0XFx0aWYgKHJldCkge1xcbiAgNzQ6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGF0dGFjaCB0byByZW1vdGUgcHJvY2Vzc29yXFxcXG5cXFwiKTtcXG4gIDc1OlxcdFxcdFxcdHJwcm9jX3B1dChycCk7XFxuICA3NjpcXHRcXHRcXHRnb3RvIHBkZXZfZXJyO1xcbiAgNzc6XFx0XFx0fVxcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHRjZHhfbWNkaS1cXHUwMDNlcjVfcnByb2MgPSBycDtcXG4gIDgwOlxcdHBkZXZfZXJyOlxcbiAgODE6XFx0XFx0b2Zfbm9kZV9wdXQocjVfY29yZV9ub2RlKTtcXG4gIDgyOlxcdFxcdHJldHVybiByZXQ7XFxuICA4MzpcXHR9XFxuICA4NDpcXHRcXG4gIDg1OlxcdHN0YXRpYyB2b2lkIGNkeF9kZXRhY2hfdG9fcjUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gIDg2OlxcdHtcXG4gIDg3OlxcdFxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuICA4ODpcXHRcXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbiAgODk6XFx0XFxuICA5MDpcXHRcXHRjZHhfYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbiAgOTE6XFx0XFx0Y2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4gIDkyOlxcdFxcbiAgOTM6XFx0XFx0cnByb2NfZGV0YWNoKGNkeF9tY2RpLVxcdTAwM2VyNV9ycHJvYyk7XFxuICA5NDpcXHRcXHRycHJvY19wdXQoY2R4X21jZGktXFx1MDAzZXI1X3Jwcm9jKTtcXG4gIDk1OlxcdH1cXG4gIDk2OlxcdFxcbiAgOTc6XFx0c3RhdGljIGludCBjZHhfcnBtc2dfY2Ioc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYsIHZvaWQgKmRhdGEsXFxuICA5ODpcXHRcXHRcXHRcXHRpbnQgbGVuLCB2b2lkICpwcml2LCB1MzIgc3JjKVxcbiAgOTk6XFx0e1xcbiAxMDA6XFx0XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2cnBkZXYtXFx1MDAzZWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjE1OjIzLjIzNjU4OTg2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMDM5Mzk0MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ0RYIFJQTVNHIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGNkeF9ycG1zZ2AgYW5kIGl0IG5lZWRzIGEgc3BlY2lmaWMgcnBtc2cgY2hhbm5lbCwgXCJtY2RpX2lwYyxcIiBvciwgaWYgdGhhdCdzIG5vdCBhdmFpbGFibGUsIGl0J3MgZXhwZWN0aW5nIGEgcGxhdGZvcm0gZGV2aWNlIHdpdGggYSBEZXZpY2UgVHJlZSBub2RlIHRoYXQgbWF0Y2hlcyBcInhsbngsdmVyc2FsLW5ldC1jZHhcIiBhbmQgYSByZW1vdGUgcHJvY2Vzc29yIGRlc2NyaWJlZCBhcyBcInhsbngscnByb2MuXCIgUmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYW4gQU1EIFZlcnNhbCBvciBYaWxpbnggVmVyc2FsIE5ldCBwbGF0Zm9ybSDigJMgdGhhdCBtYWtlcyBzZW5zZS5cblxuTm93LCBteSBuZXh0IHRob3VnaHQgaXMsIGFyZSB0aGVyZSAqYW55KiBvdGhlciBDRFggY29udHJvbGxlciBpbXBsZW1lbnRhdGlvbnMga2lja2luZyBhcm91bmQgaW4gdGhlIGtlcm5lbD8gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiBhbmQgc2VlIGlmIGFueXRoaW5nIGVsc2UgaGFzIGJlZW4gcmVnaXN0ZXJlZCB0aGF0IG1pZ2h0IHJlbGF0ZSB0byB0aGlzLiBBcmUgdGhlcmUgYW55IGV4aXN0aW5nIGRldmljZSByZWdpc3RyYXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHRoaXMgcGFydGljdWxhciBzZXR1cD8gR290IHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IG90aGVyIHBvdGVudGlhbCBjb250ZW5kZXJzIG9yIGNvbmZsaWN0cyB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0J3MgZGlnIGluIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwODU1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToyNS4yNDA1MzI2OTFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Nzk1ODY5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvY2R4LmM9ODkyPUVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9idXNfYWRkLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtODkzLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg5NDppbnQgY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY2R4LmMtODk1LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxNi19XFxuZHJpdmVycy9jZHgvY2R4LmM6OTE3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTE4LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4Lmg9MzE9c3RydWN0IGNkeF9kZXZfcGFyYW1zIHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTQ5LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5oOjUwOiAqIGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyIC0gUmVnaXN0ZXIgYSBDRFggY29udHJvbGxlciBhbmQgaXRzIHBvcnRzXFxuZHJpdmVycy9jZHgvY2R4LmgtNTEtICpcXHRcXHRvbiB0aGUgQ0RYIGJ1cy5cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTU1LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5oOjU2OmludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XFxuZHJpdmVycy9jZHgvY2R4LmgtNTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9NDY9dm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00OC1cXHQvKiBSZWdpc3RlciBDRFggY29udHJvbGxlciB3aXRoIENEWCBidXMgZHJpdmVyICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ5OlxcdGlmIChjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihjZHgpKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01MC1cXHRcXHRkZXZfZXJyKGNkeC1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIENEWCBjb250cm9sbGVyXFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MjYuOTIwMTI0NTcyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2MTMyMDk2MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIENvbnRyb2xsZXIgUmVnaXN0cmF0aW9uIGFuZCBEZXZpY2UgQWRkaXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2FsbCBncmFwaCBpcyB0ZWxsaW5nIG1lIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGUgYGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyYCBmdW5jdGlvbiBpcyBvbmx5IGV2ZXIgY2FsbGVkIGZyb20gd2l0aGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmNgLiBUaGF04oCZcyBnb29kIHRvIGtub3cuIEl0IGhlbHBzIHRvIG5hcnJvdyBkb3duIHRoZSBzY29wZSBvZiB3aGVyZSBjb250cm9sbGVyIGluaXRpYWxpemF0aW9uIG9yaWdpbmF0ZXMuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSB3aGljaCBmdW5jdGlvbnMgcmVseSBvbiB0aGUgYGNkeF9kZXZpY2VfYWRkYCBmdW5jdGlvbi4gIFVuZGVyc3RhbmRpbmcgd2hhdCBhZGRzIGRldmljZXMgd2lsbCBjbGFyaWZ5IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBkZXZpY2UgcmVnaXN0cmF0aW9uIGFuZCB0aGUgZGV2aWNlcyB0aGVtc2VsdmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZXNlIHR3byBjb21wb25lbnRzLiBLbm93aW5nIHdoaWNoIG1vZHVsZXMgYWRkIGRldmljZXMgd2lsbCBtYWtlIG15IGFuYWx5c2lzIG1vcmUgY29tcHJlaGVuc2l2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2NTMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToyOC41MzMzMzcwNDhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODY4NDYxMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4X2RldmljZV9hZGRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvY2R4LmM9NzI3PXN0YXRpYyBpbnQgY2R4X2NyZWF0ZV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTc1OC1cXG5kcml2ZXJzL2NkeC9jZHguYzo3NTk6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcylcXG5kcml2ZXJzL2NkeC9jZHguYy03NjAte1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODQ0LX1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NDU6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04NDYtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaD02Mj12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmgtNjQtLyoqXFxuZHJpdmVycy9jZHgvY2R4Lmg6NjU6ICogY2R4X2RldmljZV9hZGQgLSBBZGQgYSBDRFggZGV2aWNlLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmgtNjYtICpcXHRcXHRvbiB0aGUgQ0RYIGJ1cyBhcyBwZXIgdGhlIGRldmljZSBwYXJhbWV0ZXJzIHByb3ZpZGVkXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaC03Mi0gKi9cXG5kcml2ZXJzL2NkeC9jZHguaDo3MzppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKTtcXG5kcml2ZXJzL2NkeC9jZHguaC03NC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz05Mz1zdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQxLVxcdFxcdFxcdC8qIEFkZCB0aGUgZGV2aWNlIHRvIHRoZSBjZHggYnVzICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjE0MjpcXHRcXHRcXHRyZXQgPSBjZHhfZGV2aWNlX2FkZChcXHUwMDI2ZGV2X3BhcmFtcyk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE0My1cXHRcXHRcXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjE1OjMwLjIyMDE4NzE1OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjQ2NDkxNzczNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFjY2Vzc2liaWxpdHkgb2YgdGhlIENEWCBCdXMgaW4gYSBTdGFuZGFyZCBRRU1VIEVudmlyb25tZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IHRoZSBBTUQvWGlsaW54IFZlcnNhbCBOZXR3b3JrIHBsYXRmb3JtIGNvbXBvc2FibGUgZGV2aWNlIGJ1cywgb3IgQ0RYIGJ1cywgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIFZGSU8gYW5kIFFFTVUuIFRoZSBpbnN0cnVjdGlvbnMgcG9pbnQgb3V0IGNlcnRhaW4gaGFyZHdhcmUg4oCTIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycyBsaWtlIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW5kIGFtZGdwdSDigJMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBhbmQgYXJlbid0IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gT3VyIGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIHdlIGNhbiBhY2Nlc3Mgb3Igc2ltdWxhdGUgdGhlIENEWCBidXMgb3IgVkZJTyBDRFggd2l0aGluIHRoYXQgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCBvbiBhbWQ2NCBhcmNoaXRlY3R1cmUuXG5cbkZpcnN0LCBJJ20gY2hlY2tpbmcgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cywgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhhdCBDRFggYnVzIGRldmljZXMgb25seSBtYXRlcmlhbGl6ZSB3aGVuIGEgQ0RYIGNvbnRyb2xsZXIgaXMgcmVnaXN0ZXJlZC4gVGhlIHJlZ2lzdHJhdGlvbiwgZnJvbSB3aGF0IEkgZ2F0aGVyIGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jYCBhbmQgYGNkeF9jb250cm9sbGVyLmNgLCBoaW5nZXMgb24gYmluZGluZyB0byBhbiBycG1zZyBkZXZpY2UgbmFtZWQgXCJtY2RpX2lwY1wiIG9yIGEgcGxhdGZvcm0gZGV2aWNlIHdpdGggdGhlIERUIG5vZGUgXCJ4bG54LHZlcnNhbC1uZXQtY2R4LFwiIHdoaWNoIGNvbm5lY3RzIHRvIHRoZSByZW1vdGUgQ29ydGV4LVI1IHByb2Nlc3NvcidzIGZpcm13YXJlIChgcnByb2NgKS5cblxuTm93LCB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbTogaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugb24gYW1kNjQsIHRoZXJlJ3Mgbm8gaW5oZXJlbnQgQ0RYIGNvbnRyb2xsZXIgaGFyZHdhcmUsIGFuZCBjcml0aWNhbGx5LCBubyBlbXVsYXRlZCBDRFggY29udHJvbGxlciBvciBmaXJtd2FyZS4gVGhpcyBtZWFucyBubyBDRFggYnVzIGRldmljZXMgYXJlIHByZXNlbnQuIENvbnNlcXVlbnRseSwgdGhlIGBjZHhfZGV2aWNlYCBjYW4ndCBiZSBwcm9iZWQgYnkgYHZmaW8tY2R4YC4gU28sIHRoYXQgYHZmaW9fY2R4X21tYXAoKWAgZnVuY3Rpb24g4oCTIHdoZXJlIHRoZSBwYXRjaCBhZGRzIHRoZSBjaGVjayBgaWYgKCEodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9TSEFSRUQpKSByZXR1cm4gLUVJTlZBTDtgIOKAkyBpdCBzaW1wbHkgY2FuJ3QgYmUgZXhlY3V0ZWQgdW5kZXIgdGhlc2UgY29uZGl0aW9ucy5cblxuQnV0IHdhaXQgYSBtaW51dGUsIEkgd2FudCB0byBjb25maXJtIOKAkyBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSdzIGFic29sdXRlbHkgbm8gdmlydHVhbCBDRFggZHJpdmVyLCBzeXNmcyBtb2NrLCBvciBhbnl0aGluZyBlbHNlIGx1cmtpbmcgaW4gdGhlIGtlcm5lbCB0cmVlIHRoYXQgY291bGQgKmFydGlmaWNpYWxseSogY3JlYXRlIGEgYGNkeF9kZXZpY2VgLiBMZXQgbWUgZG8gYSBxdWljayBzZWFyY2ggZm9yIGBjZHhfZGV2aWNlYCB0aHJvdWdob3V0IHRoZSBlbnRpcmUga2VybmVsIHNvdXJjZSB0byBydWxlIG91dCBhbnkgcG90ZW50aWFsIHN1cnByaXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIzNzksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6NDIuNjg1MTA4MDQ0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU5MjY1ODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkeF9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NTYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvY2R4L2NkeC5jPTg1PXN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXFxcInhsbngsdmVyc2FsLW5ldC1jZHhcXFwiO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg3OnN0YXRpYyB2b2lkIGNkeF9kZXN0cm95X3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04OC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTk1PWludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy05Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6OTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTgtXFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTk6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XFxuZHJpdmVycy9jZHgvY2R4LmMtMTAwLVxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2O1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MTIwPUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTIyLS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMzogKiByZXNldF9jZHhfZGV2aWNlIC0gUmVzZXQgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtMTI0LSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMC0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMzE6c3RhdGljIGludCByZXNldF9jZHhfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2NkeC9jZHguYy0xMzIte1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MTQ2PXN0YXRpYyBpbnQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE0OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MTQ5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MC1cXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE2Mi1cXHQgKiBEbyBub3QgZnJlZSBjZHhfZGV2IGhlcmUgYXMgaXQgd291bGQgYmUgZnJlZWQgaW5cXG5kcml2ZXJzL2NkeC9jZHguYzoxNjM6XFx0ICogY2R4X2RldmljZV9yZWxlYXNlKCkgY2FsbGVkIGZyb20gd2l0aGluIHB1dF9kZXZpY2UoKS5cXG5kcml2ZXJzL2NkeC9jZHguYy0xNjQtXFx0ICovXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz0xNzE9c3RhdGljIHZvaWQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cylcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4Mi0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4MzogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg0LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoxODY6Y2R4X21hdGNoX29uZV9kZXZpY2UoY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NzpcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg4LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNC0gKiBVc2VkIGJ5IGEgZHJpdmVyIHRvIGNoZWNrIHdoZXRoZXIgYSBDRFggZGV2aWNlIGlzIGluIGl0cyBsaXN0IG9mXFxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNi0gKiBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNy0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMjA5LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIxMDpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjEyLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cXG5kcml2ZXJzL2NkeC9jZHguYzoyMjM6aW50IGNkeF9zZXRfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNC17XFxuZHJpdmVycy9jZHgvY2R4LmMtMjI1LVxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yMjctXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MjM3PUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9zZXRfbWFzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXFxuZHJpdmVycy9jZHgvY2R4LmM6MjM5OmludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI0MC17XFxuZHJpdmVycy9jZHgvY2R4LmMtMjQxLVxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yNDMtXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MjYzPXN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjY0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjY2LVxcdGNvbnN0IHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkcnYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NzpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqZm91bmRfaWQgPSBOVUxMO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2ODpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI2OS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MzAyPXN0YXRpYyBpbnQgY2R4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNC1cXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMDYtXFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz0zMjg9c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMzAtXFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzE6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzMyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MzM3PXN0YXRpYyB2b2lkIGNkeF9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMzktXFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDA6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQxLVxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MzQ5PXN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzUxLVxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzUyOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM1My1cXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4ND1maWVsZCMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODUte1xcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODY6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4Ny1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIGZvcm1hdF9zdHJpbmcsIGNkeF9kZXYtXFx1MDAzZWZpZWxkKTtcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz00MjI9c3RhdGljIHNzaXplX3QgcmVzZXRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDI1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNi1cXHRib29sIHZhbDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQzNi1cXHRcXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNzpcXHRcXHRyZXQgPSBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCByZXNldF9jZHhfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00MzgtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDQ1PXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0Ny17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDQ4OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0OS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ1Nj1zdGF0aWMgc3NpemVfdCBlbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ1OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDU5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2MC1cXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ4Mz1zdGF0aWMgc3NpemVfdCBlbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNDg0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0ODU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDg2LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDkxPXN0YXRpYyB1bW9kZV90IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDkzLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTUtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDk2OlxcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDk3LVxcdGlmICghY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NTAzPXN0YXRpYyB1bW9kZV90IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTA1LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjUwNjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy01MDctXFxuZHJpdmVycy9jZHgvY2R4LmM6NTA4OlxcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTA5LVxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz01NTA9c3RhdGljIGludCBjZHhfZGVidWdfcmVzb3VyY2Vfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTUxLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NTI6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU1My1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTU2Mz1ERUZJTkVfU0hPV19BVFRSSUJVVEUoY2R4X2RlYnVnX3Jlc291cmNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NjQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTY1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfZGVidWdmc19pbml0KHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Ni17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz02NTM9RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2RyaXZlcl91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjU1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNjU2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjU4LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NjgwPXN0YXRpYyBpbnQgY2R4X21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XFxuZHJpdmVycy9jZHgvY2R4LmM6Njg0OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShrb2JqX3RvX2Rldihrb2JqKSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjg1LVxcdGludCBudW0gPSAodW5zaWduZWQgbG9uZylhdHRyLVxcdTAwM2Vwcml2YXRlO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzA5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjcxMDpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcXG5kcml2ZXJzL2NkeC9jZHguYy03MTEte1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzI2LSNkZWZpbmUgQ0RYX1JFU19BVFRSX05BTUVfTEVOXFx0MTBcXG5kcml2ZXJzL2NkeC9jZHguYzo3Mjc6c3RhdGljIGludCBjZHhfY3JlYXRlX3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcyOC17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03NTgtXFxuZHJpdmVycy9jZHgvY2R4LmM6NzU5OmludCBjZHhfZGV2aWNlX2FkZChzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgKmRldl9wYXJhbXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtNzYwLXtcXG5kcml2ZXJzL2NkeC9jZHguYy03NjEtXFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBkZXZfcGFyYW1zLVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6NzYyOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTc2My1cXHRpbnQgcmV0LCBpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzkyLVxcdGNkeF9kZXYtXFx1MDAzZWRldi5kbWFfbWFzayA9IFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkbWFfbWFzaztcXG5kcml2ZXJzL2NkeC9jZHguYzo3OTM6XFx0Y2R4X2Rldi1cXHUwMDNlZGV2LnJlbGVhc2UgPSBjZHhfZGV2aWNlX3JlbGVhc2U7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzk0LVxcdGNkeF9kZXYtXFx1MDAzZW1zaV93cml0ZV9wZW5kaW5nID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy04MjktXFxuZHJpdmVycy9jZHgvY2R4LmM6ODMwOlxcdGNkeF9kZXZpY2VfZGVidWdmc19pbml0KGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTgzMS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTgzOC1cXHQgKiBEbyBub3QgZnJlZSBjZHhfZGV2IGhlcmUgYXMgaXQgd291bGQgYmUgZnJlZWQgaW5cXG5kcml2ZXJzL2NkeC9jZHguYzo4Mzk6XFx0ICogY2R4X2RldmljZV9yZWxlYXNlKCkgY2FsbGVkIGZyb20gcHV0X2RldmljZSgpLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTg0MC1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTg0NC19XFxuZHJpdmVycy9jZHgvY2R4LmM6ODQ1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9kZXZpY2VfYWRkLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtODQ2LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTg0Nz1zdHJ1Y3QgZGV2aWNlICpjZHhfYnVzX2FkZChzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcXG5kcml2ZXJzL2NkeC9jZHguYy04NDgte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjg0OTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy04NTAtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTg2MC1cXHRjZHhfZGV2LVxcdTAwM2VkZXYuYnVzID0gXFx1MDAyNmNkeF9idXNfdHlwZTtcXG5kcml2ZXJzL2NkeC9jZHguYzo4NjE6XFx0Y2R4X2Rldi1cXHUwMDNlZGV2LnJlbGVhc2UgPSBjZHhfZGV2aWNlX3JlbGVhc2U7XFxuZHJpdmVycy9jZHgvY2R4LmMtODYyLVxcdGNkeF9kZXYtXFx1MDAzZWlzX2J1cyA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaD02Mj12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmgtNjQtLyoqXFxuZHJpdmVycy9jZHgvY2R4Lmg6NjU6ICogY2R4X2RldmljZV9hZGQgLSBBZGQgYSBDRFggZGV2aWNlLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmgtNjYtICpcXHRcXHRvbiB0aGUgQ0RYIGJ1cyBhcyBwZXIgdGhlIGRldmljZSBwYXJhbWV0ZXJzIHByb3ZpZGVkXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaC03Mi0gKi9cXG5kcml2ZXJzL2NkeC9jZHguaDo3MzppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKTtcXG5kcml2ZXJzL2NkeC9jZHguaC03NC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0xOT1zdGF0aWMgdm9pZCBjZHhfbXNpX3dyaXRlX21zZyhzdHJ1Y3QgaXJxX2RhdGEgKmlycV9kYXRhLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTIxLVxcdHN0cnVjdCBtc2lfZGVzYyAqbXNpX2Rlc2MgPSBpcnFfZGF0YV9nZXRfbXNpX2Rlc2MoaXJxX2RhdGEpO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoyMjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UobXNpX2Rlc2MtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTIzLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTMxPXN0YXRpYyB2b2lkIGNkeF9tc2lfd3JpdGVfaXJxX2xvY2soc3RydWN0IGlycV9kYXRhICppcnFfZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0zMy1cXHRzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjID0gaXJxX2RhdGFfZ2V0X21zaV9kZXNjKGlycV9kYXRhKTtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MzQ6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKG1zaV9kZXNjLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0zNS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0zOT1zdGF0aWMgdm9pZCBjZHhfbXNpX3dyaXRlX2lycV91bmxvY2soc3RydWN0IGlycV9kYXRhICppcnFfZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy00MS1cXHRzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjID0gaXJxX2RhdGFfZ2V0X21zaV9kZXNjKGlycV9kYXRhKTtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6NDI6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKG1zaV9kZXNjLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy00My1cXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6NDQ6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTQ1LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTY3LVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo2ODppbnQgY2R4X2VuYWJsZV9tc2koc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTY5LXtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNzAtXFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jOjcxOlxcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy03Mi1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz04Mj1FWFBPUlRfU1lNQk9MX0dQTChjZHhfZW5hYmxlX21zaSk7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTgzLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo4NDp2b2lkIGNkeF9kaXNhYmxlX21zaShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtODUte1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy04Ni1cXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6ODc6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTg4LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTk2PXN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgY2R4X21zaV9pcnFfY2hpcCA9IHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMDctLyogQ29udmVydCBhbiBtc2lfZGVzYyB0byBhIHVuaXF1ZSBpZGVudGlmaWVyIHdpdGhpbiB0aGUgZG9tYWluLiAqL1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoxMDg6c3RhdGljIGlycV9od19udW1iZXJfdCBjZHhfZG9tYWluX2NhbGNfaHdpcnEoc3RydWN0IGNkeF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtMTA5LVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG1zaV9kZXNjICpkZXNjKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTExND1zdGF0aWMgdm9pZCBjZHhfbXNpX3NldF9kZXNjKG1zaV9hbGxvY19pbmZvX3QgKmFyZywgc3RydWN0IG1zaV9kZXNjICpkZXNjKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTExNi1cXHRhcmctXFx1MDAzZWRlc2MgPSBkZXNjO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoxMTc6XFx0YXJnLVxcdTAwM2Vod2lycSA9IGNkeF9kb21haW5fY2FsY19od2lycSh0b19jZHhfZGV2aWNlKGRlc2MtXFx1MDAzZWRldiksIGRlc2MpO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMTgtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTEyMD1zdGF0aWMgaW50IGNkeF9tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqbXNpX2RvbWFpbixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMjQtXFx0c3RydWN0IG9mX3BoYW5kbGVfYXJncyBtc2lfc3BlYyA9IHt9O1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoxMjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTEyNi1cXHRzdHJ1Y3QgZGV2aWNlICpwYXJlbnQgPSBjZHhfZGV2LVxcdTAwM2VjZHgtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz01OT1zdGF0aWMgaW50IGNkeF9jb25maWd1cmVfZGV2aWNlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy02MC1cXHRcXHRcXHRcXHR1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo2MTpcXHRcXHRcXHRcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgKmRldl9jb25maWcpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTYyLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz05Mz1zdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQxLVxcdFxcdFxcdC8qIEFkZCB0aGUgZGV2aWNlIHRvIHRoZSBjZHggYnVzICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjE0MjpcXHRcXHRcXHRyZXQgPSBjZHhfZGV2aWNlX2FkZChcXHUwMDI2ZGV2X3BhcmFtcyk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE0My1cXHRcXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYz0xNj1zdGF0aWMgaXJxcmV0dXJuX3QgdmZpb19jZHhfbXNpaGFuZGxlcihpbnQgaXJxX25vLCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0yMy1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoyNDpzdGF0aWMgaW50IHZmaW9fY2R4X21zaV9lbmFibGUoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiwgaW50IG52ZWMpXFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMjUte1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjI2OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVxcdTAwM2V2ZGV2LmRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMjctXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdmRldi1cXHUwMDNldmRldi5kZXY7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy01Ny1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzo1ODpzdGF0aWMgaW50IHZmaW9fY2R4X21zaV9zZXRfdmVjdG9yX3NpZ25hbChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTU5LVxcdFxcdFxcdFxcdFxcdCAgaW50IHZlY3RvciwgaW50IGZkKVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMTAyLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjEwMzpzdGF0aWMgaW50IHZmaW9fY2R4X21zaV9zZXRfYmxvY2soc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xMDQtXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgc3RhcnQsIHVuc2lnbmVkIGludCBjb3VudCxcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTEyNS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxMjY6c3RhdGljIHZvaWQgdmZpb19jZHhfbXNpX2Rpc2FibGUoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xMjcte1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjEyODpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cXHUwMDNldmRldi5kZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTEyOS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB2ZGV2LVxcdTAwM2V2ZGV2LmRldjtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTE0My1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxNDQ6c3RhdGljIGludCB2ZmlvX2NkeF9zZXRfbXNpX3RyaWdnZXIoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xNDUtXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBpbmRleCwgdW5zaWduZWQgaW50IHN0YXJ0LFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMTQ4LXtcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxNDk6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKHZkZXYtXFx1MDAzZXZkZXYuZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xNTAtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xOTgtXFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM6MTk5OmludCB2ZmlvX2NkeF9zZXRfaXJxc19pb2N0bChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTIwMC1cXHRcXHRcXHQgICAgdTMyIGZsYWdzLCB1bnNpZ25lZCBpbnQgaW5kZXgsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0yMTEtLyogRnJlZSBBbGwgSVJRcyBmb3IgdGhlIGdpdmVuIGRldmljZSAqL1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjIxMjp2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTIxMy17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0xMT1zdGF0aWMgaW50IHZmaW9fY2R4X2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTEyLXtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxMzpcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNDpcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNS1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTIwPXN0YXRpYyB2b2lkIHZmaW9fY2R4X3JlbGVhc2VfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTIxLXtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoyMjpcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoyMzpcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNC1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI4PXN0YXRpYyBpbnQgdmZpb19jZHhfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjkte1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMwOlxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMxOlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMyOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzMtXFx0aW50IGNvdW50ID0gY2R4X2Rldi1cXHUwMDNlcmVzX2NvdW50O1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9NzQ9c3RhdGljIHZvaWQgdmZpb19jZHhfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTc1LXtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzo3NjpcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzo3NzpcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy03OC1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTg0PXN0YXRpYyBpbnQgdmZpb19jZHhfYm1fY3RybChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgdTMyIGZsYWdzLFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtODgtXFx0XFx0b2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfYnVzX21hc3Rlciwgb3ApO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjg5OlxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjkwOlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjkxOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtOTItXFx0c3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfYnVzX21hc3RlciBvcHM7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0xMTY9c3RhdGljIGludCB2ZmlvX2NkeF9pb2N0bF9mZWF0dXJlKHN0cnVjdCB2ZmlvX2RldmljZSAqZGV2aWNlLCB1MzIgZmxhZ3MsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xMjYtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTI3OnN0YXRpYyBpbnQgdmZpb19jZHhfaW9jdGxfZ2V0X2luZm8oc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xMjgtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHZmaW9fZGV2aWNlX2luZm8gX191c2VyICphcmcpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xMzAtXFx0dW5zaWduZWQgbG9uZyBtaW5zeiA9IG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX2RldmljZV9pbmZvLCBudW1faXJxcyk7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTMxOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVxcdTAwM2V2ZGV2LmRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTMyLVxcdHN0cnVjdCB2ZmlvX2RldmljZV9pbmZvIGluZm87XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0xNDk9c3RhdGljIGludCB2ZmlvX2NkeF9pb2N0bF9nZXRfcmVnaW9uX2luZm8oc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNTIte1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjE1MzpcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNTQ6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTU1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVxcdTAwM2V2ZGV2LmRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTU2LVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTY2LVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjE2NzpzdGF0aWMgaW50IHZmaW9fY2R4X2lvY3RsX2dldF9pcnFfaW5mbyhzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE2OC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHZmaW9faXJxX2luZm8gX191c2VyICphcmcpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNzAtXFx0dW5zaWduZWQgbG9uZyBtaW5zeiA9IG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX2lycV9pbmZvLCBjb3VudCk7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTcxOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVxcdTAwM2V2ZGV2LmRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTcyLVxcdHN0cnVjdCB2ZmlvX2lycV9pbmZvIGluZm87XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xOTEtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTkyOnN0YXRpYyBpbnQgdmZpb19jZHhfaW9jdGxfc2V0X2lycXMoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xOTMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHZmaW9faXJxX3NldCBfX3VzZXIgKmFyZylcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE5NS1cXHR1bnNpZ25lZCBsb25nIG1pbnN6ID0gb2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9faXJxX3NldCwgY291bnQpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjE5NjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cXHUwMDNldmRldi5kZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE5Ny1cXHRzdHJ1Y3QgdmZpb19pcnFfc2V0IGhkcjtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTIyMz1zdGF0aWMgbG9uZyB2ZmlvX2NkeF9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTIyNS17XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjI2OlxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjIyNzpcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yMjgtXFx0dm9pZCBfX3VzZXIgKnVhcmcgPSAodm9pZCBfX3VzZXIgKilhcmc7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yNjQ9c3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjY2LXtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoyNjc6XFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjY4OlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI2OTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoY29yZV92ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI3MC1cXHR1bnNpZ25lZCBpbnQgaW5kZXg7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19jZHhfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzA4LVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMwOTpzdGF0aWMgaW50IHZmaW9fY2R4X3Byb2JlKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTMxMC17XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzExOlxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXY7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzEyLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTQtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzE1OlxcdHZkZXYgPSB2ZmlvX2FsbG9jX2RldmljZSh2ZmlvX2NkeF9kZXZpY2UsIHZkZXYsIGRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTYtXFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX2NkeF9vcHMpO1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzMxLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMzMjpzdGF0aWMgaW50IHZmaW9fY2R4X3JlbW92ZShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMzMte1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTMzNC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMzNTpcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzM2LVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzQyLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjM0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgdmZpb19jZHhfdGFibGVbXSA9IHtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zNDQtXFx0eyBDRFhfREVWSUNFX0RSSVZFUl9PVkVSUklERShDRFhfQU5ZX0lELCBDRFhfQU5ZX0lELFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg9MjY9c3RydWN0IHZmaW9fY2R4X3JlZ2lvbiB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0zMi1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDozMzpzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlIHtcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0zNC1cXHRzdHJ1Y3QgdmZpb19kZXZpY2VcXHR2ZGV2O1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtNDMtI2lmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo0NDppbnQgdmZpb19jZHhfc2V0X2lycXNfaW9jdGwoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC00NS1cXHRcXHRcXHQgICAgdTMyIGZsYWdzLCB1bnNpZ25lZCBpbnQgaW5kZXgsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC00OC1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo0OTp2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC01MC0jZWxzZVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjUxOnN0YXRpYyBpbnQgdmZpb19jZHhfc2V0X2lycXNfaW9jdGwoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC01Mi1cXHRcXHRcXHRcXHQgICB1MzIgZmxhZ3MsIHVuc2lnbmVkIGludCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTU4LVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjU5OnN0YXRpYyB2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTYwLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0zMT1zdHJ1Y3QgY2R4X21zaV9jb25maWcge1xcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTM2LVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDozNzpzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcge1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0zOC1cXHR1OCB0eXBlO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTUyPXR5cGVkZWYgaW50ICgqY2R4X2Rldl9jb25maWd1cmVfY2IpKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC01My1cXHRcXHRcXHRcXHQgICAgdTggYnVzX251bSwgdTggZGV2X251bSxcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6NTQ6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyAqZGV2X2NvbmZpZyk7XFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTU1LVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTYwLSAqXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjYxOiAqIFRoaXMgbWFjcm8gaXMgdXNlZCB0byBjcmVhdGUgYSBzdHJ1Y3QgY2R4X2RldmljZV9pZCB0aGF0IG1hdGNoZXMgYVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC02Mi0gKiBzcGVjaWZpYyBkZXZpY2UuIFRoZSBzdWJ2ZW5kb3IgYW5kIHN1YmRldmljZSBmaWVsZHMgd2lsbCBiZSBzZXQgdG9cXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC03NS0gKlxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDo3NjogKiBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gY3JlYXRlIGEgc3RydWN0IGNkeF9kZXZpY2VfaWQgdGhhdCBtYXRjaGVzIG9ubHkgYVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC03Ny0gKiBkcml2ZXJfb3ZlcnJpZGUgZGV2aWNlLiBUaGUgc3VidmVuZG9yIGFuZCBzdWJkZXZpY2UgZmllbGRzIHdpbGwgYmUgc2V0IHRvXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg9MTA4PXN0cnVjdCBjZHhfY29udHJvbGxlciB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTE3LS8qKlxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxMTg6ICogc3RydWN0IGNkeF9kZXZpY2UgLSBDRFggZGV2aWNlIG9iamVjdFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xMTktICogQGRldjogTGludXggZHJpdmVyIG1vZGVsIGRldmljZSBvYmplY3RcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xNDItICovXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjE0MzpzdHJ1Y3QgY2R4X2RldmljZSB7XFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE0NC1cXHRzdHJ1Y3QgZGV2aWNlIGRldjtcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xNjgtXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjE2OTojZGVmaW5lIHRvX2NkeF9kZXZpY2UoX2RldikgXFxcXFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxNzA6XFx0Y29udGFpbmVyX29mKF9kZXYsIHN0cnVjdCBjZHhfZGV2aWNlLCBkZXYpXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE3MS1cXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0xOTg9c3RydWN0IGNkeF9kcml2ZXIge1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xOTktXFx0c3RydWN0IGRldmljZV9kcml2ZXIgZHJpdmVyO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMDA6XFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKm1hdGNoX2lkX3RhYmxlO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMDE6XFx0aW50ICgqcHJvYmUpKHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMDI6XFx0aW50ICgqcmVtb3ZlKShzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjAzOlxcdHZvaWQgKCpzaHV0ZG93bikoc3RydWN0IGNkeF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIwNDpcXHR2b2lkICgqcmVzZXRfcHJlcGFyZSkoc3RydWN0IGNkeF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIwNTpcXHR2b2lkICgqcmVzZXRfZG9uZSkoc3RydWN0IGNkeF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwNi1cXHRib29sIGRyaXZlcl9tYW5hZ2VkX2RtYTtcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0yNDE9aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yNDgtICovXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjI0OTppbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yNTAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjU2LSAqL1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyNTc6aW50IGNkeF9jbGVhcl9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yNTgtXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6NDQuMzQ0MzgwMTc3WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3OTUzMDQyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipWRklPIENEWCBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2AuIFJpZ2h0LCB0aGF0J3MgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cyDigJMgc3BlY2lmaWNhbGx5IHRoZSBBTUQgVmVyc2FsIC8gWGlsaW54IFZlcnNhbCBOZXQgY29tcG9zYWJsZSBkZXZpY2VzIGJ1cy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpcyAqdGhpcyogdGhlIG9ubHkgZHJpdmVyIHVzaW5nIHRoZSBDRFggYnVzLCBvciBhcmUgdGhlcmUgb3RoZXJzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXh0ZW50IG9mIGl0cyB1c2FnZS4gTXkgaW5zdGluY3Qgc2F5cyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB3aXRoaW4gdGhlIFhpbGlueCBFdGhlcm5ldCBkcml2ZXJzIGZpcnN0LiBMZXQncyBzZWUuLi4gSSdsbCBzdGFydCBieSBjaGVja2luZyB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9gIGFuZCBzaW1pbGFyIGRpcmVjdG9yaWVzIHRvIGdldCBhIGJyb2FkZXIgcGljdHVyZSBvZiBwb3RlbnRpYWwgQ0RYIGJ1cyB1dGlsaXphdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBzb21lIGRpcmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ1NjUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNTo0Ni4xMzk2OTM1MDFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTMzNTI1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4X2RyaXZlcl9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NkeC9jZHguYz02Mjg9RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MjktXFxuZHJpdmVycy9jZHgvY2R4LmM6NjMwOmludCBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVxcdFxcdFxcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0NzpFWFBPUlRfU1lNQk9MX0dQTChfX2NkeF9kcml2ZXJfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0OC1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTM1MT1zdGF0aWMgc3RydWN0IGNkeF9kcml2ZXIgdmZpb19jZHhfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzYwLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjM2MTptb2R1bGVfZHJpdmVyKHZmaW9fY2R4X2RyaXZlciwgY2R4X2RyaXZlcl9yZWdpc3RlciwgY2R4X2RyaXZlcl91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zNjItXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg9MTk4PXN0cnVjdCBjZHhfZHJpdmVyIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTItLyogTWFjcm8gdG8gYXZvaWQgaW5jbHVkZSBjaGFpbmluZyB0byBnZXQgVEhJU19NT0RVTEUgKi9cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjEzOiNkZWZpbmUgY2R4X2RyaXZlcl9yZWdpc3RlcihkcnYpIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjE0OlxcdF9fY2R4X2RyaXZlcl9yZWdpc3RlcihkcnYsIFRISVNfTU9EVUxFKVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTUtXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIxNi0vKipcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjE3OiAqIF9fY2R4X2RyaXZlcl9yZWdpc3RlciAtIHJlZ2lzdGVycyBhIENEWCBkZXZpY2UgZHJpdmVyXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIxOC0gKiBAY2R4X2RyaXZlcjogQ0RYIGRyaXZlciB0byByZWdpc3Rlclxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIyMi0gKi9cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjIzOmludCBfX211c3RfY2hlY2sgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMjQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6NDcuODUzMDUxNThaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjU3ODk3NDMyNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVkZJTyBDRFggRHJpdmVyIFJlYWNoYWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlIGB2ZmlvX2NkeF9kcml2ZXJgIGlzLCBxdWl0ZSBsaXRlcmFsbHksIHRoZSBvbmx5IGRyaXZlciBvbiB0aGUgQ0RYIGJ1cyBpbiB0aGUga2VybmVsLCBhbmQgdGhlIENEWCBidXMgY29udHJvbGxlciBpdHNlbGYgKmRlbWFuZHMqIHBoeXNpY2FsIEFNRCBWZXJzYWwgaGFyZHdhcmUuIFRoYXQncyBhIGNydWNpYWwgcG9pbnQuIEl0IHJlbGllcyBvbiBlaXRoZXIgdGhlIHJwbXNnIGNvbW11bmljYXRpb24gdG8gdGhlIFI1IGZpcm13YXJlIG9yIGEgZGV2aWNlIHRyZWUgbm9kZSAoYHhsbngsdmVyc2FsLW5ldC1jZHhgKS4gV2l0aG91dCB0aGF0IGhvc3QgY29udHJvbGxlciwgd2hpY2ggKnJlcXVpcmVzKiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIG5vIENEWCBkZXZpY2VzIGFyZSBldmVyIGVudW1lcmF0ZWQgb3IgYWRkZWQuIGBjZHhfZGV2aWNlX2FkZGAgaXMgbmV2ZXIgY2FsbGVkLiBDb25zZXF1ZW50bHksIGB2ZmlvX2NkeF9wcm9iZWAgaXMgbmV2ZXIgaW52b2tlZC4gVGhpcyBtZWFucyBubyBWRklPIENEWCBkZXZpY2UgaXMgY3JlYXRlZCwgYW5kIHVzZXItc3BhY2UgY2FuJ3QgcG9zc2libHkgaW50ZXJhY3Qgd2l0aCBhbnkgYC9kZXYvdmZpby8uLi5gIENEWCBkZXZpY2UgdGhyb3VnaCBvcGVuL21tYXAuXG5cbk5vdywgbGV0J3MgZ28gYmFjayBhbmQgcmV2aWV3IHRoZSBkb2N1bWVudGF0aW9uIG9uIGhhcmR3YXJlIHJlYWNoYWJpbGl0eS4gU2VjdGlvbiAyIGNsZWFybHkgb3V0bGluZXMgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBhcyBpbmNsdWRpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgKGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YCkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEFTSUNzL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFwiVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzXCIgYXJlIGFsc28gZGVmaW5lZCwgaW52b2x2aW5nIHNjZW5hcmlvcyBsaWtlIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgZHVyaW5nIHBoeXNpY2FsIGhvdC11bnBsdWcgb3IgbWFudWFsIHVuYmluZGluZy4gVGhlIGNvcmUgdGFrZWF3YXk/ICoqUmVhY2hhYmlsaXR5IGlzIHRoZSBwcmltYXJ5IGdhdGUqKi4gRnV6emluZyBpcyBvbmx5IGVmZmVjdGl2ZSBvbiBjb2RlIHBhdGhzIHRoYXQgKmFjdHVhbGx5KiBleGVjdXRlIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGxpa2UgdGhvc2UgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcy4gSWYgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCBhcyBkZXNjcmliZWQsIGl0ICptdXN0IG5vdCogYmUgZnV6emVkLCByZWdhcmRsZXNzIG9mIGhvdyBjb21wbGV4IHRoZSBsb2dpYyBvciBhc3NlcnRpb25zIG1pZ2h0IGJlLlxuXG5Mb29raW5nIHNwZWNpZmljYWxseSBhdCB0aGUgcGF0Y2gsIHRoZSB0YXJnZXQgZnVuY3Rpb24gaXMgYHZmaW9fY2R4X21tYXAoKWAgaW4gYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gVGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIHRoZSBgdmZpby1jZHhgIGRyaXZlciwgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIFZGSU8gcGFzcy10aHJvdWdoIG9mIEFNRCBWZXJzYWwtbmV0IENEWCBidXMgZGV2aWNlcy4gU2luY2UgQ0RYIGRldmljZXMgaW50cmluc2ljYWxseSBkZXBlbmQgb24gQU1EIFZlcnNhbCBoYXJkd2FyZSBhbmQgYXNzb2NpYXRlZCBmaXJtd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgdGhpcyBtYWtlcyBgdmZpb19jZHhfbW1hcGAgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiB0aG9zZSBmdXp6aW5nIHNjZW5hcmlvcy5cblxuVGhlcmVmb3JlLCBhZnRlciBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIEknbSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG5cbk15IGFzc2Vzc21lbnQ6XG5cbi0gICBFbmFibGVDb25maWdzOiBcXFsgXVxuLSAgIEZvY3VzU3ltYm9sczogXFxbIF1cbi0gICBXb3J0aEZ1enppbmc6IGZhbHNlXG4tICAgUmVhc29uaW5nOiBDbGVhciBhbmQgY29uY2lzZSBleHBsYW5hdGlvbiBvZiBzdHJ1Y3R1cmFsIHVucmVhY2hhYmlsaXR5IGR1ZSB0byBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuXG5cbk5vdywgbGV0J3MgcHJlcGFyZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NDM3LCJPdXRwdXRUb2tlbnMiOjE0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNjo1My42NDI3OTc5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB2ZmlvX2NkeF9tbWFwKCkgaW4gZHJpdmVycy92ZmlvL2NkeC9tYWluLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgQU1EIFZlcnNhbCBDRFggYnVzLiBDRFggZGV2aWNlcyBkZXBlbmQgb24gQU1EIFZlcnNhbC1uZXQgcGxhdGZvcm0gY29udHJvbGxlciBoYXJkd2FyZSBhbmQgcmVtb3RlIGZpcm13YXJlIChNQ0RJL3JwbXNnKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIENvbnNlcXVlbnRseSwgbm8gQ0RYIGRldmljZXMgY2FuIGJlIGluc3RhbnRpYXRlZCBvciBib3VuZCB0byB2ZmlvLWNkeCwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjE2OjUzLjY0MjgyNDYyWiIsIlNlcSI6MzUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww8v2w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 21:42:56 +0000 UTC FinishedAt: 2026-09-06 22:16:55 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjEzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTE5YzE1MGY1NjhmOGY0NWYwMTM2NTZmMWYwZjk1NjQzYzExMDc3NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjI6MTM6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuaW5kZXggYjMxZWQ0YmU3YmRjMS4uNmQyMDhkYjA4OTZkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuQEAgLTI3MSw2ICYjNDM7MjcxLDkgQEAgc3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuIFxuIFx0aW5kZXggPSB2bWEtXHUwMDNldm1fcGdvZmYgXHUwMDNlXHUwMDNlIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcbiBcbiYjNDM7XHRpZiAoISh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1NIQVJFRCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRpZiAoaW5kZXggXHUwMDNlPSBjZHhfZGV2LVx1MDAzZXJlc19jb3VudClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTE5YzE1MGY1NjhmOGY0NWYwMTM2NTZmMWYwZjk1NjQzYzExMDc3NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMjI6MTM6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCmluZGV4IGIzMWVkNGJlN2JkYzEuLjZkMjA4ZGIwODk2ZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCkBAIC0yNzEsNiAmIzQzOzI3MSw5IEBAIHN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwKIAogCWluZGV4ID0gdm1hLSZndDt2bV9wZ29mZiAmZ3Q7Jmd0OyAoVkZJT19DRFhfT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7CiAKJiM0MzsJaWYgKCEodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9TSEFSRUQpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJaWYgKGluZGV4ICZndDs9IGNkeF9kZXYtJmd0O3Jlc19jb3VudCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg3OAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDExMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFZGSU8gQ0RYIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gTXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gZXN0YWJsaXNoIGNvbnRleHQsIGFuZCBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGlzIGB2ZmlvL2NkeGAgcGFydC4gV2hhdCBleGFjdGx5ICppcyogYGRyaXZlcnMvdmZpby9jZHhgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgb3IgdmlydHVhbCBidXMgaXQmIzM5O3MgdGllZCB0by4gSXMgdGhpcyBzb21lIHNwZWNpYWxpemVkIGhhcmR3YXJlLCBvciBpcyBpdCBzb21ldGhpbmcgdGhhdCBjb21tb25seSBzaG93cyB1cCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIGFuZCBvbiBzdGFuZGFyZCBhbWQ2NCBzeXN0ZW1zPyBLbm93aW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGluZmx1ZW5jZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaCYjMzk7cyBwb3RlbnRpYWwgaW1wYWN0IGFuZCByZWxldmFuY2UuCgpUbyBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCwgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZWJhc2UuIEkmIzM5O2xsIHJlYWNoIGZvciBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHNvbWUgY2x1ZXMgYXMgdG8gdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZW5kZWQgdXNlIGNhc2UuIEkmIzM5O2xsIGFsc28gd2FudCB0byBsb29rIGF0IGBkcml2ZXJzL2NkeC9gLCBvciBhbnl0aGluZyBlbHNlIHRoYXQgc2VlbXMgcmVsZXZhbnQgdG8gdGhpcyAmIzM0O0NEWCYjMzQ7IHRoaW5nIHRvIGVuc3VyZSB0aGF0IEkgaGF2ZSBhbGwgcmVsZXZhbnQgY29tcG9uZW50cyBvZiB0aGUgc3lzdGVtIGluIHZpZXcuIE9uY2UgSSBjYW4gZ2V0IGEgZ29vZCBwaWN0dXJlIG9mIHRoZSBoYXJkd2FyZSBpdCBhcHBsaWVzIHRvIEkgd2lsbCBiZSBhYmxlIHRvIGV2YWx1YXRlIHRoZSBwYXRjaCBtdWNoIG1vcmUgZWZmaWNpZW50bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VkZJT19DRFgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgJiM0Mzs9IGZzbC1tYy9cbmRyaXZlcnMvdmZpby9NYWtlZmlsZToxODpvYmotJChDT05GSUdfVkZJT19DRFgpICYjNDM7PSBjZHgvXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTctXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6ODpjb25maWcgVkZJT19DRFhcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlLTUtXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1ZGSU9fQ0RYKSAmIzQzOz0gdmZpby1jZHgub1xuZHJpdmVycy92ZmlvL2NkeC9NYWtlZmlsZS03LVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI0ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNTAtXHRwZ29mZiA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwMjZcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI1MTpcdFx0KCgxVSBcdTAwM2NcdTAwM2MgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjUyLVx0YmFzZSA9IHBnb2ZmIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI2ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjcxLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjcyOlx0aW5kZXggPSB2bWEtXHUwMDNldm1fcGdvZmYgXHUwMDNlXHUwMDNlIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI3My1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC01LVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjojaWZuZGVmIFZGSU9fQ0RYX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NzojZGVmaW5lIFZGSU9fQ0RYX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtOC1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMC1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjExOiNkZWZpbmUgVkZJT19DRFhfT0ZGU0VUX1NISUZUICAgIDQwXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMi1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTEzPXN0YXRpYyBpbmxpbmUgdTY0IHZmaW9fY2R4X2luZGV4X3RvX29mZnNldCh1MzIgaW5kZXgpXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xNC17XG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDoxNTpcdHJldHVybiAoKHU2NCkoaW5kZXgpIFx1MDAzY1x1MDAzYyBWRklPX0NEWF9PRkZTRVRfU0hJRlQpO1xuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtMTYtfVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTU5PXN0YXRpYyB2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTYzLVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjQ6I2VuZGlmIC8qIFZGSU9fQ0RYX1BSSVZBVEVfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIGRlbHZlIGludG8gdGhpczoKCioqSW5pdGlhbCBDRFggSW52ZXN0aWdhdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIFRvIHJlYWxseSBnZXQgYSBncmlwIG9uIHdoYXQgdGhpcyAmIzM0O0NEWCYjMzQ7IHRoaW5nIGlzLCBJIG5lZWQgdG8gc3RhcnQgd2l0aCB0aGUgc291cmNlIOKAkyBvciwgaW4gdGhpcyBjYXNlLCB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgYGRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL2NkeC9LY29uZmlnYC4gVGhlc2UgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIGhlYXJ0IG9mIGhvdyB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQsIHdoaWNoIGluY2x1ZGVzIHRoaXMgcG90ZW50aWFsbHkgbmV3ICYjMzQ7Q0RYJiMzNDsgZnVuY3Rpb24uIExvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgZGVzY3JpcHRpb25zLCBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGhvcGVmdWxseSByZXZlYWwgdGhlIHB1cnBvc2UgYW5kIHNjb3BlIG9mIHRoaXMgZmVhdHVyZS4gVGltZSB0byBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyBleHBvc2UgYWJvdXQgdGhlIHVuZGVycGlubmluZ3Mgb2YgQ0RYLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBwYWludCBhIGNsZWFyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgVkZJTyBDRFggY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHQjIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXG4gICA2Olx0I1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBWRklPX0NEWFxuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcJiMzNDtcbiAgMTA6XHRcdGRlcGVuZHMgb24gQ0RYX0JVU1xuICAxMTpcdFx0c2VsZWN0IEVWRU5URkRcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgRHJpdmVyIHRvIGVuYWJsZSBWRklPIHN1cHBvcnQgZm9yIHRoZSBkZXZpY2VzIG9uIENEWCBidXMuXG4gIDE0Olx0XHQgIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZSB1c2Ugb2YgQ0RYIGRldmljZXMgcHJlc2VudCBpblxuICAxNTpcdFx0ICB0aGUgc3lzdGVtIHVzaW5nIHRoZSBWRklPIGZyYW1ld29yay5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyB0aGUgQ0RYIEJ1cyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQ0RYIGJ1cyBpcyBjb25maWd1cmVkLiBMZXQmIzM5O3MgZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBgZHJpdmVycy9jZHgvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGJ1cyBkZWZpbml0aW9uIGFuZCBpdHMgZGVwZW5kZW5jaWVzIHJlc2lkZS4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGdldHRpbmcgYSBoYW5kbGUgb24gYENEWF9CVVNgIOKAkyB0aGF0JiMzOTtzIHRoZSBjcnVjaWFsIHN5bWJvbCBJIG5lZWQgdG8gdHJhY2UuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGl0cyBkZWZpbml0aW9uLCBpdHMgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGNvbmZpZyBvcHRpb25zLCBhbmQgYW55IGRlZmF1bHQgdmFsdWVzLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0JiMzOTtzIGhhbmRsZWQgYXQgdGhlIEtjb25maWcgbGV2ZWwgaXMgdGhlIGdhdGV3YXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZW50aXJlIHN1YnN5c3RlbS4gRnJvbSB0aGVyZSwgSSBjYW4gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciBhbnkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIG1ha2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q0RYX0JVUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL01ha2VmaWxlPTE5ND1vYmotJChDT05GSUdfRFJNX0FDQ0VMKVx0XHQmIzQzOz0gYWNjZWwvXG5kcml2ZXJzL01ha2VmaWxlOjE5NTpvYmotJChDT05GSUdfQ0RYX0JVUylcdFx0JiM0Mzs9IGNkeC9cbmRyaXZlcnMvTWFrZWZpbGUtMTk2LW9iai0kKENPTkZJR19EUExMKVx0XHQmIzQzOz0gZHBsbC9cbi0tXG5kcml2ZXJzL2NkeC9LY29uZmlnLTctXG5kcml2ZXJzL2NkeC9LY29uZmlnOjg6Y29uZmlnIENEWF9CVVNcbmRyaXZlcnMvY2R4L0tjb25maWctOS1cdGJvb2wgXCYjMzQ7Q0RYIEJ1cyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS03LVxuZHJpdmVycy9jZHgvTWFrZWZpbGU6ODpjY2ZsYWdzLXkgJiM0Mzs9IC1EREVGQVVMVF9TWU1CT0xfTkFNRVNQQUNFPSYjMzk7XCYjMzQ7Q0RYX0JVU1wmIzM0OyYjMzk7XG5kcml2ZXJzL2NkeC9NYWtlZmlsZS05LVxuZHJpdmVycy9jZHgvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0NEWF9CVVMpICYjNDM7PSBjZHgubyBjb250cm9sbGVyL1xuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL2NkeC9NYWtlZmlsZT0xMj1pZmRlZiBDT05GSUdfR0VORVJJQ19NU0lfSVJRXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQ0RYX0JVUykgJiM0Mzs9IGNkeF9tc2kub1xuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTQtZW5kaWZcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz03NTk9aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcylcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03OTgtXHRkZXZfc2V0X25hbWUoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYsIFwmIzM0O2NkeC0lMDJ4OiUwMnhcJiMzNDssXG5kcml2ZXJzL2NkeC9jZHguYzo3OTk6XHRcdCAgICAgKChjZHgtXHUwMDNlaWQgXHUwMDNjXHUwMDNjIENEWF9DT05UUk9MTEVSX0lEX1NISUZUKSB8IChjZHhfZGV2LVx1MDAzZWJ1c19udW0gXHUwMDI2IENEWF9CVVNfTlVNX01BU0spKSxcbmRyaXZlcnMvY2R4L2NkeC5jLTgwMC1cdFx0ICAgICBjZHhfZGV2LVx1MDAzZWRldl9udW0pO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTg0NC19XG5kcml2ZXJzL2NkeC9jZHguYzo4NDU6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy04NDYtXG5kcml2ZXJzL2NkeC9jZHguYz04NDc9c3RydWN0IGRldmljZSAqY2R4X2J1c19hZGQoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtODY1LVx0ZGV2X3NldF9uYW1lKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2LCBcJiMzNDtjZHgtJTAyeFwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jOjg2NjpcdFx0ICAgICAoKGNkeC1cdTAwM2VpZCBcdTAwM2NcdTAwM2MgQ0RYX0NPTlRST0xMRVJfSURfU0hJRlQpIHwgKGJ1c19udW0gXHUwMDI2IENEWF9CVVNfTlVNX01BU0spKSk7XG5kcml2ZXJzL2NkeC9jZHguYy04NjctXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtODkxLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjg5MjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfYnVzX2FkZCwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg5My1cbmRyaXZlcnMvY2R4L2NkeC5jPTg5ND1pbnQgY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtOTE2LX1cbmRyaXZlcnMvY2R4L2NkeC5jOjkxNzpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfcmVnaXN0ZXJfY29udHJvbGxlciwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTkxOC1cbmRyaXZlcnMvY2R4L2NkeC5jPTkxOT12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtOTMxLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjkzMjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtOTMzLVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0xNjA9c3RydWN0IGlycV9kb21haW4gKmNkeF9tc2lfZG9tYWluX2luaXQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xOTItfVxuZHJpdmVycy9jZHgvY2R4X21zaS5jOjE5MzpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfbXNpX2RvbWFpbl9pbml0LCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZy03LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnOjg6aWYgQ0RYX0JVU1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnLTktXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTI1Nj1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjI1NzpNT0RVTEVfSU1QT1JUX05TKFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI0Ny0vKlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI0ODogKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjQ5LSAqIENEWCBidXMgaG9zdHMgZGV2aWNlcyAoZnVuY3Rpb25zKSB0aGF0IGFyZSBpbXBsZW1lbnRlZCB1c2luZyB0aGUgQ29tcG9zYWJsZVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNTYtICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjU3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU1x0XHRcdFx0MHgxXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjU4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19NU0dTRVRcdFx0XHQweDFcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNTktI3VuZGVmIE1DX0NNRF8weDFfUFJJVklMRUdFX0NUR1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNjItXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjYzOi8qIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfSU4gbXNncmVxdWVzdCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfSU5fTEVOXHRcdFx0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI2NS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNjY6LyogTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVQgbXNncmVzcG9uc2UgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNjc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjY4LS8qXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3MS0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlRfT0ZTVFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjczOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfQlVTX0NPVU5UX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjc0LVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNzYtLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzc6ICogTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjc4LSAqIEVudW1lcmF0ZSBDRFggYnVzIGRldmljZXMgb24gYSBnaXZlbiBidXNcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNzktICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjgwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXHRcdFx0XHQweDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyODE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfTVNHU0VUXHRcdFx0MHgyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjgyLSN1bmRlZiBNQ19DTURfMHgyX1BSSVZJTEVHRV9DVEdcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjg1LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4NjovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU4gbXNncmVxdWVzdCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19JTl9MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjg4LS8qXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjg5LSAqIEJ1cyBudW1iZXIgdG8gZW51bWVyYXRlLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xLCBhcyByZXR1cm5lZCBieVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5MDogKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI5MS0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fQlVTX09GU1RcdFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjkzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0JVU19MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjk0LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5NTovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUIG1zZ3Jlc3BvbnNlICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mjk2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjk3LS8qXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMwMS0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMDI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUX0RFVklDRV9DT1VOVF9PRlNUXHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzAzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9ERVZJQ0VfQ09VTlRfTEVOXHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzA0LVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMDYtLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMDc6ICogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMDgtICogUmV0dXJucyBkZXZpY2UgaWRlbnRpZmljYXRpb24gYW5kIE1NSU8vTVNJIHJlc291cmNlIGRhdGEgZm9yIGEgQ0RYIGRldmljZS5cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzE4LSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMxOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHXHRcdFx0XHRcdDB4M1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX01TR1NFVFx0XHRcdFx0XHQweDNcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMjEtI3VuZGVmIE1DX0NNRF8weDNfUFJJVklMRUdFX0NUR1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMjQtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzI1Oi8qIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOIG1zZ3JlcXVlc3QgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9MRU5cdFx0XHRcdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMyNy0vKiBEZXZpY2UgYnVzIG51bWJlciwgaW4gcmFuZ2UgMCB0byBCVVNfQ09VTlQtMSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0JVU19PRlNUXHRcdFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzI5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fQlVTX0xFTlx0XHRcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMzMC0vKiBEZXZpY2UgbnVtYmVyIHJlbGF0aXZlIHRvIHRoZSBidXMsIGluIHJhbmdlIDAgdG8gREVWSUNFX0NPVU5ULTEgZm9yIHRoYXQgYnVzICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzMxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fREVWSUNFX09GU1RcdFx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0VfTEVOXHRcdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzMzLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNDovKiBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVQgbXNncmVzcG9uc2UgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTEVOXHRcdFx0XHQ4OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMzNi0vKiAxNi1iaXQgVmVuZG9yIGlkZW50aWZpZXIsIGNvbXBsaWFudCB3aXRoIFBDSS1TSUcgVmVuZG9ySUQgYXNzaWdubWVudC4gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVkVORE9SX0lEX09GU1RcdFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzM4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1ZFTkRPUl9JRF9MRU5cdFx0XHQyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzM5LS8qIDE2LWJpdCBEZXZpY2UgSUQgYXNzaWduZWQgYnkgdGhlIHZlbmRvciAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM0MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfSURfT0ZTVFx0XHRcdDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0lEX0xFTlx0XHRcdDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNDItLypcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQ1LSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM0NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfVkVORE9SX0lEX09GU1RcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM0NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfVkVORE9SX0lEX0xFTlx0XHQyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQ4LS8qXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM1MS0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX0RFVklDRV9JRF9PRlNUXHRcdDZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX0RFVklDRV9JRF9MRU5cdFx0MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM1NC0vKiAyNC1iaXQgRGV2aWNlIENsYXNzIGNvZGUsIGNvbXBsaWFudCB3aXRoIFBDSS1TSUcgRGV2aWNlIENsYXNzIGNvZGVzICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzU1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9DTEFTU19PRlNUXHRcdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfQ0xBU1NfTEVOXHRcdFx0M1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM1Ny0vKiA4LWJpdCB2ZW5kb3ItYXNzaWduZWQgcmV2aXNpb24gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX1JFVklTSU9OX09GU1RcdFx0MTFcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX1JFVklTSU9OX0xFTlx0XHQxXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzYwLS8qIFJlc2VydmVkIChhbGlnbm1lbnQpICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzYxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFU0VSVkVEX09GU1RcdFx0XHQxMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9SRVNFUlZFRF9MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzYzLS8qIE1NSU8gcmVnaW9uIDAgYmFzZSBhZGRyZXNzIChidXMgYWRkcmVzcyksIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX09GU1RcdFx0MTZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTE9fT0ZTVFx0XHQxNlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MQk5cdFx0MTI4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzcwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0hJX09GU1RcdFx0MjBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEJOXHRcdDE2MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM3NC0vKiBNTUlPIHJlZ2lvbiAwIHNpemUsIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX09GU1RcdFx0MjRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fT0ZTVFx0XHQyNFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MT19MQk5cdFx0MTkyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX09GU1RcdFx0MjhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfSElfTEJOXHRcdDIyNFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM4NS0vKiBNTUlPIHJlZ2lvbiAxIGJhc2UgYWRkcmVzcyAoYnVzIGFkZHJlc3MpLCAwIGlmIHVudXNlZCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9PRlNUXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0xFTlx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0xPX09GU1RcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTE9fTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTE9fTEJOXHRcdDI1NlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9ISV9PRlNUXHRcdDM2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0hJX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0hJX0xCTlx0XHQyODhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zOTYtLyogTU1JTyByZWdpb24gMSBzaXplLCAwIGlmIHVudXNlZCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9PRlNUXHRcdDQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xFTlx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xPX09GU1RcdFx0NDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEJOXHRcdDMyMFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9MT19XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9ISV9PRlNUXHRcdDQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xCTlx0XHQzNTJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfSElfV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MDctLyogTU1JTyByZWdpb24gMiBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfT0ZTVFx0XHQ0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19PRlNUXHRcdDQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDExOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDEyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xPX0xCTlx0XHQzODRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfT0ZTVFx0XHQ1MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9ISV9MQk5cdFx0NDE2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDE3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDE4LS8qIE1NSU8gcmVnaW9uIDIgc2l6ZSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfT0ZTVFx0XHQ1NlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyMTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9MT19PRlNUXHRcdDU2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xPX0xCTlx0XHQ0NDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfSElfT0ZTVFx0XHQ2MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9ISV9MQk5cdFx0NDgwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDI5LS8qIE1NSU8gcmVnaW9uIDMgYmFzZSBhZGRyZXNzIChidXMgYWRkcmVzcyksIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDMwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX09GU1RcdFx0NjRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTE9fT0ZTVFx0XHQ2NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MQk5cdFx0NTEyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0hJX09GU1RcdFx0NjhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEJOXHRcdDU0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ0MC0vKiBNTUlPIHJlZ2lvbiAzIHNpemUsIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX09GU1RcdFx0NzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fT0ZTVFx0XHQ3MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MT19MQk5cdFx0NTc2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX09GU1RcdFx0NzZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfSElfTEJOXHRcdDYwOFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ1MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ1MS0vKiBNU0kgdmVjdG9yIGNvdW50ICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDUyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01TSV9DT1VOVF9PRlNUXHRcdFx0ODBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NTQtLyogUmVxdWVzdGVyIElEIHVzZWQgYnkgZGV2aWNlIChTTU1VIFN0cmVhbUlELCBHSUMgSVRTIERldmljZUlEKSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ1NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9SRVFVRVNURVJfSURfT0ZTVFx0XHRcdDg0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9MRU5cdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDU3LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ1ODovKiBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjIgbXNncmVzcG9uc2UgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOXHRcdFx0XHQ5MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ2MC0vKiBSZXF1ZXN0ZXIgSUQgdXNlZCBieSBkZXZpY2UgZm9yIEdJQyBJVFMgRGV2aWNlSUQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NjE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfUkVRVUVTVEVSX0RFVklDRV9JRF9PRlNUXHQ4OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ2MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9SRVFVRVNURVJfREVWSUNFX0lEX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDYzLVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NjUtLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NjY6ICogTUNfQ01EX0NEWF9CVVNfRE9XTlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ2Ny0gKiBBc3NlcnRpbmcgcmVzZXQgb24gdGhlIENEWCBidXMgY2F1c2VzIGFsbCBkZXZpY2VzIG9uIHRoZSBidXMgdG8gYmUgcXVpZXNjZWQuXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ3Ny0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Nzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOXHRcdFx0XHRcdDB4NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ3OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fTVNHU0VUXHRcdFx0MHg0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDgwLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4MTovKiBNQ19DTURfQ0RYX0JVU19ET1dOX0lOIG1zZ3JlcXVlc3QgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODMtLyogQnVzIG51bWJlciB0byBwdXQgaW4gcmVzZXQsIGluIHJhbmdlIDAgdG8gQlVTX0NPVU5ULTEgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0JVU19PRlNUXHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0JVU19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4Ni1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODctLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODg6ICogTUNfQ01EX0NEWF9CVVNfRE9XTl9PVVQgbXNncmVzcG9uc2U6IFRoZSBidXMgaXMgcXVpZXNjZWQsIG5vIGZ1cnRoZXJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODktICogdXBzdHJlYW0gdHJhZmZpYyBmb3IgZGV2aWNlcyBvbiB0aGlzIGJ1cy5cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00OTAtICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDkxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRE9XTl9PVVRfTEVOXHRcdFx0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ5Mi1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDk0LS8qXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDk1OiAqIE1DX0NNRF9DRFhfQlVTX1VQXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDk2LSAqIEFmdGVyIGJ1cyByZXNldCBpcyBkZS1hc3NlcnRlZCwgZGV2aWNlcyBhcmUgaW4gYSBzdGF0ZSB3aGljaCBpcyBmdW5jdGlvbmFsbHlcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNTA1LSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQXHRcdFx0XHRcdDB4NVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX01TR1NFVFx0XHRcdDB4NVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUwOC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo1MDk6LyogTUNfQ01EX0NEWF9CVVNfVVBfSU4gbXNncmVxdWVzdCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MTEtLyogQnVzIG51bWJlciB0byB0YWtlIG91dCBvZiByZXNldCwgaW4gcmFuZ2UgMCB0byBCVVNfQ09VTlQtMSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0JVU19PRlNUXHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo1MTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19VUF9JTl9CVVNfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MTQtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTE1Oi8qIE1DX0NNRF9DRFhfQlVTX1VQX09VVCBtc2dyZXNwb25zZTogVGhlIGJ1cyBjYW4gbm93IGJlIGVudW1lcmF0ZWQuICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTE2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfT1VUX0xFTlx0XHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MTctXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTEwPWludCBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKHN0cnVjdCBjZHhfbWNkaSAqY2R4KVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTExLXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjpcdE1DRElfREVDTEFSRV9CVUYob3V0YnVmLCBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9MRU4pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEzLVx0c2l6ZV90IG91dGxlbjtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTY6XHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTLCBOVUxMLCAwLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE3LVx0XHRcdCAgIG91dGJ1Ziwgc2l6ZW9mKG91dGJ1ZiksIFx1MDAyNm91dGxlbik7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTIwLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjIxOlx0aWYgKG91dGxlbiAhPSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9MRU4pXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjItXHRcdHJldHVybiAtRUlPO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTIzLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjI0Olx0cmV0dXJuIE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0JVU19DT1VOVCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjUtfVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0yNz1pbnQgY2R4X21jZGlfZ2V0X251bV9kZXZzKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCBpbnQgYnVzX251bSlcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yOC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6Mjk6XHRNQ0RJX0RFQ0xBUkVfQlVGKG91dGJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9MRU4pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjMwOlx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzEtXHRzaXplX3Qgb3V0bGVuO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0zMy1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzozNDpcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVMsIGJ1c19udW0pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTM1LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjM2Olx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0zNy1cdFx0XHQgICBvdXRidWYsIHNpemVvZihvdXRidWYpLCBcdTAwMjZvdXRsZW4pO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy00MC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo0MTpcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9MRU4pXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDItXHRcdHJldHVybiAtRUlPO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTQzLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjQ0Olx0cmV0dXJuIE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy00NS19XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTQ3PWludCBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZyhzdHJ1Y3QgY2R4X21jZGkgKmNkeCxcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNTAte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjUxOlx0TUNESV9ERUNMQVJFX0JVRihvdXRidWYsIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9MRU4pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjUyOlx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fTEVOKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy01My1cdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gXHUwMDI2ZGV2X3BhcmFtcy1cdTAwM2VyZXNbMF07XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTU3LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjU4Olx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fQlVTLCBidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo1OTpcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0RFVklDRSwgZGV2X251bSk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNjAtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjE6XHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJRywgaW5idWYsIHNpemVvZihpbmJ1ZiksXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNjItXHRcdFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXHUwMDI2b3V0bGVuKTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNjUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjY6XHRpZiAob3V0bGVuICE9IE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9MRU4pXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNjctXHRcdHJldHVybiAtRUlPO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03MS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo3MjpcdHJlcV9pZCA9IE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9SRVFVRVNURVJfSUQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTczLVx0ZGV2X3BhcmFtcy1cdTAwM2VyZXFfaWQgPSByZXFfaWQ7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTc1LVx0ZGV2X3BhcmFtcy1cdTAwM2Vtc2lfZGV2X2lkID0gTUNESV9EV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NzY6XHRcdFx0XHRcdCAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9SRVFVRVNURVJfREVWSUNFX0lEKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03Ny1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03OC1cdGRldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50ID0gMDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo3OTpcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkUpICE9IDApIHtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy04MC1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5zdGFydCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6ODE6XHRcdFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy04Mi1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjgzOlx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRSkgJiM0MztcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy04NC1cdFx0XHRcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjg1Olx0XHRcdFx0XHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRSkgLSAxO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTg2LVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTg5LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjkwOlx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRSkgIT0gMCkge1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTkxLVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLnN0YXJ0ID1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5MjpcdFx0XHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTkzLVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmVuZCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6OTQ6XHRcdFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFKSAmIzQzO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTk1LVx0XHRcdFx0ICAgTUNESV9RV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6OTY6XHRcdFx0XHRcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFKSAtIDE7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTctXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTAwLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEwMTpcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkUpICE9IDApIHtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMDItXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEwMzpcdFx0XHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0UpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEwNC1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEwNTpcdFx0XHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0UpICYjNDM7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA2LVx0XHRcdFx0ICAgTUNESV9RV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTA3Olx0XHRcdFx0XHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRSkgLSAxO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEwOC1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTEtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTEyOlx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRSkgIT0gMCkge1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTExMy1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5zdGFydCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTE0Olx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRSk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE1LVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmVuZCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTE2Olx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRSkgJiM0MztcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTctXHRcdFx0XHQgICBNQ0RJX1FXT1JEKG91dGJ1ZixcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTg6XHRcdFx0XHRcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFKSAtIDE7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE5LVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEyMi1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjM6XHRkZXZfcGFyYW1zLVx1MDAzZXZlbmRvciA9IE1DRElfV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1ZFTkRPUl9JRCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI0Olx0ZGV2X3BhcmFtcy1cdTAwM2VkZXZpY2UgPSBNQ0RJX1dPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfSUQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEyNS1cdGRldl9wYXJhbXMtXHUwMDNlc3Vic3lzX3ZlbmRvciA9IE1DRElfV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI2Olx0XHRcdFx0XHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfVkVORE9SX0lEKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMjctXHRkZXZfcGFyYW1zLVx1MDAzZXN1YnN5c19kZXZpY2UgPSBNQ0RJX1dPUkQob3V0YnVmLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEyODpcdFx0XHRcdFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX0RFVklDRV9JRCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTI5LVx0ZGV2X3BhcmFtcy1cdTAwM2VjbGFzcyA9IE1DRElfRFdPUkQob3V0YnVmLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzMDpcdFx0XHRcdCAgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfQ0xBU1MpIFx1MDAyNiAweEZGRkZGRjtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzE6XHRkZXZfcGFyYW1zLVx1MDAzZXJldmlzaW9uID0gTUNESV9CWVRFKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX1JFVklTSU9OKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzI6XHRkZXZfcGFyYW1zLVx1MDAzZW51bV9tc2kgPSBNQ0RJX0RXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzMtXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTEzNz1pbnQgY2R4X21jZGlfYnVzX2VuYWJsZShzdHJ1Y3QgY2R4X21jZGkgKmNkeCwgdTggYnVzX251bSlcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzgte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzOTpcdE1DRElfREVDTEFSRV9CVUYoaW5idWYsIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTQwLVx0aW50IHJldDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNDEtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTQyOlx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfVVBfSU5fQlVTLCBidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNDM6XHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19VUCwgaW5idWYsIHNpemVvZihpbmJ1ZiksXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTQ0LVx0XHRcdCAgIE5VTEwsIDAsIE5VTEwpO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0xNDk9aW50IGNkeF9tY2RpX2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE1MC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTUxOlx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRE9XTl9JTl9MRU4pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE1Mi1cdGludCByZXQ7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUzLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjE1NDpcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX0RPV05fSU5fQlVTLCBidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTU6XHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19ET1dOLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTYtXHRcdFx0ICAgTlVMTCwgMCwgTlVMTCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwLmM9MTYxNT11MzIgcjYwMF9ncHVfY2hlY2tfc29mdF9yZXNldChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYy0xNjY3LVx0aWYgKEdfMDAwRTUwX01DQl9CVVNZKHRtcCkgfCBHXzAwMEU1MF9NQ0RaX0JVU1kodG1wKSB8XG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYzoxNjY4Olx0ICAgIEdfMDAwRTUwX01DRFlfQlVTWSh0bXApIHwgR18wMDBFNTBfTUNEWF9CVVNZKHRtcCkgfFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwLmMtMTY2OS1cdCAgICBHXzAwMEU1MF9NQ0RXX0JVU1kodG1wKSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBkLmgtMTgzMy0jZGVmaW5lXHRcdEdfMDAwRTUwX01DRFlfQlVTWSh4KVx0XHRcdCgoKHgpIFx1MDAzZVx1MDAzZSAxMSkgXHUwMDI2IDEpXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBkLmg6MTgzNDojZGVmaW5lXHRcdEdfMDAwRTUwX01DRFhfQlVTWSh4KVx0XHRcdCgoKHgpIFx1MDAzZVx1MDAzZSAxMikgXHUwMDI2IDEpXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBkLmgtMTgzNS0jZGVmaW5lXHRcdEdfMDAwRTUwX01DRFdfQlVTWSh4KVx0XHRcdCgoKHgpIFx1MDAzZVx1MDAzZSAxMykgXHUwMDI2IDEpXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS5jPTE4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGJ1c190eXBlICogY29uc3QgaW9tbXVfYnVzZXNbXSA9IHtcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTk5LSNlbmRpZlxuZHJpdmVycy9pb21tdS9pb21tdS5jOjIwMDojaWZkZWYgQ09ORklHX0NEWF9CVVNcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYy0yMDEtXHRcdTAwMjZjZHhfYnVzX3R5cGUsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnPTg9Y29uZmlnIFZGSU9fQ0RYXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6MTA6XHRkZXBlbmRzIG9uIENEWF9CVVNcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy0xMS1cdHNlbGVjdCBFVkVOVEZEXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MzY0PU1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtWRklPIGZvciBDRFggZGV2aWNlcyAtIFVzZXIgTGV2ZWwgbWV0YS1kcml2ZXJcJiMzNDspO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzY1Ok1PRFVMRV9JTVBPUlRfTlMoXCYjMzQ7Q0RYX0JVU1wmIzM0Oyk7XG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTgtXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6OTojaWZuZGVmIF9DRFhfQlVTX0hfXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MTA6I2RlZmluZSBfQ0RYX0JVU19IX1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTExLVxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xOC0jZGVmaW5lIENEWF9DT05UUk9MTEVSX0lEX1NISUZUIDRcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxOTojZGVmaW5lIENEWF9CVVNfTlVNX01BU0sgMHhGXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjAtXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTI4MT1zdGF0aWMgaW5saW5lIHZvaWQgY2R4X2Rpc2FibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yODYtXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6Mjg3OiNlbmRpZiAvKiBfQ0RYX0JVU19IXyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTI3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiBkcml2ZXIgZGV2ZWxvcG1lbnQ6CgoqKkluaXRpYWwgSW52ZXN0aWdhdGlvbiBpbnRvIENEWCBDb250cm9sbGVyL0RldmljZSBEcml2ZXJzKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gcGlucG9pbnQgd2hpY2ggZHJpdmVyKHMpIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIENEWCBjb250cm9sbGVyIG9yIGZvciBjcmVhdGluZyBDRFggZGV2aWNlcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB0YXJnZXQgdGhlIG9idmlvdXMuIEkmIzM5O2xsIG5lZWQgdG8gc3RhcnQgYnkgbG9va2luZyBmb3IgdGhlIGNvZGUgdGhhdCByZWdpc3RlcnMgdGhlIENEWCBjb250cm9sbGVyIGl0c2VsZi4gV2hlcmUgd291bGQgdGhhdCBsaXZlPyBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgZHJpdmVycy9jZHgvY29udHJvbGxlci9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHlvdSYjMzk7ZCBmaW5kIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgZGV2aWNlJiMzOTtzIGhhcmR3YXJlIGludGVyZmFjZS4KCkhvd2V2ZXIsIEkmIzM5O20gbm90IGdvaW5nIHRvIGxpbWl0IG15c2VsZiB0byB0aGF0IHBhdGggaW1tZWRpYXRlbHkuIEdpdmVuIHRoZSBtb2R1bGFyIG5hdHVyZSBvZiBtYW55IGNvbnRlbXBvcmFyeSBkcml2ZXIgYXJjaGl0ZWN0dXJlcywgSSBuZWVkIHRvIGtlZXAgbXkgc2VhcmNoIGJyb2FkLCBhdCBsZWFzdCBpbml0aWFsbHkuIEkmIzM5O2xsIGFsc28gZXhwYW5kIG15IHNlYXJjaCB0byBpbmNsdWRlIG90aGVyIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvY2R4YCBkaXJlY3RvcnkuIFRoZXJlIG1pZ2h0IGJlIHNvbWUgaGVscGVyIG9yIHV0aWxpdHkgZmlsZXMgY29udGFpbmluZyBpbml0aWFsaXphdGlvbiwgcHJvYmUsIG9yIHJlbW92ZSBmdW5jdGlvbnMgb3IgYXNzb2NpYXRlZCBkZXZpY2Ugc3RydWN0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgcHJlZmVycmVkIHRvb2xpbmcgKGdyZXAsIGZpbmQsIGV0Yy4pIHRvIHF1aWNrbHkgc2VhcmNoIGZvciBrZXkgaWRlbnRpZmllcnMgbGlrZSAmIzM0O2NkeCwmIzM0OyAmIzM0O0NEWCwmIzM0OyBvciBzcGVjaWZpYyBmdW5jdGlvbiBuYW1lcy9zdHJ1Y3QgbmFtZXMgbGlrZWx5IHJlbGF0ZWQgdG8gZHJpdmVyIHJlZ2lzdHJhdGlvbiwgcHJvYmUsIG9yIGRldmljZSBjcmVhdGlvbi4gSSYjMzk7bGwgYWxzbyBrZWVwIGluIG1pbmQgY29tbW9uIGtlcm5lbCBjb2RpbmcgcHJhY3RpY2VzLCBzdWNoIGFzIGxvb2tpbmcgZm9yIG1vZHVsZV9pbml0IG9yIGRldmljZV9kcml2ZXIgc3RydWN0dXJlcy4gVGhpcyBhcHByb2FjaCBnaXZlcyBtZSB0aGUgYmVzdCBjaGFuY2Ugb2YgcXVpY2tseSBpZGVudGlmeWluZyB0aGUgcmVzcG9uc2libGUgZHJpdmVyIGFuZCB1bmRlcnN0YW5kaW5nIGl0cyBvdmVyYWxsIHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjZHguYyYjMzQ7LAogICAgJiMzNDtjZHguaCYjMzQ7LAogICAgJiMzNDtjZHhfbXNpLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7Y29udHJvbGxlciYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTQ1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXJgIERpcmVjdG9yeSoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgd2hhdCYjMzk7cyBpbiBgZHJpdmVycy9jZHgvY29udHJvbGxlcmAuIEkmIzM5O20gYXNzdW1pbmcsIGdpdmVuIHRoZSBwYXRoLCB0aGF0IHRoaXMgaXMgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBjb250cm9sbGVyLXNwZWNpZmljIGNvZGUgZm9yIHRoZSBDRFggc3Vic3lzdGVtLiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycyBhcmUgb3JnYW5pemVkIGhlcmUuIElzIGl0IGEgbW9ub2xpdGhpYyBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLCBvciBpcyBpdCBicm9rZW4gZG93biBpbnRvIGZ1bmN0aW9uYWwgdW5pdHMg4oCTIHBlcmhhcHMgRE1BIGNvbnRyb2wsIGludGVycnVwdCBoYW5kbGluZywgcmVnaXN0ZXIgYWNjZXNzLCBhbmQgcG93ZXIgbWFuYWdlbWVudD8gV2hhdCBpbnRlcmZhY2VzIGFyZSBleHBvc2VkIHRvIHRoZSB1cHBlciBsYXllcnMgb2YgdGhlIENEWCBkcml2ZXI/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBkZXNpZ24gcGF0dGVybnMgYmVpbmcgZW1wbG95ZWQsIHN1Y2ggYXMgYSBzdGF0ZSBtYWNoaW5lIGZvciBjb21tYW5kIHByb2Nlc3Npbmcgb3IgYSBsYXllcmVkIGRyaXZlciBhcmNoaXRlY3R1cmU/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjb25kaXRpb25zLCByZXRyaWVzLCBhbmQgYW55IGRldmljZS1zcGVjaWZpYyBxdWlya3MuIEl0IHdpbGwgYWxzbyBiZSBpbnRlcmVzdGluZyB0byB1bmRlcnN0YW5kIGhvdyBpbnRlcnJ1cHRzIGFyZSBjb25maWd1cmVkIGFuZCBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgdGhlIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmVzLiBUaGlzIGFsc28gd2lsbCBoYXZlIGltcGxpY2F0aW9ucyBvbiBob3cgdGhlIGRldmljZSBpcyBjb25maWd1cmVkIGFuZCBpbml0aWFsaXplZC4gRmluYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHNpZ25zIG9mIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzIOKAkyBjYWNoaW5nLCBidWZmZXJpbmcsIG9yIGFueSB0ZWNobmlxdWVzIGVtcGxveWVkIHRvIG1heGltaXplIHRocm91Z2hwdXQgb3IgbWluaW1pemUgbGF0ZW5jeS4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGlzIGFsbCBjbGVhbiBhbmQgbWFpbnRhaW5hYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jb250cm9sbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7Y2R4X2NvbnRyb2xsZXIuYyYjMzQ7LAogICAgJiMzNDtjZHhfY29udHJvbGxlci5oJiMzNDssCiAgICAmIzM0O2NkeF9ycG1zZy5jJiMzNDssCiAgICAmIzM0O21jX2NkeF9wY29sLmgmIzM0OywKICAgICYjMzQ7bWNkaS5jJiMzNDssCiAgICAmIzM0O21jZGlfZnVuY3Rpb25zLmMmIzM0OywKICAgICYjMzQ7bWNkaV9mdW5jdGlvbnMuaCYjMzQ7LAogICAgJiMzNDttY2RpZC5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMzUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDRFggQ29udHJvbGxlciBhbmQgUlBNU0cgSW50ZXJhY3Rpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIENEWCBzdHVmZiBpcyB3b3JraW5nLCBzbyBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AgYW5kIGBjZHhfcnBtc2cuY2AuIFRoZSBjb250cm9sbGVyIGZpbGUgaXMgb2J2aW91c2x5IHRoZSBoZWFydCBvZiB0aGUgQ0RYIG1hbmFnZW1lbnQgaXRzZWxmLCBidXQgSSYjMzk7bSBiZXR0aW5nIHRoZSBSUE1TRyBpbXBsZW1lbnRhdGlvbiBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IGl0JiMzOTtzIGNvbW11bmljYXRpbmcgYW5kIGludGVyZmFjaW5nIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSwgbGlrZWx5IG92ZXIgc29tZSBmb3JtIG9mIGludGVyLXByb2Nlc3NvciBjb21tdW5pY2F0aW9uLiBJIGV4cGVjdCB0aGVzZSB0d28gZmlsZXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBpbml0aWFsIHBpY3R1cmUgb2YgdGhlIGFyY2hpdGVjdHVyZSBhbmQgaG93IHRoZSBjb21wb25lbnRzIGFyZSBpbnRlcmFjdGluZywgZXNwZWNpYWxseSBpZiB0aGVyZSYjMzk7cyBhbnkgc29ydCBvZiBzaGFyZWQgbWVtb3J5IG9yIG1lc3NhZ2UgcGFzc2luZyBpbnZvbHZlZC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBDRFggaG9zdCBjb250cm9sbGVyIGRyaXZlciBmb3IgQU1EIHZlcnNhbC1uZXQgcGxhdGZvcm0uXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCAqL1xuICAgNzpcdFxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvY2R4L2NkeF9idXMuaFx1MDAzZVxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2lycWRvbWFpbi5oXHUwMDNlXG4gIDEyOlx0XG4gIDEzOlx0I2luY2x1ZGUgXCYjMzQ7Y2R4X2NvbnRyb2xsZXIuaFwmIzM0O1xuICAxNDpcdCNpbmNsdWRlIFwmIzM0Oy4uL2NkeC5oXCYjMzQ7XG4gIDE1Olx0I2luY2x1ZGUgXCYjMzQ7bWNkaV9mdW5jdGlvbnMuaFwmIzM0O1xuICAxNjpcdCNpbmNsdWRlIFwmIzM0O21jZGlkLmhcJiMzNDtcbiAgMTc6XHRcbiAgMTg6XHRzdGF0aWMgdW5zaWduZWQgaW50IGNkeF9tY2RpX3JwY190aW1lb3V0KHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1bnNpZ25lZCBpbnQgY21kKVxuICAxOTpcdHtcbiAgMjA6XHRcdHJldHVybiBNQ0RJX1JQQ19USU1FT1VUO1xuICAyMTpcdH1cbiAgMjI6XHRcbiAgMjM6XHRzdGF0aWMgdm9pZCBjZHhfbWNkaV9yZXF1ZXN0KHN0cnVjdCBjZHhfbWNkaSAqY2R4LFxuICAyNDpcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGNkeF9kd29yZCAqaGRyLCBzaXplX3QgaGRyX2xlbixcbiAgMjU6XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBjZHhfZHdvcmQgKnNkdSwgc2l6ZV90IHNkdV9sZW4pXG4gIDI2Olx0e1xuICAyNzpcdFx0aWYgKGNkeF9ycG1zZ19zZW5kKGNkeCwgaGRyLCBoZHJfbGVuLCBzZHUsIHNkdV9sZW4pKVxuICAyODpcdFx0XHRkZXZfZXJyKFx1MDAyNmNkeC1cdTAwM2VycGRldi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBzZW5kIHJwbXNnIGRhdGFcXG5cJiMzNDspO1xuICAyOTpcdH1cbiAgMzA6XHRcbiAgMzE6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGNkeF9tY2RpX29wcyBtY2RpX29wcyA9IHtcbiAgMzI6XHRcdC5tY2RpX3JwY190aW1lb3V0ID0gY2R4X21jZGlfcnBjX3RpbWVvdXQsXG4gIDMzOlx0XHQubWNkaV9yZXF1ZXN0ID0gY2R4X21jZGlfcmVxdWVzdCxcbiAgMzQ6XHR9O1xuICAzNTpcdFxuICAzNjpcdHN0YXRpYyBpbnQgY2R4X2J1c19lbmFibGUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXG4gIDM3Olx0e1xuICAzODpcdFx0cmV0dXJuIGNkeF9tY2RpX2J1c19lbmFibGUoY2R4LVx1MDAzZXByaXYsIGJ1c19udW0pO1xuICAzOTpcdH1cbiAgNDA6XHRcbiAgNDE6XHRzdGF0aWMgaW50IGNkeF9idXNfZGlzYWJsZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcbiAgNDI6XHR7XG4gIDQzOlx0XHRyZXR1cm4gY2R4X21jZGlfYnVzX2Rpc2FibGUoY2R4LVx1MDAzZXByaXYsIGJ1c19udW0pO1xuICA0NDpcdH1cbiAgNDU6XHRcbiAgNDY6XHR2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuICA0NzpcdHtcbiAgNDg6XHRcdC8qIFJlZ2lzdGVyIENEWCBjb250cm9sbGVyIHdpdGggQ0RYIGJ1cyBkcml2ZXIgKi9cbiAgNDk6XHRcdGlmIChjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihjZHgpKVxuICA1MDpcdFx0XHRkZXZfZXJyKGNkeC1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBDRFggY29udHJvbGxlclxcblwmIzM0Oyk7XG4gIDUxOlx0fVxuICA1MjpcdFxuICA1MzpcdHZvaWQgY2R4X3JwbXNnX3ByZV9yZW1vdmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4gIDU0Olx0e1xuICA1NTpcdFx0Y2R4X3VucmVnaXN0ZXJfY29udHJvbGxlcihjZHgpO1xuICA1NjpcdFx0Y2R4X21jZGlfd2FpdF9mb3JfcXVpZXNjZW5jZShjZHgtXHUwMDNlcHJpdiwgTUNESV9SUENfVElNRU9VVCk7XG4gIDU3Olx0fVxuICA1ODpcdFxuICA1OTpcdHN0YXRpYyBpbnQgY2R4X2NvbmZpZ3VyZV9kZXZpY2Uoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsXG4gIDYwOlx0XHRcdFx0XHR1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxuICA2MTpcdFx0XHRcdFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnICpkZXZfY29uZmlnKVxuICA2MjpcdHtcbiAgNjM6XHRcdHUxNiBtc2lfaW5kZXg7XG4gIDY0Olx0XHRpbnQgcmV0ID0gMDtcbiAgNjU6XHRcdHUzMiBkYXRhO1xuICA2NjpcdFx0dTY0IGFkZHI7XG4gIDY3Olx0XG4gIDY4Olx0XHRzd2l0Y2ggKGRldl9jb25maWctXHUwMDNldHlwZSkge1xuICA2OTpcdFx0Y2FzZSBDRFhfREVWX01TSV9DT05GOlxuICA3MDpcdFx0XHRtc2lfaW5kZXggPSBkZXZfY29uZmlnLVx1MDAzZW1zaS5tc2lfaW5kZXg7XG4gIDcxOlx0XHRcdGRhdGEgPSBkZXZfY29uZmlnLVx1MDAzZW1zaS5kYXRhO1xuICA3MjpcdFx0XHRhZGRyID0gZGV2X2NvbmZpZy1cdTAwM2Vtc2kuYWRkcjtcbiAgNzM6XHRcbiAgNzQ6XHRcdFx0cmV0ID0gY2R4X21jZGlfd3JpdGVfbXNpKGNkeC1cdTAwM2Vwcml2LCBidXNfbnVtLCBkZXZfbnVtLCBtc2lfaW5kZXgsIGFkZHIsIGRhdGEpO1xuICA3NTpcdFx0XHRicmVhaztcbiAgNzY6XHRcdGNhc2UgQ0RYX0RFVl9SRVNFVF9DT05GOlxuICA3NzpcdFx0XHRyZXQgPSBjZHhfbWNkaV9yZXNldF9kZXZpY2UoY2R4LVx1MDAzZXByaXYsIGJ1c19udW0sIGRldl9udW0pO1xuICA3ODpcdFx0XHRicmVhaztcbiAgNzk6XHRcdGNhc2UgQ0RYX0RFVl9CVVNfTUFTVEVSX0NPTkY6XG4gIDgwOlx0XHRcdHJldCA9IGNkeF9tY2RpX2J1c19tYXN0ZXJfZW5hYmxlKGNkeC1cdTAwM2Vwcml2LCBidXNfbnVtLCBkZXZfbnVtLFxuICA4MTpcdFx0XHRcdFx0XHRcdCBkZXZfY29uZmlnLVx1MDAzZWJ1c19tYXN0ZXJfZW5hYmxlKTtcbiAgODI6XHRcdFx0YnJlYWs7XG4gIDgzOlx0XHRjYXNlIENEWF9ERVZfTVNJX0VOQUJMRTpcbiAgODQ6XHRcdFx0cmV0ID0gY2R4X21jZGlfbXNpX2VuYWJsZShjZHgtXHUwMDNlcHJpdiwgYnVzX251bSwgZGV2X251bSwgZGV2X2NvbmZpZy1cdTAwM2Vtc2lfZW5hYmxlKTtcbiAgODU6XHRcdFx0YnJlYWs7XG4gIDg2Olx0XHRkZWZhdWx0OlxuICA4NzpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuICA4ODpcdFx0fVxuICA4OTpcdFxuICA5MDpcdFx0cmV0dXJuIHJldDtcbiAgOTE6XHR9XG4gIDkyOlx0XG4gIDkzOlx0c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuICA5NDpcdHtcbiAgOTU6XHRcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHgtXHUwMDNlcHJpdjtcbiAgOTY6XHRcdHU4IGJ1c19udW0sIGRldl9udW0sIG51bV9jZHhfYnVzO1xuICA5NzpcdFx0aW50IHJldDtcbiAgOTg6XHRcbiAgOTk6XHRcdC8qIE1DREkgRlcgUmVhZDogRmV0Y2ggdGhlIG51bWJlciBvZiBDRFggYnVzZXMgb24gdGhpcyBjb250cm9sbGVyICovXG4gMTAwOlx0XHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKGNkeF9tY2RpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxNTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBDRFggSG9zdCBDb250cm9sbGVyIERyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwtTmV0IFBsYXRmb3JtKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBDRFggaG9zdCBjb250cm9sbGVyIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBBTUQgVmVyc2FsLU5ldCBwbGF0Zm9ybS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb250cm9sbGVyIGlzIGJlaW5nIHByb2JlZC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29kZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgZmlsZXMuIEkmIzM5O20gdGhpbmtpbmcgdGhlIGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IHdvdWxkIGJlIGBjZHhfcnBtc2cuY2Agb3IgbWF5YmUgZXZlbiB0aGUgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ2AgZmlsZS4gVGhlIEtjb25maWcgY291bGQgdGVsbCBtZSBob3cgdGhlIGNvbnRyb2xsZXIgaXMgY29uZmlndXJlZCwgd2hlcmVhcyB0aGUgLmMgZmlsZSB3aWxsLCBvZiBjb3Vyc2UsIGhvbGQgdGhlIHByb2JpbmcgbG9naWMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIHN5c3RlbSBkaXNjb3ZlcnMgYW5kIGluaXRpYWxpemVzIHRoaXMgcGFydGljdWxhciBDRFggY29udHJvbGxlci4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIENEWCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCNcbiAgIDc6XHRcbiAgIDg6XHRpZiBDRFhfQlVTXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIENEWF9DT05UUk9MTEVSXG4gIDExOlx0XHR0cmlzdGF0ZSBcJiMzNDtDRFggYnVzIGNvbnRyb2xsZXJcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gSEFTX0RNQVxuICAxMzpcdFx0c2VsZWN0IFJFTU9URVBST0NcbiAgMTQ6XHRcdHNlbGVjdCBSUE1TR1xuICAxNTpcdFx0aGVscFxuICAxNjpcdFx0ICBDRFggY29udHJvbGxlciBkcml2ZXMgdGhlIENEWCBidXMuIEl0IGludGVyYWN0cyB3aXRoXG4gIDE3Olx0XHQgIGZpcm13YXJlIHRvIGdldCB0aGUgaGFyZHdhcmUgZGV2aWNlcyBhbmQgcmVnaXN0ZXJzIHdpdGhcbiAgMTg6XHRcdCAgdGhlIENEWCBidXMuIFNheSBZIHRvIGVuYWJsZSB0aGUgQ0RYIGhhcmR3YXJlIGRyaXZlci5cbiAgMTk6XHRcbiAgMjA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjE6XHRcbiAgMjI6XHRlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzY4MwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgYSBWRklPIENEWCBkZXZpY2UsIGZyb20gaW5zdGFudGlhdGlvbiB0byBvcGVyYXRpb24uIEdpdmVuIG15IGV4cGVydGlzZSwgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLiBJJiMzOTttIGdvaW5nIHRvIHBvcmUgb3ZlciB0aGlzIGNvZGUgdG8gZ3Jhc3AgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cy4gTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgY3JpdGljYWwgZnVuY3Rpb25zOiBob3cgdGhlIGRldmljZSBpcyBjcmVhdGVkLCByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtLCBwcm9iZWQgdG8gZW5zdXJlIGl0cyBwcmVzZW5jZSBhbmQgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZW4gbWFuYWdlZCB0aHJvdWdob3V0IGl0cyBvcGVyYXRpb25hbCBsaWZlIGN5Y2xlLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHN0ZXBzIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgdHVuaW5nLCBhbmQgcG90ZW50aWFsbHkgZXh0ZW5kaW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFZGSU8gQ0RYIGRldmljZXMuIEkgYW50aWNpcGF0ZSBmaW5kaW5nIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBkZXZpY2UmIzM5O3Mgc3RhdGUgYW5kIGludGVyYWN0aW9uIHdpdGggdGhlIFZGSU8gZnJhbWV3b3JrLiBJJiMzOTttIGdvaW5nIHRvIGFzc3VtZSBhIGNlcnRhaW4gbGV2ZWwgb2YgZmFtaWxpYXJpdHkgd2l0aCB0aGUgVkZJTyBhcmNoaXRlY3R1cmUgYW5kIGRlbHZlIGRpcmVjdGx5IGludG8gdGhlIENEWCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdC8qXG4gICAzOlx0ICogQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy5cbiAgIDQ6XHQgKi9cbiAgIDU6XHRcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC92ZmlvLmhcdTAwM2VcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXHUwMDNlXG4gICA4Olx0XG4gICA5Olx0I2luY2x1ZGUgXCYjMzQ7cHJpdmF0ZS5oXCYjMzQ7XG4gIDEwOlx0XG4gIDExOlx0c3RhdGljIGludCB2ZmlvX2NkeF9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbiAgMTI6XHR7XG4gIDEzOlx0XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cbiAgMTQ6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG4gIDE1Olx0XG4gIDE2Olx0XHRtdXRleF9pbml0KFx1MDAyNnZkZXYtXHUwMDNlY2R4X2lycXNfbG9jayk7XG4gIDE3Olx0XHRyZXR1cm4gMDtcbiAgMTg6XHR9XG4gIDE5Olx0XG4gIDIwOlx0c3RhdGljIHZvaWQgdmZpb19jZHhfcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gIDIxOlx0e1xuICAyMjpcdFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG4gIDIzOlx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xuICAyNDpcdFxuICAyNTpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZ2ZGV2LVx1MDAzZWNkeF9pcnFzX2xvY2spO1xuICAyNjpcdH1cbiAgMjc6XHRcbiAgMjg6XHRzdGF0aWMgaW50IHZmaW9fY2R4X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuICAyOTpcdHtcbiAgMzA6XHRcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuICAzMTpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbiAgMzI6XHRcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbiAgMzM6XHRcdGludCBjb3VudCA9IGNkeF9kZXYtXHUwMDNlcmVzX2NvdW50O1xuICAzNDpcdFx0aW50IGksIHJldDtcbiAgMzU6XHRcbiAgMzY6XHRcdHZkZXYtXHUwMDNlcmVnaW9ucyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uLCBjb3VudCxcbiAgMzc6XHRcdFx0XHRcdCAgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiAgMzg6XHRcdGlmICghdmRldi1cdTAwM2VyZWdpb25zKVxuICAzOTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgNDA6XHRcbiAgNDE6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGNvdW50OyBpJiM0MzsmIzQzOykge1xuICA0MjpcdFx0XHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9IFx1MDAyNmNkeF9kZXYtXHUwMDNlcmVzW2ldO1xuICA0MzpcdFxuICA0NDpcdFx0XHR2ZGV2LVx1MDAzZXJlZ2lvbnNbaV0uYWRkciA9IHJlcy1cdTAwM2VzdGFydDtcbiAgNDU6XHRcdFx0dmRldi1cdTAwM2VyZWdpb25zW2ldLnNpemUgPSByZXNvdXJjZV9zaXplKHJlcyk7XG4gIDQ2Olx0XHRcdHZkZXYtXHUwMDNlcmVnaW9uc1tpXS50eXBlID0gcmVzLVx1MDAzZWZsYWdzO1xuICA0NzpcdFx0XHQvKlxuICA0ODpcdFx0XHQgKiBPbmx5IHJlZ2lvbnMgYWRkcmVzc2VkIHdpdGggUEFHRSBncmFudWxhcml0eSBtYXkgYmVcbiAgNDk6XHRcdFx0ICogTU1BUCYjMzk7ZWQgc2VjdXJlbHkuXG4gIDUwOlx0XHRcdCAqL1xuICA1MTpcdFx0XHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaV0uYWRkciBcdTAwMjYgflBBR0VfTUFTSykgXHUwMDI2XHUwMDI2XG4gIDUyOlx0XHRcdCAgICAhKHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5zaXplIFx1MDAyNiB+UEFHRV9NQVNLKSlcbiAgNTM6XHRcdFx0XHR2ZGV2LVx1MDAzZXJlZ2lvbnNbaV0uZmxhZ3MgfD1cbiAgNTQ6XHRcdFx0XHRcdFx0VkZJT19SRUdJT05fSU5GT19GTEFHX01NQVA7XG4gIDU1Olx0XHRcdHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5mbGFncyB8PSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfUkVBRDtcbiAgNTY6XHRcdFx0aWYgKCEoY2R4X2Rldi1cdTAwM2VyZXNbaV0uZmxhZ3MgXHUwMDI2IElPUkVTT1VSQ0VfUkVBRE9OTFkpKVxuICA1NzpcdFx0XHRcdHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5mbGFncyB8PSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEU7XG4gIDU4Olx0XHR9XG4gIDU5Olx0XHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGNvcmVfdmRldi1cdTAwM2VkZXYpO1xuICA2MDpcdFx0aWYgKHJldCkge1xuICA2MTpcdFx0XHRrZnJlZSh2ZGV2LVx1MDAzZXJlZ2lvbnMpO1xuICA2MjpcdFx0XHR2ZGV2LVx1MDAzZXJlZ2lvbnMgPSBOVUxMO1xuICA2MzpcdFx0XHRyZXR1cm4gcmV0O1xuICA2NDpcdFx0fVxuICA2NTpcdFx0cmV0ID0gY2R4X2NsZWFyX21hc3RlcihjZHhfZGV2KTtcbiAgNjY6XHRcdGlmIChyZXQpXG4gIDY3Olx0XHRcdHZkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+Qk1FX1NVUFBPUlQ7XG4gIDY4Olx0XHRlbHNlXG4gIDY5Olx0XHRcdHZkZXYtXHUwMDNlZmxhZ3MgfD0gQk1FX1NVUFBPUlQ7XG4gIDcwOlx0XG4gIDcxOlx0XHRyZXR1cm4gMDtcbiAgNzI6XHR9XG4gIDczOlx0XG4gIDc0Olx0c3RhdGljIHZvaWQgdmZpb19jZHhfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuICA3NTpcdHtcbiAgNzY6XHRcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuICA3NzpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbiAgNzg6XHRcbiAgNzk6XHRcdGtmcmVlKHZkZXYtXHUwMDNlcmVnaW9ucyk7XG4gIDgwOlx0XHRjZHhfZGV2X3Jlc2V0KGNvcmVfdmRldi1cdTAwM2VkZXYpO1xuICA4MTpcdFx0dmZpb19jZHhfaXJxc19jbGVhbnVwKHZkZXYpO1xuICA4MjpcdH1cbiAgODM6XHRcbiAgODQ6XHRzdGF0aWMgaW50IHZmaW9fY2R4X2JtX2N0cmwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHUzMiBmbGFncyxcbiAgODU6XHRcdFx0XHQgICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KVxuICA4NjpcdHtcbiAgODc6XHRcdHNpemVfdCBtaW5zeiA9XG4gIDg4Olx0XHRcdG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX2J1c19tYXN0ZXIsIG9wKTtcbiAgODk6XHRcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuICA5MDpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbiAgOTE6XHRcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbiAgOTI6XHRcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX2J1c19tYXN0ZXIgb3BzO1xuICA5MzpcdFx0aW50IHJldDtcbiAgOTQ6XHRcbiAgOTU6XHRcdGlmICghKHZkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IEJNRV9TVVBQT1JUKSlcbiAgOTY6XHRcdFx0cmV0dXJuIC1FTk9UVFk7XG4gIDk3Olx0XG4gIDk4Olx0XHRyZXQgPSB2ZmlvX2NoZWNrX2ZlYXR1cmUoZmxhZ3MsIGFyZ3N6LCBWRklPX0RFVklDRV9GRUFUVVJFX1NFVCxcbiAgOTk6XHRcdFx0XHRcdCBzaXplb2Yob3BzKSk7XG4gMTAwOlx0XHRpZiAocmV0ICE9IDEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDc3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgZXhhbWluaW5nIHRoZSBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgIGNvZGUgYW5kIHRoaW5raW5nIGFsb3VkIGFzIGEgc2Vhc29uZWQgZXhwZXJ0OgoKKipEaXZpbmcgaW50byBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGlzIGBtYWluLmNgIGZpbGUgd2l0aGluIHRoZSBDRFggKGxpa2VseSBDb250YWluZXIgRGlyZWN0IGVYZWN1dGlvbikgVkZJTyBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgY29yZSBwdXJwb3NlLiBXaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludD8gV2hhdCYjMzk7cyBpbml0aWFsaXplZD8gQXJlIHdlIGRlYWxpbmcgd2l0aCB0aGUgb3ZlcmFsbCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIGV4aXQgcm91dGluZXMsIG9yIGp1c3QgYSBwaWVjZSBvZiB0aGUgcHV6emxlPyBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgbW9kdWxlX2luaXQgYW5kIG1vZHVsZV9leGl0IG1hY3JvcyByaWdodCBvZmYgdGhlIGJhdCwgdG8gZ2V0IHRoZSBicm9hZCBzdHJ1Y3R1cmUuIEZyb20gdGhlcmUsIEkmIzM5O2xsIHF1aWNrbHkgbG9vayBmb3Igc3RydWN0IGRlZmluaXRpb25zIGFuZCBnbG9iYWwgdmFyaWFibGVzLiBJIHdhbnQgdG8gc2VlIGhvdyBkYXRhIGlzIHN0b3JlZCBmb3IgdGhlIGNvbnRhaW5lciBhbmQgdGhlIGRldmljZSB3aXRoaW4gdGhpcyBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCB0byB0aGUgb3ZlcmFsbCBWRklPIGZyYW1ld29yayBhbmQgaG93IHdlIGFyZSBpbnRlcmFjdGluZyB3aXRoIGl0LiBUaGUgbWVtb3J5IG1hcHBpbmcgYW5kIHVubWFwcGluZyByb3V0aW5lcyB3aWxsIGJlIGNyaXRpY2FsIC0gYXJlIHdlIGRpcmVjdGx5IG1hbmFnaW5nIHRoZSBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcyBvciBpbmRpcmVjdGx5IHZpYSBzb21lIGtpbmQgb2YgaW9tbXUgc2V0dXA/IEkgd2lsbCBwcm9iYWJseSBzZWUgc29tZSBraW5kIG9mIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSBtb2RlbHMgYW5kIGEgZmlsZSBkZXNjcmlwdG9yLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwgcGFydHMgb2YgdGhlIGRyaXZlcjsgdGhlIGNvZGUgdGhhdCB3aXJlcyB1cCB0aGUgdmZpby1wY2kgaW50ZXJmYWNlIGZvciBDRFggb3BlcmF0aW9ucy4gVGhlbiBJIHdpbGwgc2VlIGhvdyB0byBoYW5kbGUgdGhlIGRldmljZSByZWdpc3RyYXRpb24sIGludGVycnVwdCBoYW5kbGluZyAoaWYgYXBwbGljYWJsZSksIGFuZCBvZiBjb3Vyc2UsIHRoZSBhY3R1YWwgb3BlcmF0aW9ucyBmb3IgY29udGFpbmVyIGV4ZWN1dGlvbi4gRGVwZW5kaW5nIG9uIHRoZSBjb21wbGV4aXR5LCBJJiMzOTtsbCBzdGFydCBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiBjb250cm9sIGZsb3cuIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBob3cgdGhlIENEWCBzcGVjaWZpYyBwaWVjZXMgZml0IHdpdGhpbiB0aGUgbGFyZ2VyIFZGSU8gZWNvc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjYwOlx0XHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVx1MDAzZXZtX3N0YXJ0LCB2bWEtXHUwMDNldm1fcGdvZmYsXG4gMjYxOlx0XHRcdFx0XHQgIHNpemUsIHZtYS1cdTAwM2V2bV9wYWdlX3Byb3QpO1xuIDI2MjpcdH1cbiAyNjM6XHRcbiAyNjQ6XHRzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gMjY1Olx0XHRcdFx0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuIDI2NjpcdHtcbiAyNjc6XHRcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuIDI2ODpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbiAyNjk6XHRcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbiAyNzA6XHRcdHVuc2lnbmVkIGludCBpbmRleDtcbiAyNzE6XHRcbiAyNzI6XHRcdGluZGV4ID0gdm1hLVx1MDAzZXZtX3Bnb2ZmIFx1MDAzZVx1MDAzZSAoVkZJT19DRFhfT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XG4gMjczOlx0XG4gMjc0Olx0XHRpZiAoISh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1NIQVJFRCkpXG4gMjc1Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI3NjpcdFxuIDI3NzpcdFx0aWYgKGluZGV4IFx1MDAzZT0gY2R4X2Rldi1cdTAwM2VyZXNfY291bnQpXG4gMjc4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI3OTpcdFxuIDI4MDpcdFx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX01NQVApKVxuIDI4MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyODI6XHRcbiAyODM6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEKSBcdTAwMjZcdTAwMjZcbiAyODQ6XHRcdCAgICAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9SRUFEKSlcbiAyODU6XHRcdFx0cmV0dXJuIC1FUEVSTTtcbiAyODY6XHRcbiAyODc6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkgXHUwMDI2XHUwMDI2XG4gMjg4Olx0XHQgICAgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIDI4OTpcdFx0XHRyZXR1cm4gLUVQRVJNO1xuIDI5MDpcdFxuIDI5MTpcdFx0cmV0dXJuIHZmaW9fY2R4X21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIDI5MjpcdH1cbiAyOTM6XHRcbiAyOTQ6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XG4gMjk1Olx0XHQubmFtZVx0XHQ9IFwmIzM0O3ZmaW8tY2R4XCYjMzQ7LFxuIDI5NjpcdFx0LmluaXRcdFx0PSB2ZmlvX2NkeF9pbml0X2RldixcbiAyOTc6XHRcdC5yZWxlYXNlXHQ9IHZmaW9fY2R4X3JlbGVhc2VfZGV2LFxuIDI5ODpcdFx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fY2R4X29wZW5fZGV2aWNlLFxuIDI5OTpcdFx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX2NkeF9jbG9zZV9kZXZpY2UsXG4gMzAwOlx0XHQuaW9jdGxcdFx0PSB2ZmlvX2NkeF9pb2N0bCxcbiAzMDE6XHRcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZmaW9fY2R4X2lvY3RsX2dldF9yZWdpb25faW5mbyxcbiAzMDI6XHRcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fY2R4X2lvY3RsX2ZlYXR1cmUsXG4gMzAzOlx0XHQubW1hcFx0XHQ9IHZmaW9fY2R4X21tYXAsXG4gMzA0Olx0XHQuYmluZF9pb21tdWZkXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxuIDMwNTpcdFx0LnVuYmluZF9pb21tdWZkXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF91bmJpbmQsXG4gMzA2Olx0XHQuYXR0YWNoX2lvYXNcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2F0dGFjaF9pb2FzLFxuIDMwNzpcdH07XG4gMzA4Olx0XG4gMzA5Olx0c3RhdGljIGludCB2ZmlvX2NkeF9wcm9iZShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbiAzMTA6XHR7XG4gMzExOlx0XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2O1xuIDMxMjpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXY7XG4gMzEzOlx0XHRpbnQgcmV0O1xuIDMxNDpcdFxuIDMxNTpcdFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fY2R4X2RldmljZSwgdmRldiwgZGV2LFxuIDMxNjpcdFx0XHRcdFx0IFx1MDAyNnZmaW9fY2R4X29wcyk7XG4gMzE3Olx0XHRpZiAoSVNfRVJSKHZkZXYpKVxuIDMxODpcdFx0XHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcbiAzMTk6XHRcbiAzMjA6XHRcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gMzIxOlx0XHRpZiAocmV0KVxuIDMyMjpcdFx0XHRnb3RvIG91dF91bmluaXQ7XG4gMzIzOlx0XG4gMzI0Olx0XHRkZXZfc2V0X2RydmRhdGEoZGV2LCB2ZGV2KTtcbiAzMjU6XHRcdHJldHVybiAwO1xuIDMyNjpcdFxuIDMyNzpcdG91dF91bmluaXQ6XG4gMzI4Olx0XHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2dmRldi1cdTAwM2V2ZGV2KTtcbiAzMjk6XHRcdHJldHVybiByZXQ7XG4gMzMwOlx0fVxuIDMzMTpcdFxuIDMzMjpcdHN0YXRpYyBpbnQgdmZpb19jZHhfcmVtb3ZlKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuIDMzMzpcdHtcbiAzMzQ6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2O1xuIDMzNTpcdFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuIDMzNjpcdFxuIDMzNzpcdFx0dmZpb191bnJlZ2lzdGVyX2dyb3VwX2RldihcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpO1xuIDMzODpcdFx0dmZpb19wdXRfZGV2aWNlKFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gMzM5Olx0XG4gMzQwOlx0XHRyZXR1cm4gMDtcbiAzNDE6XHR9XG4gMzQyOlx0XG4gMzQzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkIHZmaW9fY2R4X3RhYmxlW10gPSB7XG4gMzQ0Olx0XHR7IENEWF9ERVZJQ0VfRFJJVkVSX09WRVJSSURFKENEWF9BTllfSUQsIENEWF9BTllfSUQsXG4gMzQ1Olx0XHRcdFx0XHQgICAgIENEWF9JRF9GX1ZGSU9fRFJJVkVSX09WRVJSSURFKSB9LCAvKiBtYXRjaCBhbGwgYnkgZGVmYXVsdCAqL1xuIDM0NjpcdFx0e31cbiAzNDc6XHR9O1xuIDM0ODpcdFxuIDM0OTpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUoY2R4LCB2ZmlvX2NkeF90YWJsZSk7XG4gMzUwOlx0XG4gMzUxOlx0c3RhdGljIHN0cnVjdCBjZHhfZHJpdmVyIHZmaW9fY2R4X2RyaXZlciA9IHtcbiAzNTI6XHRcdC5wcm9iZVx0XHQ9IHZmaW9fY2R4X3Byb2JlLFxuIDM1MzpcdFx0LnJlbW92ZVx0XHQ9IHZmaW9fY2R4X3JlbW92ZSxcbiAzNTQ6XHRcdC5tYXRjaF9pZF90YWJsZVx0PSB2ZmlvX2NkeF90YWJsZSxcbiAzNTU6XHRcdC5kcml2ZXJcdD0ge1xuIDM1NjpcdFx0XHQubmFtZVx0PSBcJiMzNDt2ZmlvLWNkeFwmIzM0OyxcbiAzNTc6XHRcdH0sXG4gMzU4Olx0XHQuZHJpdmVyX21hbmFnZWRfZG1hID0gdHJ1ZSxcbiAzNTk6XHR9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU5MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNEWCBBbmFseXNpcyAmYW1wOyBGZWFzaWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgY2VudGVycyBvbiB1bmRlcnN0YW5kaW5nIENEWCDigJMgd2hhdCBpdCAqaXMqLCBmdW5kYW1lbnRhbGx5IOKAkyBhbmQgdGhlbiwgY3J1Y2lhbGx5LCB3aGV0aGVyIGl0JiMzOTtzIGV2ZW4gKmFjY2Vzc2libGUqIHdpdGhpbiBteSB1c3VhbCBRRU1VIGFuZCBHQ0UgdGVzdGluZyBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBrbm93IGlmIEkmIzM5O20gZ29pbmcgdG8gcmVxdWlyZSBzcGVjaWFsaXplZCBBTUQgVmVyc2FsIGhhcmR3YXJlIGZvciB0aGlzIG9yIGlmIEkgY2FuIHN0YXkgd2l0aGluIG15IGZhbWlsaWFyIGNvbWZvcnQgem9uZS4gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4KClRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UgY3JlYXRpb24gcHJvY2VzczogSG93ICphcmUqIHRoZXNlIENEWCBkZXZpY2VzIGluc3RhbnRpYXRlZD8gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIGtleSB0byBmdXp6aW5nLCBhcyBpdCBkZXRlcm1pbmVzIGhvdyBJIGNhbiBwb3RlbnRpYWxseSBpbmZsdWVuY2UgdGhlaXIgaW5pdGlhbGl6YXRpb24gb3IgZmVlZCB0aGVtIHVuZXhwZWN0ZWQgaW5wdXRzLiBJZiB0aGV5IHJlcXVpcmUgc29tZSB1bmlxdWUgb3IgcHJvcHJpZXRhcnkgc2V0dXAsIHRoYXQgY2hhbmdlcyB0aGUgd2hvbGUgZ2FtZS4KCkZpbmFsbHksIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgY29kZWJhc2UuIFNwZWNpZmljYWxseSwgdGhlIGBkcml2ZXJzL2NkeC9gIGRpcmVjdG9yeSBzaG91bGQgcmV2ZWFsIHRoZSBzZWNyZXRzLiBBcmUgdGhlc2UgZGV2aWNlcyBjcmVhdGVkIHN0YXRpY2FsbHksIGF0IGJvb3Q/IE9yLCBldmVuIGJldHRlciwgaXMgdGhlcmUgYSBkeW5hbWljIGNyZWF0aW9uIHBhdGg/IER5bmFtaWMgY3JlYXRpb24gd291bGQgb3BlbiB1cCBhIHdob2xlIHVuaXZlcnNlIG9mIHBvc3NpYmlsaXRpZXMgZm9yIG1hbmlwdWxhdGluZyBhbmQgZnV6emluZy4gVW5kZXJzdGFuZGluZyB0aGUgY3JlYXRpb24gbWVjaGFuaXNtIGlzIHBhcmFtb3VudCB0byBhbnkgZWZmZWN0aXZlIGZ1enppbmcgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NkeF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2NkeCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTgzNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9jZHgvTWFrZWZpbGU9MTI9aWZkZWYgQ09ORklHX0dFTkVSSUNfTVNJX0lSUVxuZHJpdmVycy9jZHgvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0NEWF9CVVMpICYjNDM7PSBjZHhfbXNpLm9cbmRyaXZlcnMvY2R4L01ha2VmaWxlLTE0LWVuZGlmXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjctI2luY2x1ZGUgXHUwMDNjbGludXgvaWRyLmhcdTAwM2VcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2NkeC9jZHhfYnVzLmhcdTAwM2VcbmRyaXZlcnMvY2R4L2NkeC5jLTY5LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvbW11LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03OC0vKiBJREEgZm9yIENEWCBjb250cm9sbGVycyByZWdpc3RlcmVkIHdpdGggdGhlIENEWCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjc5OnN0YXRpYyBERUZJTkVfSURBKGNkeF9jb250cm9sbGVyX2lkYSk7XG5kcml2ZXJzL2NkeC9jZHguYy04MC0vKiBMb2NrIHRvIHByb3RlY3QgY29udHJvbGxlciBvcHMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjgxOnN0YXRpYyBERUZJTkVfTVVURVgoY2R4X2NvbnRyb2xsZXJfbG9jayk7XG5kcml2ZXJzL2NkeC9jZHguYy04Mi0vKiBEZWJ1Z2ZzIGRpciBmb3IgY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6ODM6c3RhdGljIHN0cnVjdCBkZW50cnkgKmNkeF9kZWJ1Z2ZzX2RpcjtcbmRyaXZlcnMvY2R4L2NkeC5jLTg0LVxuZHJpdmVycy9jZHgvY2R4LmM9ODU9c3RhdGljIGNoYXIgKmNvbXBhdF9ub2RlX25hbWUgPSBcJiMzNDt4bG54LHZlcnNhbC1uZXQtY2R4XCYjMzQ7O1xuZHJpdmVycy9jZHgvY2R4LmMtODYtXG5kcml2ZXJzL2NkeC9jZHguYzo4NzpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSk7XG5kcml2ZXJzL2NkeC9jZHguYy04OC1cbmRyaXZlcnMvY2R4L2NkeC5jLTg5LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6OTA6ICogY2R4X2Rldl9yZXNldCAtIFJlc2V0IGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmMtOTEtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTk0LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6OTU6aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtOTYte1xuZHJpdmVycy9jZHgvY2R4LmM6OTc6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjk4Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjk5Olx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XG5kcml2ZXJzL2NkeC9jZHguYzoxMDA6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydjtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMS1cdGludCByZXQ7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDItXG5kcml2ZXJzL2NkeC9jZHguYzoxMDM6XHRjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNC1cdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgaXMgYmVpbmcgcmVzZXQgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjEwNTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXJlc2V0X3ByZXBhcmUpXG5kcml2ZXJzL2NkeC9jZHguYzoxMDY6XHRcdGNkeF9kcnYtXHUwMDNlcmVzZXRfcHJlcGFyZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNy1cbmRyaXZlcnMvY2R4L2NkeC5jLTEwOC1cdGRldl9jb25maWcudHlwZSA9IENEWF9ERVZfUkVTRVRfQ09ORjtcbmRyaXZlcnMvY2R4L2NkeC5jOjEwOTpcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSxcbmRyaXZlcnMvY2R4L2NkeC5jOjExMDpcdFx0XHRcdCAgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSwgXHUwMDI2ZGV2X2NvbmZpZyk7XG5kcml2ZXJzL2NkeC9jZHguYy0xMTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTExNC1cdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgcmVzZXQgaXMgY29tcGxldGUgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjExNTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXJlc2V0X2RvbmUpXG5kcml2ZXJzL2NkeC9jZHguYzoxMTY6XHRcdGNkeF9kcnYtXHUwMDNlcmVzZXRfZG9uZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTExNy1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xMTktfVxuZHJpdmVycy9jZHgvY2R4LmM6MTIwOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTIxLVxuZHJpdmVycy9jZHgvY2R4LmMtMTIyLS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MTIzOiAqIHJlc2V0X2NkeF9kZXZpY2UgLSBSZXNldCBhIENEWCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTEyNC0gKiBAZGV2OiBDRFggZGV2aWNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTMwLSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTMxOnN0YXRpYyBpbnQgcmVzZXRfY2R4X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy0xMzIte1xuZHJpdmVycy9jZHgvY2R4LmM6MTMzOlx0cmV0dXJuIGNkeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNC19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTM2LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MTM3OiAqIGNkeF91bnJlZ2lzdGVyX2RldmljZSAtIFVucmVnaXN0ZXIgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguYy0xMzgtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE0MC0gKlx0ICBidXQgaXMgcmVxdWlyZWQgaGVyZSBhcyB0aGUgYnVzX2Zvcl9lYWNoX2RldigpIEFQSSBleHBlY3RzXG5kcml2ZXJzL2NkeC9jZHguYzoxNDE6ICpcdCAgdGhlIHBhc3NlZCBmdW5jdGlvbiAoY2R4X3VucmVnaXN0ZXJfZGV2aWNlKSB0byBoYXZlIHRoaXNcbmRyaXZlcnMvY2R4L2NkeC5jLTE0Mi0gKlx0ICBhcyBhbiBhcmd1bWVudC5cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNDUtICovXG5kcml2ZXJzL2NkeC9jZHguYzoxNDY6c3RhdGljIGludCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ3LVx0XHRcdFx0IHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy0xNDgte1xuZHJpdmVycy9jZHgvY2R4LmM6MTQ5Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTA6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtMTUxLVxuZHJpdmVycy9jZHgvY2R4LmM6MTUyOlx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKSB7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTM6XHRcdGRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTQ6XHRcdGlmIChjZHhfZGV2LVx1MDAzZWVuYWJsZWQgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUpXG5kcml2ZXJzL2NkeC9jZHguYzoxNTU6XHRcdFx0Y2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTYtXHR9IGVsc2Uge1xuZHJpdmVycy9jZHgvY2R4LmM6MTU3Olx0XHRjZHhfZGVzdHJveV9yZXNfYXR0cihjZHhfZGV2LCBNQVhfQ0RYX0RFVl9SRVNPVVJDRVMpO1xuZHJpdmVycy9jZHgvY2R4LmM6MTU4Olx0XHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoY2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2Rpcik7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTktXHR9XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTYxLVx0LypcbmRyaXZlcnMvY2R4L2NkeC5jOjE2MjpcdCAqIERvIG5vdCBmcmVlIGNkeF9kZXYgaGVyZSBhcyBpdCB3b3VsZCBiZSBmcmVlZCBpblxuZHJpdmVycy9jZHgvY2R4LmM6MTYzOlx0ICogY2R4X2RldmljZV9yZWxlYXNlKCkgY2FsbGVkIGZyb20gd2l0aGluIHB1dF9kZXZpY2UoKS5cbmRyaXZlcnMvY2R4L2NkeC5jLTE2NC1cdCAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTY1Olx0ZGV2aWNlX2RlbChcdTAwMjZjZHhfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoxNjY6XHRwdXRfZGV2aWNlKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE2Ny1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNzAtXG5kcml2ZXJzL2NkeC9jZHguYzoxNzE6c3RhdGljIHZvaWQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTE3Mi17XG5kcml2ZXJzL2NkeC9jZHguYy0xNzMtXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTc0Olx0YnVzX2Zvcl9lYWNoX2RldihidXMsIE5VTEwsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL2NkeC9jZHguYy0xNzUtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE3Ny0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjE3ODogKiBjZHhfbWF0Y2hfb25lX2RldmljZSAtIFRlbGwgaWYgYSBDRFggZGV2aWNlIHN0cnVjdHVyZSBoYXMgYSBtYXRjaGluZ1xuZHJpdmVycy9jZHgvY2R4LmMtMTc5LSAqXHRcdFx0ICBDRFggZGV2aWNlIGlkIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE4Mi0gKlxuZHJpdmVycy9jZHgvY2R4LmM6MTgzOiAqIFJldHVybjogbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3IgTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbmRyaXZlcnMvY2R4L2NkeC5jLTE4NC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjE4NTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NjpjZHhfbWF0Y2hfb25lX2RldmljZShjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWQsXG5kcml2ZXJzL2NkeC9jZHguYzoxODc6XHRcdCAgICAgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTE4OC17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTk5LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MjAwOiAqIGNkeF9tYXRjaF9pZCAtIFNlZSBpZiBhIENEWCBkZXZpY2UgbWF0Y2hlcyBhIGdpdmVuIGNkeF9pZCB0YWJsZVxuZHJpdmVycy9jZHgvY2R4LmMtMjAxLSAqIEBpZHM6IGFycmF5IG9mIENEWCBkZXZpY2UgSUQgc3RydWN0dXJlcyB0byBzZWFyY2ggaW5cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMDQtICogVXNlZCBieSBhIGRyaXZlciB0byBjaGVjayB3aGV0aGVyIGEgQ0RYIGRldmljZSBpcyBpbiBpdHMgbGlzdCBvZlxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxuZHJpdmVycy9jZHgvY2R4LmMtMjA2LSAqIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDctICpcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDktICovXG5kcml2ZXJzL2NkeC9jZHguYzoyMTA6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMTIte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIxNC1cdFx0d2hpbGUgKGlkcy1cdTAwM2V2ZW5kb3IgfHwgaWRzLVx1MDAzZWRldmljZSkge1xuZHJpdmVycy9jZHgvY2R4LmM6MjE1Olx0XHRcdGlmIChjZHhfbWF0Y2hfb25lX2RldmljZShpZHMsIGRldikpXG5kcml2ZXJzL2NkeC9jZHguYy0yMTYtXHRcdFx0XHRyZXR1cm4gaWRzO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjIyMzppbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMjQte1xuZHJpdmVycy9jZHgvY2R4LmM6MjI1Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjI3LVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIzMS1cdGlmIChjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUpXG5kcml2ZXJzL2NkeC9jZHguYzoyMzI6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSxcbmRyaXZlcnMvY2R4L2NkeC5jOjIzMzpcdFx0XHRcdFx0ICAgICAgY2R4X2Rldi1cdTAwM2VkZXZfbnVtLCBcdTAwMjZkZXZfY29uZmlnKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTIzNC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMzYtfVxuZHJpdmVycy9jZHgvY2R4LmM6MjM3OkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9zZXRfbWFzdGVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTIzOC1cbmRyaXZlcnMvY2R4L2NkeC5jOjIzOTppbnQgY2R4X2NsZWFyX21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbmRyaXZlcnMvY2R4L2NkeC5jLTI0MC17XG5kcml2ZXJzL2NkeC9jZHguYzoyNDE6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmM6MjQyOlx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XG5kcml2ZXJzL2NkeC9jZHguYy0yNDMtXHRpbnQgcmV0ID0gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjQ3LVx0aWYgKGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjI0ODpcdFx0cmV0ID0gY2R4LVx1MDAzZW9wcy1cdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtLFxuZHJpdmVycy9jZHgvY2R4LmM6MjQ5Olx0XHRcdFx0XHQgICAgICBjZHhfZGV2LVx1MDAzZWRldl9udW0sIFx1MDAyNmRldl9jb25maWcpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjUwLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI1Mi19XG5kcml2ZXJzL2NkeC9jZHguYzoyNTM6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2NsZWFyX21hc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0yNTQtXG5kcml2ZXJzL2NkeC9jZHguYy0yNTUtLyoqXG5kcml2ZXJzL2NkeC9jZHguYzoyNTY6ICogY2R4X2J1c19tYXRjaCAtIGRldmljZSB0byBkcml2ZXIgbWF0Y2hpbmcgY2FsbGJhY2tcbmRyaXZlcnMvY2R4L2NkeC5jLTI1Ny0gKiBAZGV2OiB0aGUgY2R4IGRldmljZSB0byBtYXRjaCBhZ2FpbnN0XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjYyLSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MjYzOnN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL2NkeC9jZHguYy0yNjQte1xuZHJpdmVycy9jZHgvY2R4LmM6MjY1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjY6XHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NzpcdGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpmb3VuZF9pZCA9IE5VTEw7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjg6XHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzO1xuZHJpdmVycy9jZHgvY2R4LmMtMjY5LVx0aW50IHJldDtcbmRyaXZlcnMvY2R4L2NkeC5jLTI3MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjI3MTpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTI3Mi1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9jZHgvY2R4LmMtMjczLVxuZHJpdmVycy9jZHgvY2R4LmM6Mjc0Olx0aWRzID0gY2R4X2Rydi1cdTAwM2VtYXRjaF9pZF90YWJsZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI3NS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yODAtXG5kcml2ZXJzL2NkeC9jZHguYzoyODE6XHRmb3VuZF9pZCA9IGNkeF9tYXRjaF9pZChpZHMsIGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjgyLVx0aWYgKCFmb3VuZF9pZClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yOTUtXHRcdGlkcyA9IGZvdW5kX2lkICYjNDM7IDE7XG5kcml2ZXJzL2NkeC9jZHguYzoyOTY6XHRcdGZvdW5kX2lkID0gY2R4X21hdGNoX2lkKGlkcywgY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0yOTctXHR9IHdoaWxlIChmb3VuZF9pZCk7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzAxLVxuZHJpdmVycy9jZHgvY2R4LmM6MzAyOnN0YXRpYyBpbnQgY2R4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMy17XG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozMDU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNjpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0zMDctXHRpbnQgZXJyb3I7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzEzLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0dFTkVSSUNfTVNJX0lSUSkgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2Vtc2lfZG9tYWluKSB7XG5kcml2ZXJzL2NkeC9jZHguYzozMTQ6XHRcdGVycm9yID0gbXNpX3NldHVwX2RldmljZV9kYXRhKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTMxNS1cdFx0aWYgKGVycm9yKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMxOC1cbmRyaXZlcnMvY2R4L2NkeC5jOjMxOTpcdGVycm9yID0gY2R4X2Rydi1cdTAwM2Vwcm9iZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTMyMC1cdGlmIChlcnJvcikge1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMyNy1cbmRyaXZlcnMvY2R4L2NkeC5jOjMyODpzdGF0aWMgdm9pZCBjZHhfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTMyOS17XG5kcml2ZXJzL2NkeC9jZHguYzozMzA6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozMzE6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTMzMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjMzMzpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXJlbW92ZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjMzNDpcdFx0Y2R4X2Rydi1cdTAwM2VyZW1vdmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMzUtfVxuZHJpdmVycy9jZHgvY2R4LmMtMzM2LVxuZHJpdmVycy9jZHgvY2R4LmM6MzM3OnN0YXRpYyB2b2lkIGNkeF9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMzgte1xuZHJpdmVycy9jZHgvY2R4LmM6MzM5Olx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzQwOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzozNDE6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtMzQyLVxuZHJpdmVycy9jZHgvY2R4LmM6MzQzOlx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzIFx1MDAyNlx1MDAyNiBjZHhfZGV2LVx1MDAzZWVuYWJsZWQgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUpXG5kcml2ZXJzL2NkeC9jZHguYzozNDQ6XHRcdGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0pO1xuZHJpdmVycy9jZHgvY2R4LmM6MzQ1Olx0aWYgKGNkeF9kcnYgXHUwMDI2XHUwMDI2IGNkeF9kcnYtXHUwMDNlc2h1dGRvd24pXG5kcml2ZXJzL2NkeC9jZHguYzozNDY6XHRcdGNkeF9kcnYtXHUwMDNlc2h1dGRvd24oY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zNDctfVxuZHJpdmVycy9jZHgvY2R4LmMtMzQ4LVxuZHJpdmVycy9jZHgvY2R4LmM6MzQ5OnN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzUwLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzUzOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1NDpcdHUzMiBpbnB1dF9pZCA9IGNkeF9kZXYtXHUwMDNlcmVxX2lkO1xuZHJpdmVycy9jZHgvY2R4LmMtMzU1LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zNjItXG5kcml2ZXJzL2NkeC9jZHguYzozNjM6XHQvKiBAY2R4X2RydiBtYXkgbm90IGJlIHZhbGlkIHdoZW4gd2UmIzM5O3JlIGNhbGxlZCBmcm9tIHRoZSBJT01NVSBsYXllciAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MzY0Olx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2Vkcml2ZXIgXHUwMDI2XHUwMDI2ICFjZHhfZHJ2LVx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSkge1xuZHJpdmVycy9jZHgvY2R4LmMtMzY1LVx0XHRyZXQgPSBpb21tdV9kZXZpY2VfdXNlX2RlZmF1bHRfZG9tYWluKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzcyLVxuZHJpdmVycy9jZHgvY2R4LmM6MzczOnN0YXRpYyB2b2lkIGNkeF9kbWFfY2xlYW51cChzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zNzQte1xuZHJpdmVycy9jZHgvY2R4LmM6Mzc1Olx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzc2LVxuZHJpdmVycy9jZHgvY2R4LmM6Mzc3Olx0aWYgKCFjZHhfZHJ2LVx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSlcbmRyaXZlcnMvY2R4L2NkeC5jLTM3OC1cdFx0aW9tbXVfZGV2aWNlX3VudXNlX2RlZmF1bHRfZG9tYWluKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzgxLS8qIHNob3cgY29uZmlndXJhdGlvbiBmaWVsZHMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjM4MjojZGVmaW5lIGNkeF9jb25maWdfYXR0cihmaWVsZCwgZm9ybWF0X3N0cmluZylcdFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODMtc3RhdGljIHNzaXplX3RcdFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODQ9ZmllbGQjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcdFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODUte1x0XFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1x0XFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NzpcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgZm9ybWF0X3N0cmluZywgY2R4X2Rldi1cdTAwM2VmaWVsZCk7XHRcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg4LX1cdFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODk9c3RhdGljIERFVklDRV9BVFRSX1JPKGZpZWxkKVxuZHJpdmVycy9jZHgvY2R4LmMtMzkwLVxuZHJpdmVycy9jZHgvY2R4LmM6MzkxOmNkeF9jb25maWdfYXR0cih2ZW5kb3IsIFwmIzM0OzB4JTA0eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTI6Y2R4X2NvbmZpZ19hdHRyKGRldmljZSwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MzpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX3ZlbmRvciwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NDpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX2RldmljZSwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NTpjZHhfY29uZmlnX2F0dHIocmV2aXNpb24sIFwmIzM0OzB4JTAyeFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTY6Y2R4X2NvbmZpZ19hdHRyKGNsYXNzLCBcJiMzNDsweCUwNnhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtMzk3LVxuZHJpdmVycy9jZHgvY2R4LmM9Mzk4PXN0YXRpYyBzc2l6ZV90IHJlbW92ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDEyLVxuZHJpdmVycy9jZHgvY2R4LmM6NDEzOlx0XHRyZXQgPSBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LCBOVUxMKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQxNC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00MjI9c3RhdGljIHNzaXplX3QgcmVzZXRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00MjQte1xuZHJpdmVycy9jZHgvY2R4LmM6NDI1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00MjYtXHRib29sIHZhbDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00MzQtXG5kcml2ZXJzL2NkeC9jZHguYzo0MzU6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYy00MzYtXHRcdC8qIFJlc2V0IGFsbCB0aGUgZGV2aWNlcyBhdHRhY2hlZCB0byBjZHggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzc6XHRcdHJldCA9IGRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsIE5VTEwsIHJlc2V0X2NkeF9kZXZpY2UpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDM4LVx0ZWxzZVxuZHJpdmVycy9jZHgvY2R4LmM6NDM5Olx0XHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00NDAtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDQ1PXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NDcte1xuZHJpdmVycy9jZHgvY2R4LmM6NDQ4Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00NDktXG5kcml2ZXJzL2NkeC9jZHguYzo0NTA6XHRyZXR1cm4gc3ByaW50ZihidWYsIFwmIzM0O2NkeDp2JTA0WGQlMDRYc3YlMDRYc2QlMDRYYyUwNlhcXG5cJiMzNDssIGNkeF9kZXYtXHUwMDNldmVuZG9yLFxuZHJpdmVycy9jZHgvY2R4LmM6NDUxOlx0XHRcdGNkeF9kZXYtXHUwMDNlZGV2aWNlLCBjZHhfZGV2LVx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIGNkeF9kZXYtXHUwMDNlc3Vic3lzdGVtX2RldmljZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MjpcdFx0XHRjZHhfZGV2LVx1MDAzZWNsYXNzKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ1My19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDU2PXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ1OC17XG5kcml2ZXJzL2NkeC9jZHguYzo0NTk6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NjYtXG5kcml2ZXJzL2NkeC9jZHguYzo0Njc6XHRpZiAoZW5hYmxlID09IGNkeF9kZXYtXHUwMDNlZW5hYmxlZClcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2OC1cdFx0cmV0dXJuIGNvdW50O1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ3MC1cdGlmIChlbmFibGUgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2VuYWJsZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MTpcdFx0cmV0ID0gY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZW5hYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3Mi1cdGVsc2UgaWYgKCFlbmFibGUgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUpXG5kcml2ZXJzL2NkeC9jZHguYzo0NzM6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtNDc0LVx0ZWxzZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ3Ny1cdGlmICghcmV0KVxuZHJpdmVycy9jZHgvY2R4LmM6NDc4Olx0XHRjZHhfZGV2LVx1MDAzZWVuYWJsZWQgPSBlbmFibGU7XG5kcml2ZXJzL2NkeC9jZHguYy00NzktXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDgzPXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4NC17XG5kcml2ZXJzL2NkeC9jZHguYzo0ODU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4Ni1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NzpcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7JXVcXG5cJiMzNDssIGNkeF9kZXYtXHUwMDNlZW5hYmxlZCk7XG5kcml2ZXJzL2NkeC9jZHguYy00ODgtfVxuZHJpdmVycy9jZHgvY2R4LmM9NDg5PXN0YXRpYyBERVZJQ0VfQVRUUl9SVyhlbmFibGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDkwLVxuZHJpdmVycy9jZHgvY2R4LmM6NDkxOnN0YXRpYyB1bW9kZV90IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxuZHJpdmVycy9jZHgvY2R4LmMtNDkyLXtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5My1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xuZHJpdmVycy9jZHgvY2R4LmM6NDk0Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG5kcml2ZXJzL2NkeC9jZHguYy00OTUtXG5kcml2ZXJzL2NkeC9jZHguYzo0OTY6XHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6NDk3Olx0aWYgKCFjZHhfZGV2LVx1MDAzZWlzX2J1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5OC1cdFx0cmV0dXJuIGEtXHUwMDNlbW9kZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01MDItXG5kcml2ZXJzL2NkeC9jZHguYzo1MDM6c3RhdGljIHVtb2RlX3QgY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYSwgaW50IG4pXG5kcml2ZXJzL2NkeC9jZHguYy01MDQte1xuZHJpdmVycy9jZHgvY2R4LmMtNTA1LVx0c3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7XG5kcml2ZXJzL2NkeC9jZHguYzo1MDY6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNy1cbmRyaXZlcnMvY2R4L2NkeC5jOjUwODpcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzo1MDk6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYy01MTAtXHRcdHJldHVybiBhLVx1MDAzZW1vZGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTE0LVxuZHJpdmVycy9jZHgvY2R4LmM6NTE1OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfZGV2X2F0dHJzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYy01MTYtXHRcdTAwMjZkZXZfYXR0cl9yZW1vdmUuYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01MjctXG5kcml2ZXJzL2NkeC9jZHguYzo1Mjg6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2Rldl9ncm91cCA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jOjUyOTpcdC5hdHRycyA9IGNkeF9kZXZfYXR0cnMsXG5kcml2ZXJzL2NkeC9jZHguYzo1MzA6XHQuaXNfdmlzaWJsZSA9IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUsXG5kcml2ZXJzL2NkeC9jZHguYy01MzEtfTtcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjUzMzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2J1c19kZXZfYXR0cnNbXSA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jLTUzNC1cdFx1MDAyNmRldl9hdHRyX2VuYWJsZS5hdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUzOC1cbmRyaXZlcnMvY2R4L2NkeC5jOjUzOTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBjZHhfYnVzX2Rldl9ncm91cCA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MDpcdC5hdHRycyA9IGNkeF9idXNfZGV2X2F0dHJzLFxuZHJpdmVycy9jZHgvY2R4LmM6NTQxOlx0LmlzX3Zpc2libGUgPSBjZHhfYnVzX2F0dHJzX2FyZV92aXNpYmxlLFxuZHJpdmVycy9jZHgvY2R4LmMtNTQyLX07XG5kcml2ZXJzL2NkeC9jZHguYy01NDMtXG5kcml2ZXJzL2NkeC9jZHguYzo1NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmNkeF9kZXZfZ3JvdXBzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1NDU6XHRcdTAwMjZjZHhfZGV2X2dyb3VwLFxuZHJpdmVycy9jZHgvY2R4LmM6NTQ2Olx0XHUwMDI2Y2R4X2J1c19kZXZfZ3JvdXAsXG5kcml2ZXJzL2NkeC9jZHguYy01NDctXHROVUxMLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU0OS1cbmRyaXZlcnMvY2R4L2NkeC5jOjU1MDpzdGF0aWMgaW50IGNkeF9kZWJ1Z19yZXNvdXJjZV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvY2R4L2NkeC5jLTU1MS17XG5kcml2ZXJzL2NkeC9jZHguYzo1NTI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU1My1cdGludCBpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU1NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9DRFhfREVWX1JFU09VUkNFUzsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvY2R4L2NkeC5jOjU1NjpcdFx0c3RydWN0IHJlc291cmNlICpyZXMgPSAgXHUwMDI2Y2R4X2Rldi1cdTAwM2VyZXNbaV07XG5kcml2ZXJzL2NkeC9jZHguYy01NTctXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTYyLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjU2MzpERUZJTkVfU0hPV19BVFRSSUJVVEUoY2R4X2RlYnVnX3Jlc291cmNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU2NC1cbmRyaXZlcnMvY2R4L2NkeC5jOjU2NTpzdGF0aWMgdm9pZCBjZHhfZGV2aWNlX2RlYnVnZnNfaW5pdChzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Ni17XG5kcml2ZXJzL2NkeC9jZHguYzo1Njc6XHRjZHhfZGV2LVx1MDAzZWRlYnVnZnNfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2KSwgY2R4X2RlYnVnZnNfZGlyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjU2ODpcdGlmIChJU19FUlIoY2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2RpcikpXG5kcml2ZXJzL2NkeC9jZHguYy01NjktXHRcdHJldHVybjtcbmRyaXZlcnMvY2R4L2NkeC5jLTU3MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjU3MTpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7cmVzb3VyY2VcJiMzNDssIDA0NDQsIGNkeF9kZXYtXHUwMDNlZGVidWdmc19kaXIsIGNkeF9kZXYsXG5kcml2ZXJzL2NkeC9jZHguYzo1NzI6XHRcdFx0ICAgIFx1MDAyNmNkeF9kZWJ1Z19yZXNvdXJjZV9mb3BzKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU3My19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NTc1PXN0YXRpYyBzc2l6ZV90IHJlc2Nhbl9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cyxcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01Nzcte1xuZHJpdmVycy9jZHgvY2R4LmM6NTc4Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy01NzktXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01ODctXG5kcml2ZXJzL2NkeC9jZHguYzo1ODg6XHRndWFyZChtdXRleCkoXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XG5kcml2ZXJzL2NkeC9jZHguYy01ODktXG5kcml2ZXJzL2NkeC9jZHguYy01OTAtXHQvKiBVbnJlZ2lzdGVyIGFsbCB0aGUgZGV2aWNlcyBvbiB0aGUgYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo1OTE6XHRjZHhfdW5yZWdpc3Rlcl9kZXZpY2VzKFx1MDAyNmNkeF9idXNfdHlwZSk7XG5kcml2ZXJzL2NkeC9jZHguYy01OTItXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NjA4PXN0YXRpYyBCVVNfQVRUUl9XTyhyZXNjYW4pO1xuZHJpdmVycy9jZHgvY2R4LmMtNjA5LVxuZHJpdmVycy9jZHgvY2R4LmM6NjEwOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfYnVzX2F0dHJzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYy02MTEtXHRcdTAwMjZidXNfYXR0cl9yZXNjYW4uYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02MTMtfTtcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNDpBVFRSSUJVVEVfR1JPVVBTKGNkeF9idXMpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjE1LVxuZHJpdmVycy9jZHgvY2R4LmM6NjE2OmNvbnN0IHN0cnVjdCBidXNfdHlwZSBjZHhfYnVzX3R5cGUgPSB7XG5kcml2ZXJzL2NkeC9jZHguYy02MTctXHQubmFtZVx0XHQ9IFwmIzM0O2NkeFwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jLTYxOC1cdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjE5Olx0Lm1hdGNoXHRcdD0gY2R4X2J1c19tYXRjaCxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMDpcdC5wcm9iZVx0XHQ9IGNkeF9wcm9iZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMTpcdC5yZW1vdmVcdFx0PSBjZHhfcmVtb3ZlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjIyOlx0LnNodXRkb3duXHQ9IGNkeF9zaHV0ZG93bixcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMzpcdC5kbWFfY29uZmlndXJlXHQ9IGNkeF9kbWFfY29uZmlndXJlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjI0Olx0LmRtYV9jbGVhbnVwXHQ9IGNkeF9kbWFfY2xlYW51cCxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNTpcdC5idXNfZ3JvdXBzXHQ9IGNkeF9idXNfZ3JvdXBzLFxuZHJpdmVycy9jZHgvY2R4LmM6NjI2Olx0LmRldl9ncm91cHNcdD0gY2R4X2Rldl9ncm91cHMsXG5kcml2ZXJzL2NkeC9jZHguYy02MjctfTtcbmRyaXZlcnMvY2R4L2NkeC5jOjYyODpFWFBPUlRfU1lNQk9MX0dQTChjZHhfYnVzX3R5cGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxuZHJpdmVycy9jZHgvY2R4LmM6NjMwOmludCBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXG5kcml2ZXJzL2NkeC9jZHguYy02MzEtXHRcdFx0ICBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02MzQtXG5kcml2ZXJzL2NkeC9jZHguYzo2MzU6XHRjZHhfZHJpdmVyLVx1MDAzZWRyaXZlci5vd25lciA9IG93bmVyO1xuZHJpdmVycy9jZHgvY2R4LmM6NjM2Olx0Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2Y2R4X2J1c190eXBlO1xuZHJpdmVycy9jZHgvY2R4LmMtNjM3LVxuZHJpdmVycy9jZHgvY2R4LmM6NjM4Olx0ZXJyb3IgPSBkcml2ZXJfcmVnaXN0ZXIoXHUwMDI2Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjM5LVx0aWYgKGVycm9yKSB7XG5kcml2ZXJzL2NkeC9jZHguYy02NDAtXHRcdHByX2VycihcJiMzNDtkcml2ZXJfcmVnaXN0ZXIoKSBmYWlsZWQgZm9yICVzOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0MTpcdFx0ICAgICAgIGNkeF9kcml2ZXItXHUwMDNlZHJpdmVyLm5hbWUsIGVycm9yKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY0Mi1cdFx0cmV0dXJuIGVycm9yO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY0Ni19XG5kcml2ZXJzL2NkeC9jZHguYzo2NDc6RVhQT1JUX1NZTUJPTF9HUEwoX19jZHhfZHJpdmVyX3JlZ2lzdGVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY0OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjY0OTp2b2lkIGNkeF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcilcbmRyaXZlcnMvY2R4L2NkeC5jLTY1MC17XG5kcml2ZXJzL2NkeC9jZHguYzo2NTE6XHRkcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZjZHhfZHJpdmVyLVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTItfVxuZHJpdmVycy9jZHgvY2R4LmM6NjUzOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kcml2ZXJfdW5yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXG5kcml2ZXJzL2NkeC9jZHguYzo2NTU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTY1Ni17XG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY1OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjY1OTpcdGtmcmVlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjYwLX1cbmRyaXZlcnMvY2R4L2NkeC5jLTY2MS1cbmRyaXZlcnMvY2R4L2NkeC5jOjY2MjpzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGNkeF9waHlzX3ZtX29wcyA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jLTY2My0jaWZkZWYgQ09ORklHX0hBVkVfSU9SRU1BUF9QUk9UXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjY4LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6NjY5OiAqIGNkeF9tbWFwX3Jlc291cmNlIC0gbWFwIGEgQ0RYIHJlc291cmNlIGludG8gdXNlciBtZW1vcnkgc3BhY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTY3MC0gKiBAZnA6IEZpbGUgcG9pbnRlci4gTm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbiwgYnV0IHJlcXVpcmVkIHdoZXJlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjc5LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NjgwOnN0YXRpYyBpbnQgY2R4X21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbmRyaXZlcnMvY2R4L2NkeC5jLTY4MS1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XG5kcml2ZXJzL2NkeC9jZHguYzo2ODQ6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2Uoa29ial90b19kZXYoa29iaikpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjg1LVx0aW50IG51bSA9ICh1bnNpZ25lZCBsb25nKWF0dHItXHUwMDNlcHJpdmF0ZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02ODgtXG5kcml2ZXJzL2NkeC9jZHguYzo2ODk6XHRyZXMgPSBcdTAwMjZjZHhfZGV2LVx1MDAzZXJlc1tudW1dO1xuZHJpdmVycy9jZHgvY2R4LmMtNjkwLVx0aWYgKGlvbWVtX2lzX2V4Y2x1c2l2ZShyZXMtXHUwMDNlc3RhcnQpKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY5My1cdC8qIE1ha2Ugc3VyZSB0aGUgY2FsbGVyIGlzIG1hcHBpbmcgYSB2YWxpZCByZXNvdXJjZSBmb3IgdGhpcyBkZXZpY2UgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjY5NDpcdHNpemUgPSAoKGNkeF9yZXNvdXJjZV9sZW4oY2R4X2RldiwgbnVtKSAtIDEpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKSAmIzQzOyAxO1xuZHJpdmVycy9jZHgvY2R4LmMtNjk1LVx0aWYgKHZtYS1cdTAwM2V2bV9wZ29mZiAmIzQzOyB2bWFfcGFnZXModm1hKSBcdTAwM2Ugc2l6ZSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03MDItXHR2bWEtXHUwMDNldm1fcGFnZV9wcm90ID0gcGdwcm90X2RldmljZSh2bWEtXHUwMDNldm1fcGFnZV9wcm90KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjcwMzpcdHZtYS1cdTAwM2V2bV9wZ29mZiAmIzQzOz0gKGNkeF9yZXNvdXJjZV9zdGFydChjZHhfZGV2LCBudW0pIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjcwNDpcdHZtYS1cdTAwM2V2bV9vcHMgPSBcdTAwMjZjZHhfcGh5c192bV9vcHM7XG5kcml2ZXJzL2NkeC9jZHguYy03MDUtXHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVx1MDAzZXZtX3N0YXJ0LCB2bWEtXHUwMDNldm1fcGdvZmYsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzA5LVxuZHJpdmVycy9jZHgvY2R4LmM6NzEwOnN0YXRpYyB2b2lkIGNkeF9kZXN0cm95X3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKVxuZHJpdmVycy9jZHgvY2R4LmMtNzExLXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03MTctXG5kcml2ZXJzL2NkeC9jZHguYzo3MTg6XHRcdHJlc19hdHRyID0gY2R4X2Rldi1cdTAwM2VyZXNfYXR0cltpXTtcbmRyaXZlcnMvY2R4L2NkeC5jLTcxOS1cdFx0aWYgKHJlc19hdHRyKSB7XG5kcml2ZXJzL2NkeC9jZHguYzo3MjA6XHRcdFx0c3lzZnNfcmVtb3ZlX2Jpbl9maWxlKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTcyMS1cdFx0XHRrZnJlZShyZXNfYXR0cik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzI2LSNkZWZpbmUgQ0RYX1JFU19BVFRSX05BTUVfTEVOXHQxMFxuZHJpdmVycy9jZHgvY2R4LmM6NzI3OnN0YXRpYyBpbnQgY2R4X2NyZWF0ZV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcbmRyaXZlcnMvY2R4L2NkeC5jLTcyOC17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzQyLVxuZHJpdmVycy9jZHgvY2R4LmM6NzQzOlx0cmVzX2F0dHItXHUwMDNlbW1hcCA9IGNkeF9tbWFwX3Jlc291cmNlO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQ0LVx0cmVzX2F0dHItXHUwMDNlYXR0ci5uYW1lID0gcmVzX2F0dHJfbmFtZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTc0NS1cdHJlc19hdHRyLVx1MDAzZWF0dHIubW9kZSA9IDA2MDA7XG5kcml2ZXJzL2NkeC9jZHguYzo3NDY6XHRyZXNfYXR0ci1cdTAwM2VzaXplID0gY2R4X3Jlc291cmNlX2xlbihjZHhfZGV2LCBudW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQ3LVx0cmVzX2F0dHItXHUwMDNlcHJpdmF0ZSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpbnVtO1xuZHJpdmVycy9jZHgvY2R4LmM6NzQ4Olx0cmV0ID0gc3lzZnNfY3JlYXRlX2Jpbl9maWxlKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTc0OS1cdGlmIChyZXQpIHtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTEzNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBDRFggVkZJTyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cyDigJMgdGhhdCYjMzk7cyBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLCBhbmQgaXQmIzM5O3MgaGFuZGxpbmcgYHZmaW8tY2R4YC4gUmlnaHQsIGdvdCBpdC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzLCBob3cgZXhhY3RseSBhcmUgdGhlc2UgQ0RYIGNvbnRyb2xsZXJzIGJlaW5nIGJyb3VnaHQgdG8gbGlmZSB3aXRoaW4gdGhpcyB3aG9sZSBWRklPIHNldHVwPyBXaGVyZSYjMzk7cyB0aGUgaW5zdGFudGlhdGlvbiBoYXBwZW5pbmc/IEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2suIE15IGludHVpdGlvbiBzYXlzIHRoZSBpbXBsZW1lbnRhdGlvbiBtaWdodCBiZSBpbiBgZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuY2Ag4oCTIGxldCYjMzk7cyBjaGVjayB0aGVyZSwgc2VlIGlmIHdlIGNhbiBmaW5kIHRoZSBtYWdpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBQbGF0Zm9ybSBkcml2ZXIgZm9yIENEWCBidXMuXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCAqL1xuICAgNzpcdFxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3JwbXNnLmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZW1vdGVwcm9jLmhcdTAwM2VcbiAgMTA6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAgMTI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXHUwMDNlXG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTQ6XHRcbiAgMTU6XHQjaW5jbHVkZSBcJiMzNDsuLi9jZHguaFwmIzM0O1xuICAxNjpcdCNpbmNsdWRlIFwmIzM0O2NkeF9jb250cm9sbGVyLmhcJiMzNDtcbiAgMTc6XHQjaW5jbHVkZSBcJiMzNDttY2RpX2Z1bmN0aW9ucy5oXCYjMzQ7XG4gIDE4Olx0I2luY2x1ZGUgXCYjMzQ7bWNkaWQuaFwmIzM0O1xuICAxOTpcdFxuICAyMDpcdHN0YXRpYyBzdHJ1Y3QgcnBtc2dfZGV2aWNlX2lkIGNkeF9ycG1zZ19pZF90YWJsZVtdID0ge1xuICAyMTpcdFx0eyAubmFtZSA9IFwmIzM0O21jZGlfaXBjXCYjMzQ7IH0sXG4gIDIyOlx0XHR7IH0sXG4gIDIzOlx0fTtcbiAgMjQ6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHJwbXNnLCBjZHhfcnBtc2dfaWRfdGFibGUpO1xuICAyNTpcdFxuICAyNjpcdGludCBjZHhfcnBtc2dfc2VuZChzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpLFxuICAyNzpcdFx0XHQgICBjb25zdCBzdHJ1Y3QgY2R4X2R3b3JkICpoZHIsIHNpemVfdCBoZHJfbGVuLFxuICAyODpcdFx0XHQgICBjb25zdCBzdHJ1Y3QgY2R4X2R3b3JkICpzZHUsIHNpemVfdCBzZHVfbGVuKVxuICAyOTpcdHtcbiAgMzA6XHRcdHVuc2lnbmVkIGNoYXIgKnNlbmRfYnVmO1xuICAzMTpcdFx0aW50IHJldDtcbiAgMzI6XHRcbiAgMzM6XHRcdHNlbmRfYnVmID0ga3phbGxvYyhoZHJfbGVuICYjNDM7IHNkdV9sZW4sIEdGUF9LRVJORUwpO1xuICAzNDpcdFx0aWYgKCFzZW5kX2J1ZilcbiAgMzU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gIDM2Olx0XG4gIDM3Olx0XHRtZW1jcHkoc2VuZF9idWYsIGhkciwgaGRyX2xlbik7XG4gIDM4Olx0XHRtZW1jcHkoc2VuZF9idWYgJiM0MzsgaGRyX2xlbiwgc2R1LCBzZHVfbGVuKTtcbiAgMzk6XHRcbiAgNDA6XHRcdHJldCA9IHJwbXNnX3NlbmQoY2R4X21jZGktXHUwMDNlZXB0LCBzZW5kX2J1ZiwgaGRyX2xlbiAmIzQzOyBzZHVfbGVuKTtcbiAgNDE6XHRcdGtmcmVlKHNlbmRfYnVmKTtcbiAgNDI6XHRcbiAgNDM6XHRcdHJldHVybiByZXQ7XG4gIDQ0Olx0fVxuICA0NTpcdFxuICA0NjpcdHN0YXRpYyBpbnQgY2R4X2F0dGFjaF90b19ycHJvYyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuICA0NzpcdHtcbiAgNDg6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcjVfY29yZV9ub2RlO1xuICA0OTpcdFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcbiAgNTA6XHRcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4gIDUxOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4gIDUyOlx0XHRzdHJ1Y3QgcnByb2MgKnJwO1xuICA1MzpcdFx0aW50IHJldDtcbiAgNTQ6XHRcbiAgNTU6XHRcdGRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuICA1NjpcdFx0Y2R4X2MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiAgNTc6XHRcdGNkeF9tY2RpID0gY2R4X2MtXHUwMDNlcHJpdjtcbiAgNTg6XHRcbiAgNTk6XHRcdHI1X2NvcmVfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LVx1MDAzZW9mX25vZGUsIFwmIzM0O3hsbngscnByb2NcJiMzNDssIDApO1xuICA2MDpcdFx0aWYgKCFyNV9jb3JlX25vZGUpIHtcbiAgNjE6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7eGxueCxycHJvYzogaW52YWxpZCBwaGFuZGxlXFxuXCYjMzQ7KTtcbiAgNjI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gIDYzOlx0XHR9XG4gIDY0Olx0XG4gIDY1Olx0XHRycCA9IHJwcm9jX2dldF9ieV9waGFuZGxlKHI1X2NvcmVfbm9kZS1cdTAwM2VwaGFuZGxlKTtcbiAgNjY6XHRcdGlmICghcnApIHtcbiAgNjc6XHRcdFx0cmV0ID0gLUVQUk9CRV9ERUZFUjtcbiAgNjg6XHRcdFx0Z290byBwZGV2X2VycjtcbiAgNjk6XHRcdH1cbiAgNzA6XHRcbiAgNzE6XHRcdC8qIEF0dGFjaCB0byByZW1vdGUgcHJvY2Vzc29yICovXG4gIDcyOlx0XHRyZXQgPSBycHJvY19ib290KHJwKTtcbiAgNzM6XHRcdGlmIChyZXQpIHtcbiAgNzQ6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGF0dGFjaCB0byByZW1vdGUgcHJvY2Vzc29yXFxuXCYjMzQ7KTtcbiAgNzU6XHRcdFx0cnByb2NfcHV0KHJwKTtcbiAgNzY6XHRcdFx0Z290byBwZGV2X2VycjtcbiAgNzc6XHRcdH1cbiAgNzg6XHRcbiAgNzk6XHRcdGNkeF9tY2RpLVx1MDAzZXI1X3Jwcm9jID0gcnA7XG4gIDgwOlx0cGRldl9lcnI6XG4gIDgxOlx0XHRvZl9ub2RlX3B1dChyNV9jb3JlX25vZGUpO1xuICA4MjpcdFx0cmV0dXJuIHJldDtcbiAgODM6XHR9XG4gIDg0Olx0XG4gIDg1Olx0c3RhdGljIHZvaWQgY2R4X2RldGFjaF90b19yNShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuICA4NjpcdHtcbiAgODc6XHRcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XG4gIDg4Olx0XHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xuICA4OTpcdFxuICA5MDpcdFx0Y2R4X2MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiAgOTE6XHRcdGNkeF9tY2RpID0gY2R4X2MtXHUwMDNlcHJpdjtcbiAgOTI6XHRcbiAgOTM6XHRcdHJwcm9jX2RldGFjaChjZHhfbWNkaS1cdTAwM2VyNV9ycHJvYyk7XG4gIDk0Olx0XHRycHJvY19wdXQoY2R4X21jZGktXHUwMDNlcjVfcnByb2MpO1xuICA5NTpcdH1cbiAgOTY6XHRcbiAgOTc6XHRzdGF0aWMgaW50IGNkeF9ycG1zZ19jYihzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldiwgdm9pZCAqZGF0YSxcbiAgOTg6XHRcdFx0XHRpbnQgbGVuLCB2b2lkICpwcml2LCB1MzIgc3JjKVxuICA5OTpcdHtcbiAxMDA6XHRcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cnBkZXYtXHUwMDNlZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA4NTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIENEWCBSUE1TRyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGNkeF9ycG1zZ2AgYW5kIGl0IG5lZWRzIGEgc3BlY2lmaWMgcnBtc2cgY2hhbm5lbCwgJiMzNDttY2RpX2lwYywmIzM0OyBvciwgaWYgdGhhdCYjMzk7cyBub3QgYXZhaWxhYmxlLCBpdCYjMzk7cyBleHBlY3RpbmcgYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCBhIERldmljZSBUcmVlIG5vZGUgdGhhdCBtYXRjaGVzICYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeCYjMzQ7IGFuZCBhIHJlbW90ZSBwcm9jZXNzb3IgZGVzY3JpYmVkIGFzICYjMzQ7eGxueCxycHJvYy4mIzM0OyBSaWdodCwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYW4gQU1EIFZlcnNhbCBvciBYaWxpbnggVmVyc2FsIE5ldCBwbGF0Zm9ybSDigJMgdGhhdCBtYWtlcyBzZW5zZS4KCk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzLCBhcmUgdGhlcmUgKmFueSogb3RoZXIgQ0RYIGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb25zIGtpY2tpbmcgYXJvdW5kIGluIHRoZSBrZXJuZWw/IEkgbmVlZCB0byBxdWlja2x5IHNjYW4gYW5kIHNlZSBpZiBhbnl0aGluZyBlbHNlIGhhcyBiZWVuIHJlZ2lzdGVyZWQgdGhhdCBtaWdodCByZWxhdGUgdG8gdGhpcy4gQXJlIHRoZXJlIGFueSBleGlzdGluZyBkZXZpY2UgcmVnaXN0cmF0aW9ucyB0aGF0IGNvdWxkIGltcGFjdCB0aGlzIHBhcnRpY3VsYXIgc2V0dXA/IEdvdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbnRlbmRlcnMgb3IgY29uZmxpY3RzIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NkeF9yZWdpc3Rlcl9jb250cm9sbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NkeC5jPTg5Mj1FWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfYnVzX2FkZCwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg5My1cbmRyaXZlcnMvY2R4L2NkeC5jOjg5NDppbnQgY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG5kcml2ZXJzL2NkeC9jZHguYy04OTUte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTkxNi19XG5kcml2ZXJzL2NkeC9jZHguYzo5MTc6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy05MTgtXG4tLVxuZHJpdmVycy9jZHgvY2R4Lmg9MzE9c3RydWN0IGNkeF9kZXZfcGFyYW1zIHtcbi0tXG5kcml2ZXJzL2NkeC9jZHguaC00OS0vKipcbmRyaXZlcnMvY2R4L2NkeC5oOjUwOiAqIGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyIC0gUmVnaXN0ZXIgYSBDRFggY29udHJvbGxlciBhbmQgaXRzIHBvcnRzXG5kcml2ZXJzL2NkeC9jZHguaC01MS0gKlx0XHRvbiB0aGUgQ0RYIGJ1cy5cbi0tXG5kcml2ZXJzL2NkeC9jZHguaC01NS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5oOjU2OmludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XG5kcml2ZXJzL2NkeC9jZHguaC01Ny1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9NDY9dm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDgtXHQvKiBSZWdpc3RlciBDRFggY29udHJvbGxlciB3aXRoIENEWCBidXMgZHJpdmVyICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6NDk6XHRpZiAoY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoY2R4KSlcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01MC1cdFx0ZGV2X2VycihjZHgtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgQ0RYIGNvbnRyb2xsZXJcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTY1MwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIENvbnRyb2xsZXIgUmVnaXN0cmF0aW9uIGFuZCBEZXZpY2UgQWRkaXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGNhbGwgZ3JhcGggaXMgdGVsbGluZyBtZSBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcmAgZnVuY3Rpb24gaXMgb25seSBldmVyIGNhbGxlZCBmcm9tIHdpdGhpbiBgZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jYC4gVGhhdOKAmXMgZ29vZCB0byBrbm93LiBJdCBoZWxwcyB0byBuYXJyb3cgZG93biB0aGUgc2NvcGUgb2Ygd2hlcmUgY29udHJvbGxlciBpbml0aWFsaXphdGlvbiBvcmlnaW5hdGVzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgd2hpY2ggZnVuY3Rpb25zIHJlbHkgb24gdGhlIGBjZHhfZGV2aWNlX2FkZGAgZnVuY3Rpb24uICBVbmRlcnN0YW5kaW5nIHdoYXQgYWRkcyBkZXZpY2VzIHdpbGwgY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gZGV2aWNlIHJlZ2lzdHJhdGlvbiBhbmQgdGhlIGRldmljZXMgdGhlbXNlbHZlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGVzZSB0d28gY29tcG9uZW50cy4gS25vd2luZyB3aGljaCBtb2R1bGVzIGFkZCBkZXZpY2VzIHdpbGwgbWFrZSBteSBhbmFseXNpcyBtb3JlIGNvbXByZWhlbnNpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NkeF9kZXZpY2VfYWRkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NkeC5jPTcyNz1zdGF0aWMgaW50IGNkeF9jcmVhdGVfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzU4LVxuZHJpdmVycy9jZHgvY2R4LmM6NzU5OmludCBjZHhfZGV2aWNlX2FkZChzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgKmRldl9wYXJhbXMpXG5kcml2ZXJzL2NkeC9jZHguYy03NjAte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTg0NC19XG5kcml2ZXJzL2NkeC9jZHguYzo4NDU6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy04NDYtXG4tLVxuZHJpdmVycy9jZHgvY2R4Lmg9NjI9dm9pZCBjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguaC02NC0vKipcbmRyaXZlcnMvY2R4L2NkeC5oOjY1OiAqIGNkeF9kZXZpY2VfYWRkIC0gQWRkIGEgQ0RYIGRldmljZS4gVGhpcyBmdW5jdGlvbiBhZGRzIGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmgtNjYtICpcdFx0b24gdGhlIENEWCBidXMgYXMgcGVyIHRoZSBkZXZpY2UgcGFyYW1ldGVycyBwcm92aWRlZFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5oLTcyLSAqL1xuZHJpdmVycy9jZHgvY2R4Lmg6NzM6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcyk7XG5kcml2ZXJzL2NkeC9jZHguaC03NC1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9OTM9c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDEtXHRcdFx0LyogQWRkIHRoZSBkZXZpY2UgdG8gdGhlIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNDI6XHRcdFx0cmV0ID0gY2R4X2RldmljZV9hZGQoXHUwMDI2ZGV2X3BhcmFtcyk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQzLVx0XHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzNzkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0MTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIHRoZSBDRFggQnVzIGluIGEgU3RhbmRhcmQgUUVNVSBFbnZpcm9ubWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgQU1EL1hpbGlueCBWZXJzYWwgTmV0d29yayBwbGF0Zm9ybSBjb21wb3NhYmxlIGRldmljZSBidXMsIG9yIENEWCBidXMsIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBWRklPIGFuZCBRRU1VLiBUaGUgaW5zdHJ1Y3Rpb25zIHBvaW50IG91dCBjZXJ0YWluIGhhcmR3YXJlIOKAkyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnMgbGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFuZCBhbWRncHUg4oCTIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgYW5kIGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBPdXIgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGFjY2VzcyBvciBzaW11bGF0ZSB0aGUgQ0RYIGJ1cyBvciBWRklPIENEWCB3aXRoaW4gdGhhdCBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50IG9uIGFtZDY0IGFyY2hpdGVjdHVyZS4KCkZpcnN0LCBJJiMzOTttIGNoZWNraW5nIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIENEWCBidXMsIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2AuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IENEWCBidXMgZGV2aWNlcyBvbmx5IG1hdGVyaWFsaXplIHdoZW4gYSBDRFggY29udHJvbGxlciBpcyByZWdpc3RlcmVkLiBUaGUgcmVnaXN0cmF0aW9uLCBmcm9tIHdoYXQgSSBnYXRoZXIgaW4gYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmNgIGFuZCBgY2R4X2NvbnRyb2xsZXIuY2AsIGhpbmdlcyBvbiBiaW5kaW5nIHRvIGFuIHJwbXNnIGRldmljZSBuYW1lZCAmIzM0O21jZGlfaXBjJiMzNDsgb3IgYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCB0aGUgRFQgbm9kZSAmIzM0O3hsbngsdmVyc2FsLW5ldC1jZHgsJiMzNDsgd2hpY2ggY29ubmVjdHMgdG8gdGhlIHJlbW90ZSBDb3J0ZXgtUjUgcHJvY2Vzc29yJiMzOTtzIGZpcm13YXJlIChgcnByb2NgKS4KCk5vdywgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW06IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIG9uIGFtZDY0LCB0aGVyZSYjMzk7cyBubyBpbmhlcmVudCBDRFggY29udHJvbGxlciBoYXJkd2FyZSwgYW5kIGNyaXRpY2FsbHksIG5vIGVtdWxhdGVkIENEWCBjb250cm9sbGVyIG9yIGZpcm13YXJlLiBUaGlzIG1lYW5zIG5vIENEWCBidXMgZGV2aWNlcyBhcmUgcHJlc2VudC4gQ29uc2VxdWVudGx5LCB0aGUgYGNkeF9kZXZpY2VgIGNhbiYjMzk7dCBiZSBwcm9iZWQgYnkgYHZmaW8tY2R4YC4gU28sIHRoYXQgYHZmaW9fY2R4X21tYXAoKWAgZnVuY3Rpb24g4oCTIHdoZXJlIHRoZSBwYXRjaCBhZGRzIHRoZSBjaGVjayBgaWYgKCEodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9TSEFSRUQpKSByZXR1cm4gLUVJTlZBTDtgIOKAkyBpdCBzaW1wbHkgY2FuJiMzOTt0IGJlIGV4ZWN1dGVkIHVuZGVyIHRoZXNlIGNvbmRpdGlvbnMuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgSSB3YW50IHRvIGNvbmZpcm0g4oCTIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlJiMzOTtzIGFic29sdXRlbHkgbm8gdmlydHVhbCBDRFggZHJpdmVyLCBzeXNmcyBtb2NrLCBvciBhbnl0aGluZyBlbHNlIGx1cmtpbmcgaW4gdGhlIGtlcm5lbCB0cmVlIHRoYXQgY291bGQgKmFydGlmaWNpYWxseSogY3JlYXRlIGEgYGNkeF9kZXZpY2VgLiBMZXQgbWUgZG8gYSBxdWljayBzZWFyY2ggZm9yIGBjZHhfZGV2aWNlYCB0aHJvdWdob3V0IHRoZSBlbnRpcmUga2VybmVsIHNvdXJjZSB0byBydWxlIG91dCBhbnkgcG90ZW50aWFsIHN1cnByaXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4X2RldmljZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTU2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2NkeC9jZHguYz04NT1zdGF0aWMgY2hhciAqY29tcGF0X25vZGVfbmFtZSA9IFwmIzM0O3hsbngsdmVyc2FsLW5ldC1jZHhcJiMzNDs7XG5kcml2ZXJzL2NkeC9jZHguYy04Ni1cbmRyaXZlcnMvY2R4L2NkeC5jOjg3OnN0YXRpYyB2b2lkIGNkeF9kZXN0cm95X3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg4LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTk1PWludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTk2LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjk3Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy05OC1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzo5OTpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnID0gezB9O1xuZHJpdmVycy9jZHgvY2R4LmMtMTAwLVx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnY7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MTIwPUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTEyMi0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMzogKiByZXNldF9jZHhfZGV2aWNlIC0gUmVzZXQgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguYy0xMjQtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTEzMC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjEzMTpzdGF0aWMgaW50IHJlc2V0X2NkeF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxuZHJpdmVycy9jZHgvY2R4LmMtMTMyLXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz0xNDY9c3RhdGljIGludCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE0OC17XG5kcml2ZXJzL2NkeC9jZHguYzoxNDk6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MC1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTYyLVx0ICogRG8gbm90IGZyZWUgY2R4X2RldiBoZXJlIGFzIGl0IHdvdWxkIGJlIGZyZWVkIGluXG5kcml2ZXJzL2NkeC9jZHguYzoxNjM6XHQgKiBjZHhfZGV2aWNlX3JlbGVhc2UoKSBjYWxsZWQgZnJvbSB3aXRoaW4gcHV0X2RldmljZSgpLlxuZHJpdmVycy9jZHgvY2R4LmMtMTY0LVx0ICovXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MTcxPXN0YXRpYyB2b2lkIGNkeF91bnJlZ2lzdGVyX2RldmljZXMoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTgyLSAqXG5kcml2ZXJzL2NkeC9jZHguYzoxODM6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuZHJpdmVycy9jZHgvY2R4LmMtMTg0LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTg1OnN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKlxuZHJpdmVycy9jZHgvY2R4LmM6MTg2OmNkeF9tYXRjaF9vbmVfZGV2aWNlKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZCxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NzpcdFx0ICAgICBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMTg4LXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMDQtICogVXNlZCBieSBhIGRyaXZlciB0byBjaGVjayB3aGV0aGVyIGEgQ0RYIGRldmljZSBpcyBpbiBpdHMgbGlzdCBvZlxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxuZHJpdmVycy9jZHgvY2R4LmMtMjA2LSAqIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDctICpcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDktICovXG5kcml2ZXJzL2NkeC9jZHguYzoyMTA6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMTIte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjIyMzppbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMjQte1xuZHJpdmVycy9jZHgvY2R4LmMtMjI1LVx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjI3LVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTIzNz1FWFBPUlRfU1lNQk9MX0dQTChjZHhfc2V0X21hc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXG5kcml2ZXJzL2NkeC9jZHguYzoyMzk6aW50IGNkeF9jbGVhcl9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yNDAte1xuZHJpdmVycy9jZHgvY2R4LmMtMjQxLVx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjQzLVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTI2Mz1zdGF0aWMgaW50IGNkeF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjY0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjY2LVx0Y29uc3Qgc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRydik7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjc6XHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqZm91bmRfaWQgPSBOVUxMO1xuZHJpdmVycy9jZHgvY2R4LmM6MjY4Olx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkcztcbmRyaXZlcnMvY2R4L2NkeC5jLTI2OS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzAyPXN0YXRpYyBpbnQgY2R4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMDQtXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozMDU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNi1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzI4PXN0YXRpYyB2b2lkIGNkeF9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMzMC1cdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzMyLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTMzNz1zdGF0aWMgdm9pZCBjZHhfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMzOS1cdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzQxLVx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz0zNDk9c3RhdGljIGludCBjZHhfZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzUxLVx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzUyOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zNTMtXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTM4ND1maWVsZCMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4NS17XHRcXFxuZHJpdmVycy9jZHgvY2R4LmM6Mzg2Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XHRcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg3LVx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBmb3JtYXRfc3RyaW5nLCBjZHhfZGV2LVx1MDAzZWZpZWxkKTtcdFxcXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDIyPXN0YXRpYyBzc2l6ZV90IHJlc2V0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDI0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQyNTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDI2LVx0Ym9vbCB2YWw7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDM2LVx0XHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NDM3Olx0XHRyZXQgPSBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCByZXNldF9jZHhfZGV2aWNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQzOC1cdGVsc2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00NDU9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ0Ny17XG5kcml2ZXJzL2NkeC9jZHguYzo0NDg6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0OS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00NTY9c3RhdGljIHNzaXplX3QgZW5hYmxlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDU4LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1OTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDYwLVx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00ODM9c3RhdGljIHNzaXplX3QgZW5hYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuZHJpdmVycy9jZHgvY2R4LmMtNDg0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDg2LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ5MT1zdGF0aWMgdW1vZGVfdCBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00OTMtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xuZHJpdmVycy9jZHgvY2R4LmMtNDk1LVxuZHJpdmVycy9jZHgvY2R4LmM6NDk2Olx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5Ny1cdGlmICghY2R4X2Rldi1cdTAwM2Vpc19idXMpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NTAzPXN0YXRpYyB1bW9kZV90IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUwNS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xuZHJpdmVycy9jZHgvY2R4LmM6NTA2Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG5kcml2ZXJzL2NkeC9jZHguYy01MDctXG5kcml2ZXJzL2NkeC9jZHguYzo1MDg6XHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNTA5LVx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTU1MD1zdGF0aWMgaW50IGNkeF9kZWJ1Z19yZXNvdXJjZV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvY2R4L2NkeC5jLTU1MS17XG5kcml2ZXJzL2NkeC9jZHguYzo1NTI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU1My1cdGludCBpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTU2Mz1ERUZJTkVfU0hPV19BVFRSSUJVVEUoY2R4X2RlYnVnX3Jlc291cmNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU2NC1cbmRyaXZlcnMvY2R4L2NkeC5jOjU2NTpzdGF0aWMgdm9pZCBjZHhfZGV2aWNlX2RlYnVnZnNfaW5pdChzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Ni17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NjUzPUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kcml2ZXJfdW5yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXG5kcml2ZXJzL2NkeC9jZHguYzo2NTU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTY1Ni17XG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY1OC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz02ODA9c3RhdGljIGludCBjZHhfbW1hcF9yZXNvdXJjZShzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XG5kcml2ZXJzL2NkeC9jZHguYzo2ODQ6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2Uoa29ial90b19kZXYoa29iaikpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjg1LVx0aW50IG51bSA9ICh1bnNpZ25lZCBsb25nKWF0dHItXHUwMDNlcHJpdmF0ZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03MDktXG5kcml2ZXJzL2NkeC9jZHguYzo3MTA6c3RhdGljIHZvaWQgY2R4X2Rlc3Ryb3lfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXG5kcml2ZXJzL2NkeC9jZHguYy03MTEte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTcyNi0jZGVmaW5lIENEWF9SRVNfQVRUUl9OQU1FX0xFTlx0MTBcbmRyaXZlcnMvY2R4L2NkeC5jOjcyNzpzdGF0aWMgaW50IGNkeF9jcmVhdGVfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXG5kcml2ZXJzL2NkeC9jZHguYy03Mjgte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTc1OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjc1OTppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxuZHJpdmVycy9jZHgvY2R4LmMtNzYwLXtcbmRyaXZlcnMvY2R4L2NkeC5jLTc2MS1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gZGV2X3BhcmFtcy1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzo3NjI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcbmRyaXZlcnMvY2R4L2NkeC5jLTc2My1cdGludCByZXQsIGk7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzkyLVx0Y2R4X2Rldi1cdTAwM2VkZXYuZG1hX21hc2sgPSBcdTAwMjZjZHhfZGV2LVx1MDAzZWRtYV9tYXNrO1xuZHJpdmVycy9jZHgvY2R4LmM6NzkzOlx0Y2R4X2Rldi1cdTAwM2VkZXYucmVsZWFzZSA9IGNkeF9kZXZpY2VfcmVsZWFzZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTc5NC1cdGNkeF9kZXYtXHUwMDNlbXNpX3dyaXRlX3BlbmRpbmcgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy04MjktXG5kcml2ZXJzL2NkeC9jZHguYzo4MzA6XHRjZHhfZGV2aWNlX2RlYnVnZnNfaW5pdChjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTgzMS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy04MzgtXHQgKiBEbyBub3QgZnJlZSBjZHhfZGV2IGhlcmUgYXMgaXQgd291bGQgYmUgZnJlZWQgaW5cbmRyaXZlcnMvY2R4L2NkeC5jOjgzOTpcdCAqIGNkeF9kZXZpY2VfcmVsZWFzZSgpIGNhbGxlZCBmcm9tIHB1dF9kZXZpY2UoKS5cbmRyaXZlcnMvY2R4L2NkeC5jLTg0MC1cdCAqL1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTg0NC19XG5kcml2ZXJzL2NkeC9jZHguYzo4NDU6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy04NDYtXG5kcml2ZXJzL2NkeC9jZHguYz04NDc9c3RydWN0IGRldmljZSAqY2R4X2J1c19hZGQoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXG5kcml2ZXJzL2NkeC9jZHguYy04NDgte1xuZHJpdmVycy9jZHgvY2R4LmM6ODQ5Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG5kcml2ZXJzL2NkeC9jZHguYy04NTAtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTg2MC1cdGNkeF9kZXYtXHUwMDNlZGV2LmJ1cyA9IFx1MDAyNmNkeF9idXNfdHlwZTtcbmRyaXZlcnMvY2R4L2NkeC5jOjg2MTpcdGNkeF9kZXYtXHUwMDNlZGV2LnJlbGVhc2UgPSBjZHhfZGV2aWNlX3JlbGVhc2U7XG5kcml2ZXJzL2NkeC9jZHguYy04NjItXHRjZHhfZGV2LVx1MDAzZWlzX2J1cyA9IHRydWU7XG4tLVxuZHJpdmVycy9jZHgvY2R4Lmg9NjI9dm9pZCBjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguaC02NC0vKipcbmRyaXZlcnMvY2R4L2NkeC5oOjY1OiAqIGNkeF9kZXZpY2VfYWRkIC0gQWRkIGEgQ0RYIGRldmljZS4gVGhpcyBmdW5jdGlvbiBhZGRzIGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmgtNjYtICpcdFx0b24gdGhlIENEWCBidXMgYXMgcGVyIHRoZSBkZXZpY2UgcGFyYW1ldGVycyBwcm92aWRlZFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5oLTcyLSAqL1xuZHJpdmVycy9jZHgvY2R4Lmg6NzM6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcyk7XG5kcml2ZXJzL2NkeC9jZHguaC03NC1cbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9MTk9c3RhdGljIHZvaWQgY2R4X21zaV93cml0ZV9tc2coc3RydWN0IGlycV9kYXRhICppcnFfZGF0YSwgc3RydWN0IG1zaV9tc2cgKm1zZylcbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtMjEtXHRzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjID0gaXJxX2RhdGFfZ2V0X21zaV9kZXNjKGlycV9kYXRhKTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoyMjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShtc2lfZGVzYy1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY2R4X21zaS5jLTIzLVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0zMT1zdGF0aWMgdm9pZCBjZHhfbXNpX3dyaXRlX2lycV9sb2NrKHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGEpXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTMzLVx0c3RydWN0IG1zaV9kZXNjICptc2lfZGVzYyA9IGlycV9kYXRhX2dldF9tc2lfZGVzYyhpcnFfZGF0YSk7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MzQ6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UobXNpX2Rlc2MtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0zNS1cbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9Mzk9c3RhdGljIHZvaWQgY2R4X21zaV93cml0ZV9pcnFfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGEpXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTQxLVx0c3RydWN0IG1zaV9kZXNjICptc2lfZGVzYyA9IGlycV9kYXRhX2dldF9tc2lfZGVzYyhpcnFfZGF0YSk7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6NDI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UobXNpX2Rlc2MtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy00My1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6NDQ6XHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy00NS1cbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNjctXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6Njg6aW50IGNkeF9lbmFibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTY5LXtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy03MC1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6NzE6XHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy03Mi1cbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9ODI9RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2VuYWJsZV9tc2kpO1xuZHJpdmVycy9jZHgvY2R4X21zaS5jLTgzLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jOjg0OnZvaWQgY2R4X2Rpc2FibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTg1LXtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy04Ni1cdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6ODc6XHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy04OC1cbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9OTY9c3RhdGljIHN0cnVjdCBpcnFfY2hpcCBjZHhfbXNpX2lycV9jaGlwID0ge1xuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMDctLyogQ29udmVydCBhbiBtc2lfZGVzYyB0byBhIHVuaXF1ZSBpZGVudGlmaWVyIHdpdGhpbiB0aGUgZG9tYWluLiAqL1xuZHJpdmVycy9jZHgvY2R4X21zaS5jOjEwODpzdGF0aWMgaXJxX2h3X251bWJlcl90IGNkeF9kb21haW5fY2FsY19od2lycShzdHJ1Y3QgY2R4X2RldmljZSAqZGV2LFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTEwOS1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbXNpX2Rlc2MgKmRlc2MpXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTExND1zdGF0aWMgdm9pZCBjZHhfbXNpX3NldF9kZXNjKG1zaV9hbGxvY19pbmZvX3QgKmFyZywgc3RydWN0IG1zaV9kZXNjICpkZXNjKVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMTYtXHRhcmctXHUwMDNlZGVzYyA9IGRlc2M7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MTE3Olx0YXJnLVx1MDAzZWh3aXJxID0gY2R4X2RvbWFpbl9jYWxjX2h3aXJxKHRvX2NkeF9kZXZpY2UoZGVzYy1cdTAwM2VkZXYpLCBkZXNjKTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMTgtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0xMjA9c3RhdGljIGludCBjZHhfbXNpX3ByZXBhcmUoc3RydWN0IGlycV9kb21haW4gKm1zaV9kb21haW4sXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTEyNC1cdHN0cnVjdCBvZl9waGFuZGxlX2FyZ3MgbXNpX3NwZWMgPSB7fTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoxMjU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMjYtXHRzdHJ1Y3QgZGV2aWNlICpwYXJlbnQgPSBjZHhfZGV2LVx1MDAzZWNkeC1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTU5PXN0YXRpYyBpbnQgY2R4X2NvbmZpZ3VyZV9kZXZpY2Uoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNjAtXHRcdFx0XHR1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjYxOlx0XHRcdFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnICpkZXZfY29uZmlnKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTYyLXtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9OTM9c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDEtXHRcdFx0LyogQWRkIHRoZSBkZXZpY2UgdG8gdGhlIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNDI6XHRcdFx0cmV0ID0gY2R4X2RldmljZV9hZGQoXHUwMDI2ZGV2X3BhcmFtcyk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQzLVx0XHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYz0xNj1zdGF0aWMgaXJxcmV0dXJuX3QgdmZpb19jZHhfbXNpaGFuZGxlcihpbnQgaXJxX25vLCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMjMtXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoyNDpzdGF0aWMgaW50IHZmaW9fY2R4X21zaV9lbmFibGUoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiwgaW50IG52ZWMpXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0yNS17XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoyNjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVx1MDAzZXZkZXYuZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTI3LVx0c3RydWN0IGRldmljZSAqZGV2ID0gdmRldi1cdTAwM2V2ZGV2LmRldjtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy01Ny1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjU4OnN0YXRpYyBpbnQgdmZpb19jZHhfbXNpX3NldF92ZWN0b3Jfc2lnbmFsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy01OS1cdFx0XHRcdFx0ICBpbnQgdmVjdG9yLCBpbnQgZmQpXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMTAyLVxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM6MTAzOnN0YXRpYyBpbnQgdmZpb19jZHhfbXNpX3NldF9ibG9jayhzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMTA0LVx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgc3RhcnQsIHVuc2lnbmVkIGludCBjb3VudCxcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xMjUtXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxMjY6c3RhdGljIHZvaWQgdmZpb19jZHhfbXNpX2Rpc2FibGUoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTEyNy17XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxMjg6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cdTAwM2V2ZGV2LmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xMjktXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB2ZGV2LVx1MDAzZXZkZXYuZGV2O1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTE0My1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjE0NDpzdGF0aWMgaW50IHZmaW9fY2R4X3NldF9tc2lfdHJpZ2dlcihzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMTQ1LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBpbmRleCwgdW5zaWduZWQgaW50IHN0YXJ0LFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTE0OC17XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxNDk6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cdTAwM2V2ZGV2LmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xNTAtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xOTgtXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxOTk6aW50IHZmaW9fY2R4X3NldF9pcnFzX2lvY3RsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0yMDAtXHRcdFx0ICAgIHUzMiBmbGFncywgdW5zaWduZWQgaW50IGluZGV4LFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTIxMS0vKiBGcmVlIEFsbCBJUlFzIGZvciB0aGUgZ2l2ZW4gZGV2aWNlICovXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoyMTI6dm9pZCB2ZmlvX2NkeF9pcnFzX2NsZWFudXAoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTIxMy17XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MTE9c3RhdGljIGludCB2ZmlvX2NkeF9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTEyLXtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjEzOlx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNS1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yMD1zdGF0aWMgdm9pZCB2ZmlvX2NkeF9yZWxlYXNlX2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTIxLXtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjIyOlx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoyMzpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNC1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yOD1zdGF0aWMgaW50IHZmaW9fY2R4X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjkte1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzA6XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMxOlx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMyOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGNvcmVfdmRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzMtXHRpbnQgY291bnQgPSBjZHhfZGV2LVx1MDAzZXJlc19jb3VudDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz03ND1zdGF0aWMgdm9pZCB2ZmlvX2NkeF9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy03NS17XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzo3NjpcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6Nzc6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtNzgtXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9ODQ9c3RhdGljIGludCB2ZmlvX2NkeF9ibV9jdHJsKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCB1MzIgZmxhZ3MsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtODgtXHRcdG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX2J1c19tYXN0ZXIsIG9wKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjg5Olx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzo5MDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzo5MTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTkyLVx0c3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfYnVzX21hc3RlciBvcHM7XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MTE2PXN0YXRpYyBpbnQgdmZpb19jZHhfaW9jdGxfZmVhdHVyZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSwgdTMyIGZsYWdzLFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTEyNi1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjEyNzpzdGF0aWMgaW50IHZmaW9fY2R4X2lvY3RsX2dldF9pbmZvKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xMjgtXHRcdFx0XHQgICBzdHJ1Y3QgdmZpb19kZXZpY2VfaW5mbyBfX3VzZXIgKmFyZylcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xMzAtXHR1bnNpZ25lZCBsb25nIG1pbnN6ID0gb2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9fZGV2aWNlX2luZm8sIG51bV9pcnFzKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjEzMTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVx1MDAzZXZkZXYuZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTEzMi1cdHN0cnVjdCB2ZmlvX2RldmljZV9pbmZvIGluZm87XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MTQ5PXN0YXRpYyBpbnQgdmZpb19jZHhfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE1Mi17XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNTM6XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjE1NDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNTU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cdTAwM2V2ZGV2LmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNTYtXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTY2LVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTY3OnN0YXRpYyBpbnQgdmZpb19jZHhfaW9jdGxfZ2V0X2lycV9pbmZvKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNjgtXHRcdFx0XHQgICAgICAgc3RydWN0IHZmaW9faXJxX2luZm8gX191c2VyICphcmcpXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTcwLVx0dW5zaWduZWQgbG9uZyBtaW5zeiA9IG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX2lycV9pbmZvLCBjb3VudCk7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNzE6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cdTAwM2V2ZGV2LmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNzItXHRzdHJ1Y3QgdmZpb19pcnFfaW5mbyBpbmZvO1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE5MS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjE5MjpzdGF0aWMgaW50IHZmaW9fY2R4X2lvY3RsX3NldF9pcnFzKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xOTMtXHRcdFx0XHQgICBzdHJ1Y3QgdmZpb19pcnFfc2V0IF9fdXNlciAqYXJnKVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE5NS1cdHVuc2lnbmVkIGxvbmcgbWluc3ogPSBvZmZzZXRvZmVuZChzdHJ1Y3QgdmZpb19pcnFfc2V0LCBjb3VudCk7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxOTY6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cdTAwM2V2ZGV2LmRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xOTctXHRzdHJ1Y3QgdmZpb19pcnFfc2V0IGhkcjtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yMjM9c3RhdGljIGxvbmcgdmZpb19jZHhfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjI1LXtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjIyNjpcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjI3Olx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTIyOC1cdHZvaWQgX191c2VyICp1YXJnID0gKHZvaWQgX191c2VyICopYXJnO1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI2ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjY2LXtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI2NzpcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjY4Olx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI2OTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI3MC1cdHVuc2lnbmVkIGludCBpbmRleDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19jZHhfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTMwOC1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMwOTpzdGF0aWMgaW50IHZmaW9fY2R4X3Byb2JlKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzEwLXtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMxMTpcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXY7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTItXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZjZHhfZGV2LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTQtXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozMTU6XHR2ZGV2ID0gdmZpb19hbGxvY19kZXZpY2UodmZpb19jZHhfZGV2aWNlLCB2ZGV2LCBkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTYtXHRcdFx0XHQgXHUwMDI2dmZpb19jZHhfb3BzKTtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMzEtXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozMzI6c3RhdGljIGludCB2ZmlvX2NkeF9yZW1vdmUoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMzMte1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzM0LVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozMzU6XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMzYtXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzQyLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCB2ZmlvX2NkeF90YWJsZVtdID0ge1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzQ0LVx0eyBDRFhfREVWSUNFX0RSSVZFUl9PVkVSUklERShDRFhfQU5ZX0lELCBDRFhfQU5ZX0lELFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTI2PXN0cnVjdCB2ZmlvX2NkeF9yZWdpb24ge1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTMyLVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6MzM6c3RydWN0IHZmaW9fY2R4X2RldmljZSB7XG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0zNC1cdHN0cnVjdCB2ZmlvX2RldmljZVx0dmRldjtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC00My0jaWZkZWYgQ09ORklHX0dFTkVSSUNfTVNJX0lSUVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NDQ6aW50IHZmaW9fY2R4X3NldF9pcnFzX2lvY3RsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC00NS1cdFx0XHQgICAgdTMyIGZsYWdzLCB1bnNpZ25lZCBpbnQgaW5kZXgsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtNDgtXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo0OTp2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KTtcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTUwLSNlbHNlXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo1MTpzdGF0aWMgaW50IHZmaW9fY2R4X3NldF9pcnFzX2lvY3RsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC01Mi1cdFx0XHRcdCAgIHUzMiBmbGFncywgdW5zaWduZWQgaW50IGluZGV4LFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTU4LVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NTk6c3RhdGljIHZvaWQgdmZpb19jZHhfaXJxc19jbGVhbnVwKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC02MC17XG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTMxPXN0cnVjdCBjZHhfbXNpX2NvbmZpZyB7XG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTM2LVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjM3OnN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyB7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMzgtXHR1OCB0eXBlO1xuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD01Mj10eXBlZGVmIGludCAoKmNkeF9kZXZfY29uZmlndXJlX2NiKShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC01My1cdFx0XHRcdCAgICB1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjU0Olx0XHRcdFx0ICAgIHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyAqZGV2X2NvbmZpZyk7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtNTUtXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTYwLSAqXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6NjE6ICogVGhpcyBtYWNybyBpcyB1c2VkIHRvIGNyZWF0ZSBhIHN0cnVjdCBjZHhfZGV2aWNlX2lkIHRoYXQgbWF0Y2hlcyBhXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtNjItICogc3BlY2lmaWMgZGV2aWNlLiBUaGUgc3VidmVuZG9yIGFuZCBzdWJkZXZpY2UgZmllbGRzIHdpbGwgYmUgc2V0IHRvXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTc1LSAqXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6NzY6ICogVGhpcyBtYWNybyBpcyB1c2VkIHRvIGNyZWF0ZSBhIHN0cnVjdCBjZHhfZGV2aWNlX2lkIHRoYXQgbWF0Y2hlcyBvbmx5IGFcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC03Ny0gKiBkcml2ZXJfb3ZlcnJpZGUgZGV2aWNlLiBUaGUgc3VidmVuZG9yIGFuZCBzdWJkZXZpY2UgZmllbGRzIHdpbGwgYmUgc2V0IHRvXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTEwOD1zdHJ1Y3QgY2R4X2NvbnRyb2xsZXIge1xuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xMTctLyoqXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MTE4OiAqIHN0cnVjdCBjZHhfZGV2aWNlIC0gQ0RYIGRldmljZSBvYmplY3RcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xMTktICogQGRldjogTGludXggZHJpdmVyIG1vZGVsIGRldmljZSBvYmplY3Rcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTQyLSAqL1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjE0MzpzdHJ1Y3QgY2R4X2RldmljZSB7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTQ0LVx0c3RydWN0IGRldmljZSBkZXY7XG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE2OC1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxNjk6I2RlZmluZSB0b19jZHhfZGV2aWNlKF9kZXYpIFxcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MTcwOlx0Y29udGFpbmVyX29mKF9kZXYsIHN0cnVjdCBjZHhfZGV2aWNlLCBkZXYpXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTcxLVxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0xOTg9c3RydWN0IGNkeF9kcml2ZXIge1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE5OS1cdHN0cnVjdCBkZXZpY2VfZHJpdmVyIGRyaXZlcjtcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMDA6XHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqbWF0Y2hfaWRfdGFibGU7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjAxOlx0aW50ICgqcHJvYmUpKHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIwMjpcdGludCAoKnJlbW92ZSkoc3RydWN0IGNkeF9kZXZpY2UgKmRldik7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjAzOlx0dm9pZCAoKnNodXRkb3duKShzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KTtcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMDQ6XHR2b2lkICgqcmVzZXRfcHJlcGFyZSkoc3RydWN0IGNkeF9kZXZpY2UgKmRldik7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjA1Olx0dm9pZCAoKnJlc2V0X2RvbmUpKHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwNi1cdGJvb2wgZHJpdmVyX21hbmFnZWRfZG1hO1xuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0yNDE9aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KTtcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjQ4LSAqL1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjI0OTppbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpO1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTI1MC1cbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjU2LSAqL1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjI1NzppbnQgY2R4X2NsZWFyX21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2Rldik7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjU4LVxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDU2NQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipWRklPIENEWCBEcml2ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cyDigJMgc3BlY2lmaWNhbGx5IHRoZSBBTUQgVmVyc2FsIC8gWGlsaW54IFZlcnNhbCBOZXQgY29tcG9zYWJsZSBkZXZpY2VzIGJ1cy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpcyAqdGhpcyogdGhlIG9ubHkgZHJpdmVyIHVzaW5nIHRoZSBDRFggYnVzLCBvciBhcmUgdGhlcmUgb3RoZXJzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXh0ZW50IG9mIGl0cyB1c2FnZS4gTXkgaW5zdGluY3Qgc2F5cyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB3aXRoaW4gdGhlIFhpbGlueCBFdGhlcm5ldCBkcml2ZXJzIGZpcnN0LiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2AgYW5kIHNpbWlsYXIgZGlyZWN0b3JpZXMgdG8gZ2V0IGEgYnJvYWRlciBwaWN0dXJlIG9mIHBvdGVudGlhbCBDRFggYnVzIHV0aWxpemF0aW9uLiBUaGF0IHNob3VsZCBnaXZlIG1lIHNvbWUgZGlyZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHhfZHJpdmVyX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NkeC5jPTYyOD1FWFBPUlRfU1lNQk9MX0dQTChjZHhfYnVzX3R5cGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxuZHJpdmVycy9jZHgvY2R4LmM6NjMwOmludCBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXG5kcml2ZXJzL2NkeC9jZHguYy02MzEtXHRcdFx0ICBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxuZHJpdmVycy9jZHgvY2R4LmM6NjQ3OkVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MzUxPXN0YXRpYyBzdHJ1Y3QgY2R4X2RyaXZlciB2ZmlvX2NkeF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzYwLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzYxOm1vZHVsZV9kcml2ZXIodmZpb19jZHhfZHJpdmVyLCBjZHhfZHJpdmVyX3JlZ2lzdGVyLCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzYyLVxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0xOTg9c3RydWN0IGNkeF9kcml2ZXIge1xuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTItLyogTWFjcm8gdG8gYXZvaWQgaW5jbHVkZSBjaGFpbmluZyB0byBnZXQgVEhJU19NT0RVTEUgKi9cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMTM6I2RlZmluZSBjZHhfZHJpdmVyX3JlZ2lzdGVyKGRydikgXFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMTQ6XHRfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoZHJ2LCBUSElTX01PRFVMRSlcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTUtXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjE2LS8qKlxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIxNzogKiBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIgLSByZWdpc3RlcnMgYSBDRFggZGV2aWNlIGRyaXZlclxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIxOC0gKiBAY2R4X2RyaXZlcjogQ0RYIGRyaXZlciB0byByZWdpc3RlclxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMjItICovXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjIzOmludCBfX211c3RfY2hlY2sgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIyNC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NDM3CgkJCQkJCQlvdXRwdXQ6IDE0MgoJCQkJCQkJdGhvdWdodHM6IDgxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWRklPIENEWCBEcml2ZXIgUmVhY2hhYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhlIGB2ZmlvX2NkeF9kcml2ZXJgIGlzLCBxdWl0ZSBsaXRlcmFsbHksIHRoZSBvbmx5IGRyaXZlciBvbiB0aGUgQ0RYIGJ1cyBpbiB0aGUga2VybmVsLCBhbmQgdGhlIENEWCBidXMgY29udHJvbGxlciBpdHNlbGYgKmRlbWFuZHMqIHBoeXNpY2FsIEFNRCBWZXJzYWwgaGFyZHdhcmUuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIHBvaW50LiBJdCByZWxpZXMgb24gZWl0aGVyIHRoZSBycG1zZyBjb21tdW5pY2F0aW9uIHRvIHRoZSBSNSBmaXJtd2FyZSBvciBhIGRldmljZSB0cmVlIG5vZGUgKGB4bG54LHZlcnNhbC1uZXQtY2R4YCkuIFdpdGhvdXQgdGhhdCBob3N0IGNvbnRyb2xsZXIsIHdoaWNoICpyZXF1aXJlcyogdGhlIHBoeXNpY2FsIGhhcmR3YXJlLCBubyBDRFggZGV2aWNlcyBhcmUgZXZlciBlbnVtZXJhdGVkIG9yIGFkZGVkLiBgY2R4X2RldmljZV9hZGRgIGlzIG5ldmVyIGNhbGxlZC4gQ29uc2VxdWVudGx5LCBgdmZpb19jZHhfcHJvYmVgIGlzIG5ldmVyIGludm9rZWQuIFRoaXMgbWVhbnMgbm8gVkZJTyBDRFggZGV2aWNlIGlzIGNyZWF0ZWQsIGFuZCB1c2VyLXNwYWNlIGNhbiYjMzk7dCBwb3NzaWJseSBpbnRlcmFjdCB3aXRoIGFueSBgL2Rldi92ZmlvLy4uLmAgQ0RYIGRldmljZSB0aHJvdWdoIG9wZW4vbW1hcC4KCk5vdywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIHJldmlldyB0aGUgZG9jdW1lbnRhdGlvbiBvbiBoYXJkd2FyZSByZWFjaGFiaWxpdHkuIFNlY3Rpb24gMiBjbGVhcmx5IG91dGxpbmVzICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgYXMgaW5jbHVkaW5nIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIChsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWApIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiAmIzM0O1VucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyYjMzQ7IGFyZSBhbHNvIGRlZmluZWQsIGludm9sdmluZyBzY2VuYXJpb3MgbGlrZSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIGR1cmluZyBwaHlzaWNhbCBob3QtdW5wbHVnIG9yIG1hbnVhbCB1bmJpbmRpbmcuIFRoZSBjb3JlIHRha2Vhd2F5PyAqKlJlYWNoYWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBnYXRlKiouIEZ1enppbmcgaXMgb25seSBlZmZlY3RpdmUgb24gY29kZSBwYXRocyB0aGF0ICphY3R1YWxseSogZXhlY3V0ZSB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIHRob3NlIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMuIElmIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgYXMgZGVzY3JpYmVkLCBpdCAqbXVzdCBub3QqIGJlIGZ1enplZCwgcmVnYXJkbGVzcyBvZiBob3cgY29tcGxleCB0aGUgbG9naWMgb3IgYXNzZXJ0aW9ucyBtaWdodCBiZS4KCkxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IHRoZSBwYXRjaCwgdGhlIHRhcmdldCBmdW5jdGlvbiBpcyBgdmZpb19jZHhfbW1hcCgpYCBpbiBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLiBUaGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIGB2ZmlvLWNkeGAgZHJpdmVyLCByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgVkZJTyBwYXNzLXRocm91Z2ggb2YgQU1EIFZlcnNhbC1uZXQgQ0RYIGJ1cyBkZXZpY2VzLiBTaW5jZSBDRFggZGV2aWNlcyBpbnRyaW5zaWNhbGx5IGRlcGVuZCBvbiBBTUQgVmVyc2FsIGhhcmR3YXJlIGFuZCBhc3NvY2lhdGVkIGZpcm13YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgdGhpcyBtYWtlcyBgdmZpb19jZHhfbW1hcGAgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiB0aG9zZSBmdXp6aW5nIHNjZW5hcmlvcy4KClRoZXJlZm9yZSwgYWZ0ZXIgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC4KCk15IGFzc2Vzc21lbnQ6CgotICAgRW5hYmxlQ29uZmlnczogXFsgXQotICAgRm9jdXNTeW1ib2xzOiBcWyBdCi0gICBXb3J0aEZ1enppbmc6IGZhbHNlCi0gICBSZWFzb25pbmc6IENsZWFyIGFuZCBjb25jaXNlIGV4cGxhbmF0aW9uIG9mIHN0cnVjdHVyYWwgdW5yZWFjaGFiaWxpdHkgZHVlIHRvIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4KCk5vdywgbGV0JiMzOTtzIHByZXBhcmUgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHZmaW9fY2R4X21tYXAoKSBpbiBkcml2ZXJzL3ZmaW8vY2R4L21haW4uYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgVkZJTyBkcml2ZXIgZm9yIHRoZSBBTUQgVmVyc2FsIENEWCBidXMuIENEWCBkZXZpY2VzIGRlcGVuZCBvbiBBTUQgVmVyc2FsLW5ldCBwbGF0Zm9ybSBjb250cm9sbGVyIGhhcmR3YXJlIGFuZCByZW1vdGUgZmlybXdhcmUgKE1DREkvcnBtc2cpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCBubyBDRFggZGV2aWNlcyBjYW4gYmUgaW5zdGFudGlhdGVkIG9yIGJvdW5kIHRvIHZmaW8tY2R4LCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTM6NTEuNjU0NjAwODc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxOTg4MjM0MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxMzo1MS42NTQ2MDY1NTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjgxOTgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGExOWMxNTBmNTY4ZjhmNDVmMDEzNjU2ZjFmMGY5NTY0M2MxMTA3NzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBTZXAgNiAyMjoxMzo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXFxuaW5kZXggYjMxZWQ0YmU3YmRjMS4uNmQyMDhkYjA4OTZkNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xcbisrKyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXFxuQEAgLTI3MSw2ICsyNzEsOSBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuIFxcbiBcXHRpbmRleCA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAzZVxcdTAwM2UgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xcbiBcXG4rXFx0aWYgKCEodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1NIQVJFRCkpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0aWYgKGluZGV4IFxcdTAwM2U9IGNkeF9kZXYtXFx1MDAzZXJlc19jb3VudClcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxMzo1Mi4xMDgxMTI5NTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE4MTUzNDcwOTU0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGExOWMxNTBmNTY4ZjhmNDVmMDEzNjU2ZjFmMGY5NTY0M2MxMTA3NzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDIyOjEzOjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuaW5kZXggYjMxZWQ0YmU3YmRjMS4uNmQyMDhkYjA4OTZkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuQEAgLTI3MSw2ICsyNzEsOSBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gXG4gXHRpbmRleCA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwM2VcdTAwM2UgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xuIFxuK1x0aWYgKCEodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9TSEFSRUQpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdGlmIChpbmRleCBcdTAwM2U9IGNkeF9kZXYtXHUwMDNlcmVzX2NvdW50KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjEzOjUyLjEwODExNjQ0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY3MzgwMjEyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBWRklPIENEWCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gTXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gZXN0YWJsaXNoIGNvbnRleHQsIGFuZCBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoaXMgYHZmaW8vY2R4YCBwYXJ0LiBXaGF0IGV4YWN0bHkgKmlzKiBgZHJpdmVycy92ZmlvL2NkeGA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBvciB2aXJ0dWFsIGJ1cyBpdCdzIHRpZWQgdG8uIElzIHRoaXMgc29tZSBzcGVjaWFsaXplZCBoYXJkd2FyZSwgb3IgaXMgaXQgc29tZXRoaW5nIHRoYXQgY29tbW9ubHkgc2hvd3MgdXAgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCBhbmQgb24gc3RhbmRhcmQgYW1kNjQgc3lzdGVtcz8gS25vd2luZyB0aGlzIHdpbGwgc2lnbmlmaWNhbnRseSBpbmZsdWVuY2UgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcGF0Y2gncyBwb3RlbnRpYWwgaW1wYWN0IGFuZCByZWxldmFuY2UuXG5cblRvIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlLiBJJ2xsIHJlYWNoIGZvciBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHNvbWUgY2x1ZXMgYXMgdG8gdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZW5kZWQgdXNlIGNhc2UuIEknbGwgYWxzbyB3YW50IHRvIGxvb2sgYXQgYGRyaXZlcnMvY2R4L2AsIG9yIGFueXRoaW5nIGVsc2UgdGhhdCBzZWVtcyByZWxldmFudCB0byB0aGlzIFwiQ0RYXCIgdGhpbmcgdG8gZW5zdXJlIHRoYXQgSSBoYXZlIGFsbCByZWxldmFudCBjb21wb25lbnRzIG9mIHRoZSBzeXN0ZW0gaW4gdmlldy4gT25jZSBJIGNhbiBnZXQgYSBnb29kIHBpY3R1cmUgb2YgdGhlIGhhcmR3YXJlIGl0IGFwcGxpZXMgdG8gSSB3aWxsIGJlIGFibGUgdG8gZXZhbHVhdGUgdGhlIHBhdGNoIG11Y2ggbW9yZSBlZmZpY2llbnRseS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjEzOjU4Ljg0NjEzOTk4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg4NTI3NjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlZGSU9fQ0RYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9NYWtlZmlsZT0xNz1vYmotJChDT05GSUdfVkZJT19GU0xfTUMpICs9IGZzbC1tYy9cXG5kcml2ZXJzL3ZmaW8vTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX1ZGSU9fQ0RYKSArPSBjZHgvXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWctNy1cXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6ODpjb25maWcgVkZJT19DRFhcXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiVkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlLTUtXFxuZHJpdmVycy92ZmlvL2NkeC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19WRklPX0NEWCkgKz0gdmZpby1jZHgub1xcbmRyaXZlcnMvdmZpby9jZHgvTWFrZWZpbGUtNy1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI0ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI1MC1cXHRwZ29mZiA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAyNlxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI1MTpcXHRcXHQoKDFVIFxcdTAwM2NcXHUwMDNjIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKSkgLSAxKTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNTItXFx0YmFzZSA9IHBnb2ZmIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQ7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yNjQ9c3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjcxLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI3MjpcXHRpbmRleCA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAzZVxcdTAwM2UgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI3My1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTUtXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjojaWZuZGVmIFZGSU9fQ0RYX1BSSVZBVEVfSFxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjc6I2RlZmluZSBWRklPX0NEWF9QUklWQVRFX0hcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC04LVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtMTAtXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6MTE6I2RlZmluZSBWRklPX0NEWF9PRkZTRVRfU0hJRlQgICAgNDBcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMi1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaD0xMz1zdGF0aWMgaW5saW5lIHU2NCB2ZmlvX2NkeF9pbmRleF90b19vZmZzZXQodTMyIGluZGV4KVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTE0LXtcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDoxNTpcXHRyZXR1cm4gKCh1NjQpKGluZGV4KSBcXHUwMDNjXFx1MDAzYyBWRklPX0NEWF9PRkZTRVRfU0hJRlQpO1xcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTE2LX1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTU5PXN0YXRpYyB2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtNjMtXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjQ6I2VuZGlmIC8qIFZGSU9fQ0RYX1BSSVZBVEVfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNDowMC43MzQ2NzIzOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NjU3MzE5ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIGRlbHZlIGludG8gdGhpczpcblxuKipJbml0aWFsIENEWCBJbnZlc3RpZ2F0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIFRvIHJlYWxseSBnZXQgYSBncmlwIG9uIHdoYXQgdGhpcyBcIkNEWFwiIHRoaW5nIGlzLCBJIG5lZWQgdG8gc3RhcnQgd2l0aCB0aGUgc291cmNlIOKAkyBvciwgaW4gdGhpcyBjYXNlLCB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvY2R4L0tjb25maWdgLiBUaGVzZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgaGVhcnQgb2YgaG93IHRoZSBrZXJuZWwgaXMgY29uZmlndXJlZCwgd2hpY2ggaW5jbHVkZXMgdGhpcyBwb3RlbnRpYWxseSBuZXcgXCJDRFhcIiBmdW5jdGlvbi4gTG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzLCBkZXNjcmlwdGlvbnMsIGFuZCBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgaG9wZWZ1bGx5IHJldmVhbCB0aGUgcHVycG9zZSBhbmQgc2NvcGUgb2YgdGhpcyBmZWF0dXJlLiBUaW1lIHRvIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIGV4cG9zZSBhYm91dCB0aGUgdW5kZXJwaW5uaW5ncyBvZiBDRFguIEhvcGVmdWxseSwgdGhpcyB3aWxsIHBhaW50IGEgY2xlYXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA3OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjE0OjAyLjYwMDQwOTU5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgVkZJTyBDRFggY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgVkZJT19DRFhcXG4gICA5OlxcdFxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIENEWCBidXMgZGV2aWNlc1xcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gQ0RYX0JVU1xcbiAgMTE6XFx0XFx0c2VsZWN0IEVWRU5URkRcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgRHJpdmVyIHRvIGVuYWJsZSBWRklPIHN1cHBvcnQgZm9yIHRoZSBkZXZpY2VzIG9uIENEWCBidXMuXFxuICAxNDpcXHRcXHQgIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZSB1c2Ugb2YgQ0RYIGRldmljZXMgcHJlc2VudCBpblxcbiAgMTU6XFx0XFx0ICB0aGUgc3lzdGVtIHVzaW5nIHRoZSBWRklPIGZyYW1ld29yay5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNDowMi42MDA0Njg2MTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNTQwNDkyMDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIENEWCBCdXMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQ0RYIGJ1cyBpcyBjb25maWd1cmVkLiBMZXQncyBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGBkcml2ZXJzL2NkeC9LY29uZmlnYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIGJ1cyBkZWZpbml0aW9uIGFuZCBpdHMgZGVwZW5kZW5jaWVzIHJlc2lkZS4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGdldHRpbmcgYSBoYW5kbGUgb24gYENEWF9CVVNgIOKAkyB0aGF0J3MgdGhlIGNydWNpYWwgc3ltYm9sIEkgbmVlZCB0byB0cmFjZS4gSSdsbCBiZSBsb29raW5nIGZvciBpdHMgZGVmaW5pdGlvbiwgaXRzIGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWcgb3B0aW9ucywgYW5kIGFueSBkZWZhdWx0IHZhbHVlcy4gVW5kZXJzdGFuZGluZyBob3cgdGhhdCdzIGhhbmRsZWQgYXQgdGhlIEtjb25maWcgbGV2ZWwgaXMgdGhlIGdhdGV3YXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZW50aXJlIHN1YnN5c3RlbS4gRnJvbSB0aGVyZSwgSSBjYW4gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciBhbnkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIG1ha2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjE0OjA0LjE0MDk2Mzc0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTA4NDE5MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ0RYX0JVU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL01ha2VmaWxlPTE5ND1vYmotJChDT05GSUdfRFJNX0FDQ0VMKVxcdFxcdCs9IGFjY2VsL1xcbmRyaXZlcnMvTWFrZWZpbGU6MTk1Om9iai0kKENPTkZJR19DRFhfQlVTKVxcdFxcdCs9IGNkeC9cXG5kcml2ZXJzL01ha2VmaWxlLTE5Ni1vYmotJChDT05GSUdfRFBMTClcXHRcXHQrPSBkcGxsL1xcbi0tXFxuZHJpdmVycy9jZHgvS2NvbmZpZy03LVxcbmRyaXZlcnMvY2R4L0tjb25maWc6ODpjb25maWcgQ0RYX0JVU1xcbmRyaXZlcnMvY2R4L0tjb25maWctOS1cXHRib29sIFxcXCJDRFggQnVzIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTctXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU6ODpjY2ZsYWdzLXkgKz0gLURERUZBVUxUX1NZTUJPTF9OQU1FU1BBQ0U9J1xcXCJDRFhfQlVTXFxcIidcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS05LVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19DRFhfQlVTKSArPSBjZHgubyBjb250cm9sbGVyL1xcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTExLVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlPTEyPWlmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQ0RYX0JVUykgKz0gY2R4X21zaS5vXFxuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTQtZW5kaWZcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTc1OT1pbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzk4LVxcdGRldl9zZXRfbmFtZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LCBcXFwiY2R4LSUwMng6JTAyeFxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmM6Nzk5OlxcdFxcdCAgICAgKChjZHgtXFx1MDAzZWlkIFxcdTAwM2NcXHUwMDNjIENEWF9DT05UUk9MTEVSX0lEX1NISUZUKSB8IChjZHhfZGV2LVxcdTAwM2VidXNfbnVtIFxcdTAwMjYgQ0RYX0JVU19OVU1fTUFTSykpLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTgwMC1cXHRcXHQgICAgIGNkeF9kZXYtXFx1MDAzZWRldl9udW0pO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODQ0LX1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NDU6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04NDYtXFxuZHJpdmVycy9jZHgvY2R4LmM9ODQ3PXN0cnVjdCBkZXZpY2UgKmNkeF9idXNfYWRkKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODY1LVxcdGRldl9zZXRfbmFtZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LCBcXFwiY2R4LSUwMnhcXFwiLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjg2NjpcXHRcXHQgICAgICgoY2R4LVxcdTAwM2VpZCBcXHUwMDNjXFx1MDAzYyBDRFhfQ09OVFJPTExFUl9JRF9TSElGVCkgfCAoYnVzX251bSBcXHUwMDI2IENEWF9CVVNfTlVNX01BU0spKSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtODY3LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODkxLX1cXG5kcml2ZXJzL2NkeC9jZHguYzo4OTI6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2J1c19hZGQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04OTMtXFxuZHJpdmVycy9jZHgvY2R4LmM9ODk0PWludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxNi19XFxuZHJpdmVycy9jZHgvY2R4LmM6OTE3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTE4LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTkxOT12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy05MzEtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjkzMjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTMzLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTE2MD1zdHJ1Y3QgaXJxX2RvbWFpbiAqY2R4X21zaV9kb21haW5faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtMTkyLX1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MTkzOkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9tc2lfZG9tYWluX2luaXQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZy03LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZzo4OmlmIENEWF9CVVNcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWctOS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0yNTY9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoyNTc6TU9EVUxFX0lNUE9SVF9OUyhcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjQ3LS8qXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI0ODogKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI0OS0gKiBDRFggYnVzIGhvc3RzIGRldmljZXMgKGZ1bmN0aW9ucykgdGhhdCBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIENvbXBvc2FibGVcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNTYtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI1NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNcXHRcXHRcXHRcXHQweDFcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjU4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19NU0dTRVRcXHRcXHRcXHQweDFcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjU5LSN1bmRlZiBNQ19DTURfMHgxX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNjItXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2MzovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX0lOIG1zZ3JlcXVlc3QgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19JTl9MRU5cXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI2NS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjY2Oi8qIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjY4LS8qXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjcxLSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlRfT0ZTVFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjczOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfQlVTX0NPVU5UX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjc0LVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3Ni0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzc6ICogTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3OC0gKiBFbnVtZXJhdGUgQ0RYIGJ1cyBkZXZpY2VzIG9uIGEgZ2l2ZW4gYnVzXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3OS0gKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjgwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXFx0XFx0XFx0XFx0MHgyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19NU0dTRVRcXHRcXHRcXHQweDJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjgyLSN1bmRlZiBNQ19DTURfMHgyX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4NjovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU4gbXNncmVxdWVzdCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyODc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODgtLypcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjg5LSAqIEJ1cyBudW1iZXIgdG8gZW51bWVyYXRlLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xLCBhcyByZXR1cm5lZCBieVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTA6ICogTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjkxLSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fQlVTX09GU1RcXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVNfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTQtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5NTovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTctLypcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMDEtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UX09GU1RcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UX0xFTlxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzA0LVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMwNi0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMDc6ICogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzA4LSAqIFJldHVybnMgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGFuZCBNTUlPL01TSSByZXNvdXJjZSBkYXRhIGZvciBhIENEWCBkZXZpY2UuXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzE4LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR1xcdFxcdFxcdFxcdFxcdDB4M1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19NU0dTRVRcXHRcXHRcXHRcXHRcXHQweDNcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzIxLSN1bmRlZiBNQ19DTURfMHgzX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMjQtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyNTovKiBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTiBtc2dyZXF1ZXN0ICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0xFTlxcdFxcdFxcdFxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzI3LS8qIERldmljZSBidXMgbnVtYmVyLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0JVU19PRlNUXFx0XFx0XFx0XFx0MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVNfTEVOXFx0XFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzAtLyogRGV2aWNlIG51bWJlciByZWxhdGl2ZSB0byB0aGUgYnVzLCBpbiByYW5nZSAwIHRvIERFVklDRV9DT1VOVC0xIGZvciB0aGF0IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0VfT0ZTVFxcdFxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzMyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fREVWSUNFX0xFTlxcdFxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzMzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzQ6LyogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9MRU5cXHRcXHRcXHRcXHQ4OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzYtLyogMTYtYml0IFZlbmRvciBpZGVudGlmaWVyLCBjb21wbGlhbnQgd2l0aCBQQ0ktU0lHIFZlbmRvcklEIGFzc2lnbm1lbnQuICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WRU5ET1JfSURfT0ZTVFxcdFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzM4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1ZFTkRPUl9JRF9MRU5cXHRcXHRcXHQyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMzOS0vKiAxNi1iaXQgRGV2aWNlIElEIGFzc2lnbmVkIGJ5IHRoZSB2ZW5kb3IgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzQwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRF9PRlNUXFx0XFx0XFx0MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0lEX0xFTlxcdFxcdFxcdDJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQyLS8qXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQ1LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX1ZFTkRPUl9JRF9PRlNUXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX1ZFTkRPUl9JRF9MRU5cXHRcXHQyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM0OC0vKlxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM1MS0gKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzUyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19ERVZJQ0VfSURfT0ZTVFxcdFxcdDZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzUzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19ERVZJQ0VfSURfTEVOXFx0XFx0MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNTQtLyogMjQtYml0IERldmljZSBDbGFzcyBjb2RlLCBjb21wbGlhbnQgd2l0aCBQQ0ktU0lHIERldmljZSBDbGFzcyBjb2RlcyAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0NMQVNTX09GU1RcXHRcXHRcXHQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfQ0xBU1NfTEVOXFx0XFx0XFx0M1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNTctLyogOC1iaXQgdmVuZG9yLWFzc2lnbmVkIHJldmlzaW9uICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fT0ZTVFxcdFxcdDExXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fTEVOXFx0XFx0MVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjAtLyogUmVzZXJ2ZWQgKGFsaWdubWVudCkgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzYxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFU0VSVkVEX09GU1RcXHRcXHRcXHQxMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfUkVTRVJWRURfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjMtLyogTU1JTyByZWdpb24gMCBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX09GU1RcXHRcXHQxNlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTE9fT0ZTVFxcdFxcdDE2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MQk5cXHRcXHQxMjhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzcwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0hJX09GU1RcXHRcXHQyMFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEJOXFx0XFx0MTYwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM3NC0vKiBNTUlPIHJlZ2lvbiAwIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9PRlNUXFx0XFx0MjRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xPX09GU1RcXHRcXHQyNFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fTEJOXFx0XFx0MTkyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9ISV9PRlNUXFx0XFx0MjhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX0xCTlxcdFxcdDIyNFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zODUtLyogTU1JTyByZWdpb24gMSBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX09GU1RcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTE9fT0ZTVFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MQk5cXHRcXHQyNTZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0hJX09GU1RcXHRcXHQzNlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEJOXFx0XFx0Mjg4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM5Ni0vKiBNTUlPIHJlZ2lvbiAxIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9PRlNUXFx0XFx0NDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xPX09GU1RcXHRcXHQ0MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEJOXFx0XFx0MzIwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9ISV9PRlNUXFx0XFx0NDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xCTlxcdFxcdDM1MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MDctLyogTU1JTyByZWdpb24gMiBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX09GU1RcXHRcXHQ0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTE9fT0ZTVFxcdFxcdDQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19MQk5cXHRcXHQzODRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDEzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDE0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0hJX09GU1RcXHRcXHQ1MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfTEJOXFx0XFx0NDE2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQxOC0vKiBNTUlPIHJlZ2lvbiAyIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9PRlNUXFx0XFx0NTZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xPX09GU1RcXHRcXHQ1NlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEJOXFx0XFx0NDQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9ISV9PRlNUXFx0XFx0NjBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xCTlxcdFxcdDQ4MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mjg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MjktLyogTU1JTyByZWdpb24gMyBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDMwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX09GU1RcXHRcXHQ2NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTE9fT0ZTVFxcdFxcdDY0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MQk5cXHRcXHQ1MTJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0hJX09GU1RcXHRcXHQ2OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEJOXFx0XFx0NTQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ0MC0vKiBNTUlPIHJlZ2lvbiAzIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9PRlNUXFx0XFx0NzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xPX09GU1RcXHRcXHQ3MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fTEJOXFx0XFx0NTc2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9ISV9PRlNUXFx0XFx0NzZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX0xCTlxcdFxcdDYwOFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NTEtLyogTVNJIHZlY3RvciBjb3VudCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX09GU1RcXHRcXHRcXHQ4MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDU0LS8qIFJlcXVlc3RlciBJRCB1c2VkIGJ5IGRldmljZSAoU01NVSBTdHJlYW1JRCwgR0lDIElUUyBEZXZpY2VJRCkgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9PRlNUXFx0XFx0XFx0ODRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9MRU5cXHRcXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ1Ny1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU4Oi8qIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMiBtc2dyZXNwb25zZSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOXFx0XFx0XFx0XFx0OTJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDYwLS8qIFJlcXVlc3RlciBJRCB1c2VkIGJ5IGRldmljZSBmb3IgR0lDIElUUyBEZXZpY2VJRCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NjE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfUkVRVUVTVEVSX0RFVklDRV9JRF9PRlNUXFx0ODhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDYyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX1JFUVVFU1RFUl9ERVZJQ0VfSURfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NjMtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDY1LS8qXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ2NjogKiBNQ19DTURfQ0RYX0JVU19ET1dOXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ2Ny0gKiBBc3NlcnRpbmcgcmVzZXQgb24gdGhlIENEWCBidXMgY2F1c2VzIGFsbCBkZXZpY2VzIG9uIHRoZSBidXMgdG8gYmUgcXVpZXNjZWQuXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDc3LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Nzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOXFx0XFx0XFx0XFx0XFx0MHg0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ3OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fTVNHU0VUXFx0XFx0XFx0MHg0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4MC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDgxOi8qIE1DX0NNRF9DRFhfQlVTX0RPV05fSU4gbXNncmVxdWVzdCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDgzLS8qIEJ1cyBudW1iZXIgdG8gcHV0IGluIHJlc2V0LCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX09GU1RcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDg2LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODctLypcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDg4OiAqIE1DX0NNRF9DRFhfQlVTX0RPV05fT1VUIG1zZ3Jlc3BvbnNlOiBUaGUgYnVzIGlzIHF1aWVzY2VkLCBubyBmdXJ0aGVyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4OS0gKiB1cHN0cmVhbSB0cmFmZmljIGZvciBkZXZpY2VzIG9uIHRoaXMgYnVzLlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00OTAtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ5MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fT1VUX0xFTlxcdFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDkyLVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ5NC0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0OTU6ICogTUNfQ01EX0NEWF9CVVNfVVBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDk2LSAqIEFmdGVyIGJ1cyByZXNldCBpcyBkZS1hc3NlcnRlZCwgZGV2aWNlcyBhcmUgaW4gYSBzdGF0ZSB3aGljaCBpcyBmdW5jdGlvbmFsbHlcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MDUtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQXFx0XFx0XFx0XFx0XFx0MHg1XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX01TR1NFVFxcdFxcdFxcdDB4NVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MDgtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwOTovKiBNQ19DTURfQ0RYX0JVU19VUF9JTiBtc2dyZXF1ZXN0ICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNTExLS8qIEJ1cyBudW1iZXIgdG8gdGFrZSBvdXQgb2YgcmVzZXQsIGluIHJhbmdlIDAgdG8gQlVTX0NPVU5ULTEgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTEyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfSU5fQlVTX09GU1RcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0JVU19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTE1Oi8qIE1DX0NNRF9DRFhfQlVTX1VQX09VVCBtc2dyZXNwb25zZTogVGhlIGJ1cyBjYW4gbm93IGJlIGVudW1lcmF0ZWQuICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX09VVF9MRU5cXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0xMD1pbnQgY2R4X21jZGlfZ2V0X251bV9idXNlcyhzdHJ1Y3QgY2R4X21jZGkgKmNkeClcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTEte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjpcXHRNQ0RJX0RFQ0xBUkVfQlVGKG91dGJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTMtXFx0c2l6ZV90IG91dGxlbjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTY6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFUywgTlVMTCwgMCxcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTctXFx0XFx0XFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXFx1MDAyNm91dGxlbik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjIxOlxcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfTEVOKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yMi1cXHRcXHRyZXR1cm4gLUVJTztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjMtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjI0OlxcdHJldHVybiBNQ0RJX0RXT1JEKG91dGJ1ZiwgQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yNS19XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9Mjc9aW50IGNkeF9tY2RpX2dldF9udW1fZGV2cyhzdHJ1Y3QgY2R4X21jZGkgKmNkeCwgaW50IGJ1c19udW0pXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTI4LXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6Mjk6XFx0TUNESV9ERUNMQVJFX0JVRihvdXRidWYsIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzA6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0xFTik7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTMxLVxcdHNpemVfdCBvdXRsZW47XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzMtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjM0OlxcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0zNS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzY6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzctXFx0XFx0XFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXFx1MDAyNm91dGxlbik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjQxOlxcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9MRU4pXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTQyLVxcdFxcdHJldHVybiAtRUlPO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy00My1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NDQ6XFx0cmV0dXJuIE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDUtfVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTQ3PWludCBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZyhzdHJ1Y3QgY2R4X21jZGkgKmNkeCxcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy01MC17XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjUxOlxcdE1DRElfREVDTEFSRV9CVUYob3V0YnVmLCBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NTI6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNTMtXFx0c3RydWN0IHJlc291cmNlICpyZXMgPSBcXHUwMDI2ZGV2X3BhcmFtcy1cXHUwMDNlcmVzWzBdO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTU3LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo1ODpcXHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo1OTpcXHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0UsIGRldl9udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02MC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjE6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUcsIGluYnVmLCBzaXplb2YoaW5idWYpLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Mi1cXHRcXHRcXHQgICBvdXRidWYsIHNpemVvZihvdXRidWYpLCBcXHUwMDI2b3V0bGVuKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02NS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjY6XFx0aWYgKG91dGxlbiAhPSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Ny1cXHRcXHRyZXR1cm4gLUVJTztcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03MS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NzI6XFx0cmVxX2lkID0gTUNESV9EV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRCk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTczLVxcdGRldl9wYXJhbXMtXFx1MDAzZXJlcV9pZCA9IHJlcV9pZDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03NS1cXHRkZXZfcGFyYW1zLVxcdTAwM2Vtc2lfZGV2X2lkID0gTUNESV9EV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjc2OlxcdFxcdFxcdFxcdFxcdCAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9SRVFVRVNURVJfREVWSUNFX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNzctXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTc4LVxcdGRldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudCA9IDA7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjc5OlxcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkUpICE9IDApIHtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODAtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo4MTpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0UpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy04Mi1cXHRcXHRyZXNbZGV2X3BhcmFtcy1cXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo4MzpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODQtXFx0XFx0XFx0XFx0ICAgTUNESV9RV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjg1OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFKSAtIDE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTg2LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODktXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjkwOlxcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkUpICE9IDApIHtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTEtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5MjpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy05My1cXHRcXHRyZXNbZGV2X3BhcmFtcy1cXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5NDpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTUtXFx0XFx0XFx0XFx0ICAgTUNESV9RV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjk2OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFKSAtIDE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTk3LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTAwLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDE6XFx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRSkgIT0gMCkge1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMDItXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDM6XFx0XFx0XFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA0LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmVuZCA9XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEwNTpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA2LVxcdFxcdFxcdFxcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDc6XFx0XFx0XFx0XFx0XFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkUpIC0gMTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA4LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTExLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTI6XFx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRSkgIT0gMCkge1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTMtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTQ6XFx0XFx0XFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE1LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmVuZCA9XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjExNjpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE3LVxcdFxcdFxcdFxcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTg6XFx0XFx0XFx0XFx0XFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkUpIC0gMTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE5LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTIyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjM6XFx0ZGV2X3BhcmFtcy1cXHUwMDNldmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVkVORE9SX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI0OlxcdGRldl9wYXJhbXMtXFx1MDAzZWRldmljZSA9IE1DRElfV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRCk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEyNS1cXHRkZXZfcGFyYW1zLVxcdTAwM2VzdWJzeXNfdmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZixcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI2OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19WRU5ET1JfSUQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMjctXFx0ZGV2X3BhcmFtcy1cXHUwMDNlc3Vic3lzX2RldmljZSA9IE1DRElfV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEyODpcXHRcXHRcXHRcXHRcXHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfREVWSUNFX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTI5LVxcdGRldl9wYXJhbXMtXFx1MDAzZWNsYXNzID0gTUNESV9EV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzMDpcXHRcXHRcXHRcXHQgICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0NMQVNTKSBcXHUwMDI2IDB4RkZGRkZGO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzE6XFx0ZGV2X3BhcmFtcy1cXHUwMDNlcmV2aXNpb24gPSBNQ0RJX0JZVEUob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT04pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzI6XFx0ZGV2X3BhcmFtcy1cXHUwMDNlbnVtX21zaSA9IE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NU0lfQ09VTlQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzMtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9MTM3PWludCBjZHhfbWNkaV9idXNfZW5hYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzgte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzk6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfVVBfSU5fTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTQwLVxcdGludCByZXQ7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE0MS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTQyOlxcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX1VQX0lOX0JVUywgYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjE0MzpcXHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19VUCwgaW5idWYsIHNpemVvZihpbmJ1ZiksXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE0NC1cXHRcXHRcXHQgICBOVUxMLCAwLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0xNDk9aW50IGNkeF9tY2RpX2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTAte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTE6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRE9XTl9JTl9MRU4pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTItXFx0aW50IHJldDtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTQ6XFx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfRE9XTl9JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTU6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRE9XTiwgaW5idWYsIHNpemVvZihpbmJ1ZiksXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE1Ni1cXHRcXHRcXHQgICBOVUxMLCAwLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jPTE2MTU9dTMyIHI2MDBfZ3B1X2NoZWNrX3NvZnRfcmVzZXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYy0xNjY3LVxcdGlmIChHXzAwMEU1MF9NQ0JfQlVTWSh0bXApIHwgR18wMDBFNTBfTUNEWl9CVVNZKHRtcCkgfFxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jOjE2Njg6XFx0ICAgIEdfMDAwRTUwX01DRFlfQlVTWSh0bXApIHwgR18wMDBFNTBfTUNEWF9CVVNZKHRtcCkgfFxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jLTE2NjktXFx0ICAgIEdfMDAwRTUwX01DRFdfQlVTWSh0bXApKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oLTE4MzMtI2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFlfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDExKSBcXHUwMDI2IDEpXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oOjE4MzQ6I2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFhfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDEyKSBcXHUwMDI2IDEpXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oLTE4MzUtI2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFdfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDEzKSBcXHUwMDI2IDEpXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11LmM9MTg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKiBjb25zdCBpb21tdV9idXNlc1tdID0ge1xcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdS5jLTE5OS0jZW5kaWZcXG5kcml2ZXJzL2lvbW11L2lvbW11LmM6MjAwOiNpZmRlZiBDT05GSUdfQ0RYX0JVU1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYy0yMDEtXFx0XFx1MDAyNmNkeF9idXNfdHlwZSxcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZz04PWNvbmZpZyBWRklPX0NEWFxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIENEWCBidXMgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6MTA6XFx0ZGVwZW5kcyBvbiBDRFhfQlVTXFxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTExLVxcdHNlbGVjdCBFVkVOVEZEXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0zNjQ9TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJWRklPIGZvciBDRFggZGV2aWNlcyAtIFVzZXIgTGV2ZWwgbWV0YS1kcml2ZXJcXFwiKTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozNjU6TU9EVUxFX0lNUE9SVF9OUyhcXFwiQ0RYX0JVU1xcXCIpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTgtXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjk6I2lmbmRlZiBfQ0RYX0JVU19IX1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxMDojZGVmaW5lIF9DRFhfQlVTX0hfXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTExLVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE4LSNkZWZpbmUgQ0RYX0NPTlRST0xMRVJfSURfU0hJRlQgNFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxOTojZGVmaW5lIENEWF9CVVNfTlVNX01BU0sgMHhGXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTI4MT1zdGF0aWMgaW5saW5lIHZvaWQgY2R4X2Rpc2FibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTI4Ni1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6Mjg3OiNlbmRpZiAvKiBfQ0RYX0JVU19IXyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNDowNi4wOTE4MTA1NjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTczMzk2MTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiBkcml2ZXIgZGV2ZWxvcG1lbnQ6XG5cbioqSW5pdGlhbCBJbnZlc3RpZ2F0aW9uIGludG8gQ0RYIENvbnRyb2xsZXIvRGV2aWNlIERyaXZlcnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHBpbnBvaW50IHdoaWNoIGRyaXZlcihzKSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBDRFggY29udHJvbGxlciBvciBmb3IgY3JlYXRpbmcgQ0RYIGRldmljZXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdGFyZ2V0IHRoZSBvYnZpb3VzLiBJJ2xsIG5lZWQgdG8gc3RhcnQgYnkgbG9va2luZyBmb3IgdGhlIGNvZGUgdGhhdCByZWdpc3RlcnMgdGhlIENEWCBjb250cm9sbGVyIGl0c2VsZi4gV2hlcmUgd291bGQgdGhhdCBsaXZlPyBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgZHJpdmVycy9jZHgvY29udHJvbGxlci9gIGRpcmVjdG9yeS4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgeW91J2QgZmluZCB0aGUgY29yZSBsb2dpYyBmb3IgdGhlIGRldmljZSdzIGhhcmR3YXJlIGludGVyZmFjZS5cblxuSG93ZXZlciwgSSdtIG5vdCBnb2luZyB0byBsaW1pdCBteXNlbGYgdG8gdGhhdCBwYXRoIGltbWVkaWF0ZWx5LiBHaXZlbiB0aGUgbW9kdWxhciBuYXR1cmUgb2YgbWFueSBjb250ZW1wb3JhcnkgZHJpdmVyIGFyY2hpdGVjdHVyZXMsIEkgbmVlZCB0byBrZWVwIG15IHNlYXJjaCBicm9hZCwgYXQgbGVhc3QgaW5pdGlhbGx5LiBJJ2xsIGFsc28gZXhwYW5kIG15IHNlYXJjaCB0byBpbmNsdWRlIG90aGVyIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvY2R4YCBkaXJlY3RvcnkuIFRoZXJlIG1pZ2h0IGJlIHNvbWUgaGVscGVyIG9yIHV0aWxpdHkgZmlsZXMgY29udGFpbmluZyBpbml0aWFsaXphdGlvbiwgcHJvYmUsIG9yIHJlbW92ZSBmdW5jdGlvbnMgb3IgYXNzb2NpYXRlZCBkZXZpY2Ugc3RydWN0dXJlcy4gSSdsbCBuZWVkIHRvIHVzZSBteSBwcmVmZXJyZWQgdG9vbGluZyAoZ3JlcCwgZmluZCwgZXRjLikgdG8gcXVpY2tseSBzZWFyY2ggZm9yIGtleSBpZGVudGlmaWVycyBsaWtlIFwiY2R4LFwiIFwiQ0RYLFwiIG9yIHNwZWNpZmljIGZ1bmN0aW9uIG5hbWVzL3N0cnVjdCBuYW1lcyBsaWtlbHkgcmVsYXRlZCB0byBkcml2ZXIgcmVnaXN0cmF0aW9uLCBwcm9iZSwgb3IgZGV2aWNlIGNyZWF0aW9uLiBJJ2xsIGFsc28ga2VlcCBpbiBtaW5kIGNvbW1vbiBrZXJuZWwgY29kaW5nIHByYWN0aWNlcywgc3VjaCBhcyBsb29raW5nIGZvciBtb2R1bGVfaW5pdCBvciBkZXZpY2VfZHJpdmVyIHN0cnVjdHVyZXMuIFRoaXMgYXBwcm9hY2ggZ2l2ZXMgbWUgdGhlIGJlc3QgY2hhbmNlIG9mIHF1aWNrbHkgaWRlbnRpZnlpbmcgdGhlIHJlc3BvbnNpYmxlIGRyaXZlciBhbmQgdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCBzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTI3LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTQ6MDguNjY1MjA5NDM3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL2NkeFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJjZHguY1wiLFxuICAgIFwiY2R4LmhcIixcbiAgICBcImNkeF9tc2kuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJjb250cm9sbGVyXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTQ6MDguNjY1Mjk2NDQ4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyMjcxNjQyNDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgZHJpdmVycy9jZHgvY29udHJvbGxlcmAgRGlyZWN0b3J5KipcblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgd2hhdCdzIGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyYC4gSSdtIGFzc3VtaW5nLCBnaXZlbiB0aGUgcGF0aCwgdGhhdCB0aGlzIGlzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgY29udHJvbGxlci1zcGVjaWZpYyBjb2RlIGZvciB0aGUgQ0RYIHN1YnN5c3RlbS4gSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllcnMgYXJlIG9yZ2FuaXplZCBoZXJlLiBJcyBpdCBhIG1vbm9saXRoaWMgY29udHJvbGxlciBpbXBsZW1lbnRhdGlvbiwgb3IgaXMgaXQgYnJva2VuIGRvd24gaW50byBmdW5jdGlvbmFsIHVuaXRzIOKAkyBwZXJoYXBzIERNQSBjb250cm9sLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIHJlZ2lzdGVyIGFjY2VzcywgYW5kIHBvd2VyIG1hbmFnZW1lbnQ/IFdoYXQgaW50ZXJmYWNlcyBhcmUgZXhwb3NlZCB0byB0aGUgdXBwZXIgbGF5ZXJzIG9mIHRoZSBDRFggZHJpdmVyPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgZGVzaWduIHBhdHRlcm5zIGJlaW5nIGVtcGxveWVkLCBzdWNoIGFzIGEgc3RhdGUgbWFjaGluZSBmb3IgY29tbWFuZCBwcm9jZXNzaW5nIG9yIGEgbGF5ZXJlZCBkcml2ZXIgYXJjaGl0ZWN0dXJlPyBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjb25kaXRpb25zLCByZXRyaWVzLCBhbmQgYW55IGRldmljZS1zcGVjaWZpYyBxdWlya3MuIEl0IHdpbGwgYWxzbyBiZSBpbnRlcmVzdGluZyB0byB1bmRlcnN0YW5kIGhvdyBpbnRlcnJ1cHRzIGFyZSBjb25maWd1cmVkIGFuZCBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgdGhlIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmVzLiBUaGlzIGFsc28gd2lsbCBoYXZlIGltcGxpY2F0aW9ucyBvbiBob3cgdGhlIGRldmljZSBpcyBjb25maWd1cmVkIGFuZCBpbml0aWFsaXplZC4gRmluYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2Ygb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMg4oCTIGNhY2hpbmcsIGJ1ZmZlcmluZywgb3IgYW55IHRlY2huaXF1ZXMgZW1wbG95ZWQgdG8gbWF4aW1pemUgdGhyb3VnaHB1dCBvciBtaW5pbWl6ZSBsYXRlbmN5LiBMZXQncyBzZWUgaWYgdGhpcyBpcyBhbGwgY2xlYW4gYW5kIG1haW50YWluYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTAuOTM2OTQyNDQ1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL2NkeC9jb250cm9sbGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNkeF9jb250cm9sbGVyLmNcIixcbiAgICBcImNkeF9jb250cm9sbGVyLmhcIixcbiAgICBcImNkeF9ycG1zZy5jXCIsXG4gICAgXCJtY19jZHhfcGNvbC5oXCIsXG4gICAgXCJtY2RpLmNcIixcbiAgICBcIm1jZGlfZnVuY3Rpb25zLmNcIixcbiAgICBcIm1jZGlfZnVuY3Rpb25zLmhcIixcbiAgICBcIm1jZGlkLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTAuOTM3MDA3NDk1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3MjE5MTQ3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENEWCBDb250cm9sbGVyIGFuZCBSUE1TRyBJbnRlcmFjdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBDRFggc3R1ZmYgaXMgd29ya2luZywgc28gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AgYW5kIGBjZHhfcnBtc2cuY2AuIFRoZSBjb250cm9sbGVyIGZpbGUgaXMgb2J2aW91c2x5IHRoZSBoZWFydCBvZiB0aGUgQ0RYIG1hbmFnZW1lbnQgaXRzZWxmLCBidXQgSSdtIGJldHRpbmcgdGhlIFJQTVNHIGltcGxlbWVudGF0aW9uIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgaXQncyBjb21tdW5pY2F0aW5nIGFuZCBpbnRlcmZhY2luZyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0sIGxpa2VseSBvdmVyIHNvbWUgZm9ybSBvZiBpbnRlci1wcm9jZXNzb3IgY29tbXVuaWNhdGlvbi4gSSBleHBlY3QgdGhlc2UgdHdvIGZpbGVzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBwaWN0dXJlIG9mIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGUgY29tcG9uZW50cyBhcmUgaW50ZXJhY3RpbmcsIGVzcGVjaWFsbHkgaWYgdGhlcmUncyBhbnkgc29ydCBvZiBzaGFyZWQgbWVtb3J5IG9yIG1lc3NhZ2UgcGFzc2luZyBpbnZvbHZlZC4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMzNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToxMi42NTg5MjUzNzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQvKlxcbiAgIDM6XFx0ICogQ0RYIGhvc3QgY29udHJvbGxlciBkcml2ZXIgZm9yIEFNRCB2ZXJzYWwtbmV0IHBsYXRmb3JtLlxcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXFxuICAgNjpcXHQgKi9cXG4gICA3OlxcdFxcbiAgIDg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXFx1MDAzZVxcbiAgMTE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lycWRvbWFpbi5oXFx1MDAzZVxcbiAgMTI6XFx0XFxuICAxMzpcXHQjaW5jbHVkZSBcXFwiY2R4X2NvbnRyb2xsZXIuaFxcXCJcXG4gIDE0OlxcdCNpbmNsdWRlIFxcXCIuLi9jZHguaFxcXCJcXG4gIDE1OlxcdCNpbmNsdWRlIFxcXCJtY2RpX2Z1bmN0aW9ucy5oXFxcIlxcbiAgMTY6XFx0I2luY2x1ZGUgXFxcIm1jZGlkLmhcXFwiXFxuICAxNzpcXHRcXG4gIDE4OlxcdHN0YXRpYyB1bnNpZ25lZCBpbnQgY2R4X21jZGlfcnBjX3RpbWVvdXQoc3RydWN0IGNkeF9tY2RpICpjZHgsIHVuc2lnbmVkIGludCBjbWQpXFxuICAxOTpcXHR7XFxuICAyMDpcXHRcXHRyZXR1cm4gTUNESV9SUENfVElNRU9VVDtcXG4gIDIxOlxcdH1cXG4gIDIyOlxcdFxcbiAgMjM6XFx0c3RhdGljIHZvaWQgY2R4X21jZGlfcmVxdWVzdChzdHJ1Y3QgY2R4X21jZGkgKmNkeCxcXG4gIDI0OlxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGNkeF9kd29yZCAqaGRyLCBzaXplX3QgaGRyX2xlbixcXG4gIDI1OlxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGNkeF9kd29yZCAqc2R1LCBzaXplX3Qgc2R1X2xlbilcXG4gIDI2OlxcdHtcXG4gIDI3OlxcdFxcdGlmIChjZHhfcnBtc2dfc2VuZChjZHgsIGhkciwgaGRyX2xlbiwgc2R1LCBzZHVfbGVuKSlcXG4gIDI4OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNmNkeC1cXHUwMDNlcnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBzZW5kIHJwbXNnIGRhdGFcXFxcblxcXCIpO1xcbiAgMjk6XFx0fVxcbiAgMzA6XFx0XFxuICAzMTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGNkeF9tY2RpX29wcyBtY2RpX29wcyA9IHtcXG4gIDMyOlxcdFxcdC5tY2RpX3JwY190aW1lb3V0ID0gY2R4X21jZGlfcnBjX3RpbWVvdXQsXFxuICAzMzpcXHRcXHQubWNkaV9yZXF1ZXN0ID0gY2R4X21jZGlfcmVxdWVzdCxcXG4gIDM0OlxcdH07XFxuICAzNTpcXHRcXG4gIDM2OlxcdHN0YXRpYyBpbnQgY2R4X2J1c19lbmFibGUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXFxuICAzNzpcXHR7XFxuICAzODpcXHRcXHRyZXR1cm4gY2R4X21jZGlfYnVzX2VuYWJsZShjZHgtXFx1MDAzZXByaXYsIGJ1c19udW0pO1xcbiAgMzk6XFx0fVxcbiAgNDA6XFx0XFxuICA0MTpcXHRzdGF0aWMgaW50IGNkeF9idXNfZGlzYWJsZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcXG4gIDQyOlxcdHtcXG4gIDQzOlxcdFxcdHJldHVybiBjZHhfbWNkaV9idXNfZGlzYWJsZShjZHgtXFx1MDAzZXByaXYsIGJ1c19udW0pO1xcbiAgNDQ6XFx0fVxcbiAgNDU6XFx0XFxuICA0NjpcXHR2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxcbiAgNDc6XFx0e1xcbiAgNDg6XFx0XFx0LyogUmVnaXN0ZXIgQ0RYIGNvbnRyb2xsZXIgd2l0aCBDRFggYnVzIGRyaXZlciAqL1xcbiAgNDk6XFx0XFx0aWYgKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyKGNkeCkpXFxuICA1MDpcXHRcXHRcXHRkZXZfZXJyKGNkeC1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIENEWCBjb250cm9sbGVyXFxcXG5cXFwiKTtcXG4gIDUxOlxcdH1cXG4gIDUyOlxcdFxcbiAgNTM6XFx0dm9pZCBjZHhfcnBtc2dfcHJlX3JlbW92ZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4gIDU0OlxcdHtcXG4gIDU1OlxcdFxcdGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoY2R4KTtcXG4gIDU2OlxcdFxcdGNkeF9tY2RpX3dhaXRfZm9yX3F1aWVzY2VuY2UoY2R4LVxcdTAwM2Vwcml2LCBNQ0RJX1JQQ19USU1FT1VUKTtcXG4gIDU3OlxcdH1cXG4gIDU4OlxcdFxcbiAgNTk6XFx0c3RhdGljIGludCBjZHhfY29uZmlndXJlX2RldmljZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCxcXG4gIDYwOlxcdFxcdFxcdFxcdFxcdHU4IGJ1c19udW0sIHU4IGRldl9udW0sXFxuICA2MTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgKmRldl9jb25maWcpXFxuICA2MjpcXHR7XFxuICA2MzpcXHRcXHR1MTYgbXNpX2luZGV4O1xcbiAgNjQ6XFx0XFx0aW50IHJldCA9IDA7XFxuICA2NTpcXHRcXHR1MzIgZGF0YTtcXG4gIDY2OlxcdFxcdHU2NCBhZGRyO1xcbiAgNjc6XFx0XFxuICA2ODpcXHRcXHRzd2l0Y2ggKGRldl9jb25maWctXFx1MDAzZXR5cGUpIHtcXG4gIDY5OlxcdFxcdGNhc2UgQ0RYX0RFVl9NU0lfQ09ORjpcXG4gIDcwOlxcdFxcdFxcdG1zaV9pbmRleCA9IGRldl9jb25maWctXFx1MDAzZW1zaS5tc2lfaW5kZXg7XFxuICA3MTpcXHRcXHRcXHRkYXRhID0gZGV2X2NvbmZpZy1cXHUwMDNlbXNpLmRhdGE7XFxuICA3MjpcXHRcXHRcXHRhZGRyID0gZGV2X2NvbmZpZy1cXHUwMDNlbXNpLmFkZHI7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdFxcdHJldCA9IGNkeF9tY2RpX3dyaXRlX21zaShjZHgtXFx1MDAzZXByaXYsIGJ1c19udW0sIGRldl9udW0sIG1zaV9pbmRleCwgYWRkciwgZGF0YSk7XFxuICA3NTpcXHRcXHRcXHRicmVhaztcXG4gIDc2OlxcdFxcdGNhc2UgQ0RYX0RFVl9SRVNFVF9DT05GOlxcbiAgNzc6XFx0XFx0XFx0cmV0ID0gY2R4X21jZGlfcmVzZXRfZGV2aWNlKGNkeC1cXHUwMDNlcHJpdiwgYnVzX251bSwgZGV2X251bSk7XFxuICA3ODpcXHRcXHRcXHRicmVhaztcXG4gIDc5OlxcdFxcdGNhc2UgQ0RYX0RFVl9CVVNfTUFTVEVSX0NPTkY6XFxuICA4MDpcXHRcXHRcXHRyZXQgPSBjZHhfbWNkaV9idXNfbWFzdGVyX2VuYWJsZShjZHgtXFx1MDAzZXByaXYsIGJ1c19udW0sIGRldl9udW0sXFxuICA4MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgZGV2X2NvbmZpZy1cXHUwMDNlYnVzX21hc3Rlcl9lbmFibGUpO1xcbiAgODI6XFx0XFx0XFx0YnJlYWs7XFxuICA4MzpcXHRcXHRjYXNlIENEWF9ERVZfTVNJX0VOQUJMRTpcXG4gIDg0OlxcdFxcdFxcdHJldCA9IGNkeF9tY2RpX21zaV9lbmFibGUoY2R4LVxcdTAwM2Vwcml2LCBidXNfbnVtLCBkZXZfbnVtLCBkZXZfY29uZmlnLVxcdTAwM2Vtc2lfZW5hYmxlKTtcXG4gIDg1OlxcdFxcdFxcdGJyZWFrO1xcbiAgODY6XFx0XFx0ZGVmYXVsdDpcXG4gIDg3OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuICA4ODpcXHRcXHR9XFxuICA4OTpcXHRcXG4gIDkwOlxcdFxcdHJldHVybiByZXQ7XFxuICA5MTpcXHR9XFxuICA5MjpcXHRcXG4gIDkzOlxcdHN0YXRpYyBpbnQgY2R4X3NjYW5fZGV2aWNlcyhzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4gIDk0OlxcdHtcXG4gIDk1OlxcdFxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHgtXFx1MDAzZXByaXY7XFxuICA5NjpcXHRcXHR1OCBidXNfbnVtLCBkZXZfbnVtLCBudW1fY2R4X2J1cztcXG4gIDk3OlxcdFxcdGludCByZXQ7XFxuICA5ODpcXHRcXG4gIDk5OlxcdFxcdC8qIE1DREkgRlcgUmVhZDogRmV0Y2ggdGhlIG51bWJlciBvZiBDRFggYnVzZXMgb24gdGhpcyBjb250cm9sbGVyICovXFxuIDEwMDpcXHRcXHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKGNkeF9tY2RpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTIuNjU5MDA5MTQ0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4OTMwNTA3MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgQ0RYIEhvc3QgQ29udHJvbGxlciBEcml2ZXIgZm9yIHRoZSBBTUQgVmVyc2FsLU5ldCBQbGF0Zm9ybSoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgdGhlIENEWCBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhlIEFNRCBWZXJzYWwtTmV0IHBsYXRmb3JtLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGNvbnRyb2xsZXIgaXMgYmVpbmcgcHJvYmVkLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGZpbGVzLiBJJ20gdGhpbmtpbmcgdGhlIGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IHdvdWxkIGJlIGBjZHhfcnBtc2cuY2Agb3IgbWF5YmUgZXZlbiB0aGUgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ2AgZmlsZS4gVGhlIEtjb25maWcgY291bGQgdGVsbCBtZSBob3cgdGhlIGNvbnRyb2xsZXIgaXMgY29uZmlndXJlZCwgd2hlcmVhcyB0aGUgLmMgZmlsZSB3aWxsLCBvZiBjb3Vyc2UsIGhvbGQgdGhlIHByb2JpbmcgbG9naWMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIHN5c3RlbSBkaXNjb3ZlcnMgYW5kIGluaXRpYWxpemVzIHRoaXMgcGFydGljdWxhciBDRFggY29udHJvbGxlci4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTU4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToxNC41NTIwNjIxOTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENEWCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdCMgQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy5cXG4gICA2OlxcdCNcXG4gICA3OlxcdFxcbiAgIDg6XFx0aWYgQ0RYX0JVU1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgQ0RYX0NPTlRST0xMRVJcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJDRFggYnVzIGNvbnRyb2xsZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG4gIDEzOlxcdFxcdHNlbGVjdCBSRU1PVEVQUk9DXFxuICAxNDpcXHRcXHRzZWxlY3QgUlBNU0dcXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgQ0RYIGNvbnRyb2xsZXIgZHJpdmVzIHRoZSBDRFggYnVzLiBJdCBpbnRlcmFjdHMgd2l0aFxcbiAgMTc6XFx0XFx0ICBmaXJtd2FyZSB0byBnZXQgdGhlIGhhcmR3YXJlIGRldmljZXMgYW5kIHJlZ2lzdGVycyB3aXRoXFxuICAxODpcXHRcXHQgIHRoZSBDRFggYnVzLiBTYXkgWSB0byBlbmFibGUgdGhlIENEWCBoYXJkd2FyZSBkcml2ZXIuXFxuICAxOTpcXHRcXG4gIDIwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0ZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTQuNTUyMTI1MzMxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5NTY1MzY1NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIGEgVkZJTyBDRFggZGV2aWNlLCBmcm9tIGluc3RhbnRpYXRpb24gdG8gb3BlcmF0aW9uLiBHaXZlbiBteSBleHBlcnRpc2UsIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gSSdtIGdvaW5nIHRvIHBvcmUgb3ZlciB0aGlzIGNvZGUgdG8gZ3Jhc3AgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cy4gTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgY3JpdGljYWwgZnVuY3Rpb25zOiBob3cgdGhlIGRldmljZSBpcyBjcmVhdGVkLCByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtLCBwcm9iZWQgdG8gZW5zdXJlIGl0cyBwcmVzZW5jZSBhbmQgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZW4gbWFuYWdlZCB0aHJvdWdob3V0IGl0cyBvcGVyYXRpb25hbCBsaWZlIGN5Y2xlLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHN0ZXBzIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgdHVuaW5nLCBhbmQgcG90ZW50aWFsbHkgZXh0ZW5kaW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFZGSU8gQ0RYIGRldmljZXMuIEkgYW50aWNpcGF0ZSBmaW5kaW5nIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBkZXZpY2UncyBzdGF0ZSBhbmQgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVkZJTyBmcmFtZXdvcmsuIEknbSBnb2luZyB0byBhc3N1bWUgYSBjZXJ0YWluIGxldmVsIG9mIGZhbWlsaWFyaXR5IHdpdGggdGhlIFZGSU8gYXJjaGl0ZWN0dXJlIGFuZCBkZWx2ZSBkaXJlY3RseSBpbnRvIHRoZSBDRFggc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjgzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToxNi41MDg2NjU0OTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxcbiAgIDQ6XFx0ICovXFxuICAgNTpcXHRcXG4gICA2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC92ZmlvLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY2R4L2NkeF9idXMuaFxcdTAwM2VcXG4gICA4OlxcdFxcbiAgIDk6XFx0I2luY2x1ZGUgXFxcInByaXZhdGUuaFxcXCJcXG4gIDEwOlxcdFxcbiAgMTE6XFx0c3RhdGljIGludCB2ZmlvX2NkeF9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gIDEyOlxcdHtcXG4gIDEzOlxcdFxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbiAgMTQ6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnZkZXYtXFx1MDAzZWNkeF9pcnFzX2xvY2spO1xcbiAgMTc6XFx0XFx0cmV0dXJuIDA7XFxuICAxODpcXHR9XFxuICAxOTpcXHRcXG4gIDIwOlxcdHN0YXRpYyB2b2lkIHZmaW9fY2R4X3JlbGVhc2VfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiAgMjE6XFx0e1xcbiAgMjI6XFx0XFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XFxuICAyMzpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG4gIDI0OlxcdFxcbiAgMjU6XFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2dmRldi1cXHUwMDNlY2R4X2lycXNfbG9jayk7XFxuICAyNjpcXHR9XFxuICAyNzpcXHRcXG4gIDI4OlxcdHN0YXRpYyBpbnQgdmZpb19jZHhfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuICAyOTpcXHR7XFxuICAzMDpcXHRcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG4gIDMxOlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbiAgMzI6XFx0XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGNvcmVfdmRldi1cXHUwMDNlZGV2KTtcXG4gIDMzOlxcdFxcdGludCBjb3VudCA9IGNkeF9kZXYtXFx1MDAzZXJlc19jb3VudDtcXG4gIDM0OlxcdFxcdGludCBpLCByZXQ7XFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnMgPSBremFsbG9jX29ianMoc3RydWN0IHZmaW9fY2R4X3JlZ2lvbiwgY291bnQsXFxuICAzNzpcXHRcXHRcXHRcXHRcXHQgICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuICAzODpcXHRcXHRpZiAoIXZkZXYtXFx1MDAzZXJlZ2lvbnMpXFxuICAzOTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDQwOlxcdFxcbiAgNDE6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGNvdW50OyBpKyspIHtcXG4gIDQyOlxcdFxcdFxcdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gXFx1MDAyNmNkeF9kZXYtXFx1MDAzZXJlc1tpXTtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9uc1tpXS5hZGRyID0gcmVzLVxcdTAwM2VzdGFydDtcXG4gIDQ1OlxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0uc2l6ZSA9IHJlc291cmNlX3NpemUocmVzKTtcXG4gIDQ2OlxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0udHlwZSA9IHJlcy1cXHUwMDNlZmxhZ3M7XFxuICA0NzpcXHRcXHRcXHQvKlxcbiAgNDg6XFx0XFx0XFx0ICogT25seSByZWdpb25zIGFkZHJlc3NlZCB3aXRoIFBBR0UgZ3JhbnVsYXJpdHkgbWF5IGJlXFxuICA0OTpcXHRcXHRcXHQgKiBNTUFQJ2VkIHNlY3VyZWx5LlxcbiAgNTA6XFx0XFx0XFx0ICovXFxuICA1MTpcXHRcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2ldLmFkZHIgXFx1MDAyNiB+UEFHRV9NQVNLKSBcXHUwMDI2XFx1MDAyNlxcbiAgNTI6XFx0XFx0XFx0ICAgICEodmRldi1cXHUwMDNlcmVnaW9uc1tpXS5zaXplIFxcdTAwMjYgflBBR0VfTUFTSykpXFxuICA1MzpcXHRcXHRcXHRcXHR2ZGV2LVxcdTAwM2VyZWdpb25zW2ldLmZsYWdzIHw9XFxuICA1NDpcXHRcXHRcXHRcXHRcXHRcXHRWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1BUDtcXG4gIDU1OlxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0uZmxhZ3MgfD0gVkZJT19SRUdJT05fSU5GT19GTEFHX1JFQUQ7XFxuICA1NjpcXHRcXHRcXHRpZiAoIShjZHhfZGV2LVxcdTAwM2VyZXNbaV0uZmxhZ3MgXFx1MDAyNiBJT1JFU09VUkNFX1JFQURPTkxZKSlcXG4gIDU3OlxcdFxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0uZmxhZ3MgfD0gVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFO1xcbiAgNTg6XFx0XFx0fVxcbiAgNTk6XFx0XFx0cmV0ID0gY2R4X2Rldl9yZXNldChjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuICA2MDpcXHRcXHRpZiAocmV0KSB7XFxuICA2MTpcXHRcXHRcXHRrZnJlZSh2ZGV2LVxcdTAwM2VyZWdpb25zKTtcXG4gIDYyOlxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnMgPSBOVUxMO1xcbiAgNjM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDY0OlxcdFxcdH1cXG4gIDY1OlxcdFxcdHJldCA9IGNkeF9jbGVhcl9tYXN0ZXIoY2R4X2Rldik7XFxuICA2NjpcXHRcXHRpZiAocmV0KVxcbiAgNjc6XFx0XFx0XFx0dmRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfkJNRV9TVVBQT1JUO1xcbiAgNjg6XFx0XFx0ZWxzZVxcbiAgNjk6XFx0XFx0XFx0dmRldi1cXHUwMDNlZmxhZ3MgfD0gQk1FX1NVUFBPUlQ7XFxuICA3MDpcXHRcXG4gIDcxOlxcdFxcdHJldHVybiAwO1xcbiAgNzI6XFx0fVxcbiAgNzM6XFx0XFxuICA3NDpcXHRzdGF0aWMgdm9pZCB2ZmlvX2NkeF9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuICA3NTpcXHR7XFxuICA3NjpcXHRcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG4gIDc3OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHRrZnJlZSh2ZGV2LVxcdTAwM2VyZWdpb25zKTtcXG4gIDgwOlxcdFxcdGNkeF9kZXZfcmVzZXQoY29yZV92ZGV2LVxcdTAwM2VkZXYpO1xcbiAgODE6XFx0XFx0dmZpb19jZHhfaXJxc19jbGVhbnVwKHZkZXYpO1xcbiAgODI6XFx0fVxcbiAgODM6XFx0XFxuICA4NDpcXHRzdGF0aWMgaW50IHZmaW9fY2R4X2JtX2N0cmwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHUzMiBmbGFncyxcXG4gIDg1OlxcdFxcdFxcdFxcdCAgICB2b2lkIF9fdXNlciAqYXJnLCBzaXplX3QgYXJnc3opXFxuICA4NjpcXHR7XFxuICA4NzpcXHRcXHRzaXplX3QgbWluc3ogPVxcbiAgODg6XFx0XFx0XFx0b2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfYnVzX21hc3Rlciwgb3ApO1xcbiAgODk6XFx0XFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XFxuICA5MDpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG4gIDkxOlxcdFxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuICA5MjpcXHRcXHRzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV9idXNfbWFzdGVyIG9wcztcXG4gIDkzOlxcdFxcdGludCByZXQ7XFxuICA5NDpcXHRcXG4gIDk1OlxcdFxcdGlmICghKHZkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQk1FX1NVUFBPUlQpKVxcbiAgOTY6XFx0XFx0XFx0cmV0dXJuIC1FTk9UVFk7XFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdHJldCA9IHZmaW9fY2hlY2tfZmVhdHVyZShmbGFncywgYXJnc3osIFZGSU9fREVWSUNFX0ZFQVRVUkVfU0VULFxcbiAgOTk6XFx0XFx0XFx0XFx0XFx0IHNpemVvZihvcHMpKTtcXG4gMTAwOlxcdFxcdGlmIChyZXQgIT0gMSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTYuNTA4NzU2MjE1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3MTE4OTk2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBleGFtaW5pbmcgdGhlIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2AgY29kZSBhbmQgdGhpbmtpbmcgYWxvdWQgYXMgYSBzZWFzb25lZCBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoaXMgYG1haW4uY2AgZmlsZSB3aXRoaW4gdGhlIENEWCAobGlrZWx5IENvbnRhaW5lciBEaXJlY3QgZVhlY3V0aW9uKSBWRklPIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSBjb3JlIHB1cnBvc2UuIFdoYXQncyB0aGUgZW50cnkgcG9pbnQ/IFdoYXQncyBpbml0aWFsaXplZD8gQXJlIHdlIGRlYWxpbmcgd2l0aCB0aGUgb3ZlcmFsbCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIGV4aXQgcm91dGluZXMsIG9yIGp1c3QgYSBwaWVjZSBvZiB0aGUgcHV6emxlPyBJJ20gZXhwZWN0aW5nIHRvIHNlZSBtb2R1bGVfaW5pdCBhbmQgbW9kdWxlX2V4aXQgbWFjcm9zIHJpZ2h0IG9mZiB0aGUgYmF0LCB0byBnZXQgdGhlIGJyb2FkIHN0cnVjdHVyZS4gRnJvbSB0aGVyZSwgSSdsbCBxdWlja2x5IGxvb2sgZm9yIHN0cnVjdCBkZWZpbml0aW9ucyBhbmQgZ2xvYmFsIHZhcmlhYmxlcy4gSSB3YW50IHRvIHNlZSBob3cgZGF0YSBpcyBzdG9yZWQgZm9yIHRoZSBjb250YWluZXIgYW5kIHRoZSBkZXZpY2Ugd2l0aGluIHRoaXMgY29udGV4dC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCB0byB0aGUgb3ZlcmFsbCBWRklPIGZyYW1ld29yayBhbmQgaG93IHdlIGFyZSBpbnRlcmFjdGluZyB3aXRoIGl0LiBUaGUgbWVtb3J5IG1hcHBpbmcgYW5kIHVubWFwcGluZyByb3V0aW5lcyB3aWxsIGJlIGNyaXRpY2FsIC0gYXJlIHdlIGRpcmVjdGx5IG1hbmFnaW5nIHRoZSBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcyBvciBpbmRpcmVjdGx5IHZpYSBzb21lIGtpbmQgb2YgaW9tbXUgc2V0dXA/IEkgd2lsbCBwcm9iYWJseSBzZWUgc29tZSBraW5kIG9mIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSBtb2RlbHMgYW5kIGEgZmlsZSBkZXNjcmlwdG9yLiBJJ20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBwYXJ0cyBvZiB0aGUgZHJpdmVyOyB0aGUgY29kZSB0aGF0IHdpcmVzIHVwIHRoZSB2ZmlvLXBjaSBpbnRlcmZhY2UgZm9yIENEWCBvcGVyYXRpb25zLiBUaGVuIEkgd2lsbCBzZWUgaG93IHRvIGhhbmRsZSB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nIChpZiBhcHBsaWNhYmxlKSwgYW5kIG9mIGNvdXJzZSwgdGhlIGFjdHVhbCBvcGVyYXRpb25zIGZvciBjb250YWluZXIgZXhlY3V0aW9uLiBEZXBlbmRpbmcgb24gdGhlIGNvbXBsZXhpdHksIEknbGwgc3RhcnQgYnVpbGRpbmcgYSBtZW50YWwgbW9kZWwgb2YgY29udHJvbCBmbG93LiBFc3NlbnRpYWxseSwgSSdtIHRyeWluZyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBob3cgdGhlIENEWCBzcGVjaWZpYyBwaWVjZXMgZml0IHdpdGhpbiB0aGUgbGFyZ2VyIFZGSU8gZWNvc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ3NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTkuMjIwNjU4ODJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ1MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjYwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI2MDpcXHRcXHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVxcdTAwM2V2bV9zdGFydCwgdm1hLVxcdTAwM2V2bV9wZ29mZixcXG4gMjYxOlxcdFxcdFxcdFxcdFxcdCAgc2l6ZSwgdm1hLVxcdTAwM2V2bV9wYWdlX3Byb3QpO1xcbiAyNjI6XFx0fVxcbiAyNjM6XFx0XFxuIDI2NDpcXHRzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuIDI2NTpcXHRcXHRcXHRcXHQgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuIDI2NjpcXHR7XFxuIDI2NzpcXHRcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG4gMjY4OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbiAyNjk6XFx0XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGNvcmVfdmRldi1cXHUwMDNlZGV2KTtcXG4gMjcwOlxcdFxcdHVuc2lnbmVkIGludCBpbmRleDtcXG4gMjcxOlxcdFxcbiAyNzI6XFx0XFx0aW5kZXggPSB2bWEtXFx1MDAzZXZtX3Bnb2ZmIFxcdTAwM2VcXHUwMDNlIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcXG4gMjczOlxcdFxcbiAyNzQ6XFx0XFx0aWYgKCEodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1NIQVJFRCkpXFxuIDI3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjc2OlxcdFxcbiAyNzc6XFx0XFx0aWYgKGluZGV4IFxcdTAwM2U9IGNkeF9kZXYtXFx1MDAzZXJlc19jb3VudClcXG4gMjc4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyNzk6XFx0XFxuIDI4MDpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19NTUFQKSlcXG4gMjgxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyODI6XFx0XFxuIDI4MzpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEKSBcXHUwMDI2XFx1MDAyNlxcbiAyODQ6XFx0XFx0ICAgICh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgVk1fUkVBRCkpXFxuIDI4NTpcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiAyODY6XFx0XFxuIDI4NzpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkgXFx1MDAyNlxcdTAwMjZcXG4gMjg4OlxcdFxcdCAgICAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1dSSVRFKSlcXG4gMjg5OlxcdFxcdFxcdHJldHVybiAtRVBFUk07XFxuIDI5MDpcXHRcXG4gMjkxOlxcdFxcdHJldHVybiB2ZmlvX2NkeF9tbWFwX21taW8odmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XFxuIDI5MjpcXHR9XFxuIDI5MzpcXHRcXG4gMjk0OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fY2R4X29wcyA9IHtcXG4gMjk1OlxcdFxcdC5uYW1lXFx0XFx0PSBcXFwidmZpby1jZHhcXFwiLFxcbiAyOTY6XFx0XFx0LmluaXRcXHRcXHQ9IHZmaW9fY2R4X2luaXRfZGV2LFxcbiAyOTc6XFx0XFx0LnJlbGVhc2VcXHQ9IHZmaW9fY2R4X3JlbGVhc2VfZGV2LFxcbiAyOTg6XFx0XFx0Lm9wZW5fZGV2aWNlXFx0PSB2ZmlvX2NkeF9vcGVuX2RldmljZSxcXG4gMjk5OlxcdFxcdC5jbG9zZV9kZXZpY2VcXHQ9IHZmaW9fY2R4X2Nsb3NlX2RldmljZSxcXG4gMzAwOlxcdFxcdC5pb2N0bFxcdFxcdD0gdmZpb19jZHhfaW9jdGwsXFxuIDMwMTpcXHRcXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX2NkeF9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuIDMwMjpcXHRcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX2NkeF9pb2N0bF9mZWF0dXJlLFxcbiAzMDM6XFx0XFx0Lm1tYXBcXHRcXHQ9IHZmaW9fY2R4X21tYXAsXFxuIDMwNDpcXHRcXHQuYmluZF9pb21tdWZkXFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYmluZCxcXG4gMzA1OlxcdFxcdC51bmJpbmRfaW9tbXVmZFxcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX3VuYmluZCxcXG4gMzA2OlxcdFxcdC5hdHRhY2hfaW9hc1xcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2F0dGFjaF9pb2FzLFxcbiAzMDc6XFx0fTtcXG4gMzA4OlxcdFxcbiAzMDk6XFx0c3RhdGljIGludCB2ZmlvX2NkeF9wcm9iZShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG4gMzEwOlxcdHtcXG4gMzExOlxcdFxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXY7XFxuIDMxMjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2O1xcbiAzMTM6XFx0XFx0aW50IHJldDtcXG4gMzE0OlxcdFxcbiAzMTU6XFx0XFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fY2R4X2RldmljZSwgdmRldiwgZGV2LFxcbiAzMTY6XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX2NkeF9vcHMpO1xcbiAzMTc6XFx0XFx0aWYgKElTX0VSUih2ZGV2KSlcXG4gMzE4OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHZkZXYpO1xcbiAzMTk6XFx0XFxuIDMyMDpcXHRcXHRyZXQgPSB2ZmlvX3JlZ2lzdGVyX2dyb3VwX2RldihcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuIDMyMTpcXHRcXHRpZiAocmV0KVxcbiAzMjI6XFx0XFx0XFx0Z290byBvdXRfdW5pbml0O1xcbiAzMjM6XFx0XFxuIDMyNDpcXHRcXHRkZXZfc2V0X2RydmRhdGEoZGV2LCB2ZGV2KTtcXG4gMzI1OlxcdFxcdHJldHVybiAwO1xcbiAzMjY6XFx0XFxuIDMyNzpcXHRvdXRfdW5pbml0OlxcbiAzMjg6XFx0XFx0dmZpb19wdXRfZGV2aWNlKFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gMzI5OlxcdFxcdHJldHVybiByZXQ7XFxuIDMzMDpcXHR9XFxuIDMzMTpcXHRcXG4gMzMyOlxcdHN0YXRpYyBpbnQgdmZpb19jZHhfcmVtb3ZlKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbiAzMzM6XFx0e1xcbiAzMzQ6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNmNkeF9kZXYtXFx1MDAzZWRldjtcXG4gMzM1OlxcdFxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG4gMzM2OlxcdFxcbiAzMzc6XFx0XFx0dmZpb191bnJlZ2lzdGVyX2dyb3VwX2RldihcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuIDMzODpcXHRcXHR2ZmlvX3B1dF9kZXZpY2UoXFx1MDAyNnZkZXYtXFx1MDAzZXZkZXYpO1xcbiAzMzk6XFx0XFxuIDM0MDpcXHRcXHRyZXR1cm4gMDtcXG4gMzQxOlxcdH1cXG4gMzQyOlxcdFxcbiAzNDM6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkIHZmaW9fY2R4X3RhYmxlW10gPSB7XFxuIDM0NDpcXHRcXHR7IENEWF9ERVZJQ0VfRFJJVkVSX09WRVJSSURFKENEWF9BTllfSUQsIENEWF9BTllfSUQsXFxuIDM0NTpcXHRcXHRcXHRcXHRcXHQgICAgIENEWF9JRF9GX1ZGSU9fRFJJVkVSX09WRVJSSURFKSB9LCAvKiBtYXRjaCBhbGwgYnkgZGVmYXVsdCAqL1xcbiAzNDY6XFx0XFx0e31cXG4gMzQ3OlxcdH07XFxuIDM0ODpcXHRcXG4gMzQ5OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUoY2R4LCB2ZmlvX2NkeF90YWJsZSk7XFxuIDM1MDpcXHRcXG4gMzUxOlxcdHN0YXRpYyBzdHJ1Y3QgY2R4X2RyaXZlciB2ZmlvX2NkeF9kcml2ZXIgPSB7XFxuIDM1MjpcXHRcXHQucHJvYmVcXHRcXHQ9IHZmaW9fY2R4X3Byb2JlLFxcbiAzNTM6XFx0XFx0LnJlbW92ZVxcdFxcdD0gdmZpb19jZHhfcmVtb3ZlLFxcbiAzNTQ6XFx0XFx0Lm1hdGNoX2lkX3RhYmxlXFx0PSB2ZmlvX2NkeF90YWJsZSxcXG4gMzU1OlxcdFxcdC5kcml2ZXJcXHQ9IHtcXG4gMzU2OlxcdFxcdFxcdC5uYW1lXFx0PSBcXFwidmZpby1jZHhcXFwiLFxcbiAzNTc6XFx0XFx0fSxcXG4gMzU4OlxcdFxcdC5kcml2ZXJfbWFuYWdlZF9kbWEgPSB0cnVlLFxcbiAzNTk6XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MTkuMjIwNzU0OTg5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNjg2MjEyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ0RYIEFuYWx5c2lzIFx1MDAyNiBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGNlbnRlcnMgb24gdW5kZXJzdGFuZGluZyBDRFgg4oCTIHdoYXQgaXQgKmlzKiwgZnVuZGFtZW50YWxseSDigJMgYW5kIHRoZW4sIGNydWNpYWxseSwgd2hldGhlciBpdCdzIGV2ZW4gKmFjY2Vzc2libGUqIHdpdGhpbiBteSB1c3VhbCBRRU1VIGFuZCBHQ0UgdGVzdGluZyBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBrbm93IGlmIEknbSBnb2luZyB0byByZXF1aXJlIHNwZWNpYWxpemVkIEFNRCBWZXJzYWwgaGFyZHdhcmUgZm9yIHRoaXMgb3IgaWYgSSBjYW4gc3RheSB3aXRoaW4gbXkgZmFtaWxpYXIgY29tZm9ydCB6b25lLiBUaGF0J3MgdGhlIHJlYWwgcXVlc3Rpb24uXG5cblRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UgY3JlYXRpb24gcHJvY2VzczogSG93ICphcmUqIHRoZXNlIENEWCBkZXZpY2VzIGluc3RhbnRpYXRlZD8gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIGtleSB0byBmdXp6aW5nLCBhcyBpdCBkZXRlcm1pbmVzIGhvdyBJIGNhbiBwb3RlbnRpYWxseSBpbmZsdWVuY2UgdGhlaXIgaW5pdGlhbGl6YXRpb24gb3IgZmVlZCB0aGVtIHVuZXhwZWN0ZWQgaW5wdXRzLiBJZiB0aGV5IHJlcXVpcmUgc29tZSB1bmlxdWUgb3IgcHJvcHJpZXRhcnkgc2V0dXAsIHRoYXQgY2hhbmdlcyB0aGUgd2hvbGUgZ2FtZS5cblxuRmluYWxseSwgSSdsbCBkaXZlIGludG8gdGhlIGNvZGViYXNlLiBTcGVjaWZpY2FsbHksIHRoZSBgZHJpdmVycy9jZHgvYCBkaXJlY3Rvcnkgc2hvdWxkIHJldmVhbCB0aGUgc2VjcmV0cy4gQXJlIHRoZXNlIGRldmljZXMgY3JlYXRlZCBzdGF0aWNhbGx5LCBhdCBib290PyBPciwgZXZlbiBiZXR0ZXIsIGlzIHRoZXJlIGEgZHluYW1pYyBjcmVhdGlvbiBwYXRoPyBEeW5hbWljIGNyZWF0aW9uIHdvdWxkIG9wZW4gdXAgYSB3aG9sZSB1bml2ZXJzZSBvZiBwb3NzaWJpbGl0aWVzIGZvciBtYW5pcHVsYXRpbmcgYW5kIGZ1enppbmcuIFVuZGVyc3RhbmRpbmcgdGhlIGNyZWF0aW9uIG1lY2hhbmlzbSBpcyBwYXJhbW91bnQgdG8gYW55IGVmZmVjdGl2ZSBmdXp6aW5nIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU5MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MjEuMzg5Mzc5MTY5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc1MTA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZHhfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY2R4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTgzNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU9MTI9aWZkZWYgQ09ORklHX0dFTkVSSUNfTVNJX0lSUVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19DRFhfQlVTKSArPSBjZHhfbXNpLm9cXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xNC1lbmRpZlxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjctI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lkci5oXFx1MDAzZVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXFx1MDAzZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY5LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pb21tdS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6Nzk6c3RhdGljIERFRklORV9JREEoY2R4X2NvbnRyb2xsZXJfaWRhKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04MC0vKiBMb2NrIHRvIHByb3RlY3QgY29udHJvbGxlciBvcHMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTgyLS8qIERlYnVnZnMgZGlyIGZvciBjZHggYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6ODM6c3RhdGljIHN0cnVjdCBkZW50cnkgKmNkeF9kZWJ1Z2ZzX2RpcjtcXG5kcml2ZXJzL2NkeC9jZHguYy04NC1cXG5kcml2ZXJzL2NkeC9jZHguYz04NT1zdGF0aWMgY2hhciAqY29tcGF0X25vZGVfbmFtZSA9IFxcXCJ4bG54LHZlcnNhbC1uZXQtY2R4XFxcIjtcXG5kcml2ZXJzL2NkeC9jZHguYy04Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NzpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtODgtXFxuZHJpdmVycy9jZHgvY2R4LmMtODktLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6OTA6ICogY2R4X2Rldl9yZXNldCAtIFJlc2V0IGEgQ0RYIGRldmljZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxLSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTk0LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjk1OmludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy05Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6OTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTg6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTk6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XFxuZHJpdmVycy9jZHgvY2R4LmM6MTAwOlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMi1cXG5kcml2ZXJzL2NkeC9jZHguYzoxMDM6XFx0Y2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNC1cXHQvKiBOb3RpZnkgZHJpdmVyIHRoYXQgZGV2aWNlIGlzIGJlaW5nIHJlc2V0ICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MTA1OlxcdGlmIChjZHhfZHJ2IFxcdTAwMjZcXHUwMDI2IGNkeF9kcnYtXFx1MDAzZXJlc2V0X3ByZXBhcmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MTA2OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXJlc2V0X3ByZXBhcmUoY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTA3LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEwOC1cXHRkZXZfY29uZmlnLnR5cGUgPSBDRFhfREVWX1JFU0VUX0NPTkY7XFxuZHJpdmVycy9jZHgvY2R4LmM6MTA5OlxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSxcXG5kcml2ZXJzL2NkeC9jZHguYzoxMTA6XFx0XFx0XFx0XFx0ICAgICAgY2R4X2Rldi1cXHUwMDNlZGV2X251bSwgXFx1MDAyNmRldl9jb25maWcpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTExMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTE0LVxcdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgcmVzZXQgaXMgY29tcGxldGUgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMTU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVzZXRfZG9uZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoxMTY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVzZXRfZG9uZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMTktfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMDpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZGV2X3Jlc2V0KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMjEtXFxuZHJpdmVycy9jZHgvY2R4LmMtMTIyLS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMzogKiByZXNldF9jZHhfZGV2aWNlIC0gUmVzZXQgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtMTI0LSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMC0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMzE6c3RhdGljIGludCByZXNldF9jZHhfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2NkeC9jZHguYy0xMzIte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjEzMzpcXHRyZXR1cm4gY2R4X2Rldl9yZXNldChkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNC19XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMzYtLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTM3OiAqIGNkeF91bnJlZ2lzdGVyX2RldmljZSAtIFVucmVnaXN0ZXIgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtMTM4LSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE0MC0gKlxcdCAgYnV0IGlzIHJlcXVpcmVkIGhlcmUgYXMgdGhlIGJ1c19mb3JfZWFjaF9kZXYoKSBBUEkgZXhwZWN0c1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE0MTogKlxcdCAgdGhlIHBhc3NlZCBmdW5jdGlvbiAoY2R4X3VucmVnaXN0ZXJfZGV2aWNlKSB0byBoYXZlIHRoaXNcXG5kcml2ZXJzL2NkeC9jZHguYy0xNDItICpcXHQgIGFzIGFuIGFyZ3VtZW50Llxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ1LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE0NjpzdGF0aWMgaW50IGNkeF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ3LVxcdFxcdFxcdFxcdCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE0OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MTQ5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MDpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTEtXFxuZHJpdmVycy9jZHgvY2R4LmM6MTUyOlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTM6XFx0XFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTQ6XFx0XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NTpcXHRcXHRcXHRjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTYtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTc6XFx0XFx0Y2R4X2Rlc3Ryb3lfcmVzX2F0dHIoY2R4X2RldiwgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTKTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTg6XFx0XFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTktXFx0fVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTYxLVxcdC8qXFxuZHJpdmVycy9jZHgvY2R4LmM6MTYyOlxcdCAqIERvIG5vdCBmcmVlIGNkeF9kZXYgaGVyZSBhcyBpdCB3b3VsZCBiZSBmcmVlZCBpblxcbmRyaXZlcnMvY2R4L2NkeC5jOjE2MzpcXHQgKiBjZHhfZGV2aWNlX3JlbGVhc2UoKSBjYWxsZWQgZnJvbSB3aXRoaW4gcHV0X2RldmljZSgpLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTE2NC1cXHQgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxNjU6XFx0ZGV2aWNlX2RlbChcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNjY6XFx0cHV0X2RldmljZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNjctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNzAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MTcxOnN0YXRpYyB2b2lkIGNkeF91bnJlZ2lzdGVyX2RldmljZXMoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTcyLXtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzMtXFx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxNzQ6XFx0YnVzX2Zvcl9lYWNoX2RldihidXMsIE5VTEwsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTc1LX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE3Ny0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoxNzg6ICogY2R4X21hdGNoX29uZV9kZXZpY2UgLSBUZWxsIGlmIGEgQ0RYIGRldmljZSBzdHJ1Y3R1cmUgaGFzIGEgbWF0Y2hpbmdcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzktICpcXHRcXHRcXHQgIENEWCBkZXZpY2UgaWQgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xODItICpcXG5kcml2ZXJzL2NkeC9jZHguYzoxODM6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4NC0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxODU6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTg2OmNkeF9tYXRjaF9vbmVfZGV2aWNlKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZCxcXG5kcml2ZXJzL2NkeC9jZHguYzoxODc6XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4OC17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xOTktLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MjAwOiAqIGNkeF9tYXRjaF9pZCAtIFNlZSBpZiBhIENEWCBkZXZpY2UgbWF0Y2hlcyBhIGdpdmVuIGNkeF9pZCB0YWJsZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwMS0gKiBAaWRzOiBhcnJheSBvZiBDRFggZGV2aWNlIElEIHN0cnVjdHVyZXMgdG8gc2VhcmNoIGluXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMDQtICogVXNlZCBieSBhIGRyaXZlciB0byBjaGVjayB3aGV0aGVyIGEgQ0RYIGRldmljZSBpcyBpbiBpdHMgbGlzdCBvZlxcbmRyaXZlcnMvY2R4L2NkeC5jOjIwNTogKiBzdXBwb3J0ZWQgZGV2aWNlcy4gUmV0dXJucyB0aGUgbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3JcXG5kcml2ZXJzL2NkeC9jZHguYy0yMDYtICogTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cXG5kcml2ZXJzL2NkeC9jZHguYy0yMDctICpcXG5kcml2ZXJzL2NkeC9jZHguYzoyMDg6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwOS0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoyMTA6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXFxuZHJpdmVycy9jZHgvY2R4LmM6MjExOmNkeF9tYXRjaF9pZChjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzLCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIxMi17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMTQtXFx0XFx0d2hpbGUgKGlkcy1cXHUwMDNldmVuZG9yIHx8IGlkcy1cXHUwMDNlZGV2aWNlKSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjE1OlxcdFxcdFxcdGlmIChjZHhfbWF0Y2hfb25lX2RldmljZShpZHMsIGRldikpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjE2LVxcdFxcdFxcdFxcdHJldHVybiBpZHM7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMjItXFxuZHJpdmVycy9jZHgvY2R4LmM6MjIzOmludCBjZHhfc2V0X21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHguYy0yMjQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNTpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMjY6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjI3LVxcdGludCByZXQgPSAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIzMS1cXHRpZiAoY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MjMyOlxcdFxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSxcXG5kcml2ZXJzL2NkeC9jZHguYzoyMzM6XFx0XFx0XFx0XFx0XFx0ICAgICAgY2R4X2Rldi1cXHUwMDNlZGV2X251bSwgXFx1MDAyNmRldl9jb25maWcpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTIzNC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIzNi19XFxuZHJpdmVycy9jZHgvY2R4LmM6MjM3OkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9zZXRfbWFzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXFxuZHJpdmVycy9jZHgvY2R4LmM6MjM5OmludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI0MC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjQxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yNDMtXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjQ3LVxcdGlmIChjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoyNDg6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0OTpcXHRcXHRcXHRcXHRcXHQgICAgICBjZHhfZGV2LVxcdTAwM2VkZXZfbnVtLCBcXHUwMDI2ZGV2X2NvbmZpZyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjUwLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjUyLX1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNTM6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2NsZWFyX21hc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjU0LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI1NS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoyNTY6ICogY2R4X2J1c19tYXRjaCAtIGRldmljZSB0byBkcml2ZXIgbWF0Y2hpbmcgY2FsbGJhY2tcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTctICogQGRldjogdGhlIGNkeCBkZXZpY2UgdG8gbWF0Y2ggYWdhaW5zdFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjYyLSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2MzpzdGF0aWMgaW50IGNkeF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI2NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjY1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NjpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjc6XFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmZvdW5kX2lkID0gTlVMTDtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjg6XFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkcztcXG5kcml2ZXJzL2NkeC9jZHguYy0yNjktXFx0aW50IHJldDtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MjcxOlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjcyLVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzMtXFxuZHJpdmVycy9jZHgvY2R4LmM6Mjc0OlxcdGlkcyA9IGNkeF9kcnYtXFx1MDAzZW1hdGNoX2lkX3RhYmxlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3NS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI4MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoyODE6XFx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yODItXFx0aWYgKCFmb3VuZF9pZClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI5NS1cXHRcXHRpZHMgPSBmb3VuZF9pZCArIDE7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mjk2OlxcdFxcdGZvdW5kX2lkID0gY2R4X21hdGNoX2lkKGlkcywgY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjk3LVxcdH0gd2hpbGUgKGZvdW5kX2lkKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMS1cXG5kcml2ZXJzL2NkeC9jZHguYzozMDI6c3RhdGljIGludCBjZHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMy17XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA0OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNjpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMDctXFx0aW50IGVycm9yO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzEzLVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19HRU5FUklDX01TSV9JUlEpIFxcdTAwMjZcXHUwMDI2IGNkeC1cXHUwMDNlbXNpX2RvbWFpbikge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMxNDpcXHRcXHRlcnJvciA9IG1zaV9zZXR1cF9kZXZpY2VfZGF0YShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMTUtXFx0XFx0aWYgKGVycm9yKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzE4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMxOTpcXHRlcnJvciA9IGNkeF9kcnYtXFx1MDAzZXByb2JlKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMyMC1cXHRpZiAoZXJyb3IpIHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMyNy1cXG5kcml2ZXJzL2NkeC9jZHguYzozMjg6c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzI5LXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzA6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzE6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzMyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMzpcXHRpZiAoY2R4X2RydiBcXHUwMDI2XFx1MDAyNiBjZHhfZHJ2LVxcdTAwM2VyZW1vdmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MzM0OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXJlbW92ZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzUtfVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMzNi1cXG5kcml2ZXJzL2NkeC9jZHguYzozMzc6c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzgte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMzOTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MzpcXHRpZiAoY2R4X2Rldi1cXHUwMDNlaXNfYnVzIFxcdTAwMjZcXHUwMDI2IGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NDpcXHRcXHRjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlc2h1dGRvd24pXFxuZHJpdmVycy9jZHgvY2R4LmM6MzQ2OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXNodXRkb3duKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Ny19XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQ4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0OTpzdGF0aWMgaW50IGNkeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTAte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNTM6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzU0OlxcdHUzMiBpbnB1dF9pZCA9IGNkeF9kZXYtXFx1MDAzZXJlcV9pZDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTUtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM2Mi1cXG5kcml2ZXJzL2NkeC9jZHguYzozNjM6XFx0LyogQGNkeF9kcnYgbWF5IG5vdCBiZSB2YWxpZCB3aGVuIHdlJ3JlIGNhbGxlZCBmcm9tIHRoZSBJT01NVSBsYXllciAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM2NDpcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWRyaXZlciBcXHUwMDI2XFx1MDAyNiAhY2R4X2Rydi1cXHUwMDNlZHJpdmVyX21hbmFnZWRfZG1hKSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzY1LVxcdFxcdHJldCA9IGlvbW11X2RldmljZV91c2VfZGVmYXVsdF9kb21haW4oZGV2KTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Mi1cXG5kcml2ZXJzL2NkeC9jZHguYzozNzM6c3RhdGljIHZvaWQgY2R4X2RtYV9jbGVhbnVwKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zNzQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzozNzc6XFx0aWYgKCFjZHhfZHJ2LVxcdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzc4LVxcdFxcdGlvbW11X2RldmljZV91bnVzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzgxLS8qIHNob3cgY29uZmlndXJhdGlvbiBmaWVsZHMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzozODI6I2RlZmluZSBjZHhfY29uZmlnX2F0dHIoZmllbGQsIGZvcm1hdF9zdHJpbmcpXFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4My1zdGF0aWMgc3NpemVfdFxcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODQ9ZmllbGQjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg1LXtcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmM6Mzg2OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODc6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBmb3JtYXRfc3RyaW5nLCBjZHhfZGV2LVxcdTAwM2VmaWVsZCk7XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4OC19XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4OT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZmllbGQpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzkwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MTpjZHhfY29uZmlnX2F0dHIodmVuZG9yLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTI6Y2R4X2NvbmZpZ19hdHRyKGRldmljZSwgXFxcIjB4JTA0eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzkzOmNkeF9jb25maWdfYXR0cihzdWJzeXN0ZW1fdmVuZG9yLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTQ6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV9kZXZpY2UsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NTpjZHhfY29uZmlnX2F0dHIocmV2aXNpb24sIFxcXCIweCUwMnhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NjpjZHhfY29uZmlnX2F0dHIoY2xhc3MsIFxcXCIweCUwNnhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM5Ny1cXG5kcml2ZXJzL2NkeC9jZHguYz0zOTg9c3RhdGljIHNzaXplX3QgcmVtb3ZlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQxMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo0MTM6XFx0XFx0cmV0ID0gY2R4X3VucmVnaXN0ZXJfZGV2aWNlKGRldiwgTlVMTCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDE0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz00MjI9c3RhdGljIHNzaXplX3QgcmVzZXRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDI1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNi1cXHRib29sIHZhbDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQzNC1cXG5kcml2ZXJzL2NkeC9jZHguYzo0MzU6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy00MzYtXFx0XFx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzc6XFx0XFx0cmV0ID0gZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgcmVzZXRfY2R4X2RldmljZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDM4LVxcdGVsc2VcXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzk6XFx0XFx0cmV0ID0gY2R4X2Rldl9yZXNldChkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0MC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ0NT1zdGF0aWMgc3NpemVfdCBtb2RhbGlhc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NDcte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ0ODpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NDktXFxuZHJpdmVycy9jZHgvY2R4LmM6NDUwOlxcdHJldHVybiBzcHJpbnRmKGJ1ZiwgXFxcImNkeDp2JTA0WGQlMDRYc3YlMDRYc2QlMDRYYyUwNlhcXFxcblxcXCIsIGNkeF9kZXYtXFx1MDAzZXZlbmRvcixcXG5kcml2ZXJzL2NkeC9jZHguYzo0NTE6XFx0XFx0XFx0Y2R4X2Rldi1cXHUwMDNlZGV2aWNlLCBjZHhfZGV2LVxcdTAwM2VzdWJzeXN0ZW1fdmVuZG9yLCBjZHhfZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MjpcXHRcXHRcXHRjZHhfZGV2LVxcdTAwM2VjbGFzcyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDUzLX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ1Nj1zdGF0aWMgc3NpemVfdCBlbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ1OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDU5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NjYtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDY3OlxcdGlmIChlbmFibGUgPT0gY2R4X2Rldi1cXHUwMDNlZW5hYmxlZClcXG5kcml2ZXJzL2NkeC9jZHguYy00NjgtXFx0XFx0cmV0dXJuIGNvdW50O1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDcwLVxcdGlmIChlbmFibGUgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19lbmFibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6NDcxOlxcdFxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZW5hYmxlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDcyLVxcdGVsc2UgaWYgKCFlbmFibGUgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MzpcXHRcXHRyZXQgPSBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NzQtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDc3LVxcdGlmICghcmV0KVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3ODpcXHRcXHRjZHhfZGV2LVxcdTAwM2VlbmFibGVkID0gZW5hYmxlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3OS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ4Mz1zdGF0aWMgc3NpemVfdCBlbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNDg0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0ODU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDg2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NzpcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIldVxcXFxuXFxcIiwgY2R4X2Rldi1cXHUwMDNlZW5hYmxlZCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDg4LX1cXG5kcml2ZXJzL2NkeC9jZHguYz00ODk9c3RhdGljIERFVklDRV9BVFRSX1JXKGVuYWJsZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDkwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5MTpzdGF0aWMgdW1vZGVfdCBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcXG5kcml2ZXJzL2NkeC9jZHguYy00OTIte1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5My1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo0OTQ6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDk1LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NjpcXHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NzpcXHRpZiAoIWNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy00OTgtXFx0XFx0cmV0dXJuIGEtXFx1MDAzZW1vZGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01MDItXFxuZHJpdmVycy9jZHgvY2R4LmM6NTAzOnN0YXRpYyB1bW9kZV90IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNC17XFxuZHJpdmVycy9jZHgvY2R4LmMtNTA1LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjUwNjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy01MDctXFxuZHJpdmVycy9jZHgvY2R4LmM6NTA4OlxcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTA5OlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTEwLVxcdFxcdHJldHVybiBhLVxcdTAwM2Vtb2RlO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTE0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUxNTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2Rldl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUxNi1cXHRcXHUwMDI2ZGV2X2F0dHJfcmVtb3ZlLmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01MjctXFxuZHJpdmVycy9jZHgvY2R4LmM6NTI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGNkeF9kZXZfZ3JvdXAgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTI5OlxcdC5hdHRycyA9IGNkeF9kZXZfYXR0cnMsXFxuZHJpdmVycy9jZHgvY2R4LmM6NTMwOlxcdC5pc192aXNpYmxlID0gY2R4X2Rldl9hdHRyc19hcmVfdmlzaWJsZSxcXG5kcml2ZXJzL2NkeC9jZHguYy01MzEtfTtcXG5kcml2ZXJzL2NkeC9jZHguYy01MzItXFxuZHJpdmVycy9jZHgvY2R4LmM6NTMzOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfYnVzX2Rldl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUzNC1cXHRcXHUwMDI2ZGV2X2F0dHJfZW5hYmxlLmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01MzgtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGNkeF9idXNfZGV2X2dyb3VwID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MDpcXHQuYXR0cnMgPSBjZHhfYnVzX2Rldl9hdHRycyxcXG5kcml2ZXJzL2NkeC9jZHguYzo1NDE6XFx0LmlzX3Zpc2libGUgPSBjZHhfYnVzX2F0dHJzX2FyZV92aXNpYmxlLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0Mi19O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU0My1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmNkeF9kZXZfZ3JvdXBzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTQ1OlxcdFxcdTAwMjZjZHhfZGV2X2dyb3VwLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NjpcXHRcXHUwMDI2Y2R4X2J1c19kZXZfZ3JvdXAsXFxuZHJpdmVycy9jZHgvY2R4LmMtNTQ3LVxcdE5VTEwsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01NDktXFxuZHJpdmVycy9jZHgvY2R4LmM6NTUwOnN0YXRpYyBpbnQgY2R4X2RlYnVnX3Jlc291cmNlX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU1MS17XFxuZHJpdmVycy9jZHgvY2R4LmM6NTUyOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NTMtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01NTUtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1BWF9DRFhfREVWX1JFU09VUkNFUzsgaSsrKSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTU2OlxcdFxcdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gIFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VyZXNbaV07XFxuZHJpdmVycy9jZHgvY2R4LmMtNTU3LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTYyLX1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NjM6REVGSU5FX1NIT1dfQVRUUklCVVRFKGNkeF9kZWJ1Z19yZXNvdXJjZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTY0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU2NTpzdGF0aWMgdm9pZCBjZHhfZGV2aWNlX2RlYnVnZnNfaW5pdChzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHguYy01NjYte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU2NzpcXHRjZHhfZGV2LVxcdTAwM2VkZWJ1Z2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KSwgY2R4X2RlYnVnZnNfZGlyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Njg6XFx0aWYgKElTX0VSUihjZHhfZGV2LVxcdTAwM2VkZWJ1Z2ZzX2RpcikpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTY5LVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL2NkeC9jZHguYy01NzAtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTcxOlxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInJlc291cmNlXFxcIiwgMDQ0NCwgY2R4X2Rldi1cXHUwMDNlZGVidWdmc19kaXIsIGNkeF9kZXYsXFxuZHJpdmVycy9jZHgvY2R4LmM6NTcyOlxcdFxcdFxcdCAgICBcXHUwMDI2Y2R4X2RlYnVnX3Jlc291cmNlX2ZvcHMpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU3My19XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz01NzU9c3RhdGljIHNzaXplX3QgcmVzY2FuX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTc3LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Nzg6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTc5LVxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTg3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU4ODpcXHRndWFyZChtdXRleCkoXFx1MDAyNmNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU4OS1cXG5kcml2ZXJzL2NkeC9jZHguYy01OTAtXFx0LyogVW5yZWdpc3RlciBhbGwgdGhlIGRldmljZXMgb24gdGhlIGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU5MTpcXHRjZHhfdW5yZWdpc3Rlcl9kZXZpY2VzKFxcdTAwMjZjZHhfYnVzX3R5cGUpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU5Mi1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTYwOD1zdGF0aWMgQlVTX0FUVFJfV08ocmVzY2FuKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MDktXFxuZHJpdmVycy9jZHgvY2R4LmM6NjEwOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfYnVzX2F0dHJzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjExLVxcdFxcdTAwMjZidXNfYXR0cl9yZXNjYW4uYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTYxMy19O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNDpBVFRSSUJVVEVfR1JPVVBTKGNkeF9idXMpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYxNS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2MTY6Y29uc3Qgc3RydWN0IGJ1c190eXBlIGNkeF9idXNfdHlwZSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy02MTctXFx0Lm5hbWVcXHRcXHQ9IFxcXCJjZHhcXFwiLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYxOC1cXHQuZHJpdmVyX292ZXJyaWRlID0gdHJ1ZSxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MTk6XFx0Lm1hdGNoXFx0XFx0PSBjZHhfYnVzX21hdGNoLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMDpcXHQucHJvYmVcXHRcXHQ9IGNkeF9wcm9iZSxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjE6XFx0LnJlbW92ZVxcdFxcdD0gY2R4X3JlbW92ZSxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjI6XFx0LnNodXRkb3duXFx0PSBjZHhfc2h1dGRvd24sXFxuZHJpdmVycy9jZHgvY2R4LmM6NjIzOlxcdC5kbWFfY29uZmlndXJlXFx0PSBjZHhfZG1hX2NvbmZpZ3VyZSxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjQ6XFx0LmRtYV9jbGVhbnVwXFx0PSBjZHhfZG1hX2NsZWFudXAsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjI1OlxcdC5idXNfZ3JvdXBzXFx0PSBjZHhfYnVzX2dyb3VwcyxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjY6XFx0LmRldl9ncm91cHNcXHQ9IGNkeF9kZXZfZ3JvdXBzLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYyNy19O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjYyODpFWFBPUlRfU1lNQk9MX0dQTChjZHhfYnVzX3R5cGUpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYyOS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2MzA6aW50IF9fY2R4X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcixcXG5kcml2ZXJzL2NkeC9jZHguYy02MzEtXFx0XFx0XFx0ICBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTYzNC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2MzU6XFx0Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XFxuZHJpdmVycy9jZHgvY2R4LmM6NjM2OlxcdGNkeF9kcml2ZXItXFx1MDAzZWRyaXZlci5idXMgPSBcXHUwMDI2Y2R4X2J1c190eXBlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYzNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo2Mzg6XFx0ZXJyb3IgPSBkcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmNkeF9kcml2ZXItXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjM5LVxcdGlmIChlcnJvcikge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0MC1cXHRcXHRwcl9lcnIoXFxcImRyaXZlcl9yZWdpc3RlcigpIGZhaWxlZCBmb3IgJXM6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0MTpcXHRcXHQgICAgICAgY2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyLm5hbWUsIGVycm9yKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NDItXFx0XFx0cmV0dXJuIGVycm9yO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjQ2LX1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NDc6RVhQT1JUX1NZTUJPTF9HUEwoX19jZHhfZHJpdmVyX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjQ5OnZvaWQgY2R4X2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY1MC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NjUxOlxcdGRyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY1Mi19XFxuZHJpdmVycy9jZHgvY2R4LmM6NjUzOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kcml2ZXJfdW5yZWdpc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjU0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY1NTpzdGF0aWMgdm9pZCBjZHhfZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY1Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6NjU3OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY1OC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NTk6XFx0a2ZyZWUoY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjYwLX1cXG5kcml2ZXJzL2NkeC9jZHguYy02NjEtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjYyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgY2R4X3BoeXNfdm1fb3BzID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY2My0jaWZkZWYgQ09ORklHX0hBVkVfSU9SRU1BUF9QUk9UXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NjgtLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6NjY5OiAqIGNkeF9tbWFwX3Jlc291cmNlIC0gbWFwIGEgQ0RYIHJlc291cmNlIGludG8gdXNlciBtZW1vcnkgc3BhY2VcXG5kcml2ZXJzL2NkeC9jZHguYy02NzAtICogQGZwOiBGaWxlIHBvaW50ZXIuIE5vdCB1c2VkIGluIHRoaXMgZnVuY3Rpb24sIGJ1dCByZXF1aXJlZCB3aGVyZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjc5LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY4MDpzdGF0aWMgaW50IGNkeF9tbWFwX3Jlc291cmNlKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGtvYmplY3QgKmtvYmosXFxuZHJpdmVycy9jZHgvY2R4LmMtNjgxLVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02ODMte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY4NDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2Uoa29ial90b19kZXYoa29iaikpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY4NS1cXHRpbnQgbnVtID0gKHVuc2lnbmVkIGxvbmcpYXR0ci1cXHUwMDNlcHJpdmF0ZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY4OC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2ODk6XFx0cmVzID0gXFx1MDAyNmNkeF9kZXYtXFx1MDAzZXJlc1tudW1dO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY5MC1cXHRpZiAoaW9tZW1faXNfZXhjbHVzaXZlKHJlcy1cXHUwMDNlc3RhcnQpKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjkzLVxcdC8qIE1ha2Ugc3VyZSB0aGUgY2FsbGVyIGlzIG1hcHBpbmcgYSB2YWxpZCByZXNvdXJjZSBmb3IgdGhpcyBkZXZpY2UgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo2OTQ6XFx0c2l6ZSA9ICgoY2R4X3Jlc291cmNlX2xlbihjZHhfZGV2LCBudW0pIC0gMSkgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCkgKyAxO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY5NS1cXHRpZiAodm1hLVxcdTAwM2V2bV9wZ29mZiArIHZtYV9wYWdlcyh2bWEpIFxcdTAwM2Ugc2l6ZSlcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcwMi1cXHR2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLVxcdTAwM2V2bV9wYWdlX3Byb3QpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjcwMzpcXHR2bWEtXFx1MDAzZXZtX3Bnb2ZmICs9IChjZHhfcmVzb3VyY2Vfc3RhcnQoY2R4X2RldiwgbnVtKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo3MDQ6XFx0dm1hLVxcdTAwM2V2bV9vcHMgPSBcXHUwMDI2Y2R4X3BoeXNfdm1fb3BzO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTcwNS1cXHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVxcdTAwM2V2bV9zdGFydCwgdm1hLVxcdTAwM2V2bV9wZ29mZixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcwOS1cXG5kcml2ZXJzL2NkeC9jZHguYzo3MTA6c3RhdGljIHZvaWQgY2R4X2Rlc3Ryb3lfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXFxuZHJpdmVycy9jZHgvY2R4LmMtNzExLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcxNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo3MTg6XFx0XFx0cmVzX2F0dHIgPSBjZHhfZGV2LVxcdTAwM2VyZXNfYXR0cltpXTtcXG5kcml2ZXJzL2NkeC9jZHguYy03MTktXFx0XFx0aWYgKHJlc19hdHRyKSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NzIwOlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9iaW5fZmlsZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy03MjEtXFx0XFx0XFx0a2ZyZWUocmVzX2F0dHIpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzI2LSNkZWZpbmUgQ0RYX1JFU19BVFRSX05BTUVfTEVOXFx0MTBcXG5kcml2ZXJzL2NkeC9jZHguYzo3Mjc6c3RhdGljIGludCBjZHhfY3JlYXRlX3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcyOC17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03NDItXFxuZHJpdmVycy9jZHgvY2R4LmM6NzQzOlxcdHJlc19hdHRyLVxcdTAwM2VtbWFwID0gY2R4X21tYXBfcmVzb3VyY2U7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzQ0LVxcdHJlc19hdHRyLVxcdTAwM2VhdHRyLm5hbWUgPSByZXNfYXR0cl9uYW1lO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTc0NS1cXHRyZXNfYXR0ci1cXHUwMDNlYXR0ci5tb2RlID0gMDYwMDtcXG5kcml2ZXJzL2NkeC9jZHguYzo3NDY6XFx0cmVzX2F0dHItXFx1MDAzZXNpemUgPSBjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzQ3LVxcdHJlc19hdHRyLVxcdTAwM2Vwcml2YXRlID0gKHZvaWQgKikodW5zaWduZWQgbG9uZyludW07XFxuZHJpdmVycy9jZHgvY2R4LmM6NzQ4OlxcdHJldCA9IHN5c2ZzX2NyZWF0ZV9iaW5fZmlsZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy03NDktXFx0aWYgKHJldCkge1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToyMS40MzUxMzUwNjZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgwMTM2OTU4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgQ0RYIFZGSU8gRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgVkZJTyBkcml2ZXIgZm9yIHRoZSBDRFggYnVzIOKAkyB0aGF0J3MgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCwgYW5kIGl0J3MgaGFuZGxpbmcgYHZmaW8tY2R4YC4gUmlnaHQsIGdvdCBpdC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzLCBob3cgZXhhY3RseSBhcmUgdGhlc2UgQ0RYIGNvbnRyb2xsZXJzIGJlaW5nIGJyb3VnaHQgdG8gbGlmZSB3aXRoaW4gdGhpcyB3aG9sZSBWRklPIHNldHVwPyBXaGVyZSdzIHRoZSBpbnN0YW50aWF0aW9uIGhhcHBlbmluZz8gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gTXkgaW50dWl0aW9uIHNheXMgdGhlIGltcGxlbWVudGF0aW9uIG1pZ2h0IGJlIGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jYCDigJMgbGV0J3MgY2hlY2sgdGhlcmUsIHNlZSBpZiB3ZSBjYW4gZmluZCB0aGUgbWFnaWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTM2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MjMuMjM2NTA3MTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIFBsYXRmb3JtIGRyaXZlciBmb3IgQ0RYIGJ1cy5cXG4gICA0OlxcdCAqXFxuICAgNTpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxcbiAgIDY6XFx0ICovXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ycG1zZy5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlbW90ZXByb2MuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZi5oXFx1MDAzZVxcbiAgMTE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbiAgMTI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NkeC9jZHhfYnVzLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAxNDpcXHRcXG4gIDE1OlxcdCNpbmNsdWRlIFxcXCIuLi9jZHguaFxcXCJcXG4gIDE2OlxcdCNpbmNsdWRlIFxcXCJjZHhfY29udHJvbGxlci5oXFxcIlxcbiAgMTc6XFx0I2luY2x1ZGUgXFxcIm1jZGlfZnVuY3Rpb25zLmhcXFwiXFxuICAxODpcXHQjaW5jbHVkZSBcXFwibWNkaWQuaFxcXCJcXG4gIDE5OlxcdFxcbiAgMjA6XFx0c3RhdGljIHN0cnVjdCBycG1zZ19kZXZpY2VfaWQgY2R4X3JwbXNnX2lkX3RhYmxlW10gPSB7XFxuICAyMTpcXHRcXHR7IC5uYW1lID0gXFxcIm1jZGlfaXBjXFxcIiB9LFxcbiAgMjI6XFx0XFx0eyB9LFxcbiAgMjM6XFx0fTtcXG4gIDI0OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocnBtc2csIGNkeF9ycG1zZ19pZF90YWJsZSk7XFxuICAyNTpcXHRcXG4gIDI2OlxcdGludCBjZHhfcnBtc2dfc2VuZChzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpLFxcbiAgMjc6XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGNkeF9kd29yZCAqaGRyLCBzaXplX3QgaGRyX2xlbixcXG4gIDI4OlxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBjZHhfZHdvcmQgKnNkdSwgc2l6ZV90IHNkdV9sZW4pXFxuICAyOTpcXHR7XFxuICAzMDpcXHRcXHR1bnNpZ25lZCBjaGFyICpzZW5kX2J1ZjtcXG4gIDMxOlxcdFxcdGludCByZXQ7XFxuICAzMjpcXHRcXG4gIDMzOlxcdFxcdHNlbmRfYnVmID0ga3phbGxvYyhoZHJfbGVuICsgc2R1X2xlbiwgR0ZQX0tFUk5FTCk7XFxuICAzNDpcXHRcXHRpZiAoIXNlbmRfYnVmKVxcbiAgMzU6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdG1lbWNweShzZW5kX2J1ZiwgaGRyLCBoZHJfbGVuKTtcXG4gIDM4OlxcdFxcdG1lbWNweShzZW5kX2J1ZiArIGhkcl9sZW4sIHNkdSwgc2R1X2xlbik7XFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdHJldCA9IHJwbXNnX3NlbmQoY2R4X21jZGktXFx1MDAzZWVwdCwgc2VuZF9idWYsIGhkcl9sZW4gKyBzZHVfbGVuKTtcXG4gIDQxOlxcdFxcdGtmcmVlKHNlbmRfYnVmKTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDQ0OlxcdH1cXG4gIDQ1OlxcdFxcbiAgNDY6XFx0c3RhdGljIGludCBjZHhfYXR0YWNoX3RvX3Jwcm9jKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuICA0NzpcXHR7XFxuICA0ODpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnI1X2NvcmVfbm9kZTtcXG4gIDQ5OlxcdFxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuICA1MDpcXHRcXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbiAgNTE6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2O1xcbiAgNTI6XFx0XFx0c3RydWN0IHJwcm9jICpycDtcXG4gIDUzOlxcdFxcdGludCByZXQ7XFxuICA1NDpcXHRcXG4gIDU1OlxcdFxcdGRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuICA1NjpcXHRcXHRjZHhfYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbiAgNTc6XFx0XFx0Y2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0cjVfY29yZV9ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtXFx1MDAzZW9mX25vZGUsIFxcXCJ4bG54LHJwcm9jXFxcIiwgMCk7XFxuICA2MDpcXHRcXHRpZiAoIXI1X2NvcmVfbm9kZSkge1xcbiAgNjE6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwieGxueCxycHJvYzogaW52YWxpZCBwaGFuZGxlXFxcXG5cXFwiKTtcXG4gIDYyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAgNjM6XFx0XFx0fVxcbiAgNjQ6XFx0XFxuICA2NTpcXHRcXHRycCA9IHJwcm9jX2dldF9ieV9waGFuZGxlKHI1X2NvcmVfbm9kZS1cXHUwMDNlcGhhbmRsZSk7XFxuICA2NjpcXHRcXHRpZiAoIXJwKSB7XFxuICA2NzpcXHRcXHRcXHRyZXQgPSAtRVBST0JFX0RFRkVSO1xcbiAgNjg6XFx0XFx0XFx0Z290byBwZGV2X2VycjtcXG4gIDY5OlxcdFxcdH1cXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0LyogQXR0YWNoIHRvIHJlbW90ZSBwcm9jZXNzb3IgKi9cXG4gIDcyOlxcdFxcdHJldCA9IHJwcm9jX2Jvb3QocnApO1xcbiAgNzM6XFx0XFx0aWYgKHJldCkge1xcbiAgNzQ6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGF0dGFjaCB0byByZW1vdGUgcHJvY2Vzc29yXFxcXG5cXFwiKTtcXG4gIDc1OlxcdFxcdFxcdHJwcm9jX3B1dChycCk7XFxuICA3NjpcXHRcXHRcXHRnb3RvIHBkZXZfZXJyO1xcbiAgNzc6XFx0XFx0fVxcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHRjZHhfbWNkaS1cXHUwMDNlcjVfcnByb2MgPSBycDtcXG4gIDgwOlxcdHBkZXZfZXJyOlxcbiAgODE6XFx0XFx0b2Zfbm9kZV9wdXQocjVfY29yZV9ub2RlKTtcXG4gIDgyOlxcdFxcdHJldHVybiByZXQ7XFxuICA4MzpcXHR9XFxuICA4NDpcXHRcXG4gIDg1OlxcdHN0YXRpYyB2b2lkIGNkeF9kZXRhY2hfdG9fcjUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gIDg2OlxcdHtcXG4gIDg3OlxcdFxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuICA4ODpcXHRcXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbiAgODk6XFx0XFxuICA5MDpcXHRcXHRjZHhfYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbiAgOTE6XFx0XFx0Y2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4gIDkyOlxcdFxcbiAgOTM6XFx0XFx0cnByb2NfZGV0YWNoKGNkeF9tY2RpLVxcdTAwM2VyNV9ycHJvYyk7XFxuICA5NDpcXHRcXHRycHJvY19wdXQoY2R4X21jZGktXFx1MDAzZXI1X3Jwcm9jKTtcXG4gIDk1OlxcdH1cXG4gIDk2OlxcdFxcbiAgOTc6XFx0c3RhdGljIGludCBjZHhfcnBtc2dfY2Ioc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYsIHZvaWQgKmRhdGEsXFxuICA5ODpcXHRcXHRcXHRcXHRpbnQgbGVuLCB2b2lkICpwcml2LCB1MzIgc3JjKVxcbiAgOTk6XFx0e1xcbiAxMDA6XFx0XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2cnBkZXYtXFx1MDAzZWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjE1OjIzLjIzNjU4OTg2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMDM5Mzk0MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ0RYIFJQTVNHIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGNkeF9ycG1zZ2AgYW5kIGl0IG5lZWRzIGEgc3BlY2lmaWMgcnBtc2cgY2hhbm5lbCwgXCJtY2RpX2lwYyxcIiBvciwgaWYgdGhhdCdzIG5vdCBhdmFpbGFibGUsIGl0J3MgZXhwZWN0aW5nIGEgcGxhdGZvcm0gZGV2aWNlIHdpdGggYSBEZXZpY2UgVHJlZSBub2RlIHRoYXQgbWF0Y2hlcyBcInhsbngsdmVyc2FsLW5ldC1jZHhcIiBhbmQgYSByZW1vdGUgcHJvY2Vzc29yIGRlc2NyaWJlZCBhcyBcInhsbngscnByb2MuXCIgUmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYW4gQU1EIFZlcnNhbCBvciBYaWxpbnggVmVyc2FsIE5ldCBwbGF0Zm9ybSDigJMgdGhhdCBtYWtlcyBzZW5zZS5cblxuTm93LCBteSBuZXh0IHRob3VnaHQgaXMsIGFyZSB0aGVyZSAqYW55KiBvdGhlciBDRFggY29udHJvbGxlciBpbXBsZW1lbnRhdGlvbnMga2lja2luZyBhcm91bmQgaW4gdGhlIGtlcm5lbD8gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiBhbmQgc2VlIGlmIGFueXRoaW5nIGVsc2UgaGFzIGJlZW4gcmVnaXN0ZXJlZCB0aGF0IG1pZ2h0IHJlbGF0ZSB0byB0aGlzLiBBcmUgdGhlcmUgYW55IGV4aXN0aW5nIGRldmljZSByZWdpc3RyYXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHRoaXMgcGFydGljdWxhciBzZXR1cD8gR290IHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IG90aGVyIHBvdGVudGlhbCBjb250ZW5kZXJzIG9yIGNvbmZsaWN0cyB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0J3MgZGlnIGluIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwODU1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToyNS4yNDA1MzI2OTFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Nzk1ODY5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvY2R4LmM9ODkyPUVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9idXNfYWRkLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtODkzLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg5NDppbnQgY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY2R4LmMtODk1LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxNi19XFxuZHJpdmVycy9jZHgvY2R4LmM6OTE3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTE4LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4Lmg9MzE9c3RydWN0IGNkeF9kZXZfcGFyYW1zIHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTQ5LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5oOjUwOiAqIGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyIC0gUmVnaXN0ZXIgYSBDRFggY29udHJvbGxlciBhbmQgaXRzIHBvcnRzXFxuZHJpdmVycy9jZHgvY2R4LmgtNTEtICpcXHRcXHRvbiB0aGUgQ0RYIGJ1cy5cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTU1LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5oOjU2OmludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XFxuZHJpdmVycy9jZHgvY2R4LmgtNTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9NDY9dm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00OC1cXHQvKiBSZWdpc3RlciBDRFggY29udHJvbGxlciB3aXRoIENEWCBidXMgZHJpdmVyICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ5OlxcdGlmIChjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihjZHgpKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01MC1cXHRcXHRkZXZfZXJyKGNkeC1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIENEWCBjb250cm9sbGVyXFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6MjYuOTIwMTI0NTcyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2MTMyMDk2MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIENvbnRyb2xsZXIgUmVnaXN0cmF0aW9uIGFuZCBEZXZpY2UgQWRkaXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2FsbCBncmFwaCBpcyB0ZWxsaW5nIG1lIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGUgYGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyYCBmdW5jdGlvbiBpcyBvbmx5IGV2ZXIgY2FsbGVkIGZyb20gd2l0aGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmNgLiBUaGF04oCZcyBnb29kIHRvIGtub3cuIEl0IGhlbHBzIHRvIG5hcnJvdyBkb3duIHRoZSBzY29wZSBvZiB3aGVyZSBjb250cm9sbGVyIGluaXRpYWxpemF0aW9uIG9yaWdpbmF0ZXMuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSB3aGljaCBmdW5jdGlvbnMgcmVseSBvbiB0aGUgYGNkeF9kZXZpY2VfYWRkYCBmdW5jdGlvbi4gIFVuZGVyc3RhbmRpbmcgd2hhdCBhZGRzIGRldmljZXMgd2lsbCBjbGFyaWZ5IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBkZXZpY2UgcmVnaXN0cmF0aW9uIGFuZCB0aGUgZGV2aWNlcyB0aGVtc2VsdmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZXNlIHR3byBjb21wb25lbnRzLiBLbm93aW5nIHdoaWNoIG1vZHVsZXMgYWRkIGRldmljZXMgd2lsbCBtYWtlIG15IGFuYWx5c2lzIG1vcmUgY29tcHJlaGVuc2l2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2NTMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNToyOC41MzMzMzcwNDhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODY4NDYxMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4X2RldmljZV9hZGRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvY2R4LmM9NzI3PXN0YXRpYyBpbnQgY2R4X2NyZWF0ZV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTc1OC1cXG5kcml2ZXJzL2NkeC9jZHguYzo3NTk6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcylcXG5kcml2ZXJzL2NkeC9jZHguYy03NjAte1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODQ0LX1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NDU6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04NDYtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaD02Mj12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmgtNjQtLyoqXFxuZHJpdmVycy9jZHgvY2R4Lmg6NjU6ICogY2R4X2RldmljZV9hZGQgLSBBZGQgYSBDRFggZGV2aWNlLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmgtNjYtICpcXHRcXHRvbiB0aGUgQ0RYIGJ1cyBhcyBwZXIgdGhlIGRldmljZSBwYXJhbWV0ZXJzIHByb3ZpZGVkXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaC03Mi0gKi9cXG5kcml2ZXJzL2NkeC9jZHguaDo3MzppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKTtcXG5kcml2ZXJzL2NkeC9jZHguaC03NC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz05Mz1zdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQxLVxcdFxcdFxcdC8qIEFkZCB0aGUgZGV2aWNlIHRvIHRoZSBjZHggYnVzICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjE0MjpcXHRcXHRcXHRyZXQgPSBjZHhfZGV2aWNlX2FkZChcXHUwMDI2ZGV2X3BhcmFtcyk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE0My1cXHRcXHRcXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjE1OjMwLjIyMDE4NzE1OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjQ2NDkxNzczNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFjY2Vzc2liaWxpdHkgb2YgdGhlIENEWCBCdXMgaW4gYSBTdGFuZGFyZCBRRU1VIEVudmlyb25tZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IHRoZSBBTUQvWGlsaW54IFZlcnNhbCBOZXR3b3JrIHBsYXRmb3JtIGNvbXBvc2FibGUgZGV2aWNlIGJ1cywgb3IgQ0RYIGJ1cywgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIFZGSU8gYW5kIFFFTVUuIFRoZSBpbnN0cnVjdGlvbnMgcG9pbnQgb3V0IGNlcnRhaW4gaGFyZHdhcmUg4oCTIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycyBsaWtlIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW5kIGFtZGdwdSDigJMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBhbmQgYXJlbid0IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gT3VyIGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIHdlIGNhbiBhY2Nlc3Mgb3Igc2ltdWxhdGUgdGhlIENEWCBidXMgb3IgVkZJTyBDRFggd2l0aGluIHRoYXQgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCBvbiBhbWQ2NCBhcmNoaXRlY3R1cmUuXG5cbkZpcnN0LCBJJ20gY2hlY2tpbmcgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cywgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhhdCBDRFggYnVzIGRldmljZXMgb25seSBtYXRlcmlhbGl6ZSB3aGVuIGEgQ0RYIGNvbnRyb2xsZXIgaXMgcmVnaXN0ZXJlZC4gVGhlIHJlZ2lzdHJhdGlvbiwgZnJvbSB3aGF0IEkgZ2F0aGVyIGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jYCBhbmQgYGNkeF9jb250cm9sbGVyLmNgLCBoaW5nZXMgb24gYmluZGluZyB0byBhbiBycG1zZyBkZXZpY2UgbmFtZWQgXCJtY2RpX2lwY1wiIG9yIGEgcGxhdGZvcm0gZGV2aWNlIHdpdGggdGhlIERUIG5vZGUgXCJ4bG54LHZlcnNhbC1uZXQtY2R4LFwiIHdoaWNoIGNvbm5lY3RzIHRvIHRoZSByZW1vdGUgQ29ydGV4LVI1IHByb2Nlc3NvcidzIGZpcm13YXJlIChgcnByb2NgKS5cblxuTm93LCB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbTogaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugb24gYW1kNjQsIHRoZXJlJ3Mgbm8gaW5oZXJlbnQgQ0RYIGNvbnRyb2xsZXIgaGFyZHdhcmUsIGFuZCBjcml0aWNhbGx5LCBubyBlbXVsYXRlZCBDRFggY29udHJvbGxlciBvciBmaXJtd2FyZS4gVGhpcyBtZWFucyBubyBDRFggYnVzIGRldmljZXMgYXJlIHByZXNlbnQuIENvbnNlcXVlbnRseSwgdGhlIGBjZHhfZGV2aWNlYCBjYW4ndCBiZSBwcm9iZWQgYnkgYHZmaW8tY2R4YC4gU28sIHRoYXQgYHZmaW9fY2R4X21tYXAoKWAgZnVuY3Rpb24g4oCTIHdoZXJlIHRoZSBwYXRjaCBhZGRzIHRoZSBjaGVjayBgaWYgKCEodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9TSEFSRUQpKSByZXR1cm4gLUVJTlZBTDtgIOKAkyBpdCBzaW1wbHkgY2FuJ3QgYmUgZXhlY3V0ZWQgdW5kZXIgdGhlc2UgY29uZGl0aW9ucy5cblxuQnV0IHdhaXQgYSBtaW51dGUsIEkgd2FudCB0byBjb25maXJtIOKAkyBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSdzIGFic29sdXRlbHkgbm8gdmlydHVhbCBDRFggZHJpdmVyLCBzeXNmcyBtb2NrLCBvciBhbnl0aGluZyBlbHNlIGx1cmtpbmcgaW4gdGhlIGtlcm5lbCB0cmVlIHRoYXQgY291bGQgKmFydGlmaWNpYWxseSogY3JlYXRlIGEgYGNkeF9kZXZpY2VgLiBMZXQgbWUgZG8gYSBxdWljayBzZWFyY2ggZm9yIGBjZHhfZGV2aWNlYCB0aHJvdWdob3V0IHRoZSBlbnRpcmUga2VybmVsIHNvdXJjZSB0byBydWxlIG91dCBhbnkgcG90ZW50aWFsIHN1cnByaXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIzNzksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6NDIuNjg1MTA4MDQ0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU5MjY1ODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkeF9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NTYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvY2R4L2NkeC5jPTg1PXN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXFxcInhsbngsdmVyc2FsLW5ldC1jZHhcXFwiO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg3OnN0YXRpYyB2b2lkIGNkeF9kZXN0cm95X3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04OC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTk1PWludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy05Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6OTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTgtXFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTk6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XFxuZHJpdmVycy9jZHgvY2R4LmMtMTAwLVxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2O1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MTIwPUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTIyLS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMzogKiByZXNldF9jZHhfZGV2aWNlIC0gUmVzZXQgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtMTI0LSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMC0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMzE6c3RhdGljIGludCByZXNldF9jZHhfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2NkeC9jZHguYy0xMzIte1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MTQ2PXN0YXRpYyBpbnQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE0OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MTQ5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MC1cXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE2Mi1cXHQgKiBEbyBub3QgZnJlZSBjZHhfZGV2IGhlcmUgYXMgaXQgd291bGQgYmUgZnJlZWQgaW5cXG5kcml2ZXJzL2NkeC9jZHguYzoxNjM6XFx0ICogY2R4X2RldmljZV9yZWxlYXNlKCkgY2FsbGVkIGZyb20gd2l0aGluIHB1dF9kZXZpY2UoKS5cXG5kcml2ZXJzL2NkeC9jZHguYy0xNjQtXFx0ICovXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz0xNzE9c3RhdGljIHZvaWQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cylcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4Mi0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4MzogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg0LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoxODY6Y2R4X21hdGNoX29uZV9kZXZpY2UoY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NzpcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg4LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNC0gKiBVc2VkIGJ5IGEgZHJpdmVyIHRvIGNoZWNrIHdoZXRoZXIgYSBDRFggZGV2aWNlIGlzIGluIGl0cyBsaXN0IG9mXFxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNi0gKiBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNy0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMjA5LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIxMDpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjEyLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cXG5kcml2ZXJzL2NkeC9jZHguYzoyMjM6aW50IGNkeF9zZXRfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNC17XFxuZHJpdmVycy9jZHgvY2R4LmMtMjI1LVxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yMjctXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MjM3PUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9zZXRfbWFzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXFxuZHJpdmVycy9jZHgvY2R4LmM6MjM5OmludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI0MC17XFxuZHJpdmVycy9jZHgvY2R4LmMtMjQxLVxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yNDMtXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MjYzPXN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjY0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjY2LVxcdGNvbnN0IHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkcnYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NzpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqZm91bmRfaWQgPSBOVUxMO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2ODpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI2OS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MzAyPXN0YXRpYyBpbnQgY2R4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNC1cXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMDYtXFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz0zMjg9c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMzAtXFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzE6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzMyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MzM3PXN0YXRpYyB2b2lkIGNkeF9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMzktXFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDA6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQxLVxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MzQ5PXN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzUxLVxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzUyOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM1My1cXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4ND1maWVsZCMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODUte1xcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODY6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4Ny1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIGZvcm1hdF9zdHJpbmcsIGNkeF9kZXYtXFx1MDAzZWZpZWxkKTtcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz00MjI9c3RhdGljIHNzaXplX3QgcmVzZXRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDI1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNi1cXHRib29sIHZhbDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQzNi1cXHRcXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNzpcXHRcXHRyZXQgPSBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCByZXNldF9jZHhfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00MzgtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDQ1PXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0Ny17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDQ4OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0OS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ1Nj1zdGF0aWMgc3NpemVfdCBlbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ1OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDU5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2MC1cXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ4Mz1zdGF0aWMgc3NpemVfdCBlbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNDg0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0ODU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDg2LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDkxPXN0YXRpYyB1bW9kZV90IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDkzLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTUtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDk2OlxcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDk3LVxcdGlmICghY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NTAzPXN0YXRpYyB1bW9kZV90IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTA1LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjUwNjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy01MDctXFxuZHJpdmVycy9jZHgvY2R4LmM6NTA4OlxcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTA5LVxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz01NTA9c3RhdGljIGludCBjZHhfZGVidWdfcmVzb3VyY2Vfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTUxLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NTI6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU1My1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTU2Mz1ERUZJTkVfU0hPV19BVFRSSUJVVEUoY2R4X2RlYnVnX3Jlc291cmNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NjQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTY1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfZGVidWdmc19pbml0KHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Ni17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz02NTM9RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2RyaXZlcl91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjU1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNjU2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjU4LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NjgwPXN0YXRpYyBpbnQgY2R4X21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XFxuZHJpdmVycy9jZHgvY2R4LmM6Njg0OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShrb2JqX3RvX2Rldihrb2JqKSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjg1LVxcdGludCBudW0gPSAodW5zaWduZWQgbG9uZylhdHRyLVxcdTAwM2Vwcml2YXRlO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzA5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjcxMDpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcXG5kcml2ZXJzL2NkeC9jZHguYy03MTEte1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzI2LSNkZWZpbmUgQ0RYX1JFU19BVFRSX05BTUVfTEVOXFx0MTBcXG5kcml2ZXJzL2NkeC9jZHguYzo3Mjc6c3RhdGljIGludCBjZHhfY3JlYXRlX3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcyOC17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03NTgtXFxuZHJpdmVycy9jZHgvY2R4LmM6NzU5OmludCBjZHhfZGV2aWNlX2FkZChzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgKmRldl9wYXJhbXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtNzYwLXtcXG5kcml2ZXJzL2NkeC9jZHguYy03NjEtXFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBkZXZfcGFyYW1zLVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6NzYyOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTc2My1cXHRpbnQgcmV0LCBpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzkyLVxcdGNkeF9kZXYtXFx1MDAzZWRldi5kbWFfbWFzayA9IFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkbWFfbWFzaztcXG5kcml2ZXJzL2NkeC9jZHguYzo3OTM6XFx0Y2R4X2Rldi1cXHUwMDNlZGV2LnJlbGVhc2UgPSBjZHhfZGV2aWNlX3JlbGVhc2U7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzk0LVxcdGNkeF9kZXYtXFx1MDAzZW1zaV93cml0ZV9wZW5kaW5nID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy04MjktXFxuZHJpdmVycy9jZHgvY2R4LmM6ODMwOlxcdGNkeF9kZXZpY2VfZGVidWdmc19pbml0KGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTgzMS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTgzOC1cXHQgKiBEbyBub3QgZnJlZSBjZHhfZGV2IGhlcmUgYXMgaXQgd291bGQgYmUgZnJlZWQgaW5cXG5kcml2ZXJzL2NkeC9jZHguYzo4Mzk6XFx0ICogY2R4X2RldmljZV9yZWxlYXNlKCkgY2FsbGVkIGZyb20gcHV0X2RldmljZSgpLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTg0MC1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTg0NC19XFxuZHJpdmVycy9jZHgvY2R4LmM6ODQ1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9kZXZpY2VfYWRkLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtODQ2LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTg0Nz1zdHJ1Y3QgZGV2aWNlICpjZHhfYnVzX2FkZChzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcXG5kcml2ZXJzL2NkeC9jZHguYy04NDgte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjg0OTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy04NTAtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTg2MC1cXHRjZHhfZGV2LVxcdTAwM2VkZXYuYnVzID0gXFx1MDAyNmNkeF9idXNfdHlwZTtcXG5kcml2ZXJzL2NkeC9jZHguYzo4NjE6XFx0Y2R4X2Rldi1cXHUwMDNlZGV2LnJlbGVhc2UgPSBjZHhfZGV2aWNlX3JlbGVhc2U7XFxuZHJpdmVycy9jZHgvY2R4LmMtODYyLVxcdGNkeF9kZXYtXFx1MDAzZWlzX2J1cyA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaD02Mj12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmgtNjQtLyoqXFxuZHJpdmVycy9jZHgvY2R4Lmg6NjU6ICogY2R4X2RldmljZV9hZGQgLSBBZGQgYSBDRFggZGV2aWNlLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmgtNjYtICpcXHRcXHRvbiB0aGUgQ0RYIGJ1cyBhcyBwZXIgdGhlIGRldmljZSBwYXJhbWV0ZXJzIHByb3ZpZGVkXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaC03Mi0gKi9cXG5kcml2ZXJzL2NkeC9jZHguaDo3MzppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKTtcXG5kcml2ZXJzL2NkeC9jZHguaC03NC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0xOT1zdGF0aWMgdm9pZCBjZHhfbXNpX3dyaXRlX21zZyhzdHJ1Y3QgaXJxX2RhdGEgKmlycV9kYXRhLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTIxLVxcdHN0cnVjdCBtc2lfZGVzYyAqbXNpX2Rlc2MgPSBpcnFfZGF0YV9nZXRfbXNpX2Rlc2MoaXJxX2RhdGEpO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoyMjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UobXNpX2Rlc2MtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTIzLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTMxPXN0YXRpYyB2b2lkIGNkeF9tc2lfd3JpdGVfaXJxX2xvY2soc3RydWN0IGlycV9kYXRhICppcnFfZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0zMy1cXHRzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjID0gaXJxX2RhdGFfZ2V0X21zaV9kZXNjKGlycV9kYXRhKTtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MzQ6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKG1zaV9kZXNjLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0zNS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0zOT1zdGF0aWMgdm9pZCBjZHhfbXNpX3dyaXRlX2lycV91bmxvY2soc3RydWN0IGlycV9kYXRhICppcnFfZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy00MS1cXHRzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjID0gaXJxX2RhdGFfZ2V0X21zaV9kZXNjKGlycV9kYXRhKTtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6NDI6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKG1zaV9kZXNjLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy00My1cXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6NDQ6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTQ1LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTY3LVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo2ODppbnQgY2R4X2VuYWJsZV9tc2koc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTY5LXtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNzAtXFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jOjcxOlxcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy03Mi1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz04Mj1FWFBPUlRfU1lNQk9MX0dQTChjZHhfZW5hYmxlX21zaSk7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTgzLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo4NDp2b2lkIGNkeF9kaXNhYmxlX21zaShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtODUte1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy04Ni1cXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6ODc6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTg4LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTk2PXN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgY2R4X21zaV9pcnFfY2hpcCA9IHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMDctLyogQ29udmVydCBhbiBtc2lfZGVzYyB0byBhIHVuaXF1ZSBpZGVudGlmaWVyIHdpdGhpbiB0aGUgZG9tYWluLiAqL1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoxMDg6c3RhdGljIGlycV9od19udW1iZXJfdCBjZHhfZG9tYWluX2NhbGNfaHdpcnEoc3RydWN0IGNkeF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtMTA5LVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG1zaV9kZXNjICpkZXNjKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTExND1zdGF0aWMgdm9pZCBjZHhfbXNpX3NldF9kZXNjKG1zaV9hbGxvY19pbmZvX3QgKmFyZywgc3RydWN0IG1zaV9kZXNjICpkZXNjKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTExNi1cXHRhcmctXFx1MDAzZWRlc2MgPSBkZXNjO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoxMTc6XFx0YXJnLVxcdTAwM2Vod2lycSA9IGNkeF9kb21haW5fY2FsY19od2lycSh0b19jZHhfZGV2aWNlKGRlc2MtXFx1MDAzZWRldiksIGRlc2MpO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMTgtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTEyMD1zdGF0aWMgaW50IGNkeF9tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqbXNpX2RvbWFpbixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy0xMjQtXFx0c3RydWN0IG9mX3BoYW5kbGVfYXJncyBtc2lfc3BlYyA9IHt9O1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzoxMjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTEyNi1cXHRzdHJ1Y3QgZGV2aWNlICpwYXJlbnQgPSBjZHhfZGV2LVxcdTAwM2VjZHgtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz01OT1zdGF0aWMgaW50IGNkeF9jb25maWd1cmVfZGV2aWNlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy02MC1cXHRcXHRcXHRcXHR1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo2MTpcXHRcXHRcXHRcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgKmRldl9jb25maWcpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTYyLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz05Mz1zdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQxLVxcdFxcdFxcdC8qIEFkZCB0aGUgZGV2aWNlIHRvIHRoZSBjZHggYnVzICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjE0MjpcXHRcXHRcXHRyZXQgPSBjZHhfZGV2aWNlX2FkZChcXHUwMDI2ZGV2X3BhcmFtcyk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE0My1cXHRcXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYz0xNj1zdGF0aWMgaXJxcmV0dXJuX3QgdmZpb19jZHhfbXNpaGFuZGxlcihpbnQgaXJxX25vLCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0yMy1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoyNDpzdGF0aWMgaW50IHZmaW9fY2R4X21zaV9lbmFibGUoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiwgaW50IG52ZWMpXFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMjUte1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjI2OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVxcdTAwM2V2ZGV2LmRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMjctXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdmRldi1cXHUwMDNldmRldi5kZXY7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy01Ny1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzo1ODpzdGF0aWMgaW50IHZmaW9fY2R4X21zaV9zZXRfdmVjdG9yX3NpZ25hbChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTU5LVxcdFxcdFxcdFxcdFxcdCAgaW50IHZlY3RvciwgaW50IGZkKVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMTAyLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjEwMzpzdGF0aWMgaW50IHZmaW9fY2R4X21zaV9zZXRfYmxvY2soc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xMDQtXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgc3RhcnQsIHVuc2lnbmVkIGludCBjb3VudCxcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTEyNS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxMjY6c3RhdGljIHZvaWQgdmZpb19jZHhfbXNpX2Rpc2FibGUoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xMjcte1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjEyODpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cXHUwMDNldmRldi5kZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTEyOS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB2ZGV2LVxcdTAwM2V2ZGV2LmRldjtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTE0My1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxNDQ6c3RhdGljIGludCB2ZmlvX2NkeF9zZXRfbXNpX3RyaWdnZXIoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xNDUtXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBpbmRleCwgdW5zaWduZWQgaW50IHN0YXJ0LFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtMTQ4LXtcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzoxNDk6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKHZkZXYtXFx1MDAzZXZkZXYuZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xNTAtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0xOTgtXFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM6MTk5OmludCB2ZmlvX2NkeF9zZXRfaXJxc19pb2N0bChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTIwMC1cXHRcXHRcXHQgICAgdTMyIGZsYWdzLCB1bnNpZ25lZCBpbnQgaW5kZXgsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy0yMTEtLyogRnJlZSBBbGwgSVJRcyBmb3IgdGhlIGdpdmVuIGRldmljZSAqL1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjIxMjp2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTIxMy17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0xMT1zdGF0aWMgaW50IHZmaW9fY2R4X2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTEyLXtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxMzpcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNDpcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNS1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTIwPXN0YXRpYyB2b2lkIHZmaW9fY2R4X3JlbGVhc2VfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTIxLXtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoyMjpcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoyMzpcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNC1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI4PXN0YXRpYyBpbnQgdmZpb19jZHhfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjkte1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMwOlxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMxOlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMyOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzMtXFx0aW50IGNvdW50ID0gY2R4X2Rldi1cXHUwMDNlcmVzX2NvdW50O1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9NzQ9c3RhdGljIHZvaWQgdmZpb19jZHhfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTc1LXtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzo3NjpcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzo3NzpcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy03OC1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTg0PXN0YXRpYyBpbnQgdmZpb19jZHhfYm1fY3RybChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgdTMyIGZsYWdzLFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtODgtXFx0XFx0b2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfYnVzX21hc3Rlciwgb3ApO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjg5OlxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjkwOlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjkxOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtOTItXFx0c3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfYnVzX21hc3RlciBvcHM7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0xMTY9c3RhdGljIGludCB2ZmlvX2NkeF9pb2N0bF9mZWF0dXJlKHN0cnVjdCB2ZmlvX2RldmljZSAqZGV2aWNlLCB1MzIgZmxhZ3MsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xMjYtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTI3OnN0YXRpYyBpbnQgdmZpb19jZHhfaW9jdGxfZ2V0X2luZm8oc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xMjgtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHZmaW9fZGV2aWNlX2luZm8gX191c2VyICphcmcpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xMzAtXFx0dW5zaWduZWQgbG9uZyBtaW5zeiA9IG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX2RldmljZV9pbmZvLCBudW1faXJxcyk7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTMxOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVxcdTAwM2V2ZGV2LmRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTMyLVxcdHN0cnVjdCB2ZmlvX2RldmljZV9pbmZvIGluZm87XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0xNDk9c3RhdGljIGludCB2ZmlvX2NkeF9pb2N0bF9nZXRfcmVnaW9uX2luZm8oc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNTIte1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjE1MzpcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoxNTQ6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTU1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVxcdTAwM2V2ZGV2LmRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTU2LVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTY2LVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjE2NzpzdGF0aWMgaW50IHZmaW9fY2R4X2lvY3RsX2dldF9pcnFfaW5mbyhzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE2OC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHZmaW9faXJxX2luZm8gX191c2VyICphcmcpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xNzAtXFx0dW5zaWduZWQgbG9uZyBtaW5zeiA9IG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX2lycV9pbmZvLCBjb3VudCk7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTcxOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZSh2ZGV2LVxcdTAwM2V2ZGV2LmRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMTcyLVxcdHN0cnVjdCB2ZmlvX2lycV9pbmZvIGluZm87XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xOTEtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MTkyOnN0YXRpYyBpbnQgdmZpb19jZHhfaW9jdGxfc2V0X2lycXMoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0xOTMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHZmaW9faXJxX3NldCBfX3VzZXIgKmFyZylcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE5NS1cXHR1bnNpZ25lZCBsb25nIG1pbnN6ID0gb2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9faXJxX3NldCwgY291bnQpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjE5NjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UodmRldi1cXHUwMDNldmRldi5kZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTE5Ny1cXHRzdHJ1Y3QgdmZpb19pcnFfc2V0IGhkcjtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTIyMz1zdGF0aWMgbG9uZyB2ZmlvX2NkeF9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTIyNS17XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjI2OlxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjIyNzpcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yMjgtXFx0dm9pZCBfX3VzZXIgKnVhcmcgPSAodm9pZCBfX3VzZXIgKilhcmc7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yNjQ9c3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjY2LXtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoyNjc6XFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjY4OlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI2OTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoY29yZV92ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI3MC1cXHR1bnNpZ25lZCBpbnQgaW5kZXg7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19jZHhfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzA4LVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMwOTpzdGF0aWMgaW50IHZmaW9fY2R4X3Byb2JlKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTMxMC17XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzExOlxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXY7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzEyLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTQtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzE1OlxcdHZkZXYgPSB2ZmlvX2FsbG9jX2RldmljZSh2ZmlvX2NkeF9kZXZpY2UsIHZkZXYsIGRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTYtXFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX2NkeF9vcHMpO1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzMxLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMzMjpzdGF0aWMgaW50IHZmaW9fY2R4X3JlbW92ZShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMzMte1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTMzNC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjMzNTpcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzM2LVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzQyLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjM0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgdmZpb19jZHhfdGFibGVbXSA9IHtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zNDQtXFx0eyBDRFhfREVWSUNFX0RSSVZFUl9PVkVSUklERShDRFhfQU5ZX0lELCBDRFhfQU5ZX0lELFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg9MjY9c3RydWN0IHZmaW9fY2R4X3JlZ2lvbiB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0zMi1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDozMzpzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlIHtcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0zNC1cXHRzdHJ1Y3QgdmZpb19kZXZpY2VcXHR2ZGV2O1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtNDMtI2lmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo0NDppbnQgdmZpb19jZHhfc2V0X2lycXNfaW9jdGwoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC00NS1cXHRcXHRcXHQgICAgdTMyIGZsYWdzLCB1bnNpZ25lZCBpbnQgaW5kZXgsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC00OC1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo0OTp2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC01MC0jZWxzZVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjUxOnN0YXRpYyBpbnQgdmZpb19jZHhfc2V0X2lycXNfaW9jdGwoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC01Mi1cXHRcXHRcXHRcXHQgICB1MzIgZmxhZ3MsIHVuc2lnbmVkIGludCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTU4LVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjU5OnN0YXRpYyB2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTYwLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0zMT1zdHJ1Y3QgY2R4X21zaV9jb25maWcge1xcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTM2LVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDozNzpzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcge1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0zOC1cXHR1OCB0eXBlO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTUyPXR5cGVkZWYgaW50ICgqY2R4X2Rldl9jb25maWd1cmVfY2IpKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC01My1cXHRcXHRcXHRcXHQgICAgdTggYnVzX251bSwgdTggZGV2X251bSxcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6NTQ6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyAqZGV2X2NvbmZpZyk7XFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTU1LVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTYwLSAqXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjYxOiAqIFRoaXMgbWFjcm8gaXMgdXNlZCB0byBjcmVhdGUgYSBzdHJ1Y3QgY2R4X2RldmljZV9pZCB0aGF0IG1hdGNoZXMgYVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC02Mi0gKiBzcGVjaWZpYyBkZXZpY2UuIFRoZSBzdWJ2ZW5kb3IgYW5kIHN1YmRldmljZSBmaWVsZHMgd2lsbCBiZSBzZXQgdG9cXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC03NS0gKlxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDo3NjogKiBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gY3JlYXRlIGEgc3RydWN0IGNkeF9kZXZpY2VfaWQgdGhhdCBtYXRjaGVzIG9ubHkgYVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC03Ny0gKiBkcml2ZXJfb3ZlcnJpZGUgZGV2aWNlLiBUaGUgc3VidmVuZG9yIGFuZCBzdWJkZXZpY2UgZmllbGRzIHdpbGwgYmUgc2V0IHRvXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg9MTA4PXN0cnVjdCBjZHhfY29udHJvbGxlciB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTE3LS8qKlxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxMTg6ICogc3RydWN0IGNkeF9kZXZpY2UgLSBDRFggZGV2aWNlIG9iamVjdFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xMTktICogQGRldjogTGludXggZHJpdmVyIG1vZGVsIGRldmljZSBvYmplY3RcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xNDItICovXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjE0MzpzdHJ1Y3QgY2R4X2RldmljZSB7XFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE0NC1cXHRzdHJ1Y3QgZGV2aWNlIGRldjtcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xNjgtXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjE2OTojZGVmaW5lIHRvX2NkeF9kZXZpY2UoX2RldikgXFxcXFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxNzA6XFx0Y29udGFpbmVyX29mKF9kZXYsIHN0cnVjdCBjZHhfZGV2aWNlLCBkZXYpXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE3MS1cXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0xOTg9c3RydWN0IGNkeF9kcml2ZXIge1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xOTktXFx0c3RydWN0IGRldmljZV9kcml2ZXIgZHJpdmVyO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMDA6XFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKm1hdGNoX2lkX3RhYmxlO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMDE6XFx0aW50ICgqcHJvYmUpKHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMDI6XFx0aW50ICgqcmVtb3ZlKShzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjAzOlxcdHZvaWQgKCpzaHV0ZG93bikoc3RydWN0IGNkeF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIwNDpcXHR2b2lkICgqcmVzZXRfcHJlcGFyZSkoc3RydWN0IGNkeF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIwNTpcXHR2b2lkICgqcmVzZXRfZG9uZSkoc3RydWN0IGNkeF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwNi1cXHRib29sIGRyaXZlcl9tYW5hZ2VkX2RtYTtcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaD0yNDE9aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yNDgtICovXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjI0OTppbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yNTAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjU2LSAqL1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyNTc6aW50IGNkeF9jbGVhcl9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yNTgtXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6NDQuMzQ0MzgwMTc3WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3OTUzMDQyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipWRklPIENEWCBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2AuIFJpZ2h0LCB0aGF0J3MgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cyDigJMgc3BlY2lmaWNhbGx5IHRoZSBBTUQgVmVyc2FsIC8gWGlsaW54IFZlcnNhbCBOZXQgY29tcG9zYWJsZSBkZXZpY2VzIGJ1cy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpcyAqdGhpcyogdGhlIG9ubHkgZHJpdmVyIHVzaW5nIHRoZSBDRFggYnVzLCBvciBhcmUgdGhlcmUgb3RoZXJzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXh0ZW50IG9mIGl0cyB1c2FnZS4gTXkgaW5zdGluY3Qgc2F5cyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB3aXRoaW4gdGhlIFhpbGlueCBFdGhlcm5ldCBkcml2ZXJzIGZpcnN0LiBMZXQncyBzZWUuLi4gSSdsbCBzdGFydCBieSBjaGVja2luZyB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9gIGFuZCBzaW1pbGFyIGRpcmVjdG9yaWVzIHRvIGdldCBhIGJyb2FkZXIgcGljdHVyZSBvZiBwb3RlbnRpYWwgQ0RYIGJ1cyB1dGlsaXphdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBzb21lIGRpcmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ1NjUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNTo0Ni4xMzk2OTM1MDFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTMzNTI1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4X2RyaXZlcl9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NkeC9jZHguYz02Mjg9RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MjktXFxuZHJpdmVycy9jZHgvY2R4LmM6NjMwOmludCBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVxcdFxcdFxcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0NzpFWFBPUlRfU1lNQk9MX0dQTChfX2NkeF9kcml2ZXJfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0OC1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTM1MT1zdGF0aWMgc3RydWN0IGNkeF9kcml2ZXIgdmZpb19jZHhfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzYwLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjM2MTptb2R1bGVfZHJpdmVyKHZmaW9fY2R4X2RyaXZlciwgY2R4X2RyaXZlcl9yZWdpc3RlciwgY2R4X2RyaXZlcl91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zNjItXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg9MTk4PXN0cnVjdCBjZHhfZHJpdmVyIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTItLyogTWFjcm8gdG8gYXZvaWQgaW5jbHVkZSBjaGFpbmluZyB0byBnZXQgVEhJU19NT0RVTEUgKi9cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjEzOiNkZWZpbmUgY2R4X2RyaXZlcl9yZWdpc3RlcihkcnYpIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjE0OlxcdF9fY2R4X2RyaXZlcl9yZWdpc3RlcihkcnYsIFRISVNfTU9EVUxFKVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTUtXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIxNi0vKipcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjE3OiAqIF9fY2R4X2RyaXZlcl9yZWdpc3RlciAtIHJlZ2lzdGVycyBhIENEWCBkZXZpY2UgZHJpdmVyXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIxOC0gKiBAY2R4X2RyaXZlcjogQ0RYIGRyaXZlciB0byByZWdpc3Rlclxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIyMi0gKi9cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjIzOmludCBfX211c3RfY2hlY2sgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMjQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MTU6NDcuODUzMDUxNThaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjU3ODk3NDMyNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVkZJTyBDRFggRHJpdmVyIFJlYWNoYWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlIGB2ZmlvX2NkeF9kcml2ZXJgIGlzLCBxdWl0ZSBsaXRlcmFsbHksIHRoZSBvbmx5IGRyaXZlciBvbiB0aGUgQ0RYIGJ1cyBpbiB0aGUga2VybmVsLCBhbmQgdGhlIENEWCBidXMgY29udHJvbGxlciBpdHNlbGYgKmRlbWFuZHMqIHBoeXNpY2FsIEFNRCBWZXJzYWwgaGFyZHdhcmUuIFRoYXQncyBhIGNydWNpYWwgcG9pbnQuIEl0IHJlbGllcyBvbiBlaXRoZXIgdGhlIHJwbXNnIGNvbW11bmljYXRpb24gdG8gdGhlIFI1IGZpcm13YXJlIG9yIGEgZGV2aWNlIHRyZWUgbm9kZSAoYHhsbngsdmVyc2FsLW5ldC1jZHhgKS4gV2l0aG91dCB0aGF0IGhvc3QgY29udHJvbGxlciwgd2hpY2ggKnJlcXVpcmVzKiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIG5vIENEWCBkZXZpY2VzIGFyZSBldmVyIGVudW1lcmF0ZWQgb3IgYWRkZWQuIGBjZHhfZGV2aWNlX2FkZGAgaXMgbmV2ZXIgY2FsbGVkLiBDb25zZXF1ZW50bHksIGB2ZmlvX2NkeF9wcm9iZWAgaXMgbmV2ZXIgaW52b2tlZC4gVGhpcyBtZWFucyBubyBWRklPIENEWCBkZXZpY2UgaXMgY3JlYXRlZCwgYW5kIHVzZXItc3BhY2UgY2FuJ3QgcG9zc2libHkgaW50ZXJhY3Qgd2l0aCBhbnkgYC9kZXYvdmZpby8uLi5gIENEWCBkZXZpY2UgdGhyb3VnaCBvcGVuL21tYXAuXG5cbk5vdywgbGV0J3MgZ28gYmFjayBhbmQgcmV2aWV3IHRoZSBkb2N1bWVudGF0aW9uIG9uIGhhcmR3YXJlIHJlYWNoYWJpbGl0eS4gU2VjdGlvbiAyIGNsZWFybHkgb3V0bGluZXMgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBhcyBpbmNsdWRpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgKGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YCkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEFTSUNzL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFwiVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzXCIgYXJlIGFsc28gZGVmaW5lZCwgaW52b2x2aW5nIHNjZW5hcmlvcyBsaWtlIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgZHVyaW5nIHBoeXNpY2FsIGhvdC11bnBsdWcgb3IgbWFudWFsIHVuYmluZGluZy4gVGhlIGNvcmUgdGFrZWF3YXk/ICoqUmVhY2hhYmlsaXR5IGlzIHRoZSBwcmltYXJ5IGdhdGUqKi4gRnV6emluZyBpcyBvbmx5IGVmZmVjdGl2ZSBvbiBjb2RlIHBhdGhzIHRoYXQgKmFjdHVhbGx5KiBleGVjdXRlIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGxpa2UgdGhvc2UgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcy4gSWYgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCBhcyBkZXNjcmliZWQsIGl0ICptdXN0IG5vdCogYmUgZnV6emVkLCByZWdhcmRsZXNzIG9mIGhvdyBjb21wbGV4IHRoZSBsb2dpYyBvciBhc3NlcnRpb25zIG1pZ2h0IGJlLlxuXG5Mb29raW5nIHNwZWNpZmljYWxseSBhdCB0aGUgcGF0Y2gsIHRoZSB0YXJnZXQgZnVuY3Rpb24gaXMgYHZmaW9fY2R4X21tYXAoKWAgaW4gYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gVGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIHRoZSBgdmZpby1jZHhgIGRyaXZlciwgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIFZGSU8gcGFzcy10aHJvdWdoIG9mIEFNRCBWZXJzYWwtbmV0IENEWCBidXMgZGV2aWNlcy4gU2luY2UgQ0RYIGRldmljZXMgaW50cmluc2ljYWxseSBkZXBlbmQgb24gQU1EIFZlcnNhbCBoYXJkd2FyZSBhbmQgYXNzb2NpYXRlZCBmaXJtd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgdGhpcyBtYWtlcyBgdmZpb19jZHhfbW1hcGAgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiB0aG9zZSBmdXp6aW5nIHNjZW5hcmlvcy5cblxuVGhlcmVmb3JlLCBhZnRlciBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIEknbSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG5cbk15IGFzc2Vzc21lbnQ6XG5cbi0gICBFbmFibGVDb25maWdzOiBcXFsgXVxuLSAgIEZvY3VzU3ltYm9sczogXFxbIF1cbi0gICBXb3J0aEZ1enppbmc6IGZhbHNlXG4tICAgUmVhc29uaW5nOiBDbGVhciBhbmQgY29uY2lzZSBleHBsYW5hdGlvbiBvZiBzdHJ1Y3R1cmFsIHVucmVhY2hhYmlsaXR5IGR1ZSB0byBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuXG5cbk5vdywgbGV0J3MgcHJlcGFyZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NDM3LCJPdXRwdXRUb2tlbnMiOjE0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjoxNjo1My42NDI3OTc5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19jZHhfbW1hcCgpIGluIGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBWRklPIGRyaXZlciBmb3IgdGhlIEFNRCBWZXJzYWwgQ0RYIGJ1cy4gQ0RYIGRldmljZXMgZGVwZW5kIG9uIEFNRCBWZXJzYWwtbmV0IHBsYXRmb3JtIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHJlbW90ZSBmaXJtd2FyZSAoTUNESS9ycG1zZykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIG5vIENEWCBkZXZpY2VzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgYm91bmQgdG8gdmZpby1jZHgsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB2ZmlvX2NkeF9tbWFwKCkgaW4gZHJpdmVycy92ZmlvL2NkeC9tYWluLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgQU1EIFZlcnNhbCBDRFggYnVzLiBDRFggZGV2aWNlcyBkZXBlbmQgb24gQU1EIFZlcnNhbC1uZXQgcGxhdGZvcm0gY29udHJvbGxlciBoYXJkd2FyZSBhbmQgcmVtb3RlIGZpcm13YXJlIChNQ0RJL3JwbXNnKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIENvbnNlcXVlbnRseSwgbm8gQ0RYIGRldmljZXMgY2FuIGJlIGluc3RhbnRpYXRlZCBvciBib3VuZCB0byB2ZmlvLWNkeCwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjE2OjUzLjY0MjgyNDYyWiIsIlNlcSI6MzUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww8v2w[1] Phase: Running StartedAt: 2026-09-06 22:17:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww8v2w[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 22:17:05 +0000 UTC FinishedAt: 2026-09-06 22:17:09 +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,}